diff --git a/others/Makefile.am b/others/Makefile.am index 022ec1f0..9e8a8fa7 100644 --- a/others/Makefile.am +++ b/others/Makefile.am @@ -25,6 +25,7 @@ libmbedtls_la_SOURCES = \ mbedtls/md5.c \ mbedtls/aes.c \ mbedtls/aesni.c \ + mbedtls/sha512.c \ mbedtls/platform_util.c \ mbedtls/sha1.c diff --git a/src/parser/location.hh b/src/parser/location.hh deleted file mode 100644 index 49c002be..00000000 --- a/src/parser/location.hh +++ /dev/null @@ -1,322 +0,0 @@ -// A Bison parser, made by GNU Bison 3.2. - -// Locations for Bison parsers in C++ - -// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -// As a special exception, you may create a larger work that contains -// part or all of the Bison parser skeleton and distribute that work -// under terms of your choice, so long as that work isn't itself a -// parser generator using the skeleton or a modified version thereof -// as a parser skeleton. Alternatively, if you modify or redistribute -// the parser skeleton itself, you may (at your option) remove this -// special exception, which will cause the skeleton and the resulting -// Bison output files to be licensed under the GNU General Public -// License without this special exception. - -// This special exception was added by the Free Software Foundation in -// version 2.2 of Bison. - -/** - ** \file location.hh - ** Define the yy::location class. - */ - -#ifndef YY_YY_LOCATION_HH_INCLUDED -# define YY_YY_LOCATION_HH_INCLUDED - -# include // std::max -# include -# include - -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - - -namespace yy { -#line 60 "location.hh" // location.cc:339 - /// Abstract a position. - class position - { - public: - /// Construct a position. - explicit position (std::string* f = YY_NULLPTR, - unsigned l = 1u, - unsigned c = 1u) - : filename (f) - , line (l) - , column (c) - {} - - - /// Initialization. - void initialize (std::string* fn = YY_NULLPTR, - unsigned l = 1u, - unsigned c = 1u) - { - filename = fn; - line = l; - column = c; - } - - /** \name Line and Column related manipulators - ** \{ */ - /// (line related) Advance to the COUNT next lines. - void lines (int count = 1) - { - if (count) - { - column = 1u; - line = add_ (line, count, 1); - } - } - - /// (column related) Advance to the COUNT next columns. - void columns (int count = 1) - { - column = add_ (column, count, 1); - } - /** \} */ - - /// File name to which this position refers. - std::string* filename; - /// Current line number. - unsigned line; - /// Current column number. - unsigned column; - - private: - /// Compute max (min, lhs+rhs). - static unsigned add_ (unsigned lhs, int rhs, int min) - { - return static_cast (std::max (min, - static_cast (lhs) + rhs)); - } - }; - - /// Add \a width columns, in place. - inline position& - operator+= (position& res, int width) - { - res.columns (width); - return res; - } - - /// Add \a width columns. - inline position - operator+ (position res, int width) - { - return res += width; - } - - /// Subtract \a width columns, in place. - inline position& - operator-= (position& res, int width) - { - return res += -width; - } - - /// Subtract \a width columns. - inline position - operator- (position res, int width) - { - return res -= width; - } - - /// Compare two position objects. - inline bool - operator== (const position& pos1, const position& pos2) - { - return (pos1.line == pos2.line - && pos1.column == pos2.column - && (pos1.filename == pos2.filename - || (pos1.filename && pos2.filename - && *pos1.filename == *pos2.filename))); - } - - /// Compare two position objects. - inline bool - operator!= (const position& pos1, const position& pos2) - { - return !(pos1 == pos2); - } - - /** \brief Intercept output stream redirection. - ** \param ostr the destination output stream - ** \param pos a reference to the position to redirect - */ - template - std::basic_ostream& - operator<< (std::basic_ostream& ostr, const position& pos) - { - if (pos.filename) - ostr << *pos.filename << ':'; - return ostr << pos.line << '.' << pos.column; - } - - /// Abstract a location. - class location - { - public: - - /// Construct a location from \a b to \a e. - location (const position& b, const position& e) - : begin (b) - , end (e) - {} - - /// Construct a 0-width location in \a p. - explicit location (const position& p = position ()) - : begin (p) - , end (p) - {} - - /// Construct a 0-width location in \a f, \a l, \a c. - explicit location (std::string* f, - unsigned l = 1u, - unsigned c = 1u) - : begin (f, l, c) - , end (f, l, c) - {} - - - /// Initialization. - void initialize (std::string* f = YY_NULLPTR, - unsigned l = 1u, - unsigned c = 1u) - { - begin.initialize (f, l, c); - end = begin; - } - - /** \name Line and Column related manipulators - ** \{ */ - public: - /// Reset initial location to final location. - void step () - { - begin = end; - } - - /// Extend the current location to the COUNT next columns. - void columns (int count = 1) - { - end += count; - } - - /// Extend the current location to the COUNT next lines. - void lines (int count = 1) - { - end.lines (count); - } - /** \} */ - - - public: - /// Beginning of the located region. - position begin; - /// End of the located region. - position end; - }; - - /// Join two locations, in place. - inline location& operator+= (location& res, const location& end) - { - res.end = end.end; - return res; - } - - /// Join two locations. - inline location operator+ (location res, const location& end) - { - return res += end; - } - - /// Add \a width columns to the end position, in place. - inline location& operator+= (location& res, int width) - { - res.columns (width); - return res; - } - - /// Add \a width columns to the end position. - inline location operator+ (location res, int width) - { - return res += width; - } - - /// Subtract \a width columns to the end position, in place. - inline location& operator-= (location& res, int width) - { - return res += -width; - } - - /// Subtract \a width columns to the end position. - inline location operator- (location res, int width) - { - return res -= width; - } - - /// Compare two location objects. - inline bool - operator== (const location& loc1, const location& loc2) - { - return loc1.begin == loc2.begin && loc1.end == loc2.end; - } - - /// Compare two location objects. - inline bool - operator!= (const location& loc1, const location& loc2) - { - return !(loc1 == loc2); - } - - /** \brief Intercept output stream redirection. - ** \param ostr the destination output stream - ** \param loc a reference to the location to redirect - ** - ** Avoid duplicate information. - */ - template - std::basic_ostream& - operator<< (std::basic_ostream& ostr, const location& loc) - { - unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0; - ostr << loc.begin; - if (loc.end.filename - && (!loc.begin.filename - || *loc.begin.filename != *loc.end.filename)) - ostr << '-' << loc.end.filename << ':' << loc.end.line << '.' << end_col; - else if (loc.begin.line < loc.end.line) - ostr << '-' << loc.end.line << '.' << end_col; - else if (loc.begin.column < end_col) - ostr << '-' << end_col; - return ostr; - } - - -} // yy -#line 322 "location.hh" // location.cc:339 -#endif // !YY_YY_LOCATION_HH_INCLUDED diff --git a/src/parser/position.hh b/src/parser/position.hh deleted file mode 100644 index 8d071218..00000000 --- a/src/parser/position.hh +++ /dev/null @@ -1,11 +0,0 @@ -// A Bison parser, made by GNU Bison 3.2. - -// Starting with Bison 3.2, this file is useless: the structure it -// used to define is now defined in "location.hh". -// -// To get rid of this file: -// 1. add 'require "3.2"' (or newer) to your grammar file -// 2. remove references to this file from your build system -// 3. if you used to include it, include "location.hh" instead. - -#include "location.hh" diff --git a/src/parser/seclang-parser.cc b/src/parser/seclang-parser.cc deleted file mode 100644 index e3d16afe..00000000 --- a/src/parser/seclang-parser.cc +++ /dev/null @@ -1,6855 +0,0 @@ -// A Bison parser, made by GNU Bison 3.2. - -// Skeleton implementation for Bison LALR(1) parsers in C++ - -// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -// As a special exception, you may create a larger work that contains -// part or all of the Bison parser skeleton and distribute that work -// under terms of your choice, so long as that work isn't itself a -// parser generator using the skeleton or a modified version thereof -// as a parser skeleton. Alternatively, if you modify or redistribute -// the parser skeleton itself, you may (at your option) remove this -// special exception, which will cause the skeleton and the resulting -// Bison output files to be licensed under the GNU General Public -// License without this special exception. - -// This special exception was added by the Free Software Foundation in -// version 2.2 of Bison. - -// Undocumented macros, especially those whose name start with YY_, -// are private implementation details. Do not rely on them. - - - - - -#include "seclang-parser.hh" - - -// Unqualified %code blocks. -#line 361 "seclang-parser.yy" // lalr1.cc:437 - -#include "src/parser/driver.h" - -#line 49 "seclang-parser.cc" // lalr1.cc:437 - - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include // FIXME: INFRINGES ON USER NAME SPACE. -# define YY_(msgid) dgettext ("bison-runtime", msgid) -# endif -# endif -# ifndef YY_ -# define YY_(msgid) msgid -# endif -#endif - -// Whether we are compiled with exception support. -#ifndef YY_EXCEPTIONS -# if defined __GNUC__ && !defined __EXCEPTIONS -# define YY_EXCEPTIONS 0 -# else -# define YY_EXCEPTIONS 1 -# endif -#endif - -#define YYRHSLOC(Rhs, K) ((Rhs)[K].location) -/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -# ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (N) \ - { \ - (Current).begin = YYRHSLOC (Rhs, 1).begin; \ - (Current).end = YYRHSLOC (Rhs, N).end; \ - } \ - else \ - { \ - (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ - } \ - while (/*CONSTCOND*/ false) -# endif - - -// Suppress unused-variable warnings by "using" E. -#define YYUSE(E) ((void) (E)) - -// Enable debugging if requested. -#if YYDEBUG - -// A pseudo ostream that takes yydebug_ into account. -# define YYCDEBUG if (yydebug_) (*yycdebug_) - -# define YY_SYMBOL_PRINT(Title, Symbol) \ - do { \ - if (yydebug_) \ - { \ - *yycdebug_ << Title << ' '; \ - yy_print_ (*yycdebug_, Symbol); \ - *yycdebug_ << '\n'; \ - } \ - } while (false) - -# define YY_REDUCE_PRINT(Rule) \ - do { \ - if (yydebug_) \ - yy_reduce_print_ (Rule); \ - } while (false) - -# define YY_STACK_PRINT() \ - do { \ - if (yydebug_) \ - yystack_print_ (); \ - } while (false) - -#else // !YYDEBUG - -# define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol) -# define YY_REDUCE_PRINT(Rule) static_cast (0) -# define YY_STACK_PRINT() static_cast (0) - -#endif // !YYDEBUG - -#define yyerrok (yyerrstatus_ = 0) -#define yyclearin (yyla.clear ()) - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab -#define YYRECOVERING() (!!yyerrstatus_) - - -namespace yy { -#line 144 "seclang-parser.cc" // lalr1.cc:512 - - /* Return YYSTR after stripping away unnecessary quotes and - backslashes, so that it's suitable for yyerror. The heuristic is - that double-quoting is unnecessary unless the string contains an - apostrophe, a comma, or backslash (other than backslash-backslash). - YYSTR is taken from yytname. */ - std::string - seclang_parser::yytnamerr_ (const char *yystr) - { - if (*yystr == '"') - { - std::string yyr = ""; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - // Fall through. - default: - yyr += *yyp; - break; - - case '"': - return yyr; - } - do_not_strip_quotes: ; - } - - return yystr; - } - - - /// Build a parser object. - seclang_parser::seclang_parser (modsecurity::Parser::Driver& driver_yyarg) - : -#if YYDEBUG - yydebug_ (false), - yycdebug_ (&std::cerr), -#endif - driver (driver_yyarg) - {} - - seclang_parser::~seclang_parser () - {} - - - /*---------------. - | Symbol types. | - `---------------*/ - - - - // by_state. - seclang_parser::by_state::by_state () - : state (empty_state) - {} - - seclang_parser::by_state::by_state (const by_state& other) - : state (other.state) - {} - - void - seclang_parser::by_state::clear () - { - state = empty_state; - } - - void - seclang_parser::by_state::move (by_state& that) - { - state = that.state; - that.clear (); - } - - seclang_parser::by_state::by_state (state_type s) - : state (s) - {} - - seclang_parser::symbol_number_type - seclang_parser::by_state::type_get () const - { - if (state == empty_state) - return empty_symbol; - else - return yystos_[state]; - } - - seclang_parser::stack_symbol_type::stack_symbol_type () - {} - - seclang_parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that) - : super_type (YY_MOVE (that.state), YY_MOVE (that.location)) - { - switch (that.type_get ()) - { - case 144: // "Accuracy" - case 145: // "Allow" - case 146: // "Append" - case 147: // "AuditLog" - case 148: // "Block" - case 149: // "Capture" - case 150: // "Chain" - case 151: // "ACTION_CTL_AUDIT_ENGINE" - case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 153: // "ACTION_CTL_BDY_JSON" - case 154: // "ACTION_CTL_BDY_XML" - case 155: // "ACTION_CTL_BDY_URLENCODED" - case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 162: // "Deny" - case 163: // "DeprecateVar" - case 164: // "Drop" - case 165: // "Exec" - case 166: // "ExpireVar" - case 167: // "Id" - case 168: // "InitCol" - case 169: // "Log" - case 170: // "LogData" - case 171: // "Maturity" - case 172: // "Msg" - case 173: // "MultiMatch" - case 174: // "NoAuditLog" - case 175: // "NoLog" - case 176: // "Pass" - case 177: // "Pause" - case 178: // "Phase" - case 179: // "Prepend" - case 180: // "Proxy" - case 181: // "Redirect" - case 182: // "Rev" - case 183: // "SanitiseArg" - case 184: // "SanitiseMatched" - case 185: // "SanitiseMatchedBytes" - case 186: // "SanitiseRequestHeader" - case 187: // "SanitiseResponseHeader" - case 188: // "SetEnv" - case 189: // "SetRsc" - case 190: // "SetSid" - case 191: // "SetUID" - case 192: // "Severity" - case 193: // "Skip" - case 194: // "SkipAfter" - case 195: // "Status" - case 196: // "Tag" - case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case 200: // "ACTION_TRANSFORMATION_CMD_LINE" - case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" - case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 207: // "ACTION_TRANSFORMATION_JS_DECODE" - case 208: // "ACTION_TRANSFORMATION_LENGTH" - case 209: // "ACTION_TRANSFORMATION_LOWERCASE" - case 210: // "ACTION_TRANSFORMATION_MD5" - case 211: // "ACTION_TRANSFORMATION_NONE" - case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 223: // "ACTION_TRANSFORMATION_SHA1" - case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 225: // "ACTION_TRANSFORMATION_TRIM" - case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case 228: // "ACTION_TRANSFORMATION_UPPERCASE" - case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" - case 230: // "ACTION_TRANSFORMATION_URL_DECODE" - case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 233: // "Ver" - case 234: // "xmlns" - case 235: // "CONFIG_COMPONENT_SIG" - case 236: // "CONFIG_CONN_ENGINE" - case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case 238: // "CONFIG_SEC_WEB_APP_ID" - case 239: // "CONFIG_SEC_SERVER_SIG" - case 240: // "CONFIG_DIR_AUDIT_DIR" - case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 242: // "CONFIG_DIR_AUDIT_ENG" - case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 244: // "CONFIG_DIR_AUDIT_LOG" - case 245: // "CONFIG_DIR_AUDIT_LOG2" - case 246: // "CONFIG_DIR_AUDIT_LOG_P" - case 247: // "CONFIG_DIR_AUDIT_STS" - case 248: // "CONFIG_DIR_AUDIT_TPE" - case 249: // "CONFIG_DIR_DEBUG_LOG" - case 250: // "CONFIG_DIR_DEBUG_LVL" - case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case 253: // "CONFIG_SEC_HASH_ENGINE" - case 254: // "CONFIG_SEC_HASH_KEY" - case 255: // "CONFIG_SEC_HASH_PARAM" - case 256: // "CONFIG_SEC_HASH_METHOD_RX" - case 257: // "CONFIG_SEC_HASH_METHOD_PM" - case 258: // "CONFIG_SEC_CHROOT_DIR" - case 259: // "CONFIG_DIR_GEO_DB" - case 260: // "CONFIG_DIR_GSB_DB" - case 261: // "CONFIG_SEC_GUARDIAN_LOG" - case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case 266: // "CONFIG_SEC_SENSOR_ID" - case 267: // "CONFIG_DIR_REQ_BODY" - case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 272: // "CONFIG_DIR_RES_BODY" - case 273: // "CONFIG_DIR_RES_BODY_LIMIT" - case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 275: // "CONFIG_SEC_RULE_INHERITANCE" - case 276: // "CONFIG_SEC_RULE_PERF_TIME" - case 277: // "CONFIG_DIR_RULE_ENG" - case 278: // "CONFIG_DIR_SEC_ACTION" - case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 280: // "CONFIG_DIR_SEC_MARKER" - case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 284: // "CONFIG_SEC_HTTP_BLKEY" - case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case 294: // "CONFIG_UPDLOAD_KEEP_FILES" - case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 296: // "CONFIG_UPLOAD_DIR" - case 297: // "CONFIG_UPLOAD_FILE_LIMIT" - case 298: // "CONFIG_UPLOAD_FILE_MODE" - case 299: // "CONFIG_VALUE_ABORT" - case 300: // "CONFIG_VALUE_DETC" - case 301: // "CONFIG_VALUE_HTTPS" - case 302: // "CONFIG_VALUE_OFF" - case 303: // "CONFIG_VALUE_ON" - case 304: // "CONFIG_VALUE_PARALLEL" - case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 306: // "CONFIG_VALUE_REJECT" - case 307: // "CONFIG_VALUE_RELEVANT_ONLY" - case 308: // "CONFIG_VALUE_SERIAL" - case 309: // "CONFIG_VALUE_WARN" - case 310: // "CONFIG_XML_EXTERNAL_ENTITY" - case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 312: // "CONGIG_DIR_SEC_ARG_SEP" - case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case 315: // "CONGIG_DIR_SEC_DATA_DIR" - case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case 319: // "CONGIG_DIR_SEC_TMP_DIR" - case 320: // "DIRECTIVE" - case 321: // "DIRECTIVE_SECRULESCRIPT" - case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case 323: // "QUOTATION_MARK" - case 324: // "RUN_TIME_VAR_BLD" - case 325: // "RUN_TIME_VAR_DUR" - case 326: // "RUN_TIME_VAR_HSV" - case 327: // "RUN_TIME_VAR_REMOTE_USER" - case 328: // "RUN_TIME_VAR_TIME" - case 329: // "RUN_TIME_VAR_TIME_DAY" - case 330: // "RUN_TIME_VAR_TIME_EPOCH" - case 331: // "RUN_TIME_VAR_TIME_HOUR" - case 332: // "RUN_TIME_VAR_TIME_MIN" - case 333: // "RUN_TIME_VAR_TIME_MON" - case 334: // "RUN_TIME_VAR_TIME_SEC" - case 335: // "RUN_TIME_VAR_TIME_WDAY" - case 336: // "RUN_TIME_VAR_TIME_YEAR" - case 337: // "VARIABLE" - case 338: // "Dictionary element" - case 339: // "Dictionary element, selected by regexp" - value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); - break; - - case 346: // op - case 347: // op_before_init - value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); - break; - - case 355: // run_time_string - value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); - break; - - case 352: // var - value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); - break; - - case 353: // act - case 354: // setvar_action - value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); - break; - - case 349: // variables - case 350: // variables_pre_process - case 351: // variables_may_be_quoted - value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (that.value)); - break; - - case 344: // actions - case 345: // actions_may_quoted - value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (that.value)); - break; - - default: - break; - } - -#if defined __cplusplus && 201103L <= __cplusplus - // that is emptied. - that.state = empty_state; -#endif - } - - seclang_parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that) - : super_type (s, YY_MOVE (that.location)) - { - switch (that.type_get ()) - { - case 144: // "Accuracy" - case 145: // "Allow" - case 146: // "Append" - case 147: // "AuditLog" - case 148: // "Block" - case 149: // "Capture" - case 150: // "Chain" - case 151: // "ACTION_CTL_AUDIT_ENGINE" - case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 153: // "ACTION_CTL_BDY_JSON" - case 154: // "ACTION_CTL_BDY_XML" - case 155: // "ACTION_CTL_BDY_URLENCODED" - case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 162: // "Deny" - case 163: // "DeprecateVar" - case 164: // "Drop" - case 165: // "Exec" - case 166: // "ExpireVar" - case 167: // "Id" - case 168: // "InitCol" - case 169: // "Log" - case 170: // "LogData" - case 171: // "Maturity" - case 172: // "Msg" - case 173: // "MultiMatch" - case 174: // "NoAuditLog" - case 175: // "NoLog" - case 176: // "Pass" - case 177: // "Pause" - case 178: // "Phase" - case 179: // "Prepend" - case 180: // "Proxy" - case 181: // "Redirect" - case 182: // "Rev" - case 183: // "SanitiseArg" - case 184: // "SanitiseMatched" - case 185: // "SanitiseMatchedBytes" - case 186: // "SanitiseRequestHeader" - case 187: // "SanitiseResponseHeader" - case 188: // "SetEnv" - case 189: // "SetRsc" - case 190: // "SetSid" - case 191: // "SetUID" - case 192: // "Severity" - case 193: // "Skip" - case 194: // "SkipAfter" - case 195: // "Status" - case 196: // "Tag" - case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case 200: // "ACTION_TRANSFORMATION_CMD_LINE" - case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" - case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 207: // "ACTION_TRANSFORMATION_JS_DECODE" - case 208: // "ACTION_TRANSFORMATION_LENGTH" - case 209: // "ACTION_TRANSFORMATION_LOWERCASE" - case 210: // "ACTION_TRANSFORMATION_MD5" - case 211: // "ACTION_TRANSFORMATION_NONE" - case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 223: // "ACTION_TRANSFORMATION_SHA1" - case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 225: // "ACTION_TRANSFORMATION_TRIM" - case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case 228: // "ACTION_TRANSFORMATION_UPPERCASE" - case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" - case 230: // "ACTION_TRANSFORMATION_URL_DECODE" - case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 233: // "Ver" - case 234: // "xmlns" - case 235: // "CONFIG_COMPONENT_SIG" - case 236: // "CONFIG_CONN_ENGINE" - case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case 238: // "CONFIG_SEC_WEB_APP_ID" - case 239: // "CONFIG_SEC_SERVER_SIG" - case 240: // "CONFIG_DIR_AUDIT_DIR" - case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 242: // "CONFIG_DIR_AUDIT_ENG" - case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 244: // "CONFIG_DIR_AUDIT_LOG" - case 245: // "CONFIG_DIR_AUDIT_LOG2" - case 246: // "CONFIG_DIR_AUDIT_LOG_P" - case 247: // "CONFIG_DIR_AUDIT_STS" - case 248: // "CONFIG_DIR_AUDIT_TPE" - case 249: // "CONFIG_DIR_DEBUG_LOG" - case 250: // "CONFIG_DIR_DEBUG_LVL" - case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case 253: // "CONFIG_SEC_HASH_ENGINE" - case 254: // "CONFIG_SEC_HASH_KEY" - case 255: // "CONFIG_SEC_HASH_PARAM" - case 256: // "CONFIG_SEC_HASH_METHOD_RX" - case 257: // "CONFIG_SEC_HASH_METHOD_PM" - case 258: // "CONFIG_SEC_CHROOT_DIR" - case 259: // "CONFIG_DIR_GEO_DB" - case 260: // "CONFIG_DIR_GSB_DB" - case 261: // "CONFIG_SEC_GUARDIAN_LOG" - case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case 266: // "CONFIG_SEC_SENSOR_ID" - case 267: // "CONFIG_DIR_REQ_BODY" - case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 272: // "CONFIG_DIR_RES_BODY" - case 273: // "CONFIG_DIR_RES_BODY_LIMIT" - case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 275: // "CONFIG_SEC_RULE_INHERITANCE" - case 276: // "CONFIG_SEC_RULE_PERF_TIME" - case 277: // "CONFIG_DIR_RULE_ENG" - case 278: // "CONFIG_DIR_SEC_ACTION" - case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 280: // "CONFIG_DIR_SEC_MARKER" - case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 284: // "CONFIG_SEC_HTTP_BLKEY" - case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case 294: // "CONFIG_UPDLOAD_KEEP_FILES" - case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 296: // "CONFIG_UPLOAD_DIR" - case 297: // "CONFIG_UPLOAD_FILE_LIMIT" - case 298: // "CONFIG_UPLOAD_FILE_MODE" - case 299: // "CONFIG_VALUE_ABORT" - case 300: // "CONFIG_VALUE_DETC" - case 301: // "CONFIG_VALUE_HTTPS" - case 302: // "CONFIG_VALUE_OFF" - case 303: // "CONFIG_VALUE_ON" - case 304: // "CONFIG_VALUE_PARALLEL" - case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 306: // "CONFIG_VALUE_REJECT" - case 307: // "CONFIG_VALUE_RELEVANT_ONLY" - case 308: // "CONFIG_VALUE_SERIAL" - case 309: // "CONFIG_VALUE_WARN" - case 310: // "CONFIG_XML_EXTERNAL_ENTITY" - case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 312: // "CONGIG_DIR_SEC_ARG_SEP" - case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case 315: // "CONGIG_DIR_SEC_DATA_DIR" - case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case 319: // "CONGIG_DIR_SEC_TMP_DIR" - case 320: // "DIRECTIVE" - case 321: // "DIRECTIVE_SECRULESCRIPT" - case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case 323: // "QUOTATION_MARK" - case 324: // "RUN_TIME_VAR_BLD" - case 325: // "RUN_TIME_VAR_DUR" - case 326: // "RUN_TIME_VAR_HSV" - case 327: // "RUN_TIME_VAR_REMOTE_USER" - case 328: // "RUN_TIME_VAR_TIME" - case 329: // "RUN_TIME_VAR_TIME_DAY" - case 330: // "RUN_TIME_VAR_TIME_EPOCH" - case 331: // "RUN_TIME_VAR_TIME_HOUR" - case 332: // "RUN_TIME_VAR_TIME_MIN" - case 333: // "RUN_TIME_VAR_TIME_MON" - case 334: // "RUN_TIME_VAR_TIME_SEC" - case 335: // "RUN_TIME_VAR_TIME_WDAY" - case 336: // "RUN_TIME_VAR_TIME_YEAR" - case 337: // "VARIABLE" - case 338: // "Dictionary element" - case 339: // "Dictionary element, selected by regexp" - value.move< std::string > (YY_MOVE (that.value)); - break; - - case 346: // op - case 347: // op_before_init - value.move< std::unique_ptr > (YY_MOVE (that.value)); - break; - - case 355: // run_time_string - value.move< std::unique_ptr > (YY_MOVE (that.value)); - break; - - case 352: // var - value.move< std::unique_ptr > (YY_MOVE (that.value)); - break; - - case 353: // act - case 354: // setvar_action - value.move< std::unique_ptr > (YY_MOVE (that.value)); - break; - - case 349: // variables - case 350: // variables_pre_process - case 351: // variables_may_be_quoted - value.move< std::unique_ptr > > > (YY_MOVE (that.value)); - break; - - case 344: // actions - case 345: // actions_may_quoted - value.move< std::unique_ptr > > > (YY_MOVE (that.value)); - break; - - default: - break; - } - - // that is emptied. - that.type = empty_symbol; - } - -#if defined __cplusplus && __cplusplus < 201103L - seclang_parser::stack_symbol_type& - seclang_parser::stack_symbol_type::operator= (stack_symbol_type& that) - { - state = that.state; - switch (that.type_get ()) - { - case 144: // "Accuracy" - case 145: // "Allow" - case 146: // "Append" - case 147: // "AuditLog" - case 148: // "Block" - case 149: // "Capture" - case 150: // "Chain" - case 151: // "ACTION_CTL_AUDIT_ENGINE" - case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 153: // "ACTION_CTL_BDY_JSON" - case 154: // "ACTION_CTL_BDY_XML" - case 155: // "ACTION_CTL_BDY_URLENCODED" - case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 162: // "Deny" - case 163: // "DeprecateVar" - case 164: // "Drop" - case 165: // "Exec" - case 166: // "ExpireVar" - case 167: // "Id" - case 168: // "InitCol" - case 169: // "Log" - case 170: // "LogData" - case 171: // "Maturity" - case 172: // "Msg" - case 173: // "MultiMatch" - case 174: // "NoAuditLog" - case 175: // "NoLog" - case 176: // "Pass" - case 177: // "Pause" - case 178: // "Phase" - case 179: // "Prepend" - case 180: // "Proxy" - case 181: // "Redirect" - case 182: // "Rev" - case 183: // "SanitiseArg" - case 184: // "SanitiseMatched" - case 185: // "SanitiseMatchedBytes" - case 186: // "SanitiseRequestHeader" - case 187: // "SanitiseResponseHeader" - case 188: // "SetEnv" - case 189: // "SetRsc" - case 190: // "SetSid" - case 191: // "SetUID" - case 192: // "Severity" - case 193: // "Skip" - case 194: // "SkipAfter" - case 195: // "Status" - case 196: // "Tag" - case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case 200: // "ACTION_TRANSFORMATION_CMD_LINE" - case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" - case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 207: // "ACTION_TRANSFORMATION_JS_DECODE" - case 208: // "ACTION_TRANSFORMATION_LENGTH" - case 209: // "ACTION_TRANSFORMATION_LOWERCASE" - case 210: // "ACTION_TRANSFORMATION_MD5" - case 211: // "ACTION_TRANSFORMATION_NONE" - case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 223: // "ACTION_TRANSFORMATION_SHA1" - case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 225: // "ACTION_TRANSFORMATION_TRIM" - case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case 228: // "ACTION_TRANSFORMATION_UPPERCASE" - case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" - case 230: // "ACTION_TRANSFORMATION_URL_DECODE" - case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 233: // "Ver" - case 234: // "xmlns" - case 235: // "CONFIG_COMPONENT_SIG" - case 236: // "CONFIG_CONN_ENGINE" - case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case 238: // "CONFIG_SEC_WEB_APP_ID" - case 239: // "CONFIG_SEC_SERVER_SIG" - case 240: // "CONFIG_DIR_AUDIT_DIR" - case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 242: // "CONFIG_DIR_AUDIT_ENG" - case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 244: // "CONFIG_DIR_AUDIT_LOG" - case 245: // "CONFIG_DIR_AUDIT_LOG2" - case 246: // "CONFIG_DIR_AUDIT_LOG_P" - case 247: // "CONFIG_DIR_AUDIT_STS" - case 248: // "CONFIG_DIR_AUDIT_TPE" - case 249: // "CONFIG_DIR_DEBUG_LOG" - case 250: // "CONFIG_DIR_DEBUG_LVL" - case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case 253: // "CONFIG_SEC_HASH_ENGINE" - case 254: // "CONFIG_SEC_HASH_KEY" - case 255: // "CONFIG_SEC_HASH_PARAM" - case 256: // "CONFIG_SEC_HASH_METHOD_RX" - case 257: // "CONFIG_SEC_HASH_METHOD_PM" - case 258: // "CONFIG_SEC_CHROOT_DIR" - case 259: // "CONFIG_DIR_GEO_DB" - case 260: // "CONFIG_DIR_GSB_DB" - case 261: // "CONFIG_SEC_GUARDIAN_LOG" - case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case 266: // "CONFIG_SEC_SENSOR_ID" - case 267: // "CONFIG_DIR_REQ_BODY" - case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 272: // "CONFIG_DIR_RES_BODY" - case 273: // "CONFIG_DIR_RES_BODY_LIMIT" - case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 275: // "CONFIG_SEC_RULE_INHERITANCE" - case 276: // "CONFIG_SEC_RULE_PERF_TIME" - case 277: // "CONFIG_DIR_RULE_ENG" - case 278: // "CONFIG_DIR_SEC_ACTION" - case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 280: // "CONFIG_DIR_SEC_MARKER" - case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 284: // "CONFIG_SEC_HTTP_BLKEY" - case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case 294: // "CONFIG_UPDLOAD_KEEP_FILES" - case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 296: // "CONFIG_UPLOAD_DIR" - case 297: // "CONFIG_UPLOAD_FILE_LIMIT" - case 298: // "CONFIG_UPLOAD_FILE_MODE" - case 299: // "CONFIG_VALUE_ABORT" - case 300: // "CONFIG_VALUE_DETC" - case 301: // "CONFIG_VALUE_HTTPS" - case 302: // "CONFIG_VALUE_OFF" - case 303: // "CONFIG_VALUE_ON" - case 304: // "CONFIG_VALUE_PARALLEL" - case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 306: // "CONFIG_VALUE_REJECT" - case 307: // "CONFIG_VALUE_RELEVANT_ONLY" - case 308: // "CONFIG_VALUE_SERIAL" - case 309: // "CONFIG_VALUE_WARN" - case 310: // "CONFIG_XML_EXTERNAL_ENTITY" - case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 312: // "CONGIG_DIR_SEC_ARG_SEP" - case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case 315: // "CONGIG_DIR_SEC_DATA_DIR" - case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case 319: // "CONGIG_DIR_SEC_TMP_DIR" - case 320: // "DIRECTIVE" - case 321: // "DIRECTIVE_SECRULESCRIPT" - case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case 323: // "QUOTATION_MARK" - case 324: // "RUN_TIME_VAR_BLD" - case 325: // "RUN_TIME_VAR_DUR" - case 326: // "RUN_TIME_VAR_HSV" - case 327: // "RUN_TIME_VAR_REMOTE_USER" - case 328: // "RUN_TIME_VAR_TIME" - case 329: // "RUN_TIME_VAR_TIME_DAY" - case 330: // "RUN_TIME_VAR_TIME_EPOCH" - case 331: // "RUN_TIME_VAR_TIME_HOUR" - case 332: // "RUN_TIME_VAR_TIME_MIN" - case 333: // "RUN_TIME_VAR_TIME_MON" - case 334: // "RUN_TIME_VAR_TIME_SEC" - case 335: // "RUN_TIME_VAR_TIME_WDAY" - case 336: // "RUN_TIME_VAR_TIME_YEAR" - case 337: // "VARIABLE" - case 338: // "Dictionary element" - case 339: // "Dictionary element, selected by regexp" - value.move< std::string > (that.value); - break; - - case 346: // op - case 347: // op_before_init - value.move< std::unique_ptr > (that.value); - break; - - case 355: // run_time_string - value.move< std::unique_ptr > (that.value); - break; - - case 352: // var - value.move< std::unique_ptr > (that.value); - break; - - case 353: // act - case 354: // setvar_action - value.move< std::unique_ptr > (that.value); - break; - - case 349: // variables - case 350: // variables_pre_process - case 351: // variables_may_be_quoted - value.move< std::unique_ptr > > > (that.value); - break; - - case 344: // actions - case 345: // actions_may_quoted - value.move< std::unique_ptr > > > (that.value); - break; - - default: - break; - } - - location = that.location; - // that is emptied. - that.state = empty_state; - return *this; - } -#endif - - template - void - seclang_parser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const - { - if (yymsg) - YY_SYMBOL_PRINT (yymsg, yysym); - } - -#if YYDEBUG - template - void - seclang_parser::yy_print_ (std::ostream& yyo, - const basic_symbol& yysym) const - { - std::ostream& yyoutput = yyo; - YYUSE (yyoutput); - symbol_number_type yytype = yysym.type_get (); - // Avoid a (spurious) G++ 4.8 warning about "array subscript is - // below array bounds". - if (yysym.empty ()) - std::abort (); - yyo << (yytype < yyntokens_ ? "token" : "nterm") - << ' ' << yytname_[yytype] << " (" - << yysym.location << ": "; - YYUSE (yytype); - yyo << ')'; - } -#endif - - void - seclang_parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym) - { - if (m) - YY_SYMBOL_PRINT (m, sym); - yystack_.push (YY_MOVE (sym)); - } - - void - seclang_parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym) - { -#if defined __cplusplus && 201103L <= __cplusplus - yypush_ (m, stack_symbol_type (s, std::move (sym))); -#else - stack_symbol_type ss (s, sym); - yypush_ (m, ss); -#endif - } - - void - seclang_parser::yypop_ (int n) - { - yystack_.pop (n); - } - -#if YYDEBUG - std::ostream& - seclang_parser::debug_stream () const - { - return *yycdebug_; - } - - void - seclang_parser::set_debug_stream (std::ostream& o) - { - yycdebug_ = &o; - } - - - seclang_parser::debug_level_type - seclang_parser::debug_level () const - { - return yydebug_; - } - - void - seclang_parser::set_debug_level (debug_level_type l) - { - yydebug_ = l; - } -#endif // YYDEBUG - - seclang_parser::state_type - seclang_parser::yy_lr_goto_state_ (state_type yystate, int yysym) - { - int yyr = yypgoto_[yysym - yyntokens_] + yystate; - if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate) - return yytable_[yyr]; - else - return yydefgoto_[yysym - yyntokens_]; - } - - bool - seclang_parser::yy_pact_value_is_default_ (int yyvalue) - { - return yyvalue == yypact_ninf_; - } - - bool - seclang_parser::yy_table_value_is_error_ (int yyvalue) - { - return yyvalue == yytable_ninf_; - } - - int - seclang_parser::operator() () - { - return parse (); - } - - int - seclang_parser::parse () - { - // State. - int yyn; - /// Length of the RHS of the rule being reduced. - int yylen = 0; - - // Error handling. - int yynerrs_ = 0; - int yyerrstatus_ = 0; - - /// The lookahead symbol. - symbol_type yyla; - - /// The locations where the error started and ended. - stack_symbol_type yyerror_range[3]; - - /// The return value of parse (). - int yyresult; - -#if YY_EXCEPTIONS - try -#endif // YY_EXCEPTIONS - { - YYCDEBUG << "Starting parse\n"; - - - // User initialization code. -#line 354 "seclang-parser.yy" // lalr1.cc:783 -{ - // Initialize the initial location. - yyla.location.begin.filename = yyla.location.end.filename = &driver.file; -} - -#line 1116 "seclang-parser.cc" // lalr1.cc:783 - - /* Initialize the stack. The initial state will be set in - yynewstate, since the latter expects the semantical and the - location values to have been already stored, initialize these - stacks with a primary value. */ - yystack_.clear (); - yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla)); - - // A new symbol was pushed on the stack. - yynewstate: - YYCDEBUG << "Entering state " << yystack_[0].state << '\n'; - - // Accept? - if (yystack_[0].state == yyfinal_) - goto yyacceptlab; - - goto yybackup; - - // Backup. - yybackup: - // Try to take a decision without lookahead. - yyn = yypact_[yystack_[0].state]; - if (yy_pact_value_is_default_ (yyn)) - goto yydefault; - - // Read a lookahead token. - if (yyla.empty ()) - { - YYCDEBUG << "Reading a token: "; -#if YY_EXCEPTIONS - try -#endif // YY_EXCEPTIONS - { - symbol_type yylookahead (yylex (driver)); - yyla.move (yylookahead); - } -#if YY_EXCEPTIONS - catch (const syntax_error& yyexc) - { - error (yyexc); - goto yyerrlab1; - } -#endif // YY_EXCEPTIONS - } - YY_SYMBOL_PRINT ("Next token is", yyla); - - /* If the proper action on seeing token YYLA.TYPE is to reduce or - to detect an error, take that action. */ - yyn += yyla.type_get (); - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ()) - goto yydefault; - - // Reduce or error. - yyn = yytable_[yyn]; - if (yyn <= 0) - { - if (yy_table_value_is_error_ (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - // Count tokens shifted since error; after three, turn off error status. - if (yyerrstatus_) - --yyerrstatus_; - - // Shift the lookahead token. - yypush_ ("Shifting", yyn, YY_MOVE (yyla)); - goto yynewstate; - - /*-----------------------------------------------------------. - | yydefault -- do the default action for the current state. | - `-----------------------------------------------------------*/ - yydefault: - yyn = yydefact_[yystack_[0].state]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - /*-----------------------------. - | yyreduce -- Do a reduction. | - `-----------------------------*/ - yyreduce: - yylen = yyr2_[yyn]; - { - stack_symbol_type yylhs; - yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]); - /* Variants are always initialized to an empty instance of the - correct type. The default '$$ = $1' action is NOT applied - when using variants. */ - switch (yyr1_[yyn]) - { - case 144: // "Accuracy" - case 145: // "Allow" - case 146: // "Append" - case 147: // "AuditLog" - case 148: // "Block" - case 149: // "Capture" - case 150: // "Chain" - case 151: // "ACTION_CTL_AUDIT_ENGINE" - case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 153: // "ACTION_CTL_BDY_JSON" - case 154: // "ACTION_CTL_BDY_XML" - case 155: // "ACTION_CTL_BDY_URLENCODED" - case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 162: // "Deny" - case 163: // "DeprecateVar" - case 164: // "Drop" - case 165: // "Exec" - case 166: // "ExpireVar" - case 167: // "Id" - case 168: // "InitCol" - case 169: // "Log" - case 170: // "LogData" - case 171: // "Maturity" - case 172: // "Msg" - case 173: // "MultiMatch" - case 174: // "NoAuditLog" - case 175: // "NoLog" - case 176: // "Pass" - case 177: // "Pause" - case 178: // "Phase" - case 179: // "Prepend" - case 180: // "Proxy" - case 181: // "Redirect" - case 182: // "Rev" - case 183: // "SanitiseArg" - case 184: // "SanitiseMatched" - case 185: // "SanitiseMatchedBytes" - case 186: // "SanitiseRequestHeader" - case 187: // "SanitiseResponseHeader" - case 188: // "SetEnv" - case 189: // "SetRsc" - case 190: // "SetSid" - case 191: // "SetUID" - case 192: // "Severity" - case 193: // "Skip" - case 194: // "SkipAfter" - case 195: // "Status" - case 196: // "Tag" - case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case 200: // "ACTION_TRANSFORMATION_CMD_LINE" - case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" - case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 207: // "ACTION_TRANSFORMATION_JS_DECODE" - case 208: // "ACTION_TRANSFORMATION_LENGTH" - case 209: // "ACTION_TRANSFORMATION_LOWERCASE" - case 210: // "ACTION_TRANSFORMATION_MD5" - case 211: // "ACTION_TRANSFORMATION_NONE" - case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 223: // "ACTION_TRANSFORMATION_SHA1" - case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 225: // "ACTION_TRANSFORMATION_TRIM" - case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case 228: // "ACTION_TRANSFORMATION_UPPERCASE" - case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" - case 230: // "ACTION_TRANSFORMATION_URL_DECODE" - case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 233: // "Ver" - case 234: // "xmlns" - case 235: // "CONFIG_COMPONENT_SIG" - case 236: // "CONFIG_CONN_ENGINE" - case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case 238: // "CONFIG_SEC_WEB_APP_ID" - case 239: // "CONFIG_SEC_SERVER_SIG" - case 240: // "CONFIG_DIR_AUDIT_DIR" - case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 242: // "CONFIG_DIR_AUDIT_ENG" - case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 244: // "CONFIG_DIR_AUDIT_LOG" - case 245: // "CONFIG_DIR_AUDIT_LOG2" - case 246: // "CONFIG_DIR_AUDIT_LOG_P" - case 247: // "CONFIG_DIR_AUDIT_STS" - case 248: // "CONFIG_DIR_AUDIT_TPE" - case 249: // "CONFIG_DIR_DEBUG_LOG" - case 250: // "CONFIG_DIR_DEBUG_LVL" - case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case 253: // "CONFIG_SEC_HASH_ENGINE" - case 254: // "CONFIG_SEC_HASH_KEY" - case 255: // "CONFIG_SEC_HASH_PARAM" - case 256: // "CONFIG_SEC_HASH_METHOD_RX" - case 257: // "CONFIG_SEC_HASH_METHOD_PM" - case 258: // "CONFIG_SEC_CHROOT_DIR" - case 259: // "CONFIG_DIR_GEO_DB" - case 260: // "CONFIG_DIR_GSB_DB" - case 261: // "CONFIG_SEC_GUARDIAN_LOG" - case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case 266: // "CONFIG_SEC_SENSOR_ID" - case 267: // "CONFIG_DIR_REQ_BODY" - case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 272: // "CONFIG_DIR_RES_BODY" - case 273: // "CONFIG_DIR_RES_BODY_LIMIT" - case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 275: // "CONFIG_SEC_RULE_INHERITANCE" - case 276: // "CONFIG_SEC_RULE_PERF_TIME" - case 277: // "CONFIG_DIR_RULE_ENG" - case 278: // "CONFIG_DIR_SEC_ACTION" - case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 280: // "CONFIG_DIR_SEC_MARKER" - case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 284: // "CONFIG_SEC_HTTP_BLKEY" - case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case 294: // "CONFIG_UPDLOAD_KEEP_FILES" - case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 296: // "CONFIG_UPLOAD_DIR" - case 297: // "CONFIG_UPLOAD_FILE_LIMIT" - case 298: // "CONFIG_UPLOAD_FILE_MODE" - case 299: // "CONFIG_VALUE_ABORT" - case 300: // "CONFIG_VALUE_DETC" - case 301: // "CONFIG_VALUE_HTTPS" - case 302: // "CONFIG_VALUE_OFF" - case 303: // "CONFIG_VALUE_ON" - case 304: // "CONFIG_VALUE_PARALLEL" - case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 306: // "CONFIG_VALUE_REJECT" - case 307: // "CONFIG_VALUE_RELEVANT_ONLY" - case 308: // "CONFIG_VALUE_SERIAL" - case 309: // "CONFIG_VALUE_WARN" - case 310: // "CONFIG_XML_EXTERNAL_ENTITY" - case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 312: // "CONGIG_DIR_SEC_ARG_SEP" - case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case 315: // "CONGIG_DIR_SEC_DATA_DIR" - case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case 319: // "CONGIG_DIR_SEC_TMP_DIR" - case 320: // "DIRECTIVE" - case 321: // "DIRECTIVE_SECRULESCRIPT" - case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case 323: // "QUOTATION_MARK" - case 324: // "RUN_TIME_VAR_BLD" - case 325: // "RUN_TIME_VAR_DUR" - case 326: // "RUN_TIME_VAR_HSV" - case 327: // "RUN_TIME_VAR_REMOTE_USER" - case 328: // "RUN_TIME_VAR_TIME" - case 329: // "RUN_TIME_VAR_TIME_DAY" - case 330: // "RUN_TIME_VAR_TIME_EPOCH" - case 331: // "RUN_TIME_VAR_TIME_HOUR" - case 332: // "RUN_TIME_VAR_TIME_MIN" - case 333: // "RUN_TIME_VAR_TIME_MON" - case 334: // "RUN_TIME_VAR_TIME_SEC" - case 335: // "RUN_TIME_VAR_TIME_WDAY" - case 336: // "RUN_TIME_VAR_TIME_YEAR" - case 337: // "VARIABLE" - case 338: // "Dictionary element" - case 339: // "Dictionary element, selected by regexp" - yylhs.value.emplace< std::string > (); - break; - - case 346: // op - case 347: // op_before_init - yylhs.value.emplace< std::unique_ptr > (); - break; - - case 355: // run_time_string - yylhs.value.emplace< std::unique_ptr > (); - break; - - case 352: // var - yylhs.value.emplace< std::unique_ptr > (); - break; - - case 353: // act - case 354: // setvar_action - yylhs.value.emplace< std::unique_ptr > (); - break; - - case 349: // variables - case 350: // variables_pre_process - case 351: // variables_may_be_quoted - yylhs.value.emplace< std::unique_ptr > > > (); - break; - - case 344: // actions - case 345: // actions_may_quoted - yylhs.value.emplace< std::unique_ptr > > > (); - break; - - default: - break; - } - - - // Default location. - { - slice slice (yystack_, yylen); - YYLLOC_DEFAULT (yylhs.location, slice, yylen); - yyerror_range[1].location = yylhs.location; - } - - // Perform the reduction. - YY_REDUCE_PRINT (yyn); -#if YY_EXCEPTIONS - try -#endif // YY_EXCEPTIONS - { - switch (yyn) - { - case 2: -#line 744 "seclang-parser.yy" // lalr1.cc:906 - { - return 0; - } -#line 1462 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 6: -#line 757 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setStorageDirMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8)); - } -#line 1470 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 7: -#line 763 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setStorageDir(yystack_[0].value.as< std::string > ()); - } -#line 1478 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 8: -#line 769 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::RelevantOnlyAuditLogStatus); - } -#line 1486 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 9: -#line 773 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OffAuditLogStatus); - } -#line 1494 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 10: -#line 777 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OnAuditLogStatus); - } -#line 1502 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 11: -#line 783 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setFileMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8)); - } -#line 1510 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 12: -#line 789 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setFilePath2(yystack_[0].value.as< std::string > ()); - } -#line 1518 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 13: -#line 795 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setParts(yystack_[0].value.as< std::string > ()); - } -#line 1526 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 14: -#line 801 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setFilePath1(yystack_[0].value.as< std::string > ()); - } -#line 1534 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 15: -#line 806 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::JSONAuditLogFormat); - } -#line 1542 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 16: -#line 811 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::NativeAuditLogFormat); - } -#line 1550 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 17: -#line 817 "seclang-parser.yy" // lalr1.cc:906 - { - std::string relevant_status(yystack_[0].value.as< std::string > ()); - driver.m_auditLog->setRelevantStatus(relevant_status); - } -#line 1559 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 18: -#line 824 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::SerialAuditLogType); - } -#line 1567 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 19: -#line 828 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::ParallelAuditLogType); - } -#line 1575 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 20: -#line 832 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::HttpsAuditLogType); - } -#line 1583 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 21: -#line 838 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_uploadKeepFiles = modsecurity::RulesProperties::TrueConfigBoolean; - } -#line 1591 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 22: -#line 842 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_uploadKeepFiles = modsecurity::RulesProperties::FalseConfigBoolean; - } -#line 1599 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 23: -#line 846 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[2].location, "SecUploadKeepFiles RelevantOnly is not currently supported. Accepted values are On or Off"); - YYERROR; - } -#line 1608 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 24: -#line 851 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_uploadFileLimit.m_set = true; - driver.m_uploadFileLimit.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 10); - } -#line 1617 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 25: -#line 856 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_uploadFileMode.m_set = true; - driver.m_uploadFileMode.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8); - } -#line 1626 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 26: -#line 861 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_uploadDirectory.m_set = true; - driver.m_uploadDirectory.m_value = yystack_[0].value.as< std::string > (); - } -#line 1635 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 27: -#line 866 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::TrueConfigBoolean; - } -#line 1643 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 28: -#line 870 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::FalseConfigBoolean; - } -#line 1651 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 29: -#line 877 "seclang-parser.yy" // lalr1.cc:906 - { - yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ()); - } -#line 1659 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 30: -#line 881 "seclang-parser.yy" // lalr1.cc:906 - { - yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ()); - } -#line 1667 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 31: -#line 888 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[3].location) - yystack_[2].value.as< std::unique_ptr > > > ()->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ())); - yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[2].value.as< std::unique_ptr > > > ()); - } -#line 1677 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 32: -#line 894 "seclang-parser.yy" // lalr1.cc:906 - { - std::unique_ptr>> b(new std::vector>()); - ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[1].location) - b->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ())); - yylhs.value.as< std::unique_ptr > > > () = std::move(b); - } -#line 1688 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 33: -#line 904 "seclang-parser.yy" // lalr1.cc:906 - { - yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ()); - std::string error; - if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) { - driver.error(yystack_[1].location, error); - YYERROR; - } - } -#line 1701 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 34: -#line 913 "seclang-parser.yy" // lalr1.cc:906 - { - yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ()); - yylhs.value.as< std::unique_ptr > ()->m_negation = true; - std::string error; - if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) { - driver.error(yystack_[2].location, error); - YYERROR; - } - } -#line 1715 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 35: -#line 923 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - std::string error; - if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) { - driver.error(yystack_[1].location, error); - YYERROR; - } - } -#line 1728 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 36: -#line 932 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - yylhs.value.as< std::unique_ptr > ()->m_negation = true; - std::string error; - if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) { - driver.error(yystack_[2].location, error); - YYERROR; - } - } -#line 1742 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 37: -#line 945 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::UnconditionalMatch()); - } -#line 1750 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 38: -#line 949 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectSQLi()); - } -#line 1758 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 39: -#line 953 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectXSS()); - } -#line 1766 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 40: -#line 957 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUrlEncoding()); - } -#line 1774 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 41: -#line 961 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUtf8Encoding()); - } -#line 1782 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 42: -#line 965 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::InspectFile(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1790 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 43: -#line 969 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::FuzzyHash(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1798 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 44: -#line 973 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateByteRange(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1806 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 45: -#line 977 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateDTD(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1814 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 46: -#line 981 "seclang-parser.yy" // lalr1.cc:906 - { - /* $$ = new operators::ValidateHash($1); */ - OPERATOR_NOT_SUPPORTED("ValidateHash", yystack_[2].location); - } -#line 1823 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 47: -#line 986 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateSchema(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1831 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 48: -#line 990 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifyCC(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1839 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 49: -#line 994 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifyCPF(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1847 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 50: -#line 998 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifySSN(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1855 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 51: -#line 1002 "seclang-parser.yy" // lalr1.cc:906 - { - /* $$ = new operators::GsbLookup($1); */ - OPERATOR_NOT_SUPPORTED("GsbLookup", yystack_[2].location); - } -#line 1864 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 52: -#line 1007 "seclang-parser.yy" // lalr1.cc:906 - { - /* $$ = new operators::Rsub($1); */ - OPERATOR_NOT_SUPPORTED("Rsub", yystack_[2].location); - } -#line 1873 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 53: -#line 1012 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Within(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1881 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 54: -#line 1016 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ContainsWord(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1889 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 55: -#line 1020 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Contains(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1897 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 56: -#line 1024 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::EndsWith(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1905 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 57: -#line 1028 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Eq(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1913 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 58: -#line 1032 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Ge(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1921 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 59: -#line 1036 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Gt(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1929 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 60: -#line 1040 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatchF(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1937 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 61: -#line 1044 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatch(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1945 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 62: -#line 1048 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Le(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1953 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 63: -#line 1052 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Lt(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1961 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 64: -#line 1056 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::PmFromFile(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1969 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 65: -#line 1060 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Pm(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1977 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 66: -#line 1064 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rbl(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1985 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 67: -#line 1068 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 1993 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 68: -#line 1072 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrEq(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 2001 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 69: -#line 1076 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrMatch(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 2009 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 70: -#line 1080 "seclang-parser.yy" // lalr1.cc:906 - { - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::BeginsWith(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 2017 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 71: -#line 1084 "seclang-parser.yy" // lalr1.cc:906 - { -#if defined(WITH_GEOIP) or defined(WITH_MAXMIND) - OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::GeoLookup()); -#else - std::stringstream ss; - ss << "This version of ModSecurity was not compiled with GeoIP or MaxMind support."; - driver.error(yystack_[1].location, ss.str()); - YYERROR; -#endif // WITH_GEOIP - } -#line 2032 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 73: -#line 1099 "seclang-parser.yy" // lalr1.cc:906 - { - std::vector *a = new std::vector(); - for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { - a->push_back(i.release()); - } - Variables::Variables *v = new Variables::Variables(); - for (auto &i : *yystack_[2].value.as< std::unique_ptr > > > ().get()) { - v->push_back(i.release()); - } - - Operator *op = yystack_[1].value.as< std::unique_ptr > ().release(); - Rule *rule = new Rule( - /* op */ op, - /* variables */ v, - /* actions */ a, - /* file name */ driver.ref.back(), - /* line number */ yystack_[3].location.end.line - ); - - if (driver.addSecRule(rule) == false) { - delete rule; - YYERROR; - } - } -#line 2061 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 74: -#line 1124 "seclang-parser.yy" // lalr1.cc:906 - { - Variables::Variables *v = new Variables::Variables(); - for (auto &i : *yystack_[1].value.as< std::unique_ptr > > > ().get()) { - v->push_back(i.release()); - } - - Rule *rule = new Rule( - /* op */ yystack_[0].value.as< std::unique_ptr > ().release(), - /* variables */ v, - /* actions */ NULL, - /* file name */ driver.ref.back(), - /* line number */ yystack_[2].location.end.line - ); - if (driver.addSecRule(rule) == false) { - delete rule; - YYERROR; - } - } -#line 2084 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 75: -#line 1143 "seclang-parser.yy" // lalr1.cc:906 - { - std::vector *a = new std::vector(); - for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { - a->push_back(i.release()); - } - Rule *rule = new Rule( - /* op */ NULL, - /* variables */ NULL, - /* actions */ a, - /* file name */ driver.ref.back(), - /* line number */ yystack_[1].location.end.line - ); - driver.addSecAction(rule); - } -#line 2103 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 76: -#line 1158 "seclang-parser.yy" // lalr1.cc:906 - { - std::string err; - std::vector *a = new std::vector(); - for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { - a->push_back(i.release()); - } - RuleScript *r = new RuleScript( - /* path to script */ yystack_[1].value.as< std::string > (), - /* actions */ a, - /* file name */ driver.ref.back(), - /* line number */ yystack_[1].location.end.line - ); - - if (r->init(&err) == false) { - driver.error(yystack_[2].location, "Failed to load script: " + err); - delete r; - YYERROR; - } - if (driver.addSecRuleScript(r) == false) { - delete r; - YYERROR; - } - } -#line 2131 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 77: -#line 1182 "seclang-parser.yy" // lalr1.cc:906 - { - bool hasDisruptive = false; - std::vector *actions = new std::vector(); - for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { - actions->push_back(i.release()); - } - std::vector checkedActions; - int definedPhase = -1; - int secRuleDefinedPhase = -1; - for (actions::Action *a : *actions) { - actions::Phase *phase = dynamic_cast(a); - if (a->isDisruptive() == true && dynamic_cast(a) == NULL) { - hasDisruptive = true; - } - if (phase != NULL) { - definedPhase = phase->m_phase; - secRuleDefinedPhase = phase->m_secRulesPhase; - delete phase; - } else if (a->action_kind == actions::Action::RunTimeOnlyIfMatchKind || - a->action_kind == actions::Action::RunTimeBeforeMatchAttemptKind) { - actions::transformations::None *none = dynamic_cast(a); - if (none != NULL) { - driver.error(yystack_[2].location, "The transformation none is not suitable to be part of the SecDefaultActions"); - YYERROR; - } - checkedActions.push_back(a); - } else { - driver.error(yystack_[2].location, "The action '" + a->m_name + "' is not suitable to be part of the SecDefaultActions"); - YYERROR; - } - } - if (definedPhase == -1) { - definedPhase = modsecurity::Phases::RequestHeadersPhase; - } - - if (hasDisruptive == false) { - driver.error(yystack_[2].location, "SecDefaultAction must specify a disruptive action."); - YYERROR; - } - - if (!driver.m_defaultActions[definedPhase].empty()) { - std::stringstream ss; - ss << "SecDefaultActions can only be placed once per phase and configuration context. Phase "; - ss << secRuleDefinedPhase; - ss << " was informed already."; - driver.error(yystack_[2].location, ss.str()); - YYERROR; - } - - for (actions::Action *a : checkedActions) { - driver.m_defaultActions[definedPhase].push_back(a); - } - - delete actions; - } -#line 2191 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 78: -#line 1238 "seclang-parser.yy" // lalr1.cc:906 - { - driver.addSecMarker(modsecurity::utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ())); - } -#line 2199 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 79: -#line 1242 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secRuleEngine = modsecurity::Rules::DisabledRuleEngine; - } -#line 2207 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 80: -#line 1246 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secRuleEngine = modsecurity::Rules::EnabledRuleEngine; - } -#line 2215 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 81: -#line 1250 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secRuleEngine = modsecurity::Rules::DetectionOnlyRuleEngine; - } -#line 2223 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 82: -#line 1254 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secRequestBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean; - } -#line 2231 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 83: -#line 1258 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secRequestBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean; - } -#line 2239 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 84: -#line 1262 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secResponseBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean; - } -#line 2247 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 85: -#line 1266 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secResponseBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean; - } -#line 2255 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 86: -#line 1270 "seclang-parser.yy" // lalr1.cc:906 - { - if (yystack_[0].value.as< std::string > ().length() != 1) { - driver.error(yystack_[1].location, "Argument separator should be set to a single character."); - YYERROR; - } - driver.m_secArgumentSeparator.m_value = yystack_[0].value.as< std::string > (); - driver.m_secArgumentSeparator.m_set = true; - } -#line 2268 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 87: -#line 1279 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_components.push_back(yystack_[0].value.as< std::string > ()); - } -#line 2276 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 88: -#line 1283 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[2].location, "SecConnEngine is not yet supported."); - YYERROR; - } -#line 2285 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 89: -#line 1288 "seclang-parser.yy" // lalr1.cc:906 - { - } -#line 2292 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 90: -#line 1291 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secWebAppId.m_value = yystack_[0].value.as< std::string > (); - driver.m_secWebAppId.m_set = true; - } -#line 2301 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 91: -#line 1296 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecServerSignature is not supported."); - YYERROR; - } -#line 2310 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 92: -#line 1301 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecCacheTransformations is not supported."); - YYERROR; - } -#line 2319 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 93: -#line 1306 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[2].location, "SecDisableBackendCompression is not supported."); - YYERROR; - } -#line 2328 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 94: -#line 1311 "seclang-parser.yy" // lalr1.cc:906 - { - } -#line 2335 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 95: -#line 1314 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[2].location, "SecContentInjection is not yet supported."); - YYERROR; - } -#line 2344 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 96: -#line 1319 "seclang-parser.yy" // lalr1.cc:906 - { - } -#line 2351 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 97: -#line 1322 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecChrootDir is not supported."); - YYERROR; - } -#line 2360 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 98: -#line 1327 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[2].location, "SecHashEngine is not yet supported."); - YYERROR; - } -#line 2369 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 99: -#line 1332 "seclang-parser.yy" // lalr1.cc:906 - { - } -#line 2376 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 100: -#line 1335 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecHashKey is not yet supported."); - YYERROR; - } -#line 2385 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 101: -#line 1340 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecHashParam is not yet supported."); - YYERROR; - } -#line 2394 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 102: -#line 1345 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecHashMethodRx is not yet supported."); - YYERROR; - } -#line 2403 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 103: -#line 1350 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecHashMethodPm is not yet supported."); - YYERROR; - } -#line 2412 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 104: -#line 1355 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecGsbLookupDb is not supported."); - YYERROR; - } -#line 2421 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 105: -#line 1360 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecGuardianLog is not supported."); - YYERROR; - } -#line 2430 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 106: -#line 1365 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[2].location, "SecInterceptOnError is not yet supported."); - YYERROR; - } -#line 2439 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 107: -#line 1370 "seclang-parser.yy" // lalr1.cc:906 - { - } -#line 2446 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 108: -#line 1373 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecConnReadStateLimit is not yet supported."); - YYERROR; - } -#line 2455 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 109: -#line 1378 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecConnWriteStateLimit is not yet supported."); - YYERROR; - } -#line 2464 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 110: -#line 1383 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecSensorId is not yet supported."); - YYERROR; - } -#line 2473 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 111: -#line 1388 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[2].location, "SecRuleInheritance is not yet supported."); - YYERROR; - } -#line 2482 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 112: -#line 1393 "seclang-parser.yy" // lalr1.cc:906 - { - } -#line 2489 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 113: -#line 1396 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecRulePerfTime is not yet supported."); - YYERROR; - } -#line 2498 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 114: -#line 1401 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecStreamInBodyInspection is not supported."); - YYERROR; - } -#line 2507 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 115: -#line 1406 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecStreamOutBodyInspection is not supported."); - YYERROR; - } -#line 2516 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 116: -#line 1411 "seclang-parser.yy" // lalr1.cc:906 - { - std::string error; - if (driver.m_exceptions.load(yystack_[0].value.as< std::string > (), &error) == false) { - std::stringstream ss; - ss << "SecRuleRemoveById: failed to load:"; - ss << yystack_[0].value.as< std::string > (); - ss << ". "; - ss << error; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - } -#line 2533 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 117: -#line 1424 "seclang-parser.yy" // lalr1.cc:906 - { - std::string error; - if (driver.m_exceptions.loadRemoveRuleByTag(yystack_[0].value.as< std::string > (), &error) == false) { - std::stringstream ss; - ss << "SecRuleRemoveByTag: failed to load:"; - ss << yystack_[0].value.as< std::string > (); - ss << ". "; - ss << error; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - } -#line 2550 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 118: -#line 1437 "seclang-parser.yy" // lalr1.cc:906 - { - std::string error; - if (driver.m_exceptions.loadRemoveRuleByMsg(yystack_[0].value.as< std::string > (), &error) == false) { - std::stringstream ss; - ss << "SecRuleRemoveByMsg: failed to load:"; - ss << yystack_[0].value.as< std::string > (); - ss << ". "; - ss << error; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - } -#line 2567 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 119: -#line 1450 "seclang-parser.yy" // lalr1.cc:906 - { - std::string error; - if (driver.m_exceptions.loadUpdateTargetByTag(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) { - std::stringstream ss; - ss << "SecRuleUpdateTargetByTag: failed to load:"; - ss << yystack_[1].value.as< std::string > (); - ss << ". "; - ss << error; - driver.error(yystack_[2].location, ss.str()); - YYERROR; - } - } -#line 2584 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 120: -#line 1463 "seclang-parser.yy" // lalr1.cc:906 - { - std::string error; - if (driver.m_exceptions.loadUpdateTargetByMsg(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) { - std::stringstream ss; - ss << "SecRuleUpdateTargetByMsg: failed to load:"; - ss << yystack_[1].value.as< std::string > (); - ss << ". "; - ss << error; - driver.error(yystack_[2].location, ss.str()); - YYERROR; - } - } -#line 2601 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 121: -#line 1476 "seclang-parser.yy" // lalr1.cc:906 - { - std::string error; - double ruleId; - try { - ruleId = std::stod(yystack_[1].value.as< std::string > ()); - } catch (...) { - std::stringstream ss; - ss << "SecRuleUpdateTargetById: failed to load:"; - ss << "The input \"" + yystack_[1].value.as< std::string > () + "\" does not "; - ss << "seems to be a valid rule id."; - ss << ". "; - driver.error(yystack_[2].location, ss.str()); - YYERROR; - } - - if (driver.m_exceptions.loadUpdateTargetById(ruleId, std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) { - std::stringstream ss; - ss << "SecRuleUpdateTargetById: failed to load:"; - ss << yystack_[1].value.as< std::string > (); - ss << ". "; - ss << error; - driver.error(yystack_[2].location, ss.str()); - YYERROR; - } - } -#line 2631 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 122: -#line 1502 "seclang-parser.yy" // lalr1.cc:906 - { - std::string error; - double ruleId; - try { - ruleId = std::stod(yystack_[1].value.as< std::string > ()); - } catch (...) { - std::stringstream ss; - ss << "SecRuleUpdateActionById: failed to load:"; - ss << "The input \"" + yystack_[1].value.as< std::string > () + "\" does not "; - ss << "seems to be a valid rule id."; - ss << ". "; - driver.error(yystack_[2].location, ss.str()); - YYERROR; - } - - - if (driver.m_exceptions.loadUpdateActionById(ruleId, std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) { - std::stringstream ss; - ss << "SecRuleUpdateActionById: failed to load:"; - ss << yystack_[1].value.as< std::string > (); - ss << ". "; - ss << error; - driver.error(yystack_[2].location, ss.str()); - YYERROR; - } - } -#line 2662 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 123: -#line 1530 "seclang-parser.yy" // lalr1.cc:906 - { - if (driver.m_debugLog != NULL) { - driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as< std::string > ().c_str())); - } else { - std::stringstream ss; - ss << "Internal error, there is no DebugLog "; - ss << "object associated with the driver class"; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - } -#line 2678 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 124: -#line 1542 "seclang-parser.yy" // lalr1.cc:906 - { - if (driver.m_debugLog != NULL) { - std::string error; - driver.m_debugLog->setDebugLogFile(yystack_[0].value.as< std::string > (), &error); - if (error.size() > 0) { - std::stringstream ss; - ss << "Failed to start DebugLog: " << error; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - } else { - std::stringstream ss; - ss << "Internal error, there is no DebugLog "; - ss << "object associated with the driver class"; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - } -#line 2701 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 125: -#line 1562 "seclang-parser.yy" // lalr1.cc:906 - { -#if defined(WITH_GEOIP) or defined(WITH_MAXMIND) - std::string err; - std::string file = modsecurity::utils::find_resource(yystack_[0].value.as< std::string > (), - driver.ref.back(), &err); - if (file.empty()) { - std::stringstream ss; - ss << "Failed to load locate the GeoDB file from: " << yystack_[0].value.as< std::string > () << " "; - ss << err; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - if (GeoLookup::getInstance().setDataBase(file, &err) == false) { - std::stringstream ss; - ss << "Failed to load the GeoDB from: "; - ss << file << ". " << err; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } -#else - std::stringstream ss; - ss << "This version of ModSecurity was not compiled with GeoIP or MaxMind support."; - driver.error(yystack_[1].location, ss.str()); - YYERROR; -#endif // WITH_GEOIP - } -#line 2732 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 126: -#line 1590 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_requestBodyLimit.m_set = true; - driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); - } -#line 2741 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 127: -#line 1595 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_requestBodyNoFilesLimit.m_set = true; - driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); - } -#line 2750 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 128: -#line 1600 "seclang-parser.yy" // lalr1.cc:906 - { - std::stringstream ss; - ss << "As of ModSecurity version 3.0, SecRequestBodyInMemoryLimit is no longer "; - ss << "supported. Instead, you can use your web server configurations to control "; - ss << "those values. ModSecurity will follow the web server decision."; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } -#line 2763 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 129: -#line 1609 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_responseBodyLimit.m_set = true; - driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); - } -#line 2772 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 130: -#line 1614 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction; - } -#line 2780 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 131: -#line 1618 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction; - } -#line 2788 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 132: -#line 1622 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction; - } -#line 2796 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 133: -#line 1626 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction; - } -#line 2804 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 134: -#line 1630 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction; - } -#line 2812 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 135: -#line 1634 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction; - } -#line 2820 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 138: -#line 1648 "seclang-parser.yy" // lalr1.cc:906 - { - std::istringstream buf(yystack_[0].value.as< std::string > ()); - std::istream_iterator beg(buf), end; - std::set tokens(beg, end); - driver.m_responseBodyTypeToBeInspected.m_set = true; - for (std::set::iterator it=tokens.begin(); - it!=tokens.end(); ++it) - { - driver.m_responseBodyTypeToBeInspected.m_value.insert(*it); - } - } -#line 2836 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 139: -#line 1660 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_responseBodyTypeToBeInspected.m_set = true; - driver.m_responseBodyTypeToBeInspected.m_clear = true; - driver.m_responseBodyTypeToBeInspected.m_value.clear(); - } -#line 2846 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 140: -#line 1666 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secXMLExternalEntity = modsecurity::RulesProperties::FalseConfigBoolean; - } -#line 2854 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 141: -#line 1670 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_secXMLExternalEntity = modsecurity::RulesProperties::TrueConfigBoolean; - } -#line 2862 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 142: -#line 1674 "seclang-parser.yy" // lalr1.cc:906 - { -/* Parser error disabled to avoid breaking default installations with modsecurity.conf-recommended - std::stringstream ss; - ss << "As of ModSecurity version 3.0, SecTmpDir is no longer supported."; - ss << " Instead, you can use your web server configurations to control when"; - ss << "and where to swap. ModSecurity will follow the web server decision."; - driver.error(@0, ss.str()); - YYERROR; -*/ - } -#line 2877 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 145: -#line 1695 "seclang-parser.yy" // lalr1.cc:906 - { - if (atoi(yystack_[0].value.as< std::string > ().c_str()) == 1) { - driver.error(yystack_[1].location, "SecCookieFormat 1 is not yet supported."); - YYERROR; - } - } -#line 2888 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 146: -#line 1702 "seclang-parser.yy" // lalr1.cc:906 - { - driver.error(yystack_[1].location, "SecCookieV0Separator is not yet supported."); - YYERROR; - } -#line 2897 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 148: -#line 1712 "seclang-parser.yy" // lalr1.cc:906 - { - std::string error; - std::vector param; - double num = 0; - std::string f; - std::string file; - std::string err; - param = utils::string::ssplit(yystack_[0].value.as< std::string > (), ' '); - if (param.size() <= 1) { - std::stringstream ss; - ss << "Failed to process unicode map, missing "; - ss << "parameter: " << yystack_[0].value.as< std::string > () << " "; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - - try { - num = std::stod(param.back()); - } catch (...) { - std::stringstream ss; - ss << "Failed to process unicode map, last parameter is "; - ss << "expected to be a number: " << param.back() << " "; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - param.pop_back(); - - while (param.size() > 0) { - if (f.empty()) { - f = param.back(); - } else { - f = param.back() + " " + f; - } - param.pop_back(); - } - - file = modsecurity::utils::find_resource(f, driver.ref.back(), &err); - if (file.empty()) { - std::stringstream ss; - ss << "Failed to locate the unicode map file from: " << f << " "; - ss << err; - driver.error(yystack_[1].location, ss.str()); - YYERROR; - } - - ConfigUnicodeMap::loadConfig(file, num, &driver, &error); - - if (!error.empty()) { - driver.error(yystack_[1].location, error); - YYERROR; - } - - } -#line 2955 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 149: -#line 1766 "seclang-parser.yy" // lalr1.cc:906 - { -/* Parser error disabled to avoid breaking default CRS installations with crs-setup.conf-recommended - driver.error(@0, "SecCollectionTimeout is not yet supported."); - YYERROR; -*/ - } -#line 2966 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 150: -#line 1773 "seclang-parser.yy" // lalr1.cc:906 - { - driver.m_httpblKey.m_set = true; - driver.m_httpblKey.m_value = yystack_[0].value.as< std::string > (); - } -#line 2975 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 151: -#line 1781 "seclang-parser.yy" // lalr1.cc:906 - { - std::unique_ptr > > originalList = std::move(yystack_[0].value.as< std::unique_ptr > > > ()); - std::unique_ptr>> newList(new std::vector>()); - std::unique_ptr>> newNewList(new std::vector>()); - std::unique_ptr>> exclusionVars(new std::vector>()); - while (!originalList->empty()) { - std::unique_ptr var = std::move(originalList->back()); - originalList->pop_back(); - if (dynamic_cast(var.get())) { - exclusionVars->push_back(std::move(var)); - } else { - newList->push_back(std::move(var)); - } - } - - while (!newList->empty()) { - bool doNotAdd = false; - std::unique_ptr var = std::move(newList->back()); - newList->pop_back(); - for (auto &i : *exclusionVars) { - if (*var == *i) { - doNotAdd = true; - } - if (i->belongsToCollection(var.get())) { - var->addsKeyExclusion(i.get()); - } - } - if (!doNotAdd) { - newNewList->push_back(std::move(var)); - } - } - yylhs.value.as< std::unique_ptr > > > () = std::move(newNewList); - } -#line 3013 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 152: -#line 1818 "seclang-parser.yy" // lalr1.cc:906 - { - yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ()); - } -#line 3021 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 153: -#line 1822 "seclang-parser.yy" // lalr1.cc:906 - { - yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ()); - } -#line 3029 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 154: -#line 1829 "seclang-parser.yy" // lalr1.cc:906 - { - yystack_[2].value.as< std::unique_ptr > > > ()->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ())); - yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[2].value.as< std::unique_ptr > > > ()); - } -#line 3038 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 155: -#line 1834 "seclang-parser.yy" // lalr1.cc:906 - { - std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - yystack_[3].value.as< std::unique_ptr > > > ()->push_back(std::move(c)); - yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[3].value.as< std::unique_ptr > > > ()); - } -#line 3048 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 156: -#line 1840 "seclang-parser.yy" // lalr1.cc:906 - { - std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - yystack_[3].value.as< std::unique_ptr > > > ()->push_back(std::move(c)); - yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[3].value.as< std::unique_ptr > > > ()); - } -#line 3058 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 157: -#line 1846 "seclang-parser.yy" // lalr1.cc:906 - { - std::unique_ptr>> b(new std::vector>()); - b->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ())); - yylhs.value.as< std::unique_ptr > > > () = std::move(b); - } -#line 3068 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 158: -#line 1852 "seclang-parser.yy" // lalr1.cc:906 - { - std::unique_ptr>> b(new std::vector>()); - std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - b->push_back(std::move(c)); - yylhs.value.as< std::unique_ptr > > > () = std::move(b); - } -#line 3079 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 159: -#line 1859 "seclang-parser.yy" // lalr1.cc:906 - { - std::unique_ptr>> b(new std::vector>()); - std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - b->push_back(std::move(c)); - yylhs.value.as< std::unique_ptr > > > () = std::move(b); - } -#line 3090 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 160: -#line 1869 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3098 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 161: -#line 1873 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3106 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 162: -#line 1877 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_NoDictElement()); - } -#line 3114 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 163: -#line 1881 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3122 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 164: -#line 1885 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3130 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 165: -#line 1889 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_NoDictElement()); - } -#line 3138 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 166: -#line 1893 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3146 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 167: -#line 1897 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3154 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 168: -#line 1901 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_NoDictElement()); - } -#line 3162 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 169: -#line 1905 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3170 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 170: -#line 1909 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3178 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 171: -#line 1913 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_NoDictElement()); - } -#line 3186 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 172: -#line 1917 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3194 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 173: -#line 1921 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3202 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 174: -#line 1925 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_NoDictElement()); - } -#line 3210 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 175: -#line 1929 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3218 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 176: -#line 1933 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3226 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 177: -#line 1937 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_NoDictElement()); - } -#line 3234 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 178: -#line 1941 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3242 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 179: -#line 1945 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3250 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 180: -#line 1949 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_NoDictElement()); - } -#line 3258 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 181: -#line 1953 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3266 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 182: -#line 1957 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3274 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 183: -#line 1961 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_NoDictElement()); - } -#line 3282 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 184: -#line 1965 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3290 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 185: -#line 1969 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3298 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 186: -#line 1973 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_NoDictElement()); - } -#line 3306 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 187: -#line 1977 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3314 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 188: -#line 1981 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3322 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 189: -#line 1985 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_NoDictElement()); - } -#line 3330 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 190: -#line 1989 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3338 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 191: -#line 1993 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3346 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 192: -#line 1997 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_NoDictElement()); - } -#line 3354 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 193: -#line 2001 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3362 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 194: -#line 2005 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3370 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 195: -#line 2009 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_NoDictElement()); - } -#line 3378 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 196: -#line 2013 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3386 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 197: -#line 2017 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3394 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 198: -#line 2021 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_NoDictElement()); - } -#line 3402 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 199: -#line 2025 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3410 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 200: -#line 2029 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3418 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 201: -#line 2033 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_NoDictElement()); - } -#line 3426 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 202: -#line 2037 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3434 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 203: -#line 2041 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3442 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 204: -#line 2045 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_NoDictElement()); - } -#line 3450 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 205: -#line 2049 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3458 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 206: -#line 2053 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3466 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 207: -#line 2057 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_NoDictElement()); - } -#line 3474 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 208: -#line 2061 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3482 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 209: -#line 2065 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3490 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 210: -#line 2069 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_NoDictElement()); - } -#line 3498 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 211: -#line 2073 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ())); - } -#line 3506 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 212: -#line 2077 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ())); - } -#line 3514 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 213: -#line 2081 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV")); - } -#line 3522 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 214: -#line 2085 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ())); - } -#line 3530 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 215: -#line 2089 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ())); - } -#line 3538 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 216: -#line 2093 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML_NoDictElement()); - } -#line 3546 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 217: -#line 2097 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3554 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 218: -#line 2101 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3562 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 219: -#line 2105 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_NoDictElement()); - } -#line 3570 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 220: -#line 2109 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 3578 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 221: -#line 2113 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3586 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 222: -#line 2117 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3594 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 223: -#line 2121 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_NoDictElement()); - } -#line 3602 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 224: -#line 2125 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 3610 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 225: -#line 2129 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3618 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 226: -#line 2133 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3626 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 227: -#line 2137 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_NoDictElement()); - } -#line 3634 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 228: -#line 2141 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 3642 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 229: -#line 2145 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3650 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 230: -#line 2149 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3658 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 231: -#line 2153 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_NoDictElement()); - } -#line 3666 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 232: -#line 2157 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 3674 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 233: -#line 2161 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3682 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 234: -#line 2165 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3690 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 235: -#line 2169 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_NoDictElement()); - } -#line 3698 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 236: -#line 2173 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 3706 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 237: -#line 2177 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3714 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 238: -#line 2181 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3722 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 239: -#line 2185 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_NoDictElement()); - } -#line 3730 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 240: -#line 2189 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 3738 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 241: -#line 2193 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3746 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 242: -#line 2197 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3754 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 243: -#line 2201 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_NoDictElement()); - } -#line 3762 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 244: -#line 2205 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3770 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 245: -#line 2209 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3778 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 246: -#line 2213 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_NoDictElement()); - } -#line 3786 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 247: -#line 2217 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3794 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 248: -#line 2221 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3802 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 249: -#line 2225 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_NoDictElement()); - } -#line 3810 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 250: -#line 2230 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3818 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 251: -#line 2234 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3826 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 252: -#line 2238 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_NoDictElement()); - } -#line 3834 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 253: -#line 2243 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3842 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 254: -#line 2247 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3850 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 255: -#line 2251 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_NoDictElement()); - } -#line 3858 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 256: -#line 2256 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseContentType()); - } -#line 3866 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 257: -#line 2261 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElement(yystack_[0].value.as< std::string > ())); - } -#line 3874 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 258: -#line 2265 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); - } -#line 3882 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 259: -#line 2269 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_NoDictElement()); - } -#line 3890 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 260: -#line 2273 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsCombinedSize()); - } -#line 3898 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 261: -#line 2277 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::AuthType()); - } -#line 3906 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 262: -#line 2281 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesCombinedSize()); - } -#line 3914 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 263: -#line 2285 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequest()); - } -#line 3922 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 264: -#line 2289 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequestLength()); - } -#line 3930 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 265: -#line 2293 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::InboundDataError()); - } -#line 3938 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 266: -#line 2297 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVar()); - } -#line 3946 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 267: -#line 2301 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarName()); - } -#line 3954 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 268: -#line 2305 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartBoundaryQuoted()); - } -#line 3962 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 269: -#line 2309 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartBoundaryWhiteSpace()); - } -#line 3970 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 270: -#line 2313 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartCrlfLFLines()); - } -#line 3978 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 271: -#line 2317 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartDateAfter()); - } -#line 3986 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 272: -#line 2321 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartDateBefore()); - } -#line 3994 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 273: -#line 2325 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartFileLimitExceeded()); - } -#line 4002 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 274: -#line 2329 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartHeaderFolding()); - } -#line 4010 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 275: -#line 2333 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidHeaderFolding()); - } -#line 4018 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 276: -#line 2337 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidPart()); - } -#line 4026 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 277: -#line 2341 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidQuoting()); - } -#line 4034 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 278: -#line 2345 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartLFLine()); - } -#line 4042 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 279: -#line 2349 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartMissingSemicolon()); - } -#line 4050 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 280: -#line 2353 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartMissingSemicolon()); - } -#line 4058 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 281: -#line 2357 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartStrictError()); - } -#line 4066 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 282: -#line 2361 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartUnmatchedBoundary()); - } -#line 4074 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 283: -#line 2365 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::OutboundDataError()); - } -#line 4082 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 284: -#line 2369 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::PathInfo()); - } -#line 4090 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 285: -#line 2373 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::QueryString()); - } -#line 4098 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 286: -#line 2377 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemoteAddr()); - } -#line 4106 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 287: -#line 2381 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemoteHost()); - } -#line 4114 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 288: -#line 2385 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemotePort()); - } -#line 4122 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 289: -#line 2389 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyError()); - } -#line 4130 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 290: -#line 2393 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyErrorMsg()); - } -#line 4138 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 291: -#line 2397 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessor()); - } -#line 4146 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 292: -#line 2401 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessorError()); - } -#line 4154 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 293: -#line 2405 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessorErrorMsg()); - } -#line 4162 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 294: -#line 2409 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBasename()); - } -#line 4170 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 295: -#line 2413 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBody()); - } -#line 4178 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 296: -#line 2417 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBodyLength()); - } -#line 4186 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 297: -#line 2421 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestFilename()); - } -#line 4194 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 298: -#line 2425 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestLine()); - } -#line 4202 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 299: -#line 2429 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestMethod()); - } -#line 4210 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 300: -#line 2433 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestProtocol()); - } -#line 4218 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 301: -#line 2437 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestURI()); - } -#line 4226 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 302: -#line 2441 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestURIRaw()); - } -#line 4234 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 303: -#line 2445 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseBody()); - } -#line 4242 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 304: -#line 2449 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseContentLength()); - } -#line 4250 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 305: -#line 2453 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseProtocol()); - } -#line 4258 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 306: -#line 2457 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseStatus()); - } -#line 4266 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 307: -#line 2461 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ServerAddr()); - } -#line 4274 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 308: -#line 2465 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ServerName()); - } -#line 4282 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 309: -#line 2469 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ServerPort()); - } -#line 4290 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 310: -#line 2473 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::SessionID()); - } -#line 4298 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 311: -#line 2477 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::UniqueID()); - } -#line 4306 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 312: -#line 2481 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::UrlEncodedError()); - } -#line 4314 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 313: -#line 2485 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::UserID()); - } -#line 4322 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 314: -#line 2489 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Status()); - } -#line 4330 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 315: -#line 2493 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Status()); - } -#line 4338 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 316: -#line 2497 "seclang-parser.yy" // lalr1.cc:906 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::WebAppId()); - } -#line 4346 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 317: -#line 2501 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new Duration(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4357 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 318: -#line 2509 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new ModsecBuild(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4368 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 319: -#line 2516 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new HighestSeverity(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4379 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 320: -#line 2523 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new RemoteUser(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4390 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 321: -#line 2530 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new Time(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4401 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 322: -#line 2537 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new TimeDay(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4412 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 323: -#line 2544 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new TimeEpoch(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4423 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 324: -#line 2551 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new TimeHour(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4434 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 325: -#line 2558 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new TimeMin(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4445 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 326: -#line 2565 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new TimeMon(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4456 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 327: -#line 2572 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new TimeSec(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4467 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 328: -#line 2579 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new TimeWDay(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4478 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 329: -#line 2586 "seclang-parser.yy" // lalr1.cc:906 - { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - std::unique_ptr c(new TimeYear(name)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } -#line 4489 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 330: -#line 2596 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Accuracy(yystack_[0].value.as< std::string > ())); - } -#line 4497 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 331: -#line 2600 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Allow(yystack_[0].value.as< std::string > ())); - } -#line 4505 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 332: -#line 2604 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("Append", yystack_[1].location); - } -#line 4513 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 333: -#line 2608 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::AuditLog(yystack_[0].value.as< std::string > ())); - } -#line 4521 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 334: -#line 2612 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Block(yystack_[0].value.as< std::string > ())); - } -#line 4529 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 335: -#line 2616 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Capture(yystack_[0].value.as< std::string > ())); - } -#line 4537 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 336: -#line 2620 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Chain(yystack_[0].value.as< std::string > ())); - } -#line 4545 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 337: -#line 2624 "seclang-parser.yy" // lalr1.cc:906 - { - //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 4554 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 338: -#line 2629 "seclang-parser.yy" // lalr1.cc:906 - { - //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 4563 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 339: -#line 2634 "seclang-parser.yy" // lalr1.cc:906 - { - //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 4572 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 340: -#line 2639 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::AuditLogParts(yystack_[0].value.as< std::string > ())); - } -#line 4580 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 341: -#line 2643 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorJSON(yystack_[0].value.as< std::string > ())); - } -#line 4588 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 342: -#line 2647 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorXML(yystack_[0].value.as< std::string > ())); - } -#line 4596 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 343: -#line 2651 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorURLENCODED(yystack_[0].value.as< std::string > ())); - } -#line 4604 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 344: -#line 2655 "seclang-parser.yy" // lalr1.cc:906 - { - //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 4613 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 345: -#line 2660 "seclang-parser.yy" // lalr1.cc:906 - { - //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 4622 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 346: -#line 2665 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "true")); - } -#line 4630 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 347: -#line 2669 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "false")); - } -#line 4638 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 348: -#line 2673 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=on")); - } -#line 4646 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 349: -#line 2677 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=off")); - } -#line 4654 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 350: -#line 2681 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=detectiononly")); - } -#line 4662 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 351: -#line 2685 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveById(yystack_[0].value.as< std::string > ())); - } -#line 4670 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 352: -#line 2689 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveByTag(yystack_[0].value.as< std::string > ())); - } -#line 4678 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 353: -#line 2693 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetById(yystack_[0].value.as< std::string > ())); - } -#line 4686 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 354: -#line 2697 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetByTag(yystack_[0].value.as< std::string > ())); - } -#line 4694 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 355: -#line 2701 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Deny(yystack_[0].value.as< std::string > ())); - } -#line 4702 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 356: -#line 2705 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("DeprecateVar", yystack_[1].location); - } -#line 4710 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 357: -#line 2709 "seclang-parser.yy" // lalr1.cc:906 - { - //ACTION_NOT_SUPPORTED("Drop", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); - } -#line 4719 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 358: -#line 2714 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Exec(yystack_[0].value.as< std::string > ())); - } -#line 4727 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 359: -#line 2718 "seclang-parser.yy" // lalr1.cc:906 - { - //ACTION_NOT_SUPPORTED("ExpireVar", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); - } -#line 4736 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 360: -#line 2723 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::RuleId(yystack_[0].value.as< std::string > ())); - } -#line 4744 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 361: -#line 2727 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::InitCol(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 4752 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 362: -#line 2731 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::LogData(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 4760 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 363: -#line 2735 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Log(yystack_[0].value.as< std::string > ())); - } -#line 4768 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 364: -#line 2739 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Maturity(yystack_[0].value.as< std::string > ())); - } -#line 4776 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 365: -#line 2743 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Msg(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 4784 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 366: -#line 2747 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::MultiMatch(yystack_[0].value.as< std::string > ())); - } -#line 4792 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 367: -#line 2751 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoAuditLog(yystack_[0].value.as< std::string > ())); - } -#line 4800 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 368: -#line 2755 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoLog(yystack_[0].value.as< std::string > ())); - } -#line 4808 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 369: -#line 2759 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Pass(yystack_[0].value.as< std::string > ())); - } -#line 4816 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 370: -#line 2763 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("Pause", yystack_[1].location); - } -#line 4824 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 371: -#line 2767 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Phase(yystack_[0].value.as< std::string > ())); - } -#line 4832 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 372: -#line 2771 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("Prepend", yystack_[1].location); - } -#line 4840 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 373: -#line 2775 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("Proxy", yystack_[1].location); - } -#line 4848 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 374: -#line 2779 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Redirect(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 4856 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 375: -#line 2783 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Rev(yystack_[0].value.as< std::string > ())); - } -#line 4864 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 376: -#line 2787 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("SanitiseArg", yystack_[1].location); - } -#line 4872 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 377: -#line 2791 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("SanitiseMatched", yystack_[1].location); - } -#line 4880 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 378: -#line 2795 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("SanitiseMatchedBytes", yystack_[1].location); - } -#line 4888 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 379: -#line 2799 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("SanitiseRequestHeader", yystack_[1].location); - } -#line 4896 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 380: -#line 2803 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_NOT_SUPPORTED("SanitiseResponseHeader", yystack_[1].location); - } -#line 4904 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 381: -#line 2807 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetENV(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 4912 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 382: -#line 2811 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetRSC(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 4920 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 383: -#line 2815 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetSID(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 4928 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 384: -#line 2819 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetUID(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 4936 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 385: -#line 2823 "seclang-parser.yy" // lalr1.cc:906 - { - yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ()); - } -#line 4944 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 386: -#line 2827 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Severity(yystack_[0].value.as< std::string > ())); - } -#line 4952 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 387: -#line 2831 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Skip(yystack_[0].value.as< std::string > ())); - } -#line 4960 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 388: -#line 2835 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SkipAfter(yystack_[0].value.as< std::string > ())); - } -#line 4968 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 389: -#line 2839 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::data::Status(yystack_[0].value.as< std::string > ())); - } -#line 4976 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 390: -#line 2843 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Tag(std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 4984 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 391: -#line 2847 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Ver(yystack_[0].value.as< std::string > ())); - } -#line 4992 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 392: -#line 2851 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::XmlNS(yystack_[0].value.as< std::string > ())); - } -#line 5000 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 393: -#line 2855 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityZero7bit(yystack_[0].value.as< std::string > ())); - } -#line 5008 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 394: -#line 2859 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityOdd7bit(yystack_[0].value.as< std::string > ())); - } -#line 5016 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 395: -#line 2863 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityEven7bit(yystack_[0].value.as< std::string > ())); - } -#line 5024 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 396: -#line 2867 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::SqlHexDecode(yystack_[0].value.as< std::string > ())); - } -#line 5032 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 397: -#line 2871 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Base64Encode(yystack_[0].value.as< std::string > ())); - } -#line 5040 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 398: -#line 2875 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Base64Decode(yystack_[0].value.as< std::string > ())); - } -#line 5048 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 399: -#line 2879 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Base64DecodeExt(yystack_[0].value.as< std::string > ())); - } -#line 5056 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 400: -#line 2883 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CmdLine(yystack_[0].value.as< std::string > ())); - } -#line 5064 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 401: -#line 2887 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Sha1(yystack_[0].value.as< std::string > ())); - } -#line 5072 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 402: -#line 2891 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Md5(yystack_[0].value.as< std::string > ())); - } -#line 5080 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 403: -#line 2895 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::EscapeSeqDecode(yystack_[0].value.as< std::string > ())); - } -#line 5088 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 404: -#line 2899 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HexEncode(yystack_[0].value.as< std::string > ())); - } -#line 5096 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 405: -#line 2903 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HexDecode(yystack_[0].value.as< std::string > ())); - } -#line 5104 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 406: -#line 2907 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::LowerCase(yystack_[0].value.as< std::string > ())); - } -#line 5112 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 407: -#line 2911 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UpperCase(yystack_[0].value.as< std::string > ())); - } -#line 5120 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 408: -#line 2915 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecodeUni(yystack_[0].value.as< std::string > ())); - } -#line 5128 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 409: -#line 2919 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecode(yystack_[0].value.as< std::string > ())); - } -#line 5136 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 410: -#line 2923 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlEncode(yystack_[0].value.as< std::string > ())); - } -#line 5144 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 411: -#line 2927 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::None(yystack_[0].value.as< std::string > ())); - } -#line 5152 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 412: -#line 2931 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CompressWhitespace(yystack_[0].value.as< std::string > ())); - } -#line 5160 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 413: -#line 2935 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveWhitespace(yystack_[0].value.as< std::string > ())); - } -#line 5168 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 414: -#line 2939 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ReplaceNulls(yystack_[0].value.as< std::string > ())); - } -#line 5176 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 415: -#line 2943 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveNulls(yystack_[0].value.as< std::string > ())); - } -#line 5184 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 416: -#line 2947 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HtmlEntityDecode(yystack_[0].value.as< std::string > ())); - } -#line 5192 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 417: -#line 2951 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::JsDecode(yystack_[0].value.as< std::string > ())); - } -#line 5200 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 418: -#line 2955 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CssDecode(yystack_[0].value.as< std::string > ())); - } -#line 5208 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 419: -#line 2959 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Trim(yystack_[0].value.as< std::string > ())); - } -#line 5216 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 420: -#line 2963 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::TrimLeft(yystack_[0].value.as< std::string > ())); - } -#line 5224 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 421: -#line 2967 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::TrimRight(yystack_[0].value.as< std::string > ())); - } -#line 5232 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 422: -#line 2971 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePathWin(yystack_[0].value.as< std::string > ())); - } -#line 5240 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 423: -#line 2975 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePath(yystack_[0].value.as< std::string > ())); - } -#line 5248 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 424: -#line 2979 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Length(yystack_[0].value.as< std::string > ())); - } -#line 5256 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 425: -#line 2983 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Utf8ToUnicode(yystack_[0].value.as< std::string > ())); - } -#line 5264 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 426: -#line 2987 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveCommentsChar(yystack_[0].value.as< std::string > ())); - } -#line 5272 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 427: -#line 2991 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveComments(yystack_[0].value.as< std::string > ())); - } -#line 5280 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 428: -#line 2995 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ReplaceComments(yystack_[0].value.as< std::string > ())); - } -#line 5288 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 429: -#line 3002 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::unsetOperation, std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 5296 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 430: -#line 3006 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setToOneOperation, std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 5304 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 431: -#line 3010 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setOperation, std::move(yystack_[2].value.as< std::unique_ptr > ()), std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 5312 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 432: -#line 3014 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::sumAndSetOperation, std::move(yystack_[2].value.as< std::unique_ptr > ()), std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 5320 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 433: -#line 3018 "seclang-parser.yy" // lalr1.cc:906 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::substractAndSetOperation, std::move(yystack_[2].value.as< std::unique_ptr > ()), std::move(yystack_[0].value.as< std::unique_ptr > ()))); - } -#line 5328 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 434: -#line 3025 "seclang-parser.yy" // lalr1.cc:906 - { - yystack_[1].value.as< std::unique_ptr > ()->appendText(yystack_[0].value.as< std::string > ()); - yylhs.value.as< std::unique_ptr > () = std::move(yystack_[1].value.as< std::unique_ptr > ()); - } -#line 5337 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 435: -#line 3030 "seclang-parser.yy" // lalr1.cc:906 - { - yystack_[1].value.as< std::unique_ptr > ()->appendVar(std::move(yystack_[0].value.as< std::unique_ptr > ())); - yylhs.value.as< std::unique_ptr > () = std::move(yystack_[1].value.as< std::unique_ptr > ()); - } -#line 5346 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 436: -#line 3035 "seclang-parser.yy" // lalr1.cc:906 - { - std::unique_ptr r(new RunTimeString()); - r->appendText(yystack_[0].value.as< std::string > ()); - yylhs.value.as< std::unique_ptr > () = std::move(r); - } -#line 5356 "seclang-parser.cc" // lalr1.cc:906 - break; - - case 437: -#line 3041 "seclang-parser.yy" // lalr1.cc:906 - { - std::unique_ptr r(new RunTimeString()); - r->appendVar(std::move(yystack_[0].value.as< std::unique_ptr > ())); - yylhs.value.as< std::unique_ptr > () = std::move(r); - } -#line 5366 "seclang-parser.cc" // lalr1.cc:906 - break; - - -#line 5370 "seclang-parser.cc" // lalr1.cc:906 - default: - break; - } - } -#if YY_EXCEPTIONS - catch (const syntax_error& yyexc) - { - error (yyexc); - YYERROR; - } -#endif // YY_EXCEPTIONS - YY_SYMBOL_PRINT ("-> $$ =", yylhs); - yypop_ (yylen); - yylen = 0; - YY_STACK_PRINT (); - - // Shift the result of the reduction. - yypush_ (YY_NULLPTR, YY_MOVE (yylhs)); - } - goto yynewstate; - - /*--------------------------------------. - | yyerrlab -- here on detecting error. | - `--------------------------------------*/ - yyerrlab: - // If not already recovering from an error, report this error. - if (!yyerrstatus_) - { - ++yynerrs_; - error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla)); - } - - - yyerror_range[1].location = yyla.location; - if (yyerrstatus_ == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - // Return failure if at end of input. - if (yyla.type_get () == yyeof_) - YYABORT; - else if (!yyla.empty ()) - { - yy_destroy_ ("Error: discarding", yyla); - yyla.clear (); - } - } - - // Else will try to reuse lookahead token after shifting the error token. - goto yyerrlab1; - - - /*---------------------------------------------------. - | yyerrorlab -- error raised explicitly by YYERROR. | - `---------------------------------------------------*/ - yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (false) - goto yyerrorlab; - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - yypop_ (yylen); - yylen = 0; - goto yyerrlab1; - - /*-------------------------------------------------------------. - | yyerrlab1 -- common code for both syntax error and YYERROR. | - `-------------------------------------------------------------*/ - yyerrlab1: - yyerrstatus_ = 3; // Each real token shifted decrements this. - { - stack_symbol_type error_token; - for (;;) - { - yyn = yypact_[yystack_[0].state]; - if (!yy_pact_value_is_default_ (yyn)) - { - yyn += yyterror_; - if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) - { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - // Pop the current state because it cannot handle the error token. - if (yystack_.size () == 1) - YYABORT; - - yyerror_range[1].location = yystack_[0].location; - yy_destroy_ ("Error: popping", yystack_[0]); - yypop_ (); - YY_STACK_PRINT (); - } - - yyerror_range[2].location = yyla.location; - YYLLOC_DEFAULT (error_token.location, yyerror_range, 2); - - // Shift the error token. - error_token.state = yyn; - yypush_ ("Shifting", YY_MOVE (error_token)); - } - goto yynewstate; - - // Accept. - yyacceptlab: - yyresult = 0; - goto yyreturn; - - // Abort. - yyabortlab: - yyresult = 1; - goto yyreturn; - - yyreturn: - if (!yyla.empty ()) - yy_destroy_ ("Cleanup: discarding lookahead", yyla); - - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - yypop_ (yylen); - while (1 < yystack_.size ()) - { - yy_destroy_ ("Cleanup: popping", yystack_[0]); - yypop_ (); - } - - return yyresult; - } -#if YY_EXCEPTIONS - catch (...) - { - YYCDEBUG << "Exception caught: cleaning lookahead and stack\n"; - // Do not try to display the values of the reclaimed symbols, - // as their printers might throw an exception. - if (!yyla.empty ()) - yy_destroy_ (YY_NULLPTR, yyla); - - while (1 < yystack_.size ()) - { - yy_destroy_ (YY_NULLPTR, yystack_[0]); - yypop_ (); - } - throw; - } -#endif // YY_EXCEPTIONS - } - - void - seclang_parser::error (const syntax_error& yyexc) - { - error (yyexc.location, yyexc.what ()); - } - - // Generate an error message. - std::string - seclang_parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const - { - // Number of reported tokens (one for the "unexpected", one per - // "expected"). - size_t yycount = 0; - // Its maximum. - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - // Arguments of yyformat. - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yyla) is - if this state is a consistent state with a default action. - Thus, detecting the absence of a lookahead is sufficient to - determine that there is no unexpected or expected token to - report. In that case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is - a consistent state with a default action. There might have - been a previous inconsistent state, consistent state with a - non-default action, or user semantic action that manipulated - yyla. (However, yyla is currently not documented for users.) - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state - merging (from LALR or IELR) and default reductions corrupt the - expected token list. However, the list is correct for - canonical LR with one exception: it will still contain any - token that will not be accepted due to an error action in a - later state. - */ - if (!yyla.empty ()) - { - int yytoken = yyla.type_get (); - yyarg[yycount++] = yytname_[yytoken]; - int yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_ (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - // Stay within bounds of both yycheck and yytname. - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; - for (int yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_ - && !yy_table_value_is_error_ (yytable_[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - break; - } - else - yyarg[yycount++] = yytname_[yyx]; - } - } - } - - char const* yyformat = YY_NULLPTR; - switch (yycount) - { -#define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: // Avoid compiler warnings. - YYCASE_ (0, YY_("syntax error")); - YYCASE_ (1, YY_("syntax error, unexpected %s")); - YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -#undef YYCASE_ - } - - std::string yyres; - // Argument number. - size_t yyi = 0; - for (char const* yyp = yyformat; *yyp; ++yyp) - if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount) - { - yyres += yytnamerr_ (yyarg[yyi++]); - ++yyp; - } - else - yyres += *yyp; - return yyres; - } - - - const short seclang_parser::yypact_ninf_ = -396; - - const signed char seclang_parser::yytable_ninf_ = -1; - - const short - seclang_parser::yypact_[] = - { - 2736, -396, -287, -396, -117, -396, -271, -396, -396, -396, - -396, -396, -281, -396, -396, -396, -396, -396, -268, -396, - -396, -396, -257, -251, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -148, -396, -396, - -147, -396, -142, -396, -143, -138, -396, -253, -86, -86, - -396, -396, -396, -396, -130, -291, -396, -396, -396, 1471, - 1471, 1471, -86, -265, -128, -396, -396, -396, -126, -396, - -396, -396, -396, -396, -396, -396, -396, -396, 1471, -86, - 2878, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, 2307, -247, -396, -396, -396, -396, -396, - -396, -396, -259, -396, -396, -396, -396, -124, -122, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, 2437, - -396, 2437, -396, 2437, -396, -396, -396, -396, -396, -396, - -396, -396, 2437, -396, -396, -396, -396, -396, -396, 2437, - 2437, 2437, 2437, -396, -396, -396, -396, 2437, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, 3061, -396, 0, -396, - -396, -396, -396, -396, -396, 2634, 2634, -156, -154, -152, - -150, -146, -144, -141, -139, -136, -134, -131, -129, -127, - -125, -123, -121, -396, -119, -116, -114, -112, -396, -396, - -110, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -108, -396, -396, -396, - -396, -396, 453, -396, -396, -396, -106, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, 542, - 631, 961, 1050, 1139, -104, -100, 1562, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, 1, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, 1980, -396, -396, -396, -396, 2634, 51, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, 2526, 2526, 2526, 2526, 2526, 2526, 2526, - 2526, 2526, 11, 3061, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, -396, -396, -396, -396, -396, -396, -396, -396, - -396, -396, 2526, -396, -396, -396, -396, 2526, -396, -396, - 2526, -396, -396, 2526, -396, -396, 2526, -396, -396, 2526, - -396, -396, -396, -396, 6, 1653, 2110, 2437, 2437, 2437, - -396, -396, 2437, 2437, 2437, -396, 2437, 2437, 2437, 2437, - 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, - 2437, -396, 2437, 2437, 2437, 2437, -396, -396, 2437, 2437, - 2437, 2437, -86, -396, 2526, -396, 2437, 2437, 2437, -396, - -396, -396, -396, -396, 2634, 2634, -396, -396, 2526, 2526, - 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, - 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, - 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, -396, 2526, - 2526, 2526, -396, -396 - }; - - const unsigned short - seclang_parser::yydefact_[] = - { - 0, 2, 0, 139, 0, 87, 0, 86, 90, 91, - 7, 6, 0, 11, 14, 12, 13, 17, 0, 124, - 123, 92, 0, 0, 100, 101, 102, 103, 97, 125, - 104, 105, 137, 136, 108, 109, 110, 0, 128, 126, - 0, 127, 0, 129, 0, 0, 113, 0, 0, 0, - 78, 148, 149, 150, 0, 0, 116, 118, 117, 0, - 0, 0, 0, 0, 0, 26, 24, 25, 0, 138, - 144, 145, 146, 143, 147, 114, 115, 142, 0, 0, - 0, 4, 72, 5, 96, 95, 15, 16, 89, 88, - 9, 10, 8, 20, 19, 18, 94, 93, 99, 98, - 83, 82, 130, 131, 85, 84, 132, 133, 112, 111, - 81, 79, 80, 0, 0, 330, 331, 332, 333, 334, - 335, 336, 0, 340, 341, 342, 343, 0, 0, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 0, - 363, 0, 364, 0, 366, 367, 368, 369, 370, 371, - 372, 373, 0, 375, 376, 377, 378, 379, 380, 0, - 0, 0, 0, 386, 387, 388, 389, 0, 397, 398, - 399, 400, 412, 418, 403, 404, 405, 416, 417, 424, - 406, 402, 411, 423, 422, 395, 394, 393, 427, 426, - 415, 413, 428, 414, 401, 396, 419, 420, 421, 407, - 410, 409, 408, 425, 391, 392, 0, 75, 30, 32, - 77, 107, 106, 134, 135, 0, 0, 162, 165, 168, - 171, 174, 177, 180, 183, 186, 189, 192, 195, 198, - 201, 204, 207, 260, 249, 210, 246, 252, 261, 262, - 219, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 290, 289, 293, - 292, 291, 294, 296, 295, 297, 255, 298, 299, 300, - 302, 301, 223, 303, 304, 256, 259, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 316, 314, 315, 227, - 231, 239, 243, 235, 213, 216, 0, 318, 317, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 119, 152, 157, 120, 121, 122, 22, 21, 23, 28, - 27, 140, 141, 0, 151, 76, 1, 3, 0, 430, - 385, 350, 349, 348, 338, 337, 339, 345, 344, 347, - 346, 436, 437, 361, 362, 365, 374, 381, 382, 383, - 384, 390, 0, 0, 159, 158, 160, 161, 163, 164, - 166, 167, 169, 170, 172, 173, 175, 176, 178, 179, - 181, 182, 184, 185, 187, 188, 190, 191, 193, 194, - 196, 197, 199, 200, 202, 203, 205, 206, 247, 248, - 208, 209, 244, 245, 250, 251, 217, 218, 253, 254, - 221, 222, 220, 257, 258, 225, 226, 224, 229, 230, - 228, 237, 238, 236, 241, 242, 240, 233, 234, 232, - 211, 212, 214, 215, 0, 0, 0, 0, 0, 0, - 38, 39, 0, 0, 0, 71, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 0, 0, 0, 0, 40, 41, 0, 0, - 0, 0, 74, 33, 35, 429, 0, 0, 0, 434, - 435, 29, 31, 153, 0, 0, 154, 34, 36, 70, - 55, 54, 56, 57, 43, 58, 51, 59, 42, 60, - 61, 62, 63, 64, 65, 66, 52, 67, 68, 69, - 44, 45, 46, 47, 48, 49, 50, 53, 73, 431, - 432, 433, 156, 155 - }; - - const short - seclang_parser::yypgoto_[] = - { - -396, -396, -70, -396, -45, -167, -396, -395, -396, -396, - -55, -157, -59, -197, -396, -132 - }; - - const short - seclang_parser::yydefgoto_[] = - { - -1, 80, 81, 82, 207, 208, 472, 473, 83, 333, - 320, 321, 352, 209, 340, 353 - }; - - const unsigned short - seclang_parser::yytable_[] = - { - 322, 322, 322, 363, 210, 323, 324, 435, 213, 354, - 337, 355, 435, 113, 363, 84, 85, 325, 214, 322, - 356, 90, 91, 334, 86, 87, 92, 357, 358, 359, - 360, 88, 89, 93, 335, 361, 94, 326, 327, 362, - 95, 487, 328, 344, 345, 96, 97, 110, 346, 111, - 112, 98, 99, 341, 339, 342, 343, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 434, - 412, 476, 477, 478, 100, 101, 364, 365, 102, 103, - 104, 105, 106, 107, 108, 109, 482, 417, 420, 423, - 426, 429, 211, 212, 329, 330, 331, 332, 347, 348, - 349, 350, 366, 367, 368, 369, 370, 371, 372, 373, - 0, 0, 374, 375, 376, 377, 0, 378, 379, 380, - 381, 474, 382, 383, 384, 385, 0, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 0, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 413, 414, 430, 431, 0, 206, 432, 433, - 0, 0, 0, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 480, 480, 480, 480, 480, 480, - 480, 480, 480, 0, 488, 489, 490, 491, 0, 0, - 492, 493, 494, 0, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 483, - 510, 511, 512, 513, 481, 0, 514, 515, 516, 517, - 0, 0, 0, 0, 519, 520, 521, 0, 0, 0, - 0, 0, 0, 480, 0, 0, 0, 0, 480, 0, - 0, 480, 0, 0, 480, 0, 0, 480, 0, 0, - 480, 0, 0, 0, 0, 0, 486, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 480, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 522, 523, 518, 0, 480, - 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, - 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, - 480, 480, 480, 480, 480, 480, 480, 480, 480, 0, - 480, 480, 480, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 351, 0, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 0, 410, 411, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 351, 0, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 415, 416, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 351, 0, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 418, - 419, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 351, 0, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 421, - 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 351, 0, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 0, 424, 425, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 351, 0, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 0, 427, 428, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 484, 485, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, - 0, 0, 0, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 0, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 0, - 0, 0, 0, 0, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 0, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 351, 0, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 0, 0, 0, 0, - 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 351, 0, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 0, 0, 0, 0, 0, - 0, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 0, 0, 0, 1, 0, 0, 0, - 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, - 0, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 479, 0, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 0, 336, 0, - 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 4, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 113, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 0, 0, 0, 0, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205 - }; - - const short - seclang_parser::yycheck_[] = - { - 59, 60, 61, 3, 49, 60, 61, 6, 299, 141, - 80, 143, 6, 99, 3, 302, 303, 62, 309, 78, - 152, 302, 303, 78, 141, 142, 307, 159, 160, 161, - 162, 302, 303, 301, 79, 167, 304, 302, 303, 206, - 308, 436, 307, 302, 303, 302, 303, 300, 307, 302, - 303, 302, 303, 300, 113, 302, 303, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 306, - 282, 100, 101, 102, 302, 303, 215, 216, 305, 306, - 302, 303, 305, 306, 302, 303, 363, 299, 300, 301, - 302, 303, 302, 303, 302, 303, 302, 303, 302, 303, - 302, 303, 338, 339, 338, 339, 338, 339, 338, 339, - -1, -1, 338, 339, 338, 339, -1, 338, 339, 338, - 339, 333, 338, 339, 338, 339, -1, 338, 339, 338, - 339, 338, 339, 338, 339, 338, 339, 338, 339, 338, - 339, -1, 338, 339, 338, 339, 338, 339, 338, 339, - 338, 339, 338, 339, 338, 339, -1, 323, 338, 339, - -1, -1, -1, -1, -1, -1, -1, 306, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 338, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 353, 354, 355, 356, 357, 358, - 359, 360, 361, -1, 436, 437, 438, 439, -1, -1, - 442, 443, 444, -1, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 323, - 462, 463, 464, 465, 323, -1, 468, 469, 470, 471, - -1, -1, -1, -1, 476, 477, 478, -1, -1, -1, - -1, -1, -1, 412, -1, -1, -1, -1, 417, -1, - -1, 420, -1, -1, 423, -1, -1, 426, -1, -1, - 429, -1, -1, -1, -1, -1, 435, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 474, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 484, 485, 472, -1, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, -1, - 519, 520, 521, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 322, -1, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - -1, 338, 339, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 322, -1, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, - 338, 339, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 322, -1, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, - 339, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 322, -1, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, -1, 338, - 339, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, -1, 338, 339, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, -1, 338, 339, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, -1, - -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, -1, - -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, -1, -1, -1, -1, - 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, -1, -1, -1, -1, -1, - -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, -1, -1, -1, 0, -1, -1, -1, - 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 322, - -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 322, -1, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 140, -1, 0, -1, - -1, -1, 4, 5, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 140, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 99, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - -1, -1, -1, -1, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234 - }; - - const unsigned short - seclang_parser::yystos_[] = - { - 0, 0, 4, 5, 140, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 341, 342, 343, 348, 302, 303, 141, 142, 302, 303, - 302, 303, 307, 301, 304, 308, 302, 303, 302, 303, - 302, 303, 305, 306, 302, 303, 305, 306, 302, 303, - 300, 302, 303, 99, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 323, 344, 345, 353, - 344, 302, 303, 299, 309, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 350, 351, 352, 350, 350, 344, 302, 303, 307, 302, - 303, 302, 303, 349, 350, 344, 0, 342, 103, 352, - 354, 300, 302, 303, 302, 303, 307, 302, 303, 302, - 303, 322, 352, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 345, 3, 352, 352, 338, 339, 338, 339, - 338, 339, 338, 339, 338, 339, 338, 339, 338, 339, - 338, 339, 338, 339, 338, 339, 338, 339, 338, 339, - 338, 339, 338, 339, 338, 339, 338, 339, 338, 339, - 338, 339, 338, 339, 338, 339, 338, 339, 338, 339, - 338, 339, 355, 338, 339, 338, 339, 355, 338, 339, - 355, 338, 339, 355, 338, 339, 355, 338, 339, 355, - 338, 339, 338, 339, 351, 6, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 346, 347, 355, 352, 100, 101, 102, 322, - 352, 323, 353, 323, 8, 9, 352, 347, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 344, 355, - 355, 355, 352, 352 - }; - - const unsigned short - seclang_parser::yyr1_[] = - { - 0, 340, 341, 341, 341, 342, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, - 344, 345, 345, 346, 346, 346, 346, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 349, 350, 350, 351, 351, 351, 351, 351, 351, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, - 354, 354, 354, 354, 355, 355, 355, 355 - }; - - const unsigned char - seclang_parser::yyr2_[] = - { - 0, 2, 1, 2, 1, 1, 1, 1, 2, 2, - 2, 1, 1, 1, 1, 2, 2, 1, 2, 2, - 2, 2, 2, 2, 1, 1, 1, 2, 2, 3, - 1, 3, 1, 1, 2, 1, 2, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 1, 1, 4, 3, 2, 2, 2, 1, 2, - 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, - 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, - 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, - 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 3, 4, 4, 1, 2, 2, - 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, - 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, - 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, - 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, - 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, - 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, - 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, - 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, - 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, - 2, 2, 1, 2, 2, 1, 1, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 3, 3, 3, 2, 2, 1, 1 - }; - - - - // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - // First, the terminals, then, starting at \a yyntokens_, nonterminals. - const char* - const seclang_parser::yytname_[] = - { - "\"end of file\"", "error", "$undefined", "\",\"", - "\"CONFIG_CONTENT_INJECTION\"", "\"CONGIG_DIR_RESPONSE_BODY_MP_CLEAR\"", - "PIPE", "NEW_LINE", "VAR_COUNT", "VAR_EXCLUSION", "VARIABLE_ARGS", - "VARIABLE_ARGS_POST", "VARIABLE_ARGS_GET", "VARIABLE_FILES_SIZES", - "VARIABLE_FILES_NAMES", "VARIABLE_FILES_TMP_CONTENT", - "VARIABLE_MULTIPART_FILENAME", "VARIABLE_MULTIPART_NAME", - "VARIABLE_MATCHED_VARS_NAMES", "VARIABLE_MATCHED_VARS", "VARIABLE_FILES", - "VARIABLE_REQUEST_COOKIES", "VARIABLE_REQUEST_HEADERS", - "VARIABLE_RESPONSE_HEADERS", "VARIABLE_GEO", - "VARIABLE_REQUEST_COOKIES_NAMES", "VARIABLE_ARGS_COMBINED_SIZE", - "VARIABLE_ARGS_GET_NAMES", "VARIABLE_RULE", "\"Variable ARGS_NAMES\"", - "VARIABLE_ARGS_POST_NAMES", "\"AUTH_TYPE\"", "\"FILES_COMBINED_SIZE\"", - "\"FILES_TMPNAMES\"", "\"FULL_REQUEST\"", "\"FULL_REQUEST_LENGTH\"", - "\"INBOUND_DATA_ERROR\"", "\"MATCHED_VAR\"", "\"MATCHED_VAR_NAME\"", - "VARIABLE_MULTIPART_BOUNDARY_QUOTED", - "VARIABLE_MULTIPART_BOUNDARY_WHITESPACE", "\"MULTIPART_CRLF_LF_LINES\"", - "\"MULTIPART_DATA_AFTER\"", "VARIABLE_MULTIPART_DATA_BEFORE", - "\"MULTIPART_FILE_LIMIT_EXCEEDED\"", "\"MULTIPART_HEADER_FOLDING\"", - "\"MULTIPART_INVALID_HEADER_FOLDING\"", - "VARIABLE_MULTIPART_INVALID_PART", "\"MULTIPART_INVALID_QUOTING\"", - "VARIABLE_MULTIPART_LF_LINE", "VARIABLE_MULTIPART_MISSING_SEMICOLON", - "VARIABLE_MULTIPART_SEMICOLON_MISSING", "\"MULTIPART_STRICT_ERROR\"", - "\"MULTIPART_UNMATCHED_BOUNDARY\"", "\"OUTBOUND_DATA_ERROR\"", - "\"PATH_INFO\"", "\"QUERY_STRING\"", "\"REMOTE_ADDR\"", - "\"REMOTE_HOST\"", "\"REMOTE_PORT\"", "\"REQBODY_ERROR_MSG\"", - "\"REQBODY_ERROR\"", "\"REQBODY_PROCESSOR_ERROR_MSG\"", - "\"REQBODY_PROCESSOR_ERROR\"", "\"REQBODY_PROCESSOR\"", - "\"REQUEST_BASENAME\"", "\"REQUEST_BODY_LENGTH\"", "\"REQUEST_BODY\"", - "\"REQUEST_FILENAME\"", "VARIABLE_REQUEST_HEADERS_NAMES", - "\"REQUEST_LINE\"", "\"REQUEST_METHOD\"", "\"REQUEST_PROTOCOL\"", - "\"REQUEST_URI_RAW\"", "\"REQUEST_URI\"", "\"RESOURCE\"", - "\"RESPONSE_BODY\"", "\"RESPONSE_CONTENT_LENGTH\"", - "VARIABLE_RESPONSE_CONTENT_TYPE", "VARIABLE_RESPONSE_HEADERS_NAMES", - "\"RESPONSE_PROTOCOL\"", "\"RESPONSE_STATUS\"", "\"SERVER_ADDR\"", - "\"SERVER_NAME\"", "\"SERVER_PORT\"", "\"SESSIONID\"", "\"UNIQUE_ID\"", - "\"URLENCODED_ERROR\"", "\"USERID\"", "\"WEBAPPID\"", - "\"VARIABLE_STATUS\"", "\"VARIABLE_STATUS_LINE\"", "\"VARIABLE_IP\"", - "\"VARIABLE_GLOBAL\"", "\"VARIABLE_TX\"", "\"VARIABLE_SESSION\"", - "\"VARIABLE_USER\"", "\"RUN_TIME_VAR_ENV\"", "\"RUN_TIME_VAR_XML\"", - "\"SetVar\"", "SETVAR_OPERATION_EQUALS", "SETVAR_OPERATION_EQUALS_PLUS", - "SETVAR_OPERATION_EQUALS_MINUS", "\"NOT\"", "\"OPERATOR_BEGINS_WITH\"", - "\"OPERATOR_CONTAINS\"", "\"OPERATOR_CONTAINS_WORD\"", - "\"OPERATOR_DETECT_SQLI\"", "\"OPERATOR_DETECT_XSS\"", - "\"OPERATOR_ENDS_WITH\"", "\"OPERATOR_EQ\"", "\"OPERATOR_FUZZY_HASH\"", - "\"OPERATOR_GEOLOOKUP\"", "\"OPERATOR_GE\"", "\"OPERATOR_GSB_LOOKUP\"", - "\"OPERATOR_GT\"", "\"OPERATOR_INSPECT_FILE\"", - "\"OPERATOR_IP_MATCH_FROM_FILE\"", "\"OPERATOR_IP_MATCH\"", - "\"OPERATOR_LE\"", "\"OPERATOR_LT\"", "\"OPERATOR_PM_FROM_FILE\"", - "\"OPERATOR_PM\"", "\"OPERATOR_RBL\"", "\"OPERATOR_RSUB\"", - "\"Operator RX (content only)\"", "\"OPERATOR_RX\"", - "\"OPERATOR_STR_EQ\"", "\"OPERATOR_STR_MATCH\"", - "\"OPERATOR_UNCONDITIONAL_MATCH\"", "\"OPERATOR_VALIDATE_BYTE_RANGE\"", - "\"OPERATOR_VALIDATE_DTD\"", "\"OPERATOR_VALIDATE_HASH\"", - "\"OPERATOR_VALIDATE_SCHEMA\"", "\"OPERATOR_VALIDATE_URL_ENCODING\"", - "\"OPERATOR_VALIDATE_UTF8_ENCODING\"", "\"OPERATOR_VERIFY_CC\"", - "\"OPERATOR_VERIFY_CPF\"", "\"OPERATOR_VERIFY_SSN\"", - "\"OPERATOR_WITHIN\"", "CONFIG_DIR_AUDIT_LOG_FMT", "JSON", "NATIVE", - "\"ACTION_CTL_RULE_ENGINE\"", "\"Accuracy\"", "\"Allow\"", "\"Append\"", - "\"AuditLog\"", "\"Block\"", "\"Capture\"", "\"Chain\"", - "\"ACTION_CTL_AUDIT_ENGINE\"", "\"ACTION_CTL_AUDIT_LOG_PARTS\"", - "\"ACTION_CTL_BDY_JSON\"", "\"ACTION_CTL_BDY_XML\"", - "\"ACTION_CTL_BDY_URLENCODED\"", "\"ACTION_CTL_FORCE_REQ_BODY_VAR\"", - "\"ACTION_CTL_REQUEST_BODY_ACCESS\"", "\"ACTION_CTL_RULE_REMOVE_BY_ID\"", - "\"ACTION_CTL_RULE_REMOVE_BY_TAG\"", - "\"ACTION_CTL_RULE_REMOVE_TARGET_BY_ID\"", - "\"ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG\"", "\"Deny\"", - "\"DeprecateVar\"", "\"Drop\"", "\"Exec\"", "\"ExpireVar\"", "\"Id\"", - "\"InitCol\"", "\"Log\"", "\"LogData\"", "\"Maturity\"", "\"Msg\"", - "\"MultiMatch\"", "\"NoAuditLog\"", "\"NoLog\"", "\"Pass\"", "\"Pause\"", - "\"Phase\"", "\"Prepend\"", "\"Proxy\"", "\"Redirect\"", "\"Rev\"", - "\"SanitiseArg\"", "\"SanitiseMatched\"", "\"SanitiseMatchedBytes\"", - "\"SanitiseRequestHeader\"", "\"SanitiseResponseHeader\"", "\"SetEnv\"", - "\"SetRsc\"", "\"SetSid\"", "\"SetUID\"", "\"Severity\"", "\"Skip\"", - "\"SkipAfter\"", "\"Status\"", "\"Tag\"", - "\"ACTION_TRANSFORMATION_BASE_64_ENCODE\"", - "\"ACTION_TRANSFORMATION_BASE_64_DECODE\"", - "\"ACTION_TRANSFORMATION_BASE_64_DECODE_EXT\"", - "\"ACTION_TRANSFORMATION_CMD_LINE\"", - "\"ACTION_TRANSFORMATION_COMPRESS_WHITESPACE\"", - "\"ACTION_TRANSFORMATION_CSS_DECODE\"", - "\"ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE\"", - "\"ACTION_TRANSFORMATION_HEX_ENCODE\"", - "\"ACTION_TRANSFORMATION_HEX_DECODE\"", - "\"ACTION_TRANSFORMATION_HTML_ENTITY_DECODE\"", - "\"ACTION_TRANSFORMATION_JS_DECODE\"", - "\"ACTION_TRANSFORMATION_LENGTH\"", - "\"ACTION_TRANSFORMATION_LOWERCASE\"", "\"ACTION_TRANSFORMATION_MD5\"", - "\"ACTION_TRANSFORMATION_NONE\"", - "\"ACTION_TRANSFORMATION_NORMALISE_PATH\"", - "\"ACTION_TRANSFORMATION_NORMALISE_PATH_WIN\"", - "\"ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT\"", - "\"ACTION_TRANSFORMATION_PARITY_ODD_7_BIT\"", - "\"ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT\"", - "\"ACTION_TRANSFORMATION_REMOVE_COMMENTS\"", - "\"ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR\"", - "\"ACTION_TRANSFORMATION_REMOVE_NULLS\"", - "\"ACTION_TRANSFORMATION_REMOVE_WHITESPACE\"", - "\"ACTION_TRANSFORMATION_REPLACE_COMMENTS\"", - "\"ACTION_TRANSFORMATION_REPLACE_NULLS\"", - "\"ACTION_TRANSFORMATION_SHA1\"", - "\"ACTION_TRANSFORMATION_SQL_HEX_DECODE\"", - "\"ACTION_TRANSFORMATION_TRIM\"", "\"ACTION_TRANSFORMATION_TRIM_LEFT\"", - "\"ACTION_TRANSFORMATION_TRIM_RIGHT\"", - "\"ACTION_TRANSFORMATION_UPPERCASE\"", - "\"ACTION_TRANSFORMATION_URL_ENCODE\"", - "\"ACTION_TRANSFORMATION_URL_DECODE\"", - "\"ACTION_TRANSFORMATION_URL_DECODE_UNI\"", - "\"ACTION_TRANSFORMATION_UTF8_TO_UNICODE\"", "\"Ver\"", "\"xmlns\"", - "\"CONFIG_COMPONENT_SIG\"", "\"CONFIG_CONN_ENGINE\"", - "\"CONFIG_SEC_ARGUMENT_SEPARATOR\"", "\"CONFIG_SEC_WEB_APP_ID\"", - "\"CONFIG_SEC_SERVER_SIG\"", "\"CONFIG_DIR_AUDIT_DIR\"", - "\"CONFIG_DIR_AUDIT_DIR_MOD\"", "\"CONFIG_DIR_AUDIT_ENG\"", - "\"CONFIG_DIR_AUDIT_FLE_MOD\"", "\"CONFIG_DIR_AUDIT_LOG\"", - "\"CONFIG_DIR_AUDIT_LOG2\"", "\"CONFIG_DIR_AUDIT_LOG_P\"", - "\"CONFIG_DIR_AUDIT_STS\"", "\"CONFIG_DIR_AUDIT_TPE\"", - "\"CONFIG_DIR_DEBUG_LOG\"", "\"CONFIG_DIR_DEBUG_LVL\"", - "\"CONFIG_SEC_CACHE_TRANSFORMATIONS\"", - "\"CONFIG_SEC_DISABLE_BACKEND_COMPRESS\"", "\"CONFIG_SEC_HASH_ENGINE\"", - "\"CONFIG_SEC_HASH_KEY\"", "\"CONFIG_SEC_HASH_PARAM\"", - "\"CONFIG_SEC_HASH_METHOD_RX\"", "\"CONFIG_SEC_HASH_METHOD_PM\"", - "\"CONFIG_SEC_CHROOT_DIR\"", "\"CONFIG_DIR_GEO_DB\"", - "\"CONFIG_DIR_GSB_DB\"", "\"CONFIG_SEC_GUARDIAN_LOG\"", - "\"CONFIG_DIR_PCRE_MATCH_LIMIT\"", - "\"CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION\"", - "\"CONFIG_SEC_CONN_R_STATE_LIMIT\"", "\"CONFIG_SEC_CONN_W_STATE_LIMIT\"", - "\"CONFIG_SEC_SENSOR_ID\"", "\"CONFIG_DIR_REQ_BODY\"", - "\"CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT\"", - "\"CONFIG_DIR_REQ_BODY_LIMIT\"", "\"CONFIG_DIR_REQ_BODY_LIMIT_ACTION\"", - "\"CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT\"", "\"CONFIG_DIR_RES_BODY\"", - "\"CONFIG_DIR_RES_BODY_LIMIT\"", "\"CONFIG_DIR_RES_BODY_LIMIT_ACTION\"", - "\"CONFIG_SEC_RULE_INHERITANCE\"", "\"CONFIG_SEC_RULE_PERF_TIME\"", - "\"CONFIG_DIR_RULE_ENG\"", "\"CONFIG_DIR_SEC_ACTION\"", - "\"CONFIG_DIR_SEC_DEFAULT_ACTION\"", "\"CONFIG_DIR_SEC_MARKER\"", - "\"CONFIG_DIR_UNICODE_MAP_FILE\"", "\"CONFIG_DIR_UNICODE_CODE_PAGE\"", - "\"CONFIG_SEC_COLLECTION_TIMEOUT\"", "\"CONFIG_SEC_HTTP_BLKEY\"", - "\"CONFIG_SEC_INTERCEPT_ON_ERROR\"", - "\"CONFIG_SEC_REMOTE_RULES_FAIL_ACTION\"", - "\"CONFIG_SEC_RULE_REMOVE_BY_ID\"", "\"CONFIG_SEC_RULE_REMOVE_BY_MSG\"", - "\"CONFIG_SEC_RULE_REMOVE_BY_TAG\"", - "\"CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG\"", - "\"CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG\"", - "\"CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID\"", - "\"CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID\"", - "\"CONFIG_UPDLOAD_KEEP_FILES\"", "\"CONFIG_UPDLOAD_SAVE_TMP_FILES\"", - "\"CONFIG_UPLOAD_DIR\"", "\"CONFIG_UPLOAD_FILE_LIMIT\"", - "\"CONFIG_UPLOAD_FILE_MODE\"", "\"CONFIG_VALUE_ABORT\"", - "\"CONFIG_VALUE_DETC\"", "\"CONFIG_VALUE_HTTPS\"", - "\"CONFIG_VALUE_OFF\"", "\"CONFIG_VALUE_ON\"", - "\"CONFIG_VALUE_PARALLEL\"", "\"CONFIG_VALUE_PROCESS_PARTIAL\"", - "\"CONFIG_VALUE_REJECT\"", "\"CONFIG_VALUE_RELEVANT_ONLY\"", - "\"CONFIG_VALUE_SERIAL\"", "\"CONFIG_VALUE_WARN\"", - "\"CONFIG_XML_EXTERNAL_ENTITY\"", "\"CONGIG_DIR_RESPONSE_BODY_MP\"", - "\"CONGIG_DIR_SEC_ARG_SEP\"", "\"CONGIG_DIR_SEC_COOKIE_FORMAT\"", - "\"CONFIG_SEC_COOKIEV0_SEPARATOR\"", "\"CONGIG_DIR_SEC_DATA_DIR\"", - "\"CONGIG_DIR_SEC_STATUS_ENGINE\"", - "\"CONFIG_SEC_STREAM_IN_BODY_INSPECTION\"", - "\"CONFIG_SEC_STREAM_OUT_BODY_INSPECTION\"", - "\"CONGIG_DIR_SEC_TMP_DIR\"", "\"DIRECTIVE\"", - "\"DIRECTIVE_SECRULESCRIPT\"", "\"FREE_TEXT_QUOTE_MACRO_EXPANSION\"", - "\"QUOTATION_MARK\"", "\"RUN_TIME_VAR_BLD\"", "\"RUN_TIME_VAR_DUR\"", - "\"RUN_TIME_VAR_HSV\"", "\"RUN_TIME_VAR_REMOTE_USER\"", - "\"RUN_TIME_VAR_TIME\"", "\"RUN_TIME_VAR_TIME_DAY\"", - "\"RUN_TIME_VAR_TIME_EPOCH\"", "\"RUN_TIME_VAR_TIME_HOUR\"", - "\"RUN_TIME_VAR_TIME_MIN\"", "\"RUN_TIME_VAR_TIME_MON\"", - "\"RUN_TIME_VAR_TIME_SEC\"", "\"RUN_TIME_VAR_TIME_WDAY\"", - "\"RUN_TIME_VAR_TIME_YEAR\"", "\"VARIABLE\"", "\"Dictionary element\"", - "\"Dictionary element, selected by regexp\"", "$accept", "input", "line", - "audit_log", "actions", "actions_may_quoted", "op", "op_before_init", - "expression", "variables", "variables_pre_process", - "variables_may_be_quoted", "var", "act", "setvar_action", - "run_time_string", YY_NULLPTR - }; - -#if YYDEBUG - const unsigned short - seclang_parser::yyrline_[] = - { - 0, 743, 743, 747, 748, 751, 756, 762, 768, 772, - 776, 782, 788, 794, 800, 805, 810, 816, 823, 827, - 831, 837, 841, 845, 850, 855, 860, 865, 869, 876, - 880, 887, 893, 903, 912, 922, 931, 944, 948, 952, - 956, 960, 964, 968, 972, 976, 980, 985, 989, 993, - 997, 1001, 1006, 1011, 1015, 1019, 1023, 1027, 1031, 1035, - 1039, 1043, 1047, 1051, 1055, 1059, 1063, 1067, 1071, 1075, - 1079, 1083, 1097, 1098, 1123, 1142, 1157, 1181, 1237, 1241, - 1245, 1249, 1253, 1257, 1261, 1265, 1269, 1278, 1282, 1287, - 1290, 1295, 1300, 1305, 1310, 1313, 1318, 1321, 1326, 1331, - 1334, 1339, 1344, 1349, 1354, 1359, 1364, 1369, 1372, 1377, - 1382, 1387, 1392, 1395, 1400, 1405, 1410, 1423, 1436, 1449, - 1462, 1475, 1501, 1529, 1541, 1561, 1589, 1594, 1599, 1608, - 1613, 1617, 1621, 1625, 1629, 1633, 1637, 1642, 1647, 1659, - 1665, 1669, 1673, 1684, 1693, 1694, 1701, 1706, 1711, 1765, - 1772, 1780, 1817, 1821, 1828, 1833, 1839, 1845, 1851, 1858, - 1868, 1872, 1876, 1880, 1884, 1888, 1892, 1896, 1900, 1904, - 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1940, 1944, - 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, - 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2020, 2024, - 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 2064, - 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096, 2100, 2104, - 2108, 2112, 2116, 2120, 2124, 2128, 2132, 2136, 2140, 2144, - 2148, 2152, 2156, 2160, 2164, 2168, 2172, 2176, 2180, 2184, - 2188, 2192, 2196, 2200, 2204, 2208, 2212, 2216, 2220, 2224, - 2229, 2233, 2237, 2242, 2246, 2250, 2255, 2260, 2264, 2268, - 2272, 2276, 2280, 2284, 2288, 2292, 2296, 2300, 2304, 2308, - 2312, 2316, 2320, 2324, 2328, 2332, 2336, 2340, 2344, 2348, - 2352, 2356, 2360, 2364, 2368, 2372, 2376, 2380, 2384, 2388, - 2392, 2396, 2400, 2404, 2408, 2412, 2416, 2420, 2424, 2428, - 2432, 2436, 2440, 2444, 2448, 2452, 2456, 2460, 2464, 2468, - 2472, 2476, 2480, 2484, 2488, 2492, 2496, 2500, 2508, 2515, - 2522, 2529, 2536, 2543, 2550, 2557, 2564, 2571, 2578, 2585, - 2595, 2599, 2603, 2607, 2611, 2615, 2619, 2623, 2628, 2633, - 2638, 2642, 2646, 2650, 2654, 2659, 2664, 2668, 2672, 2676, - 2680, 2684, 2688, 2692, 2696, 2700, 2704, 2708, 2713, 2717, - 2722, 2726, 2730, 2734, 2738, 2742, 2746, 2750, 2754, 2758, - 2762, 2766, 2770, 2774, 2778, 2782, 2786, 2790, 2794, 2798, - 2802, 2806, 2810, 2814, 2818, 2822, 2826, 2830, 2834, 2838, - 2842, 2846, 2850, 2854, 2858, 2862, 2866, 2870, 2874, 2878, - 2882, 2886, 2890, 2894, 2898, 2902, 2906, 2910, 2914, 2918, - 2922, 2926, 2930, 2934, 2938, 2942, 2946, 2950, 2954, 2958, - 2962, 2966, 2970, 2974, 2978, 2982, 2986, 2990, 2994, 3001, - 3005, 3009, 3013, 3017, 3024, 3029, 3034, 3040 - }; - - // Print the state stack on the debug stream. - void - seclang_parser::yystack_print_ () - { - *yycdebug_ << "Stack now"; - for (stack_type::const_iterator - i = yystack_.begin (), - i_end = yystack_.end (); - i != i_end; ++i) - *yycdebug_ << ' ' << i->state; - *yycdebug_ << '\n'; - } - - // Report on the debug stream that the rule \a yyrule is going to be reduced. - void - seclang_parser::yy_reduce_print_ (int yyrule) - { - unsigned yylno = yyrline_[yyrule]; - int yynrhs = yyr2_[yyrule]; - // Print the symbols being reduced, and their result. - *yycdebug_ << "Reducing stack by rule " << yyrule - 1 - << " (line " << yylno << "):\n"; - // The symbols being reduced. - for (int yyi = 0; yyi < yynrhs; yyi++) - YY_SYMBOL_PRINT (" $" << yyi + 1 << " =", - yystack_[(yynrhs) - (yyi + 1)]); - } -#endif // YYDEBUG - - - -} // yy -#line 6850 "seclang-parser.cc" // lalr1.cc:1217 -#line 3047 "seclang-parser.yy" // lalr1.cc:1218 - - -void yy::seclang_parser::error (const location_type& l, const std::string& m) { - driver.error (l, m); -} diff --git a/src/parser/seclang-parser.hh b/src/parser/seclang-parser.hh deleted file mode 100644 index 09d7a2dd..00000000 --- a/src/parser/seclang-parser.hh +++ /dev/null @@ -1,6448 +0,0 @@ -// A Bison parser, made by GNU Bison 3.2. - -// Skeleton interface for Bison LALR(1) parsers in C++ - -// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -// As a special exception, you may create a larger work that contains -// part or all of the Bison parser skeleton and distribute that work -// under terms of your choice, so long as that work isn't itself a -// parser generator using the skeleton or a modified version thereof -// as a parser skeleton. Alternatively, if you modify or redistribute -// the parser skeleton itself, you may (at your option) remove this -// special exception, which will cause the skeleton and the resulting -// Bison output files to be licensed under the GNU General Public -// License without this special exception. - -// This special exception was added by the Free Software Foundation in -// version 2.2 of Bison. - - -/** - ** \file y.tab.h - ** Define the yy::parser class. - */ - -// C++ LALR(1) parser skeleton written by Akim Demaille. - -// Undocumented macros, especially those whose name start with YY_, -// are private implementation details. Do not rely on them. - -#ifndef YY_YY_SECLANG_PARSER_HH_INCLUDED -# define YY_YY_SECLANG_PARSER_HH_INCLUDED -// // "%code requires" blocks. -#line 10 "seclang-parser.yy" // lalr1.cc:403 - -#include -#include - -namespace ModSecurity { -namespace Parser { -class Driver; -} -} - -#include "src/rule_script.h" - -#include "src/actions/accuracy.h" -#include "src/actions/audit_log.h" -#include "src/actions/block.h" -#include "src/actions/capture.h" -#include "src/actions/chain.h" -#include "src/actions/ctl/audit_log_parts.h" -#include "src/actions/ctl/request_body_access.h" -#include "src/actions/ctl/rule_engine.h" -#include "src/actions/ctl/request_body_processor_json.h" -#include "src/actions/ctl/request_body_processor_xml.h" -#include "src/actions/ctl/request_body_processor_urlencoded.h" -#include "src/actions/ctl/rule_remove_by_id.h" -#include "src/actions/ctl/rule_remove_by_tag.h" -#include "src/actions/ctl/rule_remove_target_by_id.h" -#include "src/actions/ctl/rule_remove_target_by_tag.h" -#include "src/actions/data/status.h" -#include "src/actions/disruptive/allow.h" -#include "src/actions/disruptive/deny.h" -#include "src/actions/disruptive/pass.h" -#include "src/actions/disruptive/redirect.h" -#include "src/actions/init_col.h" -#include "src/actions/exec.h" -#include "src/actions/log_data.h" -#include "src/actions/log.h" -#include "src/actions/maturity.h" -#include "src/actions/msg.h" -#include "src/actions/multi_match.h" -#include "src/actions/no_audit_log.h" -#include "src/actions/no_log.h" -#include "src/actions/phase.h" -#include "src/actions/rev.h" -#include "src/actions/rule_id.h" -#include "src/actions/set_env.h" -#include "src/actions/set_rsc.h" -#include "src/actions/set_sid.h" -#include "src/actions/set_uid.h" -#include "src/actions/set_var.h" -#include "src/actions/severity.h" -#include "src/actions/skip_after.h" -#include "src/actions/skip.h" -#include "src/actions/tag.h" -#include "src/actions/transformations/none.h" -#include "src/actions/transformations/transformation.h" -#include "src/actions/transformations/url_decode_uni.h" -#include "src/actions/ver.h" -#include "src/actions/xmlns.h" - -#include "src/actions/transformations/hex_encode.h" -#include "src/actions/transformations/parity_even_7bit.h" -#include "src/actions/transformations/utf8_to_unicode.h" -#include "src/actions/transformations/parity_zero_7bit.h" -#include "src/actions/transformations/sql_hex_decode.h" -#include "src/actions/transformations/replace_comments.h" -#include "src/actions/transformations/none.h" -#include "src/actions/transformations/url_decode.h" -#include "src/actions/transformations/lower_case.h" -#include "src/actions/transformations/upper_case.h" -#include "src/actions/transformations/hex_decode.h" -#include "src/actions/transformations/url_encode.h" -#include "src/actions/transformations/js_decode.h" -#include "src/actions/transformations/url_decode_uni.h" -#include "src/actions/transformations/parity_odd_7bit.h" -#include "src/actions/transformations/transformation.h" -#include "src/actions/transformations/trim_right.h" -#include "src/actions/transformations/escape_seq_decode.h" -#include "src/actions/transformations/base64_decode_ext.h" -#include "src/actions/transformations/base64_decode.h" -#include "src/actions/transformations/trim.h" -#include "src/actions/transformations/cmd_line.h" -#include "src/actions/transformations/replace_nulls.h" -#include "src/actions/transformations/md5.h" -#include "src/actions/transformations/length.h" -#include "src/actions/transformations/sha1.h" -#include "src/actions/transformations/compress_whitespace.h" -#include "src/actions/transformations/normalise_path_win.h" -#include "src/actions/transformations/remove_nulls.h" -#include "src/actions/transformations/remove_comments.h" -#include "src/actions/transformations/normalise_path.h" -#include "src/actions/transformations/html_entity_decode.h" -#include "src/actions/transformations/trim_left.h" -#include "src/actions/transformations/remove_comments_char.h" -#include "src/actions/transformations/base64_encode.h" -#include "src/actions/transformations/remove_whitespace.h" -#include "src/actions/transformations/css_decode.h" - -#include "src/operators/begins_with.h" -#include "src/operators/contains.h" -#include "src/operators/contains_word.h" -#include "src/operators/detect_sqli.h" -#include "src/operators/detect_xss.h" -#include "src/operators/ends_with.h" -#include "src/operators/eq.h" -#include "src/operators/fuzzy_hash.h" -#include "src/operators/ge.h" -#include "src/operators/geo_lookup.h" -#include "src/operators/gsblookup.h" -#include "src/operators/gt.h" -#include "src/operators/inspect_file.h" -#include "src/operators/ip_match_f.h" -#include "src/operators/ip_match_from_file.h" -#include "src/operators/ip_match.h" -#include "src/operators/le.h" -#include "src/operators/lt.h" -#include "src/operators/no_match.h" -#include "src/operators/operator.h" -#include "src/operators/pm_f.h" -#include "src/operators/pm_from_file.h" -#include "src/operators/pm.h" -#include "src/operators/rbl.h" -#include "src/operators/rsub.h" -#include "src/operators/rx.h" -#include "src/operators/str_eq.h" -#include "src/operators/str_match.h" -#include "src/operators/unconditional_match.h" -#include "src/operators/validate_byte_range.h" -#include "src/operators/validate_dtd.h" -#include "src/operators/validate_hash.h" -#include "src/operators/validate_schema.h" -#include "src/operators/validate_url_encoding.h" -#include "src/operators/validate_utf8_encoding.h" -#include "src/operators/verify_cc.h" -#include "src/operators/verify_cpf.h" -#include "src/operators/verify_ssn.h" -#include "src/operators/within.h" - - -#include "modsecurity/audit_log.h" -#include "modsecurity/modsecurity.h" -#include "modsecurity/rules_properties.h" -#include "modsecurity/rule.h" -#include "src/operators/operator.h" -#include "src/utils/geo_lookup.h" -#include "src/utils/string.h" -#include "src/utils/system.h" -#include "src/variables/args_combined_size.h" -#include "src/variables/args_get.h" -#include "src/variables/args_get_names.h" -#include "src/variables/args.h" -#include "src/variables/args_names.h" -#include "src/variables/args_post.h" -#include "src/variables/args_post_names.h" -#include "src/variables/auth_type.h" -#include "src/variables/duration.h" -#include "src/variables/env.h" -#include "src/variables/files_combined_size.h" -#include "src/variables/files.h" -#include "src/variables/files_names.h" -#include "src/variables/files_sizes.h" -#include "src/variables/files_tmp_content.h" -#include "src/variables/files_tmp_names.h" -#include "src/variables/full_request.h" -#include "src/variables/full_request_length.h" -#include "src/variables/geo.h" -#include "src/variables/highest_severity.h" -#include "src/variables/inbound_data_error.h" -#include "src/variables/matched_var.h" -#include "src/variables/matched_var_name.h" -#include "src/variables/matched_vars.h" -#include "src/variables/matched_vars_names.h" -#include "src/variables/modsec_build.h" -#include "src/variables/multipart_boundary_quoted.h" -#include "src/variables/multipart_boundary_whitespace.h" -#include "src/variables/multipart_crlf_lf_lines.h" -#include "src/variables/multipart_data_after.h" -#include "src/variables/multipart_data_before.h" -#include "src/variables/multipart_file_limit_exceeded.h" -#include "src/variables/multipart_file_name.h" -#include "src/variables/multipart_header_folding.h" -#include "src/variables/multipart_invalid_header_folding.h" -#include "src/variables/multipart_invalid_part.h" -#include "src/variables/multipart_invalid_quoting.h" -#include "src/variables/multipart_lf_line.h" -#include "src/variables/multipart_missing_semicolon.h" -#include "src/variables/multipart_name.h" -#include "src/variables/multipart_strict_error.h" -#include "src/variables/multipart_unmatched_boundary.h" -#include "src/variables/outbound_data_error.h" -#include "src/variables/path_info.h" -#include "src/variables/query_string.h" -#include "src/variables/remote_addr.h" -#include "src/variables/remote_host.h" -#include "src/variables/remote_port.h" -#include "src/variables/remote_user.h" -#include "src/variables/reqbody_error.h" -#include "src/variables/reqbody_error_msg.h" -#include "src/variables/reqbody_processor_error.h" -#include "src/variables/reqbody_processor_error_msg.h" -#include "src/variables/reqbody_processor.h" -#include "src/variables/request_base_name.h" -#include "src/variables/request_body.h" -#include "src/variables/request_body_length.h" -#include "src/variables/request_cookies.h" -#include "src/variables/request_cookies_names.h" -#include "src/variables/request_file_name.h" -#include "src/variables/request_headers.h" -#include "src/variables/request_headers_names.h" -#include "src/variables/request_line.h" -#include "src/variables/request_method.h" -#include "src/variables/request_protocol.h" -#include "src/variables/request_uri.h" -#include "src/variables/request_uri_raw.h" -#include "src/variables/resource.h" -#include "src/variables/response_body.h" -#include "src/variables/response_content_length.h" -#include "src/variables/response_content_type.h" -#include "src/variables/response_headers.h" -#include "src/variables/response_headers_names.h" -#include "src/variables/response_protocol.h" -#include "src/variables/response_status.h" -#include "src/variables/rule.h" -#include "src/variables/server_addr.h" -#include "src/variables/server_name.h" -#include "src/variables/server_port.h" -#include "src/variables/session_id.h" -#include "src/variables/web_app_id.h" -#include "src/variables/time_day.h" -#include "src/variables/time_epoch.h" -#include "src/variables/time.h" -#include "src/variables/time_hour.h" -#include "src/variables/time_min.h" -#include "src/variables/time_mon.h" -#include "src/variables/time_sec.h" -#include "src/variables/time_wday.h" -#include "src/variables/time_year.h" -#include "src/variables/tx.h" -#include "src/variables/unique_id.h" -#include "src/variables/url_encoded_error.h" -#include "src/variables/user.h" -#include "src/variables/user_id.h" -#include "src/variables/variable.h" -#include "src/variables/xml.h" -#include "src/variables/ip.h" -#include "src/variables/global.h" -#include "src/variables/session.h" -#include "src/variables/status.h" - -using modsecurity::ModSecurity; -using modsecurity::Rule; -using modsecurity::Utils::GeoLookup; -using modsecurity::Variables::Duration; -using modsecurity::Variables::Env; -using modsecurity::Variables::HighestSeverity; -using modsecurity::Variables::ModsecBuild; -using modsecurity::Variables::RemoteUser; -using modsecurity::Variables::TimeDay; -using modsecurity::Variables::TimeEpoch; -using modsecurity::Variables::TimeHour; -using modsecurity::Variables::TimeMin; -using modsecurity::Variables::TimeMon; -using modsecurity::Variables::TimeSec; -using modsecurity::Variables::TimeWDay; -using modsecurity::Variables::TimeYear; -using modsecurity::Variables::Time; -using modsecurity::Variables::Tx_DictElement; -using modsecurity::Variables::Tx_NoDictElement; -using modsecurity::Variables::Tx_DictElementRegexp; - -using modsecurity::Variables::Ip_DictElement; -using modsecurity::Variables::Ip_NoDictElement; -using modsecurity::Variables::Ip_DictElementRegexp; - -using modsecurity::Variables::Global_DictElement; -using modsecurity::Variables::Global_NoDictElement; -using modsecurity::Variables::Global_DictElementRegexp; - -using modsecurity::Variables::Session_DictElement; -using modsecurity::Variables::Session_NoDictElement; -using modsecurity::Variables::Session_DictElementRegexp; - - - -using modsecurity::Variables::Variable; -using modsecurity::Variables::VariableModificatorExclusion; -using modsecurity::Variables::VariableModificatorCount; -using modsecurity::Variables::XML; - -using namespace modsecurity; - -using modsecurity::operators::Operator; - - - -#define CHECK_VARIATION_DECL \ - Variable *var = NULL; \ - bool t = false; - -#define CHECK_VARIATION(a) \ - if (var == NULL) { \ - if (name.at(0) == std::string(#a).at(0)) { \ - name.erase(0, 1); \ - t = true ; \ - } \ - } else { \ - t = false; \ - } \ - if (t) - - -#define ACTION_NOT_SUPPORTED(a, b) \ - driver.error(b, "Action: " + std::string(a) + " is not yet supported."); \ - YYERROR; - - -#define OPERATOR_NOT_SUPPORTED(a, b) \ - driver.error(b, "Operator: " + std::string(a) + " is not yet supported."); \ - YYERROR; - - -#define ACTION_INIT(a, b) \ - std::string error; \ - if (a->init(&error) == false) { \ - driver.error(b, error); \ - YYERROR; \ - } - -#define OPERATOR_CONTAINER(a, b) \ - std::unique_ptr c(b); \ - a = std::move(c); - -#define ACTION_CONTAINER(a, b) \ - std::unique_ptr c(b); \ - a = std::move(c); - -#define VARIABLE_CONTAINER(a, b) \ - std::unique_ptr c(b); \ - a = std::move(c); - - -#line 389 "seclang-parser.hh" // lalr1.cc:403 - -# include -# include // std::abort -# include -# include -# include -# include - -// Support move semantics when possible. -#if defined __cplusplus && 201103L <= __cplusplus -# define YY_MOVE std::move -# define YY_MOVE_OR_COPY move -# define YY_MOVE_REF(Type) Type&& -# define YY_RVREF(Type) Type&& -# define YY_COPY(Type) Type -#else -# define YY_MOVE -# define YY_MOVE_OR_COPY copy -# define YY_MOVE_REF(Type) Type& -# define YY_RVREF(Type) const Type& -# define YY_COPY(Type) const Type& -#endif -# include "location.hh" -#include -#ifndef YYASSERT -# include -# define YYASSERT assert -#endif - - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif - - -namespace yy { -#line 483 "seclang-parser.hh" // lalr1.cc:403 - - /// A stack with random access from its top. - template > - class stack - { - public: - // Hide our reversed order. - typedef typename S::reverse_iterator iterator; - typedef typename S::const_reverse_iterator const_iterator; - typedef typename S::size_type size_type; - - stack (size_type n = 200) - : seq_ (n) - {} - - /// Random access. - /// - /// Index 0 returns the topmost element. - T& - operator[] (size_type i) - { - return seq_[size () - 1 - i]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - T& - operator[] (int i) - { - return operator[] (size_type (i)); - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (size_type i) const - { - return seq_[size () - 1 - i]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (int i) const - { - return operator[] (size_type (i)); - } - - /// Steal the contents of \a t. - /// - /// Close to move-semantics. - void - push (YY_MOVE_REF (T) t) - { - seq_.push_back (T ()); - operator[](0).move (t); - } - - void - pop (int n = 1) - { - for (; 0 < n; --n) - seq_.pop_back (); - } - - void - clear () - { - seq_.clear (); - } - - size_type - size () const - { - return seq_.size (); - } - - const_iterator - begin () const - { - return seq_.rbegin (); - } - - const_iterator - end () const - { - return seq_.rend (); - } - - private: - stack (const stack&); - stack& operator= (const stack&); - /// The wrapped container. - S seq_; - }; - - /// Present a slice of the top of a stack. - template > - class slice - { - public: - slice (const S& stack, int range) - : stack_ (stack) - , range_ (range) - {} - - const T& - operator[] (int i) const - { - return stack_[range_ - i]; - } - - private: - const S& stack_; - int range_; - }; - - - - /// A char[S] buffer to store and retrieve objects. - /// - /// Sort of a variant, but does not keep track of the nature - /// of the stored data, since that knowledge is available - /// via the current state. - template - struct variant - { - /// Type of *this. - typedef variant self_type; - - /// Empty construction. - variant () - : yybuffer_ () - , yytypeid_ (YY_NULLPTR) - {} - - /// Construct and fill. - template - variant (YY_RVREF (T) t) - : yytypeid_ (&typeid (T)) - { - YYASSERT (sizeof (T) <= S); - new (yyas_ ()) T (YY_MOVE (t)); - } - - /// Destruction, allowed only if empty. - ~variant () - { - YYASSERT (!yytypeid_); - } - - /// Instantiate an empty \a T in here. - template - T& - emplace () - { - YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= S); - yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (); - } - -# if defined __cplusplus && 201103L <= __cplusplus - /// Instantiate a \a T in here from \a t. - template - T& - emplace (U&& u) - { - YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= S); - yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (std::forward (u)); - } -# else - /// Instantiate a \a T in here from \a t. - template - T& - emplace (const T& t) - { - YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= S); - yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (std::move((T&)t)); - } -# endif - - /// Instantiate an empty \a T in here. - /// Obsolete, use emplace. - template - T& - build () - { - return emplace (); - } - - /// Instantiate a \a T in here from \a t. - /// Obsolete, use emplace. - template - T& - build (const T& t) - { - return emplace (t); - } - - /// Accessor to a built \a T. - template - T& - as () - { - YYASSERT (yytypeid_); - YYASSERT (*yytypeid_ == typeid (T)); - YYASSERT (sizeof (T) <= S); - return *yyas_ (); - } - - /// Const accessor to a built \a T (for %printer). - template - const T& - as () const - { - YYASSERT (yytypeid_); - YYASSERT (*yytypeid_ == typeid (T)); - YYASSERT (sizeof (T) <= S); - return *yyas_ (); - } - - /// Swap the content with \a other, of same type. - /// - /// Both variants must be built beforehand, because swapping the actual - /// data requires reading it (with as()), and this is not possible on - /// unconstructed variants: it would require some dynamic testing, which - /// should not be the variant's responsibility. - /// Swapping between built and (possibly) non-built is done with - /// variant::move (). - template - void - swap (self_type& other) - { - YYASSERT (yytypeid_); - YYASSERT (*yytypeid_ == *other.yytypeid_); - std::swap (as (), other.as ()); - } - - /// Move the content of \a other to this. - /// - /// Destroys \a other. - template - void - move (self_type& other) - { -# if defined __cplusplus && 201103L <= __cplusplus - emplace (std::move (other.as ())); -# else - emplace (); - swap (other); -# endif - other.destroy (); - } - -# if defined __cplusplus && 201103L <= __cplusplus - /// Move the content of \a other to this. - template - void - move (self_type&& other) - { - emplace (std::move (other.as ())); - other.destroy (); - } -#endif - - /// Copy the content of \a other to this. - template - void - copy (const self_type& other) - { - emplace (other.as ()); - } - - /// Destroy the stored \a T. - template - void - destroy () - { - as ().~T (); - yytypeid_ = YY_NULLPTR; - } - - private: - /// Prohibit blind copies. - self_type& operator= (const self_type&); - variant (const self_type&); - - /// Accessor to raw memory as \a T. - template - T* - yyas_ () - { - void *yyp = yybuffer_.yyraw; - return static_cast (yyp); - } - - /// Const accessor to raw memory as \a T. - template - const T* - yyas_ () const - { - const void *yyp = yybuffer_.yyraw; - return static_cast (yyp); - } - - union - { - /// Strongest alignment constraints. - long double yyalign_me; - /// A buffer large enough to store any of the semantic values. - char yyraw[S]; - } yybuffer_; - - /// Whether the content is built: if defined, the name of the stored type. - const std::type_info *yytypeid_; - }; - - - /// A Bison parser. - class seclang_parser - { - public: -#ifndef YYSTYPE - /// An auxiliary type to compute the largest semantic type. - union union_type - { - // "Accuracy" - // "Allow" - // "Append" - // "AuditLog" - // "Block" - // "Capture" - // "Chain" - // "ACTION_CTL_AUDIT_ENGINE" - // "ACTION_CTL_AUDIT_LOG_PARTS" - // "ACTION_CTL_BDY_JSON" - // "ACTION_CTL_BDY_XML" - // "ACTION_CTL_BDY_URLENCODED" - // "ACTION_CTL_FORCE_REQ_BODY_VAR" - // "ACTION_CTL_REQUEST_BODY_ACCESS" - // "ACTION_CTL_RULE_REMOVE_BY_ID" - // "ACTION_CTL_RULE_REMOVE_BY_TAG" - // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - // "Deny" - // "DeprecateVar" - // "Drop" - // "Exec" - // "ExpireVar" - // "Id" - // "InitCol" - // "Log" - // "LogData" - // "Maturity" - // "Msg" - // "MultiMatch" - // "NoAuditLog" - // "NoLog" - // "Pass" - // "Pause" - // "Phase" - // "Prepend" - // "Proxy" - // "Redirect" - // "Rev" - // "SanitiseArg" - // "SanitiseMatched" - // "SanitiseMatchedBytes" - // "SanitiseRequestHeader" - // "SanitiseResponseHeader" - // "SetEnv" - // "SetRsc" - // "SetSid" - // "SetUID" - // "Severity" - // "Skip" - // "SkipAfter" - // "Status" - // "Tag" - // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - // "ACTION_TRANSFORMATION_BASE_64_DECODE" - // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - // "ACTION_TRANSFORMATION_CMD_LINE" - // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - // "ACTION_TRANSFORMATION_CSS_DECODE" - // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - // "ACTION_TRANSFORMATION_HEX_ENCODE" - // "ACTION_TRANSFORMATION_HEX_DECODE" - // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - // "ACTION_TRANSFORMATION_JS_DECODE" - // "ACTION_TRANSFORMATION_LENGTH" - // "ACTION_TRANSFORMATION_LOWERCASE" - // "ACTION_TRANSFORMATION_MD5" - // "ACTION_TRANSFORMATION_NONE" - // "ACTION_TRANSFORMATION_NORMALISE_PATH" - // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - // "ACTION_TRANSFORMATION_REMOVE_NULLS" - // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - // "ACTION_TRANSFORMATION_REPLACE_NULLS" - // "ACTION_TRANSFORMATION_SHA1" - // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - // "ACTION_TRANSFORMATION_TRIM" - // "ACTION_TRANSFORMATION_TRIM_LEFT" - // "ACTION_TRANSFORMATION_TRIM_RIGHT" - // "ACTION_TRANSFORMATION_UPPERCASE" - // "ACTION_TRANSFORMATION_URL_ENCODE" - // "ACTION_TRANSFORMATION_URL_DECODE" - // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - // "Ver" - // "xmlns" - // "CONFIG_COMPONENT_SIG" - // "CONFIG_CONN_ENGINE" - // "CONFIG_SEC_ARGUMENT_SEPARATOR" - // "CONFIG_SEC_WEB_APP_ID" - // "CONFIG_SEC_SERVER_SIG" - // "CONFIG_DIR_AUDIT_DIR" - // "CONFIG_DIR_AUDIT_DIR_MOD" - // "CONFIG_DIR_AUDIT_ENG" - // "CONFIG_DIR_AUDIT_FLE_MOD" - // "CONFIG_DIR_AUDIT_LOG" - // "CONFIG_DIR_AUDIT_LOG2" - // "CONFIG_DIR_AUDIT_LOG_P" - // "CONFIG_DIR_AUDIT_STS" - // "CONFIG_DIR_AUDIT_TPE" - // "CONFIG_DIR_DEBUG_LOG" - // "CONFIG_DIR_DEBUG_LVL" - // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - // "CONFIG_SEC_HASH_ENGINE" - // "CONFIG_SEC_HASH_KEY" - // "CONFIG_SEC_HASH_PARAM" - // "CONFIG_SEC_HASH_METHOD_RX" - // "CONFIG_SEC_HASH_METHOD_PM" - // "CONFIG_SEC_CHROOT_DIR" - // "CONFIG_DIR_GEO_DB" - // "CONFIG_DIR_GSB_DB" - // "CONFIG_SEC_GUARDIAN_LOG" - // "CONFIG_DIR_PCRE_MATCH_LIMIT" - // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - // "CONFIG_SEC_CONN_R_STATE_LIMIT" - // "CONFIG_SEC_CONN_W_STATE_LIMIT" - // "CONFIG_SEC_SENSOR_ID" - // "CONFIG_DIR_REQ_BODY" - // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - // "CONFIG_DIR_REQ_BODY_LIMIT" - // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - // "CONFIG_DIR_RES_BODY" - // "CONFIG_DIR_RES_BODY_LIMIT" - // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - // "CONFIG_SEC_RULE_INHERITANCE" - // "CONFIG_SEC_RULE_PERF_TIME" - // "CONFIG_DIR_RULE_ENG" - // "CONFIG_DIR_SEC_ACTION" - // "CONFIG_DIR_SEC_DEFAULT_ACTION" - // "CONFIG_DIR_SEC_MARKER" - // "CONFIG_DIR_UNICODE_MAP_FILE" - // "CONFIG_DIR_UNICODE_CODE_PAGE" - // "CONFIG_SEC_COLLECTION_TIMEOUT" - // "CONFIG_SEC_HTTP_BLKEY" - // "CONFIG_SEC_INTERCEPT_ON_ERROR" - // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - // "CONFIG_SEC_RULE_REMOVE_BY_ID" - // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - // "CONFIG_UPDLOAD_KEEP_FILES" - // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - // "CONFIG_UPLOAD_DIR" - // "CONFIG_UPLOAD_FILE_LIMIT" - // "CONFIG_UPLOAD_FILE_MODE" - // "CONFIG_VALUE_ABORT" - // "CONFIG_VALUE_DETC" - // "CONFIG_VALUE_HTTPS" - // "CONFIG_VALUE_OFF" - // "CONFIG_VALUE_ON" - // "CONFIG_VALUE_PARALLEL" - // "CONFIG_VALUE_PROCESS_PARTIAL" - // "CONFIG_VALUE_REJECT" - // "CONFIG_VALUE_RELEVANT_ONLY" - // "CONFIG_VALUE_SERIAL" - // "CONFIG_VALUE_WARN" - // "CONFIG_XML_EXTERNAL_ENTITY" - // "CONGIG_DIR_RESPONSE_BODY_MP" - // "CONGIG_DIR_SEC_ARG_SEP" - // "CONGIG_DIR_SEC_COOKIE_FORMAT" - // "CONFIG_SEC_COOKIEV0_SEPARATOR" - // "CONGIG_DIR_SEC_DATA_DIR" - // "CONGIG_DIR_SEC_STATUS_ENGINE" - // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - // "CONGIG_DIR_SEC_TMP_DIR" - // "DIRECTIVE" - // "DIRECTIVE_SECRULESCRIPT" - // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - // "QUOTATION_MARK" - // "RUN_TIME_VAR_BLD" - // "RUN_TIME_VAR_DUR" - // "RUN_TIME_VAR_HSV" - // "RUN_TIME_VAR_REMOTE_USER" - // "RUN_TIME_VAR_TIME" - // "RUN_TIME_VAR_TIME_DAY" - // "RUN_TIME_VAR_TIME_EPOCH" - // "RUN_TIME_VAR_TIME_HOUR" - // "RUN_TIME_VAR_TIME_MIN" - // "RUN_TIME_VAR_TIME_MON" - // "RUN_TIME_VAR_TIME_SEC" - // "RUN_TIME_VAR_TIME_WDAY" - // "RUN_TIME_VAR_TIME_YEAR" - // "VARIABLE" - // "Dictionary element" - // "Dictionary element, selected by regexp" - char dummy1[sizeof (std::string)]; - - // op - // op_before_init - char dummy2[sizeof (std::unique_ptr)]; - - // run_time_string - char dummy3[sizeof (std::unique_ptr)]; - - // var - char dummy4[sizeof (std::unique_ptr)]; - - // act - // setvar_action - char dummy5[sizeof (std::unique_ptr)]; - - // variables - // variables_pre_process - // variables_may_be_quoted - char dummy6[sizeof (std::unique_ptr > > )]; - - // actions - // actions_may_quoted - char dummy7[sizeof (std::unique_ptr > > )]; -}; - - /// Symbol semantic values. - typedef variant semantic_type; -#else - typedef YYSTYPE semantic_type; -#endif - /// Symbol locations. - typedef location location_type; - - /// Syntax errors thrown from user actions. - struct syntax_error : std::runtime_error - { - syntax_error (const location_type& l, const std::string& m); - location_type location; - }; - - /// Tokens. - struct token - { - enum yytokentype - { - TOK_END = 0, - TOK_COMMA = 258, - TOK_CONFIG_CONTENT_INJECTION = 259, - TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR = 260, - TOK_PIPE = 261, - TOK_NEW_LINE = 262, - TOK_VAR_COUNT = 263, - TOK_VAR_EXCLUSION = 264, - TOK_VARIABLE_ARGS = 265, - TOK_VARIABLE_ARGS_POST = 266, - TOK_VARIABLE_ARGS_GET = 267, - TOK_VARIABLE_FILES_SIZES = 268, - TOK_VARIABLE_FILES_NAMES = 269, - TOK_VARIABLE_FILES_TMP_CONTENT = 270, - TOK_VARIABLE_MULTIPART_FILENAME = 271, - TOK_VARIABLE_MULTIPART_NAME = 272, - TOK_VARIABLE_MATCHED_VARS_NAMES = 273, - TOK_VARIABLE_MATCHED_VARS = 274, - TOK_VARIABLE_FILES = 275, - TOK_VARIABLE_REQUEST_COOKIES = 276, - TOK_VARIABLE_REQUEST_HEADERS = 277, - TOK_VARIABLE_RESPONSE_HEADERS = 278, - TOK_VARIABLE_GEO = 279, - TOK_VARIABLE_REQUEST_COOKIES_NAMES = 280, - TOK_VARIABLE_ARGS_COMBINED_SIZE = 281, - TOK_VARIABLE_ARGS_GET_NAMES = 282, - TOK_VARIABLE_RULE = 283, - TOK_VARIABLE_ARGS_NAMES = 284, - TOK_VARIABLE_ARGS_POST_NAMES = 285, - TOK_VARIABLE_AUTH_TYPE = 286, - TOK_VARIABLE_FILES_COMBINED_SIZE = 287, - TOK_VARIABLE_FILES_TMP_NAMES = 288, - TOK_VARIABLE_FULL_REQUEST = 289, - TOK_VARIABLE_FULL_REQUEST_LENGTH = 290, - TOK_VARIABLE_INBOUND_DATA_ERROR = 291, - TOK_VARIABLE_MATCHED_VAR = 292, - TOK_VARIABLE_MATCHED_VAR_NAME = 293, - TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED = 294, - TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE = 295, - TOK_VARIABLE_MULTIPART_CRLF_LF_LINES = 296, - TOK_VARIABLE_MULTIPART_DATA_AFTER = 297, - TOK_VARIABLE_MULTIPART_DATA_BEFORE = 298, - TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED = 299, - TOK_VARIABLE_MULTIPART_HEADER_FOLDING = 300, - TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING = 301, - TOK_VARIABLE_MULTIPART_INVALID_PART = 302, - TOK_VARIABLE_MULTIPART_INVALID_QUOTING = 303, - TOK_VARIABLE_MULTIPART_LF_LINE = 304, - TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON = 305, - TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING = 306, - TOK_VARIABLE_MULTIPART_STRICT_ERROR = 307, - TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY = 308, - TOK_VARIABLE_OUTBOUND_DATA_ERROR = 309, - TOK_VARIABLE_PATH_INFO = 310, - TOK_VARIABLE_QUERY_STRING = 311, - TOK_VARIABLE_REMOTE_ADDR = 312, - TOK_VARIABLE_REMOTE_HOST = 313, - TOK_VARIABLE_REMOTE_PORT = 314, - TOK_VARIABLE_REQBODY_ERROR_MSG = 315, - TOK_VARIABLE_REQBODY_ERROR = 316, - TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG = 317, - TOK_VARIABLE_REQBODY_PROCESSOR_ERROR = 318, - TOK_VARIABLE_REQBODY_PROCESSOR = 319, - TOK_VARIABLE_REQUEST_BASENAME = 320, - TOK_VARIABLE_REQUEST_BODY_LENGTH = 321, - TOK_VARIABLE_REQUEST_BODY = 322, - TOK_VARIABLE_REQUEST_FILE_NAME = 323, - TOK_VARIABLE_REQUEST_HEADERS_NAMES = 324, - TOK_VARIABLE_REQUEST_LINE = 325, - TOK_VARIABLE_REQUEST_METHOD = 326, - TOK_VARIABLE_REQUEST_PROTOCOL = 327, - TOK_VARIABLE_REQUEST_URI_RAW = 328, - TOK_VARIABLE_REQUEST_URI = 329, - TOK_VARIABLE_RESOURCE = 330, - TOK_VARIABLE_RESPONSE_BODY = 331, - TOK_VARIABLE_RESPONSE_CONTENT_LENGTH = 332, - TOK_VARIABLE_RESPONSE_CONTENT_TYPE = 333, - TOK_VARIABLE_RESPONSE_HEADERS_NAMES = 334, - TOK_VARIABLE_RESPONSE_PROTOCOL = 335, - TOK_VARIABLE_RESPONSE_STATUS = 336, - TOK_VARIABLE_SERVER_ADDR = 337, - TOK_VARIABLE_SERVER_NAME = 338, - TOK_VARIABLE_SERVER_PORT = 339, - TOK_VARIABLE_SESSION_ID = 340, - TOK_VARIABLE_UNIQUE_ID = 341, - TOK_VARIABLE_URL_ENCODED_ERROR = 342, - TOK_VARIABLE_USER_ID = 343, - TOK_VARIABLE_WEB_APP_ID = 344, - TOK_VARIABLE_STATUS = 345, - TOK_VARIABLE_STATUS_LINE = 346, - TOK_VARIABLE_IP = 347, - TOK_VARIABLE_GLOBAL = 348, - TOK_VARIABLE_TX = 349, - TOK_VARIABLE_SESSION = 350, - TOK_VARIABLE_USER = 351, - TOK_RUN_TIME_VAR_ENV = 352, - TOK_RUN_TIME_VAR_XML = 353, - TOK_ACTION_SETVAR = 354, - TOK_SETVAR_OPERATION_EQUALS = 355, - TOK_SETVAR_OPERATION_EQUALS_PLUS = 356, - TOK_SETVAR_OPERATION_EQUALS_MINUS = 357, - TOK_NOT = 358, - TOK_OPERATOR_BEGINS_WITH = 359, - TOK_OPERATOR_CONTAINS = 360, - TOK_OPERATOR_CONTAINS_WORD = 361, - TOK_OPERATOR_DETECT_SQLI = 362, - TOK_OPERATOR_DETECT_XSS = 363, - TOK_OPERATOR_ENDS_WITH = 364, - TOK_OPERATOR_EQ = 365, - TOK_OPERATOR_FUZZY_HASH = 366, - TOK_OPERATOR_GEOLOOKUP = 367, - TOK_OPERATOR_GE = 368, - TOK_OPERATOR_GSB_LOOKUP = 369, - TOK_OPERATOR_GT = 370, - TOK_OPERATOR_INSPECT_FILE = 371, - TOK_OPERATOR_IP_MATCH_FROM_FILE = 372, - TOK_OPERATOR_IP_MATCH = 373, - TOK_OPERATOR_LE = 374, - TOK_OPERATOR_LT = 375, - TOK_OPERATOR_PM_FROM_FILE = 376, - TOK_OPERATOR_PM = 377, - TOK_OPERATOR_RBL = 378, - TOK_OPERATOR_RSUB = 379, - TOK_OPERATOR_RX_CONTENT_ONLY = 380, - TOK_OPERATOR_RX = 381, - TOK_OPERATOR_STR_EQ = 382, - TOK_OPERATOR_STR_MATCH = 383, - TOK_OPERATOR_UNCONDITIONAL_MATCH = 384, - TOK_OPERATOR_VALIDATE_BYTE_RANGE = 385, - TOK_OPERATOR_VALIDATE_DTD = 386, - TOK_OPERATOR_VALIDATE_HASH = 387, - TOK_OPERATOR_VALIDATE_SCHEMA = 388, - TOK_OPERATOR_VALIDATE_URL_ENCODING = 389, - TOK_OPERATOR_VALIDATE_UTF8_ENCODING = 390, - TOK_OPERATOR_VERIFY_CC = 391, - TOK_OPERATOR_VERIFY_CPF = 392, - TOK_OPERATOR_VERIFY_SSN = 393, - TOK_OPERATOR_WITHIN = 394, - TOK_CONFIG_DIR_AUDIT_LOG_FMT = 395, - TOK_JSON = 396, - TOK_NATIVE = 397, - TOK_ACTION_CTL_RULE_ENGINE = 398, - TOK_ACTION_ACCURACY = 399, - TOK_ACTION_ALLOW = 400, - TOK_ACTION_APPEND = 401, - TOK_ACTION_AUDIT_LOG = 402, - TOK_ACTION_BLOCK = 403, - TOK_ACTION_CAPTURE = 404, - TOK_ACTION_CHAIN = 405, - TOK_ACTION_CTL_AUDIT_ENGINE = 406, - TOK_ACTION_CTL_AUDIT_LOG_PARTS = 407, - TOK_ACTION_CTL_BDY_JSON = 408, - TOK_ACTION_CTL_BDY_XML = 409, - TOK_ACTION_CTL_BDY_URLENCODED = 410, - TOK_ACTION_CTL_FORCE_REQ_BODY_VAR = 411, - TOK_ACTION_CTL_REQUEST_BODY_ACCESS = 412, - TOK_ACTION_CTL_RULE_REMOVE_BY_ID = 413, - TOK_ACTION_CTL_RULE_REMOVE_BY_TAG = 414, - TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID = 415, - TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG = 416, - TOK_ACTION_DENY = 417, - TOK_ACTION_DEPRECATE_VAR = 418, - TOK_ACTION_DROP = 419, - TOK_ACTION_EXEC = 420, - TOK_ACTION_EXPIRE_VAR = 421, - TOK_ACTION_ID = 422, - TOK_ACTION_INITCOL = 423, - TOK_ACTION_LOG = 424, - TOK_ACTION_LOG_DATA = 425, - TOK_ACTION_MATURITY = 426, - TOK_ACTION_MSG = 427, - TOK_ACTION_MULTI_MATCH = 428, - TOK_ACTION_NO_AUDIT_LOG = 429, - TOK_ACTION_NO_LOG = 430, - TOK_ACTION_PASS = 431, - TOK_ACTION_PAUSE = 432, - TOK_ACTION_PHASE = 433, - TOK_ACTION_PREPEND = 434, - TOK_ACTION_PROXY = 435, - TOK_ACTION_REDIRECT = 436, - TOK_ACTION_REV = 437, - TOK_ACTION_SANITISE_ARG = 438, - TOK_ACTION_SANITISE_MATCHED = 439, - TOK_ACTION_SANITISE_MATCHED_BYTES = 440, - TOK_ACTION_SANITISE_REQUEST_HEADER = 441, - TOK_ACTION_SANITISE_RESPONSE_HEADER = 442, - TOK_ACTION_SETENV = 443, - TOK_ACTION_SETRSC = 444, - TOK_ACTION_SETSID = 445, - TOK_ACTION_SETUID = 446, - TOK_ACTION_SEVERITY = 447, - TOK_ACTION_SKIP = 448, - TOK_ACTION_SKIP_AFTER = 449, - TOK_ACTION_STATUS = 450, - TOK_ACTION_TAG = 451, - TOK_ACTION_TRANSFORMATION_BASE_64_ENCODE = 452, - TOK_ACTION_TRANSFORMATION_BASE_64_DECODE = 453, - TOK_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT = 454, - TOK_ACTION_TRANSFORMATION_CMD_LINE = 455, - TOK_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE = 456, - TOK_ACTION_TRANSFORMATION_CSS_DECODE = 457, - TOK_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE = 458, - TOK_ACTION_TRANSFORMATION_HEX_ENCODE = 459, - TOK_ACTION_TRANSFORMATION_HEX_DECODE = 460, - TOK_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE = 461, - TOK_ACTION_TRANSFORMATION_JS_DECODE = 462, - TOK_ACTION_TRANSFORMATION_LENGTH = 463, - TOK_ACTION_TRANSFORMATION_LOWERCASE = 464, - TOK_ACTION_TRANSFORMATION_MD5 = 465, - TOK_ACTION_TRANSFORMATION_NONE = 466, - TOK_ACTION_TRANSFORMATION_NORMALISE_PATH = 467, - TOK_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN = 468, - TOK_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT = 469, - TOK_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT = 470, - TOK_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT = 471, - TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS = 472, - TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR = 473, - TOK_ACTION_TRANSFORMATION_REMOVE_NULLS = 474, - TOK_ACTION_TRANSFORMATION_REMOVE_WHITESPACE = 475, - TOK_ACTION_TRANSFORMATION_REPLACE_COMMENTS = 476, - TOK_ACTION_TRANSFORMATION_REPLACE_NULLS = 477, - TOK_ACTION_TRANSFORMATION_SHA1 = 478, - TOK_ACTION_TRANSFORMATION_SQL_HEX_DECODE = 479, - TOK_ACTION_TRANSFORMATION_TRIM = 480, - TOK_ACTION_TRANSFORMATION_TRIM_LEFT = 481, - TOK_ACTION_TRANSFORMATION_TRIM_RIGHT = 482, - TOK_ACTION_TRANSFORMATION_UPPERCASE = 483, - TOK_ACTION_TRANSFORMATION_URL_ENCODE = 484, - TOK_ACTION_TRANSFORMATION_URL_DECODE = 485, - TOK_ACTION_TRANSFORMATION_URL_DECODE_UNI = 486, - TOK_ACTION_TRANSFORMATION_UTF8_TO_UNICODE = 487, - TOK_ACTION_VER = 488, - TOK_ACTION_XMLNS = 489, - TOK_CONFIG_COMPONENT_SIG = 490, - TOK_CONFIG_CONN_ENGINE = 491, - TOK_CONFIG_SEC_ARGUMENT_SEPARATOR = 492, - TOK_CONFIG_SEC_WEB_APP_ID = 493, - TOK_CONFIG_SEC_SERVER_SIG = 494, - TOK_CONFIG_DIR_AUDIT_DIR = 495, - TOK_CONFIG_DIR_AUDIT_DIR_MOD = 496, - TOK_CONFIG_DIR_AUDIT_ENG = 497, - TOK_CONFIG_DIR_AUDIT_FLE_MOD = 498, - TOK_CONFIG_DIR_AUDIT_LOG = 499, - TOK_CONFIG_DIR_AUDIT_LOG2 = 500, - TOK_CONFIG_DIR_AUDIT_LOG_P = 501, - TOK_CONFIG_DIR_AUDIT_STS = 502, - TOK_CONFIG_DIR_AUDIT_TPE = 503, - TOK_CONFIG_DIR_DEBUG_LOG = 504, - TOK_CONFIG_DIR_DEBUG_LVL = 505, - TOK_CONFIG_SEC_CACHE_TRANSFORMATIONS = 506, - TOK_CONFIG_SEC_DISABLE_BACKEND_COMPRESS = 507, - TOK_CONFIG_SEC_HASH_ENGINE = 508, - TOK_CONFIG_SEC_HASH_KEY = 509, - TOK_CONFIG_SEC_HASH_PARAM = 510, - TOK_CONFIG_SEC_HASH_METHOD_RX = 511, - TOK_CONFIG_SEC_HASH_METHOD_PM = 512, - TOK_CONFIG_SEC_CHROOT_DIR = 513, - TOK_CONFIG_DIR_GEO_DB = 514, - TOK_CONFIG_DIR_GSB_DB = 515, - TOK_CONFIG_SEC_GUARDIAN_LOG = 516, - TOK_CONFIG_DIR_PCRE_MATCH_LIMIT = 517, - TOK_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION = 518, - TOK_CONFIG_SEC_CONN_R_STATE_LIMIT = 519, - TOK_CONFIG_SEC_CONN_W_STATE_LIMIT = 520, - TOK_CONFIG_SEC_SENSOR_ID = 521, - TOK_CONFIG_DIR_REQ_BODY = 522, - TOK_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT = 523, - TOK_CONFIG_DIR_REQ_BODY_LIMIT = 524, - TOK_CONFIG_DIR_REQ_BODY_LIMIT_ACTION = 525, - TOK_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT = 526, - TOK_CONFIG_DIR_RES_BODY = 527, - TOK_CONFIG_DIR_RES_BODY_LIMIT = 528, - TOK_CONFIG_DIR_RES_BODY_LIMIT_ACTION = 529, - TOK_CONFIG_SEC_RULE_INHERITANCE = 530, - TOK_CONFIG_SEC_RULE_PERF_TIME = 531, - TOK_CONFIG_DIR_RULE_ENG = 532, - TOK_CONFIG_DIR_SEC_ACTION = 533, - TOK_CONFIG_DIR_SEC_DEFAULT_ACTION = 534, - TOK_CONFIG_DIR_SEC_MARKER = 535, - TOK_CONFIG_DIR_UNICODE_MAP_FILE = 536, - TOK_CONFIG_DIR_UNICODE_CODE_PAGE = 537, - TOK_CONFIG_SEC_COLLECTION_TIMEOUT = 538, - TOK_CONFIG_SEC_HTTP_BLKEY = 539, - TOK_CONFIG_SEC_INTERCEPT_ON_ERROR = 540, - TOK_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION = 541, - TOK_CONFIG_SEC_RULE_REMOVE_BY_ID = 542, - TOK_CONFIG_SEC_RULE_REMOVE_BY_MSG = 543, - TOK_CONFIG_SEC_RULE_REMOVE_BY_TAG = 544, - TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG = 545, - TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG = 546, - TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID = 547, - TOK_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID = 548, - TOK_CONFIG_UPDLOAD_KEEP_FILES = 549, - TOK_CONFIG_UPDLOAD_SAVE_TMP_FILES = 550, - TOK_CONFIG_UPLOAD_DIR = 551, - TOK_CONFIG_UPLOAD_FILE_LIMIT = 552, - TOK_CONFIG_UPLOAD_FILE_MODE = 553, - TOK_CONFIG_VALUE_ABORT = 554, - TOK_CONFIG_VALUE_DETC = 555, - TOK_CONFIG_VALUE_HTTPS = 556, - TOK_CONFIG_VALUE_OFF = 557, - TOK_CONFIG_VALUE_ON = 558, - TOK_CONFIG_VALUE_PARALLEL = 559, - TOK_CONFIG_VALUE_PROCESS_PARTIAL = 560, - TOK_CONFIG_VALUE_REJECT = 561, - TOK_CONFIG_VALUE_RELEVANT_ONLY = 562, - TOK_CONFIG_VALUE_SERIAL = 563, - TOK_CONFIG_VALUE_WARN = 564, - TOK_CONFIG_XML_EXTERNAL_ENTITY = 565, - TOK_CONGIG_DIR_RESPONSE_BODY_MP = 566, - TOK_CONGIG_DIR_SEC_ARG_SEP = 567, - TOK_CONGIG_DIR_SEC_COOKIE_FORMAT = 568, - TOK_CONFIG_SEC_COOKIEV0_SEPARATOR = 569, - TOK_CONGIG_DIR_SEC_DATA_DIR = 570, - TOK_CONGIG_DIR_SEC_STATUS_ENGINE = 571, - TOK_CONFIG_SEC_STREAM_IN_BODY_INSPECTION = 572, - TOK_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION = 573, - TOK_CONGIG_DIR_SEC_TMP_DIR = 574, - TOK_DIRECTIVE = 575, - TOK_DIRECTIVE_SECRULESCRIPT = 576, - TOK_FREE_TEXT_QUOTE_MACRO_EXPANSION = 577, - TOK_QUOTATION_MARK = 578, - TOK_RUN_TIME_VAR_BLD = 579, - TOK_RUN_TIME_VAR_DUR = 580, - TOK_RUN_TIME_VAR_HSV = 581, - TOK_RUN_TIME_VAR_REMOTE_USER = 582, - TOK_RUN_TIME_VAR_TIME = 583, - TOK_RUN_TIME_VAR_TIME_DAY = 584, - TOK_RUN_TIME_VAR_TIME_EPOCH = 585, - TOK_RUN_TIME_VAR_TIME_HOUR = 586, - TOK_RUN_TIME_VAR_TIME_MIN = 587, - TOK_RUN_TIME_VAR_TIME_MON = 588, - TOK_RUN_TIME_VAR_TIME_SEC = 589, - TOK_RUN_TIME_VAR_TIME_WDAY = 590, - TOK_RUN_TIME_VAR_TIME_YEAR = 591, - TOK_VARIABLE = 592, - TOK_DICT_ELEMENT = 593, - TOK_DICT_ELEMENT_REGEXP = 594 - }; - }; - - /// (External) token type, as returned by yylex. - typedef token::yytokentype token_type; - - /// Symbol type: an internal symbol number. - typedef int symbol_number_type; - - /// The symbol type number to denote an empty symbol. - enum { empty_symbol = -2 }; - - /// Internal symbol number for tokens (subsumed by symbol_number_type). - typedef unsigned short token_number_type; - - /// A complete symbol. - /// - /// Expects its Base type to provide access to the symbol type - /// via type_get (). - /// - /// Provide access to semantic value and location. - template - struct basic_symbol : Base - { - /// Alias to Base. - typedef Base super_type; - - /// Default constructor. - basic_symbol (); - - /// Move or copy constructor. - basic_symbol (YY_RVREF (basic_symbol) other); - - - /// Constructor for valueless symbols, and symbols from each type. - basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l); - basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l); - basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l); - basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l); - basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l); - basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l); - basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr > > ) v, YY_RVREF (location_type) l); - basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr > > ) v, YY_RVREF (location_type) l); - - - /// Destroy the symbol. - ~basic_symbol (); - - /// Destroy contents, and record that is empty. - void clear (); - - /// Whether empty. - bool empty () const; - - /// Destructive move, \a s is emptied into this. - void move (basic_symbol& s); - - /// The semantic value. - semantic_type value; - - /// The location. - location_type location; - - private: -#if defined __cplusplus && __cplusplus < 201103L - /// Assignment operator. - basic_symbol& operator= (const basic_symbol& other); -#endif - }; - - /// Type access provider for token (enum) based symbols. - struct by_type - { - /// Default constructor. - by_type (); - - /// Copy constructor. - by_type (const by_type& other); - - /// The symbol type as needed by the constructor. - typedef token_type kind_type; - - /// Constructor from (external) token numbers. - by_type (kind_type t); - - /// Record that this symbol is empty. - void clear (); - - /// Steal the symbol type from \a that. - void move (by_type& that); - - /// The (internal) type number (corresponding to \a type). - /// \a empty when empty. - symbol_number_type type_get () const; - - /// The token. - token_type token () const; - - /// The symbol type. - /// \a empty_symbol when empty. - /// An int, not token_number_type, to be able to store empty_symbol. - int type; - }; - - /// "External" symbols: returned by the scanner. - typedef basic_symbol symbol_type; - - /// Build a parser object. - seclang_parser (modsecurity::Parser::Driver& driver_yyarg); - virtual ~seclang_parser (); - - /// Parse. An alias for parse (). - /// \returns 0 iff parsing succeeded. - int operator() (); - - /// Parse. - /// \returns 0 iff parsing succeeded. - virtual int parse (); - -#if YYDEBUG - /// The current debugging stream. - std::ostream& debug_stream () const YY_ATTRIBUTE_PURE; - /// Set the current debugging stream. - void set_debug_stream (std::ostream &); - - /// Type for debugging levels. - typedef int debug_level_type; - /// The current debugging level. - debug_level_type debug_level () const YY_ATTRIBUTE_PURE; - /// Set the current debugging level. - void set_debug_level (debug_level_type l); -#endif - - /// Report a syntax error. - /// \param loc where the syntax error is found. - /// \param msg a description of the syntax error. - virtual void error (const location_type& loc, const std::string& msg); - - /// Report a syntax error. - void error (const syntax_error& err); - - // Symbol constructors declarations. - static - symbol_type - make_END (YY_COPY (location_type) l); - - static - symbol_type - make_COMMA (YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_CONTENT_INJECTION (YY_COPY (location_type) l); - - static - symbol_type - make_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR (YY_COPY (location_type) l); - - static - symbol_type - make_PIPE (YY_COPY (location_type) l); - - static - symbol_type - make_NEW_LINE (YY_COPY (location_type) l); - - static - symbol_type - make_VAR_COUNT (YY_COPY (location_type) l); - - static - symbol_type - make_VAR_EXCLUSION (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_ARGS (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_ARGS_POST (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_ARGS_GET (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_FILES_SIZES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_FILES_NAMES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_FILES_TMP_CONTENT (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_FILENAME (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_NAME (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MATCHED_VARS_NAMES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MATCHED_VARS (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_FILES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_COOKIES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_HEADERS (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_RESPONSE_HEADERS (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_GEO (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_COOKIES_NAMES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_ARGS_COMBINED_SIZE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_ARGS_GET_NAMES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_RULE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_ARGS_NAMES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_ARGS_POST_NAMES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_AUTH_TYPE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_FILES_COMBINED_SIZE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_FILES_TMP_NAMES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_FULL_REQUEST (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_FULL_REQUEST_LENGTH (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_INBOUND_DATA_ERROR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MATCHED_VAR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MATCHED_VAR_NAME (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_BOUNDARY_QUOTED (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_CRLF_LF_LINES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_DATA_AFTER (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_DATA_BEFORE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_HEADER_FOLDING (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_INVALID_PART (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_INVALID_QUOTING (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_LF_LINE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_MISSING_SEMICOLON (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_SEMICOLON_MISSING (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_STRICT_ERROR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_OUTBOUND_DATA_ERROR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_PATH_INFO (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_QUERY_STRING (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REMOTE_ADDR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REMOTE_HOST (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REMOTE_PORT (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQBODY_ERROR_MSG (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQBODY_ERROR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQBODY_PROCESSOR_ERROR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQBODY_PROCESSOR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_BASENAME (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_BODY_LENGTH (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_BODY (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_FILE_NAME (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_HEADERS_NAMES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_LINE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_METHOD (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_PROTOCOL (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_URI_RAW (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_REQUEST_URI (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_RESOURCE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_RESPONSE_BODY (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_RESPONSE_CONTENT_LENGTH (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_RESPONSE_CONTENT_TYPE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_RESPONSE_HEADERS_NAMES (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_RESPONSE_PROTOCOL (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_RESPONSE_STATUS (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_SERVER_ADDR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_SERVER_NAME (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_SERVER_PORT (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_SESSION_ID (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_UNIQUE_ID (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_URL_ENCODED_ERROR (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_USER_ID (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_WEB_APP_ID (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_STATUS (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_STATUS_LINE (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_IP (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_GLOBAL (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_TX (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_SESSION (YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE_USER (YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_ENV (YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_XML (YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SETVAR (YY_COPY (location_type) l); - - static - symbol_type - make_SETVAR_OPERATION_EQUALS (YY_COPY (location_type) l); - - static - symbol_type - make_SETVAR_OPERATION_EQUALS_PLUS (YY_COPY (location_type) l); - - static - symbol_type - make_SETVAR_OPERATION_EQUALS_MINUS (YY_COPY (location_type) l); - - static - symbol_type - make_NOT (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_BEGINS_WITH (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_CONTAINS (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_CONTAINS_WORD (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_DETECT_SQLI (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_DETECT_XSS (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_ENDS_WITH (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_EQ (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_FUZZY_HASH (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_GEOLOOKUP (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_GE (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_GSB_LOOKUP (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_GT (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_INSPECT_FILE (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_IP_MATCH_FROM_FILE (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_IP_MATCH (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_LE (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_LT (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_PM_FROM_FILE (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_PM (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_RBL (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_RSUB (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_RX_CONTENT_ONLY (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_RX (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_STR_EQ (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_STR_MATCH (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_UNCONDITIONAL_MATCH (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_VALIDATE_BYTE_RANGE (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_VALIDATE_DTD (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_VALIDATE_HASH (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_VALIDATE_SCHEMA (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_VALIDATE_URL_ENCODING (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_VALIDATE_UTF8_ENCODING (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_VERIFY_CC (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_VERIFY_CPF (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_VERIFY_SSN (YY_COPY (location_type) l); - - static - symbol_type - make_OPERATOR_WITHIN (YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_LOG_FMT (YY_COPY (location_type) l); - - static - symbol_type - make_JSON (YY_COPY (location_type) l); - - static - symbol_type - make_NATIVE (YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_RULE_ENGINE (YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_ACCURACY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_ALLOW (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_APPEND (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_BLOCK (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CAPTURE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CHAIN (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_AUDIT_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_AUDIT_LOG_PARTS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_BDY_JSON (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_BDY_XML (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_BDY_URLENCODED (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_FORCE_REQ_BODY_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_REQUEST_BODY_ACCESS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_RULE_REMOVE_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_RULE_REMOVE_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_DENY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_DEPRECATE_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_DROP (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_EXEC (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_EXPIRE_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_INITCOL (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_LOG_DATA (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_MATURITY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_MULTI_MATCH (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_NO_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_NO_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_PASS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_PAUSE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_PHASE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_PREPEND (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_PROXY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_REDIRECT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_REV (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SANITISE_ARG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SANITISE_MATCHED (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SANITISE_MATCHED_BYTES (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SANITISE_REQUEST_HEADER (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SANITISE_RESPONSE_HEADER (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SETENV (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SETRSC (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SETSID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SETUID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SEVERITY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SKIP (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_SKIP_AFTER (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_STATUS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_BASE_64_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_BASE_64_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_CMD_LINE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_CSS_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_HEX_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_HEX_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_JS_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_LENGTH (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_LOWERCASE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_MD5 (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_NONE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_NORMALISE_PATH (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_REMOVE_COMMENTS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_REMOVE_NULLS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_REMOVE_WHITESPACE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_REPLACE_COMMENTS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_REPLACE_NULLS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_SHA1 (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_SQL_HEX_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_TRIM (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_TRIM_LEFT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_TRIM_RIGHT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_UPPERCASE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_URL_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_URL_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_URL_DECODE_UNI (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_TRANSFORMATION_UTF8_TO_UNICODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_VER (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_ACTION_XMLNS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_COMPONENT_SIG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_CONN_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_ARGUMENT_SEPARATOR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_WEB_APP_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_SERVER_SIG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_DIR_MOD (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_ENG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_FLE_MOD (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_LOG2 (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_LOG_P (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_STS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_AUDIT_TPE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_DEBUG_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_DEBUG_LVL (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_CACHE_TRANSFORMATIONS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_DISABLE_BACKEND_COMPRESS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_HASH_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_HASH_KEY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_HASH_PARAM (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_HASH_METHOD_RX (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_HASH_METHOD_PM (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_CHROOT_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_GEO_DB (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_GSB_DB (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_GUARDIAN_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_PCRE_MATCH_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_CONN_R_STATE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_CONN_W_STATE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_SENSOR_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_REQ_BODY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_REQ_BODY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_REQ_BODY_LIMIT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_RES_BODY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_RES_BODY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_RES_BODY_LIMIT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_RULE_INHERITANCE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_RULE_PERF_TIME (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_RULE_ENG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_SEC_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_SEC_DEFAULT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_SEC_MARKER (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_UNICODE_MAP_FILE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_DIR_UNICODE_CODE_PAGE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_COLLECTION_TIMEOUT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_HTTP_BLKEY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_INTERCEPT_ON_ERROR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_RULE_REMOVE_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_RULE_REMOVE_BY_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_RULE_REMOVE_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_UPDLOAD_KEEP_FILES (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_UPDLOAD_SAVE_TMP_FILES (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_UPLOAD_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_UPLOAD_FILE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_UPLOAD_FILE_MODE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_ABORT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_DETC (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_HTTPS (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_OFF (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_ON (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_PARALLEL (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_PROCESS_PARTIAL (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_REJECT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_RELEVANT_ONLY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_SERIAL (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_VALUE_WARN (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_XML_EXTERNAL_ENTITY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONGIG_DIR_RESPONSE_BODY_MP (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONGIG_DIR_SEC_ARG_SEP (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONGIG_DIR_SEC_COOKIE_FORMAT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_COOKIEV0_SEPARATOR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONGIG_DIR_SEC_DATA_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONGIG_DIR_SEC_STATUS_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_STREAM_IN_BODY_INSPECTION (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_CONGIG_DIR_SEC_TMP_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_DIRECTIVE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_DIRECTIVE_SECRULESCRIPT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_FREE_TEXT_QUOTE_MACRO_EXPANSION (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_QUOTATION_MARK (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_BLD (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_DUR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_HSV (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_REMOTE_USER (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_TIME (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_TIME_DAY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_TIME_EPOCH (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_TIME_HOUR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_TIME_MIN (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_TIME_MON (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_TIME_SEC (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_TIME_WDAY (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_RUN_TIME_VAR_TIME_YEAR (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_VARIABLE (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_DICT_ELEMENT (YY_COPY (std::string) v, YY_COPY (location_type) l); - - static - symbol_type - make_DICT_ELEMENT_REGEXP (YY_COPY (std::string) v, YY_COPY (location_type) l); - - - - private: - /// This class is not copyable. - seclang_parser (const seclang_parser&); - seclang_parser& operator= (const seclang_parser&); - - /// State numbers. - typedef int state_type; - - /// Generate an error message. - /// \param yystate the state where the error occurred. - /// \param yyla the lookahead token. - virtual std::string yysyntax_error_ (state_type yystate, - const symbol_type& yyla) const; - - /// Compute post-reduction state. - /// \param yystate the current state - /// \param yysym the nonterminal to push on the stack - state_type yy_lr_goto_state_ (state_type yystate, int yysym); - - /// Whether the given \c yypact_ value indicates a defaulted state. - /// \param yyvalue the value to check - static bool yy_pact_value_is_default_ (int yyvalue); - - /// Whether the given \c yytable_ value indicates a syntax error. - /// \param yyvalue the value to check - static bool yy_table_value_is_error_ (int yyvalue); - - static const short yypact_ninf_; - static const signed char yytable_ninf_; - - /// Convert a scanner token number \a t to a symbol number. - static token_number_type yytranslate_ (token_type t); - - // Tables. - // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - // STATE-NUM. - static const short yypact_[]; - - // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - // Performed when YYTABLE does not specify something else to do. Zero - // means the default is an error. - static const unsigned short yydefact_[]; - - // YYPGOTO[NTERM-NUM]. - static const short yypgoto_[]; - - // YYDEFGOTO[NTERM-NUM]. - static const short yydefgoto_[]; - - // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - // positive, shift that token. If negative, reduce the rule whose - // number is the opposite. If YYTABLE_NINF, syntax error. - static const unsigned short yytable_[]; - - static const short yycheck_[]; - - // YYSTOS[STATE-NUM] -- The (internal number of the) accessing - // symbol of state STATE-NUM. - static const unsigned short yystos_[]; - - // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. - static const unsigned short yyr1_[]; - - // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. - static const unsigned char yyr2_[]; - - - /// Convert the symbol name \a n to a form suitable for a diagnostic. - static std::string yytnamerr_ (const char *n); - - - /// For a symbol, its name in clear. - static const char* const yytname_[]; -#if YYDEBUG - // YYRLINE[YYN] -- Source line where rule number YYN was defined. - static const unsigned short yyrline_[]; - /// Report on the debug stream that the rule \a r is going to be reduced. - virtual void yy_reduce_print_ (int r); - /// Print the state stack on the debug stream. - virtual void yystack_print_ (); - - // Debugging. - int yydebug_; - std::ostream* yycdebug_; - - /// \brief Display a symbol type, value and location. - /// \param yyo The output stream. - /// \param yysym The symbol. - template - void yy_print_ (std::ostream& yyo, const basic_symbol& yysym) const; -#endif - - /// \brief Reclaim the memory associated to a symbol. - /// \param yymsg Why this token is reclaimed. - /// If null, print nothing. - /// \param yysym The symbol. - template - void yy_destroy_ (const char* yymsg, basic_symbol& yysym) const; - - private: - /// Type access provider for state based symbols. - struct by_state - { - /// Default constructor. - by_state (); - - /// The symbol type as needed by the constructor. - typedef state_type kind_type; - - /// Constructor. - by_state (kind_type s); - - /// Copy constructor. - by_state (const by_state& other); - - /// Record that this symbol is empty. - void clear (); - - /// Steal the symbol type from \a that. - void move (by_state& that); - - /// The (internal) type number (corresponding to \a state). - /// \a empty_symbol when empty. - symbol_number_type type_get () const; - - /// The state number used to denote an empty symbol. - enum { empty_state = -1 }; - - /// The state. - /// \a empty when empty. - state_type state; - }; - - /// "Internal" symbol: element of the stack. - struct stack_symbol_type : basic_symbol - { - /// Superclass. - typedef basic_symbol super_type; - /// Construct an empty symbol. - stack_symbol_type (); - /// Move or copy construction. - stack_symbol_type (YY_RVREF (stack_symbol_type) that); - /// Steal the contents from \a sym to build this. - stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym); -#if defined __cplusplus && __cplusplus < 201103L - /// Assignment, needed by push_back by some old implementations. - /// Moves the contents of that. - stack_symbol_type& operator= (stack_symbol_type& that); -#endif - }; - - /// Stack type. - typedef stack stack_type; - - /// The stack. - stack_type yystack_; - - /// Push a new state on the stack. - /// \param m a debug message to display - /// if null, no trace is output. - /// \param sym the symbol - /// \warning the contents of \a s.value is stolen. - void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym); - - /// Push a new look ahead token on the state on the stack. - /// \param m a debug message to display - /// if null, no trace is output. - /// \param s the state - /// \param sym the symbol (for its value and location). - /// \warning the contents of \a sym.value is stolen. - void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym); - - /// Pop \a n symbols from the stack. - void yypop_ (int n = 1); - - /// Constants. - enum - { - yyeof_ = 0, - yylast_ = 3295, ///< Last index in yytable_. - yynnts_ = 16, ///< Number of nonterminal symbols. - yyfinal_ = 336, ///< Termination state number. - yyterror_ = 1, - yyerrcode_ = 256, - yyntokens_ = 340 ///< Number of tokens. - }; - - - // User arguments. - modsecurity::Parser::Driver& driver; - }; - - // Symbol number corresponding to token number t. - inline - seclang_parser::token_number_type - seclang_parser::yytranslate_ (token_type t) - { - static - const token_number_type - translate_table[] = - { - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339 - }; - const unsigned user_token_number_max_ = 594; - const token_number_type undef_token_ = 2; - - if (static_cast (t) <= yyeof_) - return yyeof_; - else if (static_cast (t) <= user_token_number_max_) - return translate_table[t]; - else - return undef_token_; - } - - inline - seclang_parser::syntax_error::syntax_error (const location_type& l, const std::string& m) - : std::runtime_error (m) - , location (l) - {} - - // basic_symbol. - template - seclang_parser::basic_symbol::basic_symbol () - : value () - , location () - {} - - template - seclang_parser::basic_symbol::basic_symbol (YY_RVREF (basic_symbol) other) - : Base (YY_MOVE (other)) - , value () - , location (YY_MOVE (other.location)) - { - switch (other.type_get ()) - { - case 144: // "Accuracy" - case 145: // "Allow" - case 146: // "Append" - case 147: // "AuditLog" - case 148: // "Block" - case 149: // "Capture" - case 150: // "Chain" - case 151: // "ACTION_CTL_AUDIT_ENGINE" - case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 153: // "ACTION_CTL_BDY_JSON" - case 154: // "ACTION_CTL_BDY_XML" - case 155: // "ACTION_CTL_BDY_URLENCODED" - case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 162: // "Deny" - case 163: // "DeprecateVar" - case 164: // "Drop" - case 165: // "Exec" - case 166: // "ExpireVar" - case 167: // "Id" - case 168: // "InitCol" - case 169: // "Log" - case 170: // "LogData" - case 171: // "Maturity" - case 172: // "Msg" - case 173: // "MultiMatch" - case 174: // "NoAuditLog" - case 175: // "NoLog" - case 176: // "Pass" - case 177: // "Pause" - case 178: // "Phase" - case 179: // "Prepend" - case 180: // "Proxy" - case 181: // "Redirect" - case 182: // "Rev" - case 183: // "SanitiseArg" - case 184: // "SanitiseMatched" - case 185: // "SanitiseMatchedBytes" - case 186: // "SanitiseRequestHeader" - case 187: // "SanitiseResponseHeader" - case 188: // "SetEnv" - case 189: // "SetRsc" - case 190: // "SetSid" - case 191: // "SetUID" - case 192: // "Severity" - case 193: // "Skip" - case 194: // "SkipAfter" - case 195: // "Status" - case 196: // "Tag" - case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case 200: // "ACTION_TRANSFORMATION_CMD_LINE" - case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" - case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 207: // "ACTION_TRANSFORMATION_JS_DECODE" - case 208: // "ACTION_TRANSFORMATION_LENGTH" - case 209: // "ACTION_TRANSFORMATION_LOWERCASE" - case 210: // "ACTION_TRANSFORMATION_MD5" - case 211: // "ACTION_TRANSFORMATION_NONE" - case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 223: // "ACTION_TRANSFORMATION_SHA1" - case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 225: // "ACTION_TRANSFORMATION_TRIM" - case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case 228: // "ACTION_TRANSFORMATION_UPPERCASE" - case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" - case 230: // "ACTION_TRANSFORMATION_URL_DECODE" - case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 233: // "Ver" - case 234: // "xmlns" - case 235: // "CONFIG_COMPONENT_SIG" - case 236: // "CONFIG_CONN_ENGINE" - case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case 238: // "CONFIG_SEC_WEB_APP_ID" - case 239: // "CONFIG_SEC_SERVER_SIG" - case 240: // "CONFIG_DIR_AUDIT_DIR" - case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 242: // "CONFIG_DIR_AUDIT_ENG" - case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 244: // "CONFIG_DIR_AUDIT_LOG" - case 245: // "CONFIG_DIR_AUDIT_LOG2" - case 246: // "CONFIG_DIR_AUDIT_LOG_P" - case 247: // "CONFIG_DIR_AUDIT_STS" - case 248: // "CONFIG_DIR_AUDIT_TPE" - case 249: // "CONFIG_DIR_DEBUG_LOG" - case 250: // "CONFIG_DIR_DEBUG_LVL" - case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case 253: // "CONFIG_SEC_HASH_ENGINE" - case 254: // "CONFIG_SEC_HASH_KEY" - case 255: // "CONFIG_SEC_HASH_PARAM" - case 256: // "CONFIG_SEC_HASH_METHOD_RX" - case 257: // "CONFIG_SEC_HASH_METHOD_PM" - case 258: // "CONFIG_SEC_CHROOT_DIR" - case 259: // "CONFIG_DIR_GEO_DB" - case 260: // "CONFIG_DIR_GSB_DB" - case 261: // "CONFIG_SEC_GUARDIAN_LOG" - case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case 266: // "CONFIG_SEC_SENSOR_ID" - case 267: // "CONFIG_DIR_REQ_BODY" - case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 272: // "CONFIG_DIR_RES_BODY" - case 273: // "CONFIG_DIR_RES_BODY_LIMIT" - case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 275: // "CONFIG_SEC_RULE_INHERITANCE" - case 276: // "CONFIG_SEC_RULE_PERF_TIME" - case 277: // "CONFIG_DIR_RULE_ENG" - case 278: // "CONFIG_DIR_SEC_ACTION" - case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 280: // "CONFIG_DIR_SEC_MARKER" - case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 284: // "CONFIG_SEC_HTTP_BLKEY" - case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case 294: // "CONFIG_UPDLOAD_KEEP_FILES" - case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 296: // "CONFIG_UPLOAD_DIR" - case 297: // "CONFIG_UPLOAD_FILE_LIMIT" - case 298: // "CONFIG_UPLOAD_FILE_MODE" - case 299: // "CONFIG_VALUE_ABORT" - case 300: // "CONFIG_VALUE_DETC" - case 301: // "CONFIG_VALUE_HTTPS" - case 302: // "CONFIG_VALUE_OFF" - case 303: // "CONFIG_VALUE_ON" - case 304: // "CONFIG_VALUE_PARALLEL" - case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 306: // "CONFIG_VALUE_REJECT" - case 307: // "CONFIG_VALUE_RELEVANT_ONLY" - case 308: // "CONFIG_VALUE_SERIAL" - case 309: // "CONFIG_VALUE_WARN" - case 310: // "CONFIG_XML_EXTERNAL_ENTITY" - case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 312: // "CONGIG_DIR_SEC_ARG_SEP" - case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case 315: // "CONGIG_DIR_SEC_DATA_DIR" - case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case 319: // "CONGIG_DIR_SEC_TMP_DIR" - case 320: // "DIRECTIVE" - case 321: // "DIRECTIVE_SECRULESCRIPT" - case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case 323: // "QUOTATION_MARK" - case 324: // "RUN_TIME_VAR_BLD" - case 325: // "RUN_TIME_VAR_DUR" - case 326: // "RUN_TIME_VAR_HSV" - case 327: // "RUN_TIME_VAR_REMOTE_USER" - case 328: // "RUN_TIME_VAR_TIME" - case 329: // "RUN_TIME_VAR_TIME_DAY" - case 330: // "RUN_TIME_VAR_TIME_EPOCH" - case 331: // "RUN_TIME_VAR_TIME_HOUR" - case 332: // "RUN_TIME_VAR_TIME_MIN" - case 333: // "RUN_TIME_VAR_TIME_MON" - case 334: // "RUN_TIME_VAR_TIME_SEC" - case 335: // "RUN_TIME_VAR_TIME_WDAY" - case 336: // "RUN_TIME_VAR_TIME_YEAR" - case 337: // "VARIABLE" - case 338: // "Dictionary element" - case 339: // "Dictionary element, selected by regexp" - value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value)); - break; - - case 346: // op - case 347: // op_before_init - value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (other.value)); - break; - - case 355: // run_time_string - value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (other.value)); - break; - - case 352: // var - value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (other.value)); - break; - - case 353: // act - case 354: // setvar_action - value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (other.value)); - break; - - case 349: // variables - case 350: // variables_pre_process - case 351: // variables_may_be_quoted - value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (other.value)); - break; - - case 344: // actions - case 345: // actions_may_quoted - value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (other.value)); - break; - - default: - break; - } - - } - - - // Implementation of basic_symbol constructor for each type. - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l) - : Base (t) - , location (YY_MOVE (l)) - {} - - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l) - : Base (t) - , value (YY_MOVE (v)) - , location (YY_MOVE (l)) - {} - - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l) - : Base (t) - , value (YY_MOVE (v)) - , location (YY_MOVE (l)) - {} - - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l) - : Base (t) - , value (YY_MOVE (v)) - , location (YY_MOVE (l)) - {} - - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l) - : Base (t) - , value (YY_MOVE (v)) - , location (YY_MOVE (l)) - {} - - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr) v, YY_RVREF (location_type) l) - : Base (t) - , value (YY_MOVE (v)) - , location (YY_MOVE (l)) - {} - - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr > > ) v, YY_RVREF (location_type) l) - : Base (t) - , value (YY_MOVE (v)) - , location (YY_MOVE (l)) - {} - - template - seclang_parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::unique_ptr > > ) v, YY_RVREF (location_type) l) - : Base (t) - , value (YY_MOVE (v)) - , location (YY_MOVE (l)) - {} - - - - template - seclang_parser::basic_symbol::~basic_symbol () - { - clear (); - } - - template - void - seclang_parser::basic_symbol::clear () - { - // User destructor. - symbol_number_type yytype = this->type_get (); - basic_symbol& yysym = *this; - (void) yysym; - switch (yytype) - { - default: - break; - } - - // Type destructor. - switch (yytype) - { - case 144: // "Accuracy" - case 145: // "Allow" - case 146: // "Append" - case 147: // "AuditLog" - case 148: // "Block" - case 149: // "Capture" - case 150: // "Chain" - case 151: // "ACTION_CTL_AUDIT_ENGINE" - case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 153: // "ACTION_CTL_BDY_JSON" - case 154: // "ACTION_CTL_BDY_XML" - case 155: // "ACTION_CTL_BDY_URLENCODED" - case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 162: // "Deny" - case 163: // "DeprecateVar" - case 164: // "Drop" - case 165: // "Exec" - case 166: // "ExpireVar" - case 167: // "Id" - case 168: // "InitCol" - case 169: // "Log" - case 170: // "LogData" - case 171: // "Maturity" - case 172: // "Msg" - case 173: // "MultiMatch" - case 174: // "NoAuditLog" - case 175: // "NoLog" - case 176: // "Pass" - case 177: // "Pause" - case 178: // "Phase" - case 179: // "Prepend" - case 180: // "Proxy" - case 181: // "Redirect" - case 182: // "Rev" - case 183: // "SanitiseArg" - case 184: // "SanitiseMatched" - case 185: // "SanitiseMatchedBytes" - case 186: // "SanitiseRequestHeader" - case 187: // "SanitiseResponseHeader" - case 188: // "SetEnv" - case 189: // "SetRsc" - case 190: // "SetSid" - case 191: // "SetUID" - case 192: // "Severity" - case 193: // "Skip" - case 194: // "SkipAfter" - case 195: // "Status" - case 196: // "Tag" - case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case 200: // "ACTION_TRANSFORMATION_CMD_LINE" - case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" - case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 207: // "ACTION_TRANSFORMATION_JS_DECODE" - case 208: // "ACTION_TRANSFORMATION_LENGTH" - case 209: // "ACTION_TRANSFORMATION_LOWERCASE" - case 210: // "ACTION_TRANSFORMATION_MD5" - case 211: // "ACTION_TRANSFORMATION_NONE" - case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 223: // "ACTION_TRANSFORMATION_SHA1" - case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 225: // "ACTION_TRANSFORMATION_TRIM" - case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case 228: // "ACTION_TRANSFORMATION_UPPERCASE" - case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" - case 230: // "ACTION_TRANSFORMATION_URL_DECODE" - case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 233: // "Ver" - case 234: // "xmlns" - case 235: // "CONFIG_COMPONENT_SIG" - case 236: // "CONFIG_CONN_ENGINE" - case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case 238: // "CONFIG_SEC_WEB_APP_ID" - case 239: // "CONFIG_SEC_SERVER_SIG" - case 240: // "CONFIG_DIR_AUDIT_DIR" - case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 242: // "CONFIG_DIR_AUDIT_ENG" - case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 244: // "CONFIG_DIR_AUDIT_LOG" - case 245: // "CONFIG_DIR_AUDIT_LOG2" - case 246: // "CONFIG_DIR_AUDIT_LOG_P" - case 247: // "CONFIG_DIR_AUDIT_STS" - case 248: // "CONFIG_DIR_AUDIT_TPE" - case 249: // "CONFIG_DIR_DEBUG_LOG" - case 250: // "CONFIG_DIR_DEBUG_LVL" - case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case 253: // "CONFIG_SEC_HASH_ENGINE" - case 254: // "CONFIG_SEC_HASH_KEY" - case 255: // "CONFIG_SEC_HASH_PARAM" - case 256: // "CONFIG_SEC_HASH_METHOD_RX" - case 257: // "CONFIG_SEC_HASH_METHOD_PM" - case 258: // "CONFIG_SEC_CHROOT_DIR" - case 259: // "CONFIG_DIR_GEO_DB" - case 260: // "CONFIG_DIR_GSB_DB" - case 261: // "CONFIG_SEC_GUARDIAN_LOG" - case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case 266: // "CONFIG_SEC_SENSOR_ID" - case 267: // "CONFIG_DIR_REQ_BODY" - case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 272: // "CONFIG_DIR_RES_BODY" - case 273: // "CONFIG_DIR_RES_BODY_LIMIT" - case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 275: // "CONFIG_SEC_RULE_INHERITANCE" - case 276: // "CONFIG_SEC_RULE_PERF_TIME" - case 277: // "CONFIG_DIR_RULE_ENG" - case 278: // "CONFIG_DIR_SEC_ACTION" - case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 280: // "CONFIG_DIR_SEC_MARKER" - case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 284: // "CONFIG_SEC_HTTP_BLKEY" - case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case 294: // "CONFIG_UPDLOAD_KEEP_FILES" - case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 296: // "CONFIG_UPLOAD_DIR" - case 297: // "CONFIG_UPLOAD_FILE_LIMIT" - case 298: // "CONFIG_UPLOAD_FILE_MODE" - case 299: // "CONFIG_VALUE_ABORT" - case 300: // "CONFIG_VALUE_DETC" - case 301: // "CONFIG_VALUE_HTTPS" - case 302: // "CONFIG_VALUE_OFF" - case 303: // "CONFIG_VALUE_ON" - case 304: // "CONFIG_VALUE_PARALLEL" - case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 306: // "CONFIG_VALUE_REJECT" - case 307: // "CONFIG_VALUE_RELEVANT_ONLY" - case 308: // "CONFIG_VALUE_SERIAL" - case 309: // "CONFIG_VALUE_WARN" - case 310: // "CONFIG_XML_EXTERNAL_ENTITY" - case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 312: // "CONGIG_DIR_SEC_ARG_SEP" - case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case 315: // "CONGIG_DIR_SEC_DATA_DIR" - case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case 319: // "CONGIG_DIR_SEC_TMP_DIR" - case 320: // "DIRECTIVE" - case 321: // "DIRECTIVE_SECRULESCRIPT" - case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case 323: // "QUOTATION_MARK" - case 324: // "RUN_TIME_VAR_BLD" - case 325: // "RUN_TIME_VAR_DUR" - case 326: // "RUN_TIME_VAR_HSV" - case 327: // "RUN_TIME_VAR_REMOTE_USER" - case 328: // "RUN_TIME_VAR_TIME" - case 329: // "RUN_TIME_VAR_TIME_DAY" - case 330: // "RUN_TIME_VAR_TIME_EPOCH" - case 331: // "RUN_TIME_VAR_TIME_HOUR" - case 332: // "RUN_TIME_VAR_TIME_MIN" - case 333: // "RUN_TIME_VAR_TIME_MON" - case 334: // "RUN_TIME_VAR_TIME_SEC" - case 335: // "RUN_TIME_VAR_TIME_WDAY" - case 336: // "RUN_TIME_VAR_TIME_YEAR" - case 337: // "VARIABLE" - case 338: // "Dictionary element" - case 339: // "Dictionary element, selected by regexp" - value.template destroy< std::string > (); - break; - - case 346: // op - case 347: // op_before_init - value.template destroy< std::unique_ptr > (); - break; - - case 355: // run_time_string - value.template destroy< std::unique_ptr > (); - break; - - case 352: // var - value.template destroy< std::unique_ptr > (); - break; - - case 353: // act - case 354: // setvar_action - value.template destroy< std::unique_ptr > (); - break; - - case 349: // variables - case 350: // variables_pre_process - case 351: // variables_may_be_quoted - value.template destroy< std::unique_ptr > > > (); - break; - - case 344: // actions - case 345: // actions_may_quoted - value.template destroy< std::unique_ptr > > > (); - break; - - default: - break; - } - - Base::clear (); - } - - template - bool - seclang_parser::basic_symbol::empty () const - { - return Base::type_get () == empty_symbol; - } - - template - void - seclang_parser::basic_symbol::move (basic_symbol& s) - { - super_type::move (s); - switch (this->type_get ()) - { - case 144: // "Accuracy" - case 145: // "Allow" - case 146: // "Append" - case 147: // "AuditLog" - case 148: // "Block" - case 149: // "Capture" - case 150: // "Chain" - case 151: // "ACTION_CTL_AUDIT_ENGINE" - case 152: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 153: // "ACTION_CTL_BDY_JSON" - case 154: // "ACTION_CTL_BDY_XML" - case 155: // "ACTION_CTL_BDY_URLENCODED" - case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 162: // "Deny" - case 163: // "DeprecateVar" - case 164: // "Drop" - case 165: // "Exec" - case 166: // "ExpireVar" - case 167: // "Id" - case 168: // "InitCol" - case 169: // "Log" - case 170: // "LogData" - case 171: // "Maturity" - case 172: // "Msg" - case 173: // "MultiMatch" - case 174: // "NoAuditLog" - case 175: // "NoLog" - case 176: // "Pass" - case 177: // "Pause" - case 178: // "Phase" - case 179: // "Prepend" - case 180: // "Proxy" - case 181: // "Redirect" - case 182: // "Rev" - case 183: // "SanitiseArg" - case 184: // "SanitiseMatched" - case 185: // "SanitiseMatchedBytes" - case 186: // "SanitiseRequestHeader" - case 187: // "SanitiseResponseHeader" - case 188: // "SetEnv" - case 189: // "SetRsc" - case 190: // "SetSid" - case 191: // "SetUID" - case 192: // "Severity" - case 193: // "Skip" - case 194: // "SkipAfter" - case 195: // "Status" - case 196: // "Tag" - case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case 200: // "ACTION_TRANSFORMATION_CMD_LINE" - case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 202: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 205: // "ACTION_TRANSFORMATION_HEX_DECODE" - case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 207: // "ACTION_TRANSFORMATION_JS_DECODE" - case 208: // "ACTION_TRANSFORMATION_LENGTH" - case 209: // "ACTION_TRANSFORMATION_LOWERCASE" - case 210: // "ACTION_TRANSFORMATION_MD5" - case 211: // "ACTION_TRANSFORMATION_NONE" - case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 223: // "ACTION_TRANSFORMATION_SHA1" - case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 225: // "ACTION_TRANSFORMATION_TRIM" - case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case 228: // "ACTION_TRANSFORMATION_UPPERCASE" - case 229: // "ACTION_TRANSFORMATION_URL_ENCODE" - case 230: // "ACTION_TRANSFORMATION_URL_DECODE" - case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 233: // "Ver" - case 234: // "xmlns" - case 235: // "CONFIG_COMPONENT_SIG" - case 236: // "CONFIG_CONN_ENGINE" - case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case 238: // "CONFIG_SEC_WEB_APP_ID" - case 239: // "CONFIG_SEC_SERVER_SIG" - case 240: // "CONFIG_DIR_AUDIT_DIR" - case 241: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 242: // "CONFIG_DIR_AUDIT_ENG" - case 243: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 244: // "CONFIG_DIR_AUDIT_LOG" - case 245: // "CONFIG_DIR_AUDIT_LOG2" - case 246: // "CONFIG_DIR_AUDIT_LOG_P" - case 247: // "CONFIG_DIR_AUDIT_STS" - case 248: // "CONFIG_DIR_AUDIT_TPE" - case 249: // "CONFIG_DIR_DEBUG_LOG" - case 250: // "CONFIG_DIR_DEBUG_LVL" - case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case 253: // "CONFIG_SEC_HASH_ENGINE" - case 254: // "CONFIG_SEC_HASH_KEY" - case 255: // "CONFIG_SEC_HASH_PARAM" - case 256: // "CONFIG_SEC_HASH_METHOD_RX" - case 257: // "CONFIG_SEC_HASH_METHOD_PM" - case 258: // "CONFIG_SEC_CHROOT_DIR" - case 259: // "CONFIG_DIR_GEO_DB" - case 260: // "CONFIG_DIR_GSB_DB" - case 261: // "CONFIG_SEC_GUARDIAN_LOG" - case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case 266: // "CONFIG_SEC_SENSOR_ID" - case 267: // "CONFIG_DIR_REQ_BODY" - case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 269: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 272: // "CONFIG_DIR_RES_BODY" - case 273: // "CONFIG_DIR_RES_BODY_LIMIT" - case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 275: // "CONFIG_SEC_RULE_INHERITANCE" - case 276: // "CONFIG_SEC_RULE_PERF_TIME" - case 277: // "CONFIG_DIR_RULE_ENG" - case 278: // "CONFIG_DIR_SEC_ACTION" - case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 280: // "CONFIG_DIR_SEC_MARKER" - case 281: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 284: // "CONFIG_SEC_HTTP_BLKEY" - case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case 294: // "CONFIG_UPDLOAD_KEEP_FILES" - case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 296: // "CONFIG_UPLOAD_DIR" - case 297: // "CONFIG_UPLOAD_FILE_LIMIT" - case 298: // "CONFIG_UPLOAD_FILE_MODE" - case 299: // "CONFIG_VALUE_ABORT" - case 300: // "CONFIG_VALUE_DETC" - case 301: // "CONFIG_VALUE_HTTPS" - case 302: // "CONFIG_VALUE_OFF" - case 303: // "CONFIG_VALUE_ON" - case 304: // "CONFIG_VALUE_PARALLEL" - case 305: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 306: // "CONFIG_VALUE_REJECT" - case 307: // "CONFIG_VALUE_RELEVANT_ONLY" - case 308: // "CONFIG_VALUE_SERIAL" - case 309: // "CONFIG_VALUE_WARN" - case 310: // "CONFIG_XML_EXTERNAL_ENTITY" - case 311: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 312: // "CONGIG_DIR_SEC_ARG_SEP" - case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case 315: // "CONGIG_DIR_SEC_DATA_DIR" - case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case 319: // "CONGIG_DIR_SEC_TMP_DIR" - case 320: // "DIRECTIVE" - case 321: // "DIRECTIVE_SECRULESCRIPT" - case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case 323: // "QUOTATION_MARK" - case 324: // "RUN_TIME_VAR_BLD" - case 325: // "RUN_TIME_VAR_DUR" - case 326: // "RUN_TIME_VAR_HSV" - case 327: // "RUN_TIME_VAR_REMOTE_USER" - case 328: // "RUN_TIME_VAR_TIME" - case 329: // "RUN_TIME_VAR_TIME_DAY" - case 330: // "RUN_TIME_VAR_TIME_EPOCH" - case 331: // "RUN_TIME_VAR_TIME_HOUR" - case 332: // "RUN_TIME_VAR_TIME_MIN" - case 333: // "RUN_TIME_VAR_TIME_MON" - case 334: // "RUN_TIME_VAR_TIME_SEC" - case 335: // "RUN_TIME_VAR_TIME_WDAY" - case 336: // "RUN_TIME_VAR_TIME_YEAR" - case 337: // "VARIABLE" - case 338: // "Dictionary element" - case 339: // "Dictionary element, selected by regexp" - value.move< std::string > (YY_MOVE (s.value)); - break; - - case 346: // op - case 347: // op_before_init - value.move< std::unique_ptr > (YY_MOVE (s.value)); - break; - - case 355: // run_time_string - value.move< std::unique_ptr > (YY_MOVE (s.value)); - break; - - case 352: // var - value.move< std::unique_ptr > (YY_MOVE (s.value)); - break; - - case 353: // act - case 354: // setvar_action - value.move< std::unique_ptr > (YY_MOVE (s.value)); - break; - - case 349: // variables - case 350: // variables_pre_process - case 351: // variables_may_be_quoted - value.move< std::unique_ptr > > > (YY_MOVE (s.value)); - break; - - case 344: // actions - case 345: // actions_may_quoted - value.move< std::unique_ptr > > > (YY_MOVE (s.value)); - break; - - default: - break; - } - - location = YY_MOVE (s.location); - } - - // by_type. - inline - seclang_parser::by_type::by_type () - : type (empty_symbol) - {} - - inline - seclang_parser::by_type::by_type (const by_type& other) - : type (other.type) - {} - - inline - seclang_parser::by_type::by_type (token_type t) - : type (yytranslate_ (t)) - {} - - inline - void - seclang_parser::by_type::clear () - { - type = empty_symbol; - } - - inline - void - seclang_parser::by_type::move (by_type& that) - { - type = that.type; - that.clear (); - } - - inline - int - seclang_parser::by_type::type_get () const - { - return type; - } - - inline - seclang_parser::token_type - seclang_parser::by_type::token () const - { - // YYTOKNUM[NUM] -- (External) token number corresponding to the - // (internal) symbol number NUM (which must be that of a token). */ - static - const unsigned short - yytoken_number_[] = - { - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594 - }; - return static_cast (yytoken_number_[type]); - } - - // Implementation of make_symbol for each symbol type. - inline - seclang_parser::symbol_type - seclang_parser::make_END (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_END, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_COMMA (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_COMMA, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_CONTENT_INJECTION (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_CONTENT_INJECTION, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_PIPE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_PIPE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_NEW_LINE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_NEW_LINE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VAR_COUNT (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VAR_COUNT, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VAR_EXCLUSION (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VAR_EXCLUSION, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_ARGS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_POST (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_ARGS_POST, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_GET (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_ARGS_GET, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_SIZES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_FILES_SIZES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_NAMES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_FILES_NAMES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_TMP_CONTENT (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_FILES_TMP_CONTENT, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_FILENAME (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_FILENAME, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_NAME (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_NAME, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MATCHED_VARS_NAMES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MATCHED_VARS_NAMES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MATCHED_VARS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MATCHED_VARS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_FILES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_COOKIES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_COOKIES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_HEADERS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_HEADERS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_HEADERS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_RESPONSE_HEADERS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_GEO (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_GEO, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_COOKIES_NAMES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_COOKIES_NAMES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_COMBINED_SIZE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_ARGS_COMBINED_SIZE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_GET_NAMES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_ARGS_GET_NAMES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RULE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_RULE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_NAMES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_ARGS_NAMES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_ARGS_POST_NAMES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_ARGS_POST_NAMES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_AUTH_TYPE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_AUTH_TYPE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_COMBINED_SIZE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_FILES_COMBINED_SIZE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FILES_TMP_NAMES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_FILES_TMP_NAMES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FULL_REQUEST (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_FULL_REQUEST, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_FULL_REQUEST_LENGTH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_FULL_REQUEST_LENGTH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_INBOUND_DATA_ERROR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_INBOUND_DATA_ERROR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MATCHED_VAR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MATCHED_VAR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MATCHED_VAR_NAME (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MATCHED_VAR_NAME, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_BOUNDARY_QUOTED (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_CRLF_LF_LINES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_CRLF_LF_LINES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_DATA_AFTER (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_DATA_AFTER, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_DATA_BEFORE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_DATA_BEFORE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_HEADER_FOLDING (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_HEADER_FOLDING, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_INVALID_PART (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_PART, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_INVALID_QUOTING (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_QUOTING, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_LF_LINE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_LF_LINE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_MISSING_SEMICOLON (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_SEMICOLON_MISSING (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_STRICT_ERROR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_STRICT_ERROR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_OUTBOUND_DATA_ERROR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_OUTBOUND_DATA_ERROR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_PATH_INFO (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_PATH_INFO, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_QUERY_STRING (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_QUERY_STRING, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REMOTE_ADDR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REMOTE_ADDR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REMOTE_HOST (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REMOTE_HOST, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REMOTE_PORT (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REMOTE_PORT, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_ERROR_MSG (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQBODY_ERROR_MSG, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_ERROR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQBODY_ERROR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_PROCESSOR_ERROR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQBODY_PROCESSOR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_BASENAME (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_BASENAME, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_BODY_LENGTH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_BODY_LENGTH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_BODY (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_BODY, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_FILE_NAME (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_FILE_NAME, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_HEADERS_NAMES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_HEADERS_NAMES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_LINE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_LINE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_METHOD (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_METHOD, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_PROTOCOL (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_PROTOCOL, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_URI_RAW (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_URI_RAW, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_REQUEST_URI (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_REQUEST_URI, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESOURCE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_RESOURCE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_BODY (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_RESPONSE_BODY, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_CONTENT_LENGTH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_RESPONSE_CONTENT_LENGTH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_CONTENT_TYPE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_RESPONSE_CONTENT_TYPE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_HEADERS_NAMES (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_RESPONSE_HEADERS_NAMES, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_PROTOCOL (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_RESPONSE_PROTOCOL, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_RESPONSE_STATUS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_RESPONSE_STATUS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SERVER_ADDR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_SERVER_ADDR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SERVER_NAME (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_SERVER_NAME, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SERVER_PORT (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_SERVER_PORT, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SESSION_ID (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_SESSION_ID, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_UNIQUE_ID (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_UNIQUE_ID, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_URL_ENCODED_ERROR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_URL_ENCODED_ERROR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_USER_ID (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_USER_ID, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_WEB_APP_ID (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_WEB_APP_ID, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_STATUS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_STATUS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_STATUS_LINE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_STATUS_LINE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_IP (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_IP, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_GLOBAL (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_GLOBAL, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_TX (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_TX, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_SESSION (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_SESSION, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE_USER (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE_USER, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_ENV (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_ENV, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_XML (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_XML, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SETVAR (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SETVAR, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_SETVAR_OPERATION_EQUALS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_SETVAR_OPERATION_EQUALS_PLUS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS_PLUS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_SETVAR_OPERATION_EQUALS_MINUS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS_MINUS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_NOT (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_NOT, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_BEGINS_WITH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_BEGINS_WITH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_CONTAINS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_CONTAINS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_CONTAINS_WORD (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_CONTAINS_WORD, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_DETECT_SQLI (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_DETECT_SQLI, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_DETECT_XSS (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_DETECT_XSS, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_ENDS_WITH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_ENDS_WITH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_EQ (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_EQ, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_FUZZY_HASH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_FUZZY_HASH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_GEOLOOKUP (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_GEOLOOKUP, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_GE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_GE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_GSB_LOOKUP (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_GSB_LOOKUP, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_GT (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_GT, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_INSPECT_FILE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_INSPECT_FILE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_IP_MATCH_FROM_FILE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_IP_MATCH_FROM_FILE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_IP_MATCH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_IP_MATCH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_LE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_LE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_LT (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_LT, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_PM_FROM_FILE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_PM_FROM_FILE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_PM (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_PM, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_RBL (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_RBL, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_RSUB (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_RSUB, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_RX_CONTENT_ONLY (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_RX_CONTENT_ONLY, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_RX (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_RX, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_STR_EQ (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_STR_EQ, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_STR_MATCH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_STR_MATCH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_UNCONDITIONAL_MATCH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_UNCONDITIONAL_MATCH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_BYTE_RANGE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_VALIDATE_BYTE_RANGE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_DTD (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_VALIDATE_DTD, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_HASH (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_VALIDATE_HASH, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_SCHEMA (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_VALIDATE_SCHEMA, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_URL_ENCODING (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_VALIDATE_URL_ENCODING, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VALIDATE_UTF8_ENCODING (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_VALIDATE_UTF8_ENCODING, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VERIFY_CC (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_VERIFY_CC, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VERIFY_CPF (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_VERIFY_CPF, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_VERIFY_SSN (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_VERIFY_SSN, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_OPERATOR_WITHIN (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_OPERATOR_WITHIN, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_LOG_FMT (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG_FMT, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_JSON (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_JSON, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_NATIVE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_NATIVE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_ENGINE (YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_RULE_ENGINE, YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_ACCURACY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_ACCURACY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_ALLOW (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_ALLOW, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_APPEND (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_APPEND, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_AUDIT_LOG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_BLOCK (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_BLOCK, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CAPTURE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CAPTURE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CHAIN (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CHAIN, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_AUDIT_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_AUDIT_ENGINE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_AUDIT_LOG_PARTS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_AUDIT_LOG_PARTS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_BDY_JSON (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_BDY_JSON, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_BDY_XML (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_BDY_XML, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_BDY_URLENCODED (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_BDY_URLENCODED, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_FORCE_REQ_BODY_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_FORCE_REQ_BODY_VAR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_REQUEST_BODY_ACCESS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_REQUEST_BODY_ACCESS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_REMOVE_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_BY_ID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_REMOVE_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_BY_TAG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_DENY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_DENY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_DEPRECATE_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_DEPRECATE_VAR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_DROP (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_DROP, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_EXEC (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_EXEC, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_EXPIRE_VAR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_EXPIRE_VAR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_ID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_INITCOL (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_INITCOL, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_LOG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_LOG_DATA (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_LOG_DATA, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_MATURITY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_MATURITY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_MSG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_MULTI_MATCH (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_MULTI_MATCH, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_NO_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_NO_AUDIT_LOG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_NO_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_NO_LOG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_PASS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_PASS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_PAUSE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_PAUSE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_PHASE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_PHASE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_PREPEND (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_PREPEND, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_PROXY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_PROXY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_REDIRECT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_REDIRECT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_REV (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_REV, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_ARG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SANITISE_ARG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_MATCHED (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SANITISE_MATCHED, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_MATCHED_BYTES (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SANITISE_MATCHED_BYTES, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_REQUEST_HEADER (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SANITISE_REQUEST_HEADER, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SANITISE_RESPONSE_HEADER (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SANITISE_RESPONSE_HEADER, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SETENV (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SETENV, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SETRSC (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SETRSC, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SETSID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SETSID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SETUID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SETUID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SEVERITY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SEVERITY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SKIP (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SKIP, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_SKIP_AFTER (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_SKIP_AFTER, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_STATUS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_STATUS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TAG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_BASE_64_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_BASE_64_ENCODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_BASE_64_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_BASE_64_DECODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_CMD_LINE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_CMD_LINE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_CSS_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_CSS_DECODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_HEX_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_HEX_ENCODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_HEX_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_HEX_DECODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_JS_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_JS_DECODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_LENGTH (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_LENGTH, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_LOWERCASE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_LOWERCASE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_MD5 (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_MD5, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_NONE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_NONE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_NORMALISE_PATH (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_NORMALISE_PATH, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_NULLS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_NULLS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REMOVE_WHITESPACE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REMOVE_WHITESPACE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REPLACE_COMMENTS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REPLACE_COMMENTS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_REPLACE_NULLS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_REPLACE_NULLS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_SHA1 (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_SHA1, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_SQL_HEX_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_SQL_HEX_DECODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_TRIM (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_TRIM, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_TRIM_LEFT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_TRIM_LEFT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_TRIM_RIGHT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_TRIM_RIGHT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_UPPERCASE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_UPPERCASE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_URL_ENCODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_URL_ENCODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_URL_DECODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_URL_DECODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_URL_DECODE_UNI (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_URL_DECODE_UNI, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_TRANSFORMATION_UTF8_TO_UNICODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_TRANSFORMATION_UTF8_TO_UNICODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_VER (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_VER, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_ACTION_XMLNS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_ACTION_XMLNS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_COMPONENT_SIG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_COMPONENT_SIG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_CONN_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_CONN_ENGINE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_ARGUMENT_SEPARATOR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_ARGUMENT_SEPARATOR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_WEB_APP_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_WEB_APP_ID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_SERVER_SIG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_SERVER_SIG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_DIR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_DIR_MOD (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_DIR_MOD, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_ENG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_ENG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_FLE_MOD (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_FLE_MOD, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_LOG2 (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG2, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_LOG_P (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_LOG_P, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_STS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_STS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_AUDIT_TPE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_AUDIT_TPE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_DEBUG_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_DEBUG_LOG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_DEBUG_LVL (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_DEBUG_LVL, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_CACHE_TRANSFORMATIONS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_CACHE_TRANSFORMATIONS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_DISABLE_BACKEND_COMPRESS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_DISABLE_BACKEND_COMPRESS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_HASH_ENGINE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_KEY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_HASH_KEY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_PARAM (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_HASH_PARAM, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_METHOD_RX (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_HASH_METHOD_RX, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HASH_METHOD_PM (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_HASH_METHOD_PM, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_CHROOT_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_CHROOT_DIR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_GEO_DB (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_GEO_DB, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_GSB_DB (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_GSB_DB, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_GUARDIAN_LOG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_GUARDIAN_LOG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_PCRE_MATCH_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_PCRE_MATCH_LIMIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_CONN_R_STATE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_CONN_R_STATE_LIMIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_CONN_W_STATE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_CONN_W_STATE_LIMIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_SENSOR_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_SENSOR_ID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_LIMIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY_LIMIT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_LIMIT_ACTION, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_RES_BODY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_RES_BODY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_RES_BODY_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_RES_BODY_LIMIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_RES_BODY_LIMIT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_RES_BODY_LIMIT_ACTION, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_INHERITANCE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_RULE_INHERITANCE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_PERF_TIME (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_RULE_PERF_TIME, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_RULE_ENG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_RULE_ENG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_SEC_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_SEC_ACTION, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_SEC_DEFAULT_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_SEC_DEFAULT_ACTION, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_SEC_MARKER (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_SEC_MARKER, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_UNICODE_MAP_FILE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_UNICODE_MAP_FILE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_DIR_UNICODE_CODE_PAGE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_DIR_UNICODE_CODE_PAGE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_COLLECTION_TIMEOUT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_COLLECTION_TIMEOUT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_HTTP_BLKEY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_HTTP_BLKEY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_INTERCEPT_ON_ERROR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_INTERCEPT_ON_ERROR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_RULE_REMOVE_BY_ID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_RULE_REMOVE_BY_MSG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_RULE_REMOVE_BY_TAG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPDLOAD_KEEP_FILES (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_UPDLOAD_KEEP_FILES, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPDLOAD_SAVE_TMP_FILES (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_UPDLOAD_SAVE_TMP_FILES, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPLOAD_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_UPLOAD_DIR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPLOAD_FILE_LIMIT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_UPLOAD_FILE_LIMIT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_UPLOAD_FILE_MODE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_UPLOAD_FILE_MODE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_ABORT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_ABORT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_DETC (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_DETC, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_HTTPS (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_HTTPS, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_OFF (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_OFF, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_ON (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_ON, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_PARALLEL (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_PARALLEL, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_PROCESS_PARTIAL (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_PROCESS_PARTIAL, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_REJECT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_REJECT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_RELEVANT_ONLY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_RELEVANT_ONLY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_SERIAL (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_SERIAL, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_VALUE_WARN (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_VALUE_WARN, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_XML_EXTERNAL_ENTITY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_XML_EXTERNAL_ENTITY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_RESPONSE_BODY_MP (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONGIG_DIR_RESPONSE_BODY_MP, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_ARG_SEP (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONGIG_DIR_SEC_ARG_SEP, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_COOKIE_FORMAT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONGIG_DIR_SEC_COOKIE_FORMAT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_COOKIEV0_SEPARATOR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_COOKIEV0_SEPARATOR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_DATA_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONGIG_DIR_SEC_DATA_DIR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_STATUS_ENGINE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONGIG_DIR_SEC_STATUS_ENGINE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_STREAM_IN_BODY_INSPECTION (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_STREAM_IN_BODY_INSPECTION, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_CONGIG_DIR_SEC_TMP_DIR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_CONGIG_DIR_SEC_TMP_DIR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_DIRECTIVE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_DIRECTIVE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_DIRECTIVE_SECRULESCRIPT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_DIRECTIVE_SECRULESCRIPT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_FREE_TEXT_QUOTE_MACRO_EXPANSION (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_FREE_TEXT_QUOTE_MACRO_EXPANSION, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_QUOTATION_MARK (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_QUOTATION_MARK, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_BLD (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_BLD, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_DUR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_DUR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_HSV (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_HSV, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_REMOTE_USER (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_REMOTE_USER, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_DAY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_DAY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_EPOCH (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_EPOCH, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_HOUR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_HOUR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_MIN (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_MIN, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_MON (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_MON, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_SEC (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_SEC, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_WDAY (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_WDAY, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_RUN_TIME_VAR_TIME_YEAR (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_RUN_TIME_VAR_TIME_YEAR, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_VARIABLE (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_VARIABLE, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_DICT_ELEMENT (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_DICT_ELEMENT, YY_MOVE (v), YY_MOVE (l)); - } - - inline - seclang_parser::symbol_type - seclang_parser::make_DICT_ELEMENT_REGEXP (YY_COPY (std::string) v, YY_COPY (location_type) l) - { - return symbol_type (token::TOK_DICT_ELEMENT_REGEXP, YY_MOVE (v), YY_MOVE (l)); - } - - - -} // yy -#line 6444 "seclang-parser.hh" // lalr1.cc:403 - - - - -#endif // !YY_YY_SECLANG_PARSER_HH_INCLUDED diff --git a/src/parser/seclang-scanner.cc b/src/parser/seclang-scanner.cc deleted file mode 100644 index ffa54177..00000000 --- a/src/parser/seclang-scanner.cc +++ /dev/null @@ -1,9697 +0,0 @@ - -#line 2 "seclang-scanner.cc" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -/* %not-for-header */ -/* %if-c-only */ -/* %if-not-reentrant */ - -/* %endif */ -/* %endif */ -/* %ok-for-header */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* %if-c++-only */ -/* %endif */ - -/* %if-c-only */ - -/* %endif */ - -/* %if-c-only */ - -/* %endif */ - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -/* %if-c-only */ -#include -#include -#include -#include -/* %endif */ - -/* %if-tables-serialization */ -/* %endif */ -/* end standard C headers. */ - -/* %if-c-or-c++ */ -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* %endif */ - -/* begin standard C++ headers. */ -/* %if-c++-only */ -/* %endif */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* %not-for-header */ -/* Returned upon end-of-file. */ -#define YY_NULL 0 -/* %ok-for-header */ - -/* %not-for-header */ -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) -/* %ok-for-header */ - -/* %if-reentrant */ -/* %endif */ - -/* %if-not-reentrant */ - -/* %endif */ - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -/* %if-not-reentrant */ -extern int yyleng; -/* %endif */ - -/* %if-c-only */ -/* %if-not-reentrant */ -extern FILE *yyin, *yyout; -/* %endif */ -/* %endif */ - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { -/* %if-c-only */ - FILE *yy_input_file; -/* %endif */ - -/* %if-c++-only */ -/* %endif */ - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* %if-c-only Standard (non-C++) definition */ -/* %not-for-header */ -/* %if-not-reentrant */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ -/* %endif */ -/* %ok-for-header */ - -/* %endif */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* %if-c-only Standard (non-C++) definition */ - -/* %if-not-reentrant */ -/* %not-for-header */ -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; -/* %ok-for-header */ - -/* %endif */ - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -/* %endif */ - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */ -/* Begin user sect3 */ - -#define yywrap() (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP - -#define FLEX_DEBUG -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -/* %% [1.5] DFA */ - -/* %if-c-only Standard (non-C++) definition */ - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* %endif */ - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ -/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (int) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ -/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ - (yy_c_buf_p) = yy_cp; -/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 537 -#define YY_END_OF_BUFFER 538 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[3922] = - { 0, - 0, 0, 0, 0, 270, 270, 278, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 282, 282, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 538, 529, 523, 263, 267, 268, - 266, 269, 529, 529, 529, 529, 529, 529, 529, 529, - 529, 529, 529, 529, 529, 286, 286, 537, 286, 286, - - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 125, 270, 276, 278, - 280, 274, 273, 275, 272, 278, 271, 487, 487, 486, - 487, 487, 487, 120, 119, 118, 127, 127, 127, 134, - 126, 127, 129, 129, 129, 128, 134, 129, 132, 132, - 132, 131, 134, 130, 132, 528, 528, 528, 537, 489, - 488, 440, 443, 537, 443, 440, 440, 440, 430, 430, - 430, 433, 435, 430, 434, 430, 424, 430, 497, 497, - 497, 496, 501, 497, 499, 499, 499, 498, 501, 499, - 117, 117, 109, 117, 114, 108, 117, 117, 117, 117, - - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 112, 117, 111, 537, 506, 537, - 502, 515, 537, 282, 283, 537, 493, 493, 492, 495, - 493, 491, 491, 490, 495, 491, 149, 530, 531, 532, - 136, 135, 136, 136, 136, 136, 136, 136, 140, 139, - 144, 145, 145, 144, 142, 141, 139, 147, 148, 148, - 146, 147, 523, 263, 0, 266, 266, 266, 0, 0, - 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, - 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 409, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 414, 0, - 0, 0, 0, 0, 121, 0, 124, 270, 276, 278, - 280, 277, 278, 279, 280, 281, 523, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 127, 0, 127, 127, 127, - 0, 133, 121, 127, 127, 129, 0, 0, 129, 129, - 129, 0, 129, 121, 129, 132, 0, 0, 132, 132, - 132, 0, 132, 121, 132, 528, 528, 528, 0, 526, - 528, 440, 0, 440, 0, 440, 440, 0, 440, 440, - 430, 0, 0, 429, 430, 430, 430, 0, 430, 500, - - 430, 430, 0, 429, 0, 430, 422, 423, 430, 430, - 497, 0, 0, 497, 497, 497, 0, 497, 121, 497, - 499, 0, 499, 499, 0, 499, 0, 0, 121, 499, - 499, 0, 109, 0, 108, 0, 110, 114, 115, 0, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 106, 0, 0, 112, 0, 113, 111, - 111, 0, 506, 0, 515, 0, 506, 504, 514, 0, - 502, 515, 0, 0, 522, 0, 505, 0, 282, 283, - - 0, 283, 0, 0, 493, 0, 493, 0, 494, 493, - 491, 0, 0, 491, 0, 491, 530, 531, 532, 0, - 0, 0, 0, 0, 0, 137, 138, 144, 0, 0, - 144, 0, 144, 143, 147, 0, 0, 147, 0, 147, - 266, 0, 0, 0, 0, 0, 0, 0, 214, 0, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 0, - 0, 392, 0, 0, 382, 0, 0, 0, 417, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 420, 0, 0, 0, 0, 390, 121, - 122, 123, 0, 0, 0, 0, 461, 0, 462, 0, - - 463, 0, 0, 466, 467, 469, 0, 0, 471, 0, - 0, 0, 0, 0, 0, 462, 0, 0, 0, 127, - 0, 0, 121, 122, 0, 129, 0, 0, 121, 122, - 0, 132, 0, 0, 121, 122, 526, 527, 440, 0, - 440, 0, 440, 0, 0, 0, 440, 0, 430, 0, - 0, 430, 0, 429, 0, 430, 430, 430, 430, 430, - 0, 0, 0, 0, 430, 430, 430, 0, 497, 0, - 0, 121, 122, 0, 499, 0, 0, 121, 121, 122, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, - - 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 107, 504, 514, 510, 513, 0, 517, - 0, 0, 522, 0, 0, 505, 503, 512, 0, 0, - 284, 0, 0, 493, 0, 0, 0, 491, 0, 0, - 0, 0, 0, 0, 0, 144, 0, 0, 0, 147, - 0, 0, 266, 0, 0, 0, 0, 0, 168, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 221, 525, 358, 0, 0, 393, 0, 0, 383, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 386, 0, 0, 0, 405, 0, 0, - 415, 0, 0, 391, 122, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 468, 470, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 0, 122, 129, - 0, 122, 132, 0, 122, 527, 440, 0, 0, 0, - 0, 440, 0, 0, 436, 441, 437, 436, 441, 437, - 430, 0, 430, 430, 430, 0, 430, 0, 0, 0, - 0, 430, 0, 429, 0, 430, 430, 425, 431, 426, - - 425, 431, 426, 0, 0, 430, 430, 497, 0, 122, - 499, 0, 122, 122, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 0, 0, 7, 0, 0, 0, 8, - 0, 0, 0, 49, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 107, 510, 513, 509, - 517, 0, 520, 0, 0, 516, 0, 0, 503, 512, - 508, 511, 284, 0, 285, 493, 0, 491, 0, 0, - - 0, 0, 0, 144, 0, 147, 0, 266, 266, 211, - 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 359, 0, 0, - 0, 374, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 387, 0, 0, - 0, 0, 0, 0, 421, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 485, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 438, 438, 438, 0, 0, - 427, 427, 0, 0, 0, 430, 430, 0, 427, 0, - 430, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 2, 0, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 14, 0, - 0, 16, 0, 53, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 509, - 520, 0, 521, 516, 0, 518, 0, 508, 511, 507, - - 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 266, 266, 0, 0, 0, 169, 0, 0, - 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, - 0, 0, 0, 0, 375, 0, 0, 408, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 356, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 472, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 442, 439, 442, 439, - 432, 428, 432, 428, 0, 427, 0, 0, 0, 430, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 41, 41, 0, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, - 0, 74, 0, 92, 0, 0, 0, 0, 0, 0, - 0, 0, 521, 518, 0, 519, 507, 0, 0, 0, - - 266, 266, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 416, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 411, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 41, 0, - 41, 41, 0, 0, 0, 0, 0, 0, 0, 50, - 0, 0, 15, 0, 52, 0, 54, 22, 55, 56, - 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 0, 0, 65, - 519, 0, 0, 266, 266, 0, 0, 0, 216, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 360, - 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 410, 0, 0, 0, 0, 419, 0, - 0, 398, 0, 0, 401, 402, 403, 0, 0, 0, - 0, 357, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 465, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, - - 0, 0, 0, 0, 0, 40, 41, 40, 0, 41, - 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 57, 0, 0, 23, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 266, 266, 0, 0, 0, 0, 533, 0, - 0, 259, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 361, 0, 0, 362, 294, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 418, 0, 0, 0, 0, 353, 0, 0, - 400, 406, 404, 354, 0, 0, 0, 459, 0, 0, - 460, 0, 0, 0, 0, 464, 0, 473, 0, 0, - 481, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, - 40, 0, 0, 0, 0, 0, 0, 50, 0, 0, - - 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, - 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 266, 266, 264, 0, - 264, 216, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, - - 363, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, - 0, 0, 0, 0, 0, 0, 476, 0, 484, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 482, 483, - 0, 0, 0, 0, 0, 25, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, - 48, 0, 48, 10, 11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, - 0, 0, 266, 0, 264, 264, 264, 264, 264, 0, - 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 291, 0, 0, - - 366, 364, 0, 0, 0, 0, 0, 300, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 325, 326, 397, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, - 0, 0, 350, 351, 352, 413, 0, 0, 474, 0, - 0, 448, 445, 0, 0, 468, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 454, 0, 451, 0, 0, - 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 44, 44, 0, 0, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 61, 0, 0, 0, 91, 0, 78, 77, 0, - 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 94, 80, 83, 81, 0, 266, 266, 0, - 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 367, 365, 0, - 0, 297, 0, 0, 372, 0, 394, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 323, 0, 0, 0, 334, 0, 0, 0, 338, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 447, 475, 0, 0, 0, 478, 0, 0, 0, 0, - 0, 453, 0, 0, 0, 0, 24, 0, 0, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, - 44, 44, 0, 44, 0, 44, 44, 0, 0, 47, - - 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, - 265, 265, 265, 265, 212, 0, 0, 0, 0, 166, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, - 0, 174, 0, 0, 0, 0, 0, 0, 240, 0, - 0, 0, 189, 0, 0, 0, 0, 188, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, - 0, 0, 0, 153, 153, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 373, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 343, 0, 0, 0, 0, 0, 0, 458, - 0, 0, 0, 479, 0, 0, 0, 0, 0, 0, - 24, 25, 26, 0, 0, 0, 0, 0, 0, 103, - 44, 43, 44, 44, 43, 0, 0, 44, 43, 0, - 0, 44, 43, 44, 44, 45, 47, 48, 0, 0, - - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, - 217, 0, 161, 0, 163, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, - 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, - 247, 0, 0, 262, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, - - 0, 288, 0, 0, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 44, 0, 43, 0, - 44, 44, 43, 0, 43, 0, 0, 43, 0, 0, - 45, 43, 45, 45, 43, 0, 44, 43, 44, 0, - 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 60, 0, 60, 0, 60, - - 0, 0, 71, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 87, 69, 82, 0, 0, - 170, 0, 0, 0, 0, 0, 0, 173, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, - 0, 0, 0, 0, 244, 243, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 152, 0, 0, 0, 0, 289, 292, 0, - 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, - - 0, 0, 0, 0, 0, 376, 0, 378, 0, 341, - 0, 0, 0, 349, 0, 0, 0, 0, 0, 480, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, - 0, 0, 42, 44, 42, 0, 44, 42, 0, 0, - 42, 44, 0, 42, 0, 42, 45, 45, 42, 45, - 26, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, - 96, 96, 0, 67, 0, 0, 0, 0, 98, 0, - 0, 0, 0, 0, 0, 0, 535, 0, 238, 0, - 0, 0, 0, 0, 0, 0, 0, 258, 0, 177, - - 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, - 0, 152, 0, 0, 293, 0, 0, 0, 396, 0, - 0, 299, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 332, 0, - 377, 0, 335, 379, 0, 340, 0, 380, 0, 355, - 0, 464, 0, 0, 0, 0, 0, 0, 0, 28, - 0, 0, 0, 0, 0, 0, 42, 42, 0, 42, - 0, 44, 0, 42, 45, 43, 45, 45, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, - 0, 0, 0, 0, 68, 66, 100, 0, 0, 0, - 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, - 0, 0, 0, 235, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 314, 0, 0, 0, 0, 0, 327, 331, 0, 0, - 0, 0, 381, 0, 348, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 43, 43, 45, 45, 43, 45, 0, 0, 0, 0, - 0, 0, 60, 0, 72, 0, 76, 0, 0, 0, - 0, 0, 101, 0, 0, 0, 0, 164, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 176, 0, 246, - 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, - 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 205, 0, 287, 0, 369, - 0, 298, 370, 0, 0, 0, 0, 308, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 477, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, - 0, 0, 0, 0, 60, 0, 89, 95, 95, 0, - 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 154, 0, 0, 248, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 192, 192, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, - 0, 295, 296, 371, 0, 0, 0, 0, 307, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 321, 0, - 333, 0, 0, 0, 0, 0, 407, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, - 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, - 193, 193, 0, 195, 195, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 209, 222, 0, 0, 0, 304, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 0, 0, 0, - 452, 0, 0, 29, 0, 0, 0, 36, 0, 0, - 19, 0, 0, 85, 99, 0, 0, 0, 162, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 182, 0, 0, 187, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, - 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 384, 336, 0, 345, 0, 449, 0, - 0, 455, 0, 0, 0, 0, 37, 0, 20, 0, - 160, 0, 160, 225, 225, 156, 0, 0, 0, 261, - 0, 249, 0, 228, 0, 0, 0, 0, 0, 0, - 0, 186, 0, 0, 194, 196, 0, 0, 0, 0, - 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 312, 0, 0, 0, 319, 0, 0, 385, - 337, 0, 346, 450, 0, 456, 0, 34, 0, 0, - 21, 0, 0, 0, 157, 0, 0, 250, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 151, 0, 0, 206, 0, 0, 303, 0, 0, - 0, 0, 0, 0, 0, 330, 344, 347, 0, 0, - 0, 0, 159, 0, 0, 236, 0, 0, 0, 227, - 0, 0, 260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 309, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 158, 150, 0, 0, 0, 0, 0, 181, 0, 0, - 223, 0, 204, 0, 202, 0, 0, 0, 254, 0, - 301, 0, 0, 0, 313, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, - 185, 0, 0, 0, 200, 0, 198, 0, 255, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 38, 0, 0, 171, 171, 0, 0, 0, 0, 0, - 203, 201, 0, 0, 0, 0, 0, 315, 316, 0, - 329, 0, 0, 0, 0, 39, 0, 256, 178, 0, - 183, 0, 199, 197, 0, 0, 0, 320, 0, 0, - - 0, 31, 172, 180, 224, 302, 306, 0, 33, 30, - 0, 0, 0, 0, 0, 311, 0, 0, 0, 32, - 0 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 5, 6, 7, 8, 9, 10, 11, 12, 1, - 1, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 22, 28, 9, 1, - 29, 1, 1, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 9, 57, 9, 1, 58, 1, 59, 60, 61, 62, - - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static const YY_CHAR yy_meta[88] = - { 0, - 1, 2, 3, 4, 5, 1, 6, 1, 7, 1, - 1, 8, 9, 1, 10, 9, 9, 9, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 9, 12, 1, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 14, 15, 15, 15, 16, 15, 14, 15, 15, - 15, 15, 15, 15, 15, 13, 1, 9, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, - 15, 15, 15, 16, 15, 14, 15, 15, 15, 15, - 15, 15, 15, 15, 17, 18, 1 - } ; - -static const flex_int16_t yy_base[4210] = - { 0, - 0, 80, 161, 0, 4, 8, 14, 247, 21, 87, - 101, 254, 25, 40, 53, 261, 265, 275, 284, 290, - 94, 304,12237,12236,12235,12229, 324, 347, 365, 383, - 413, 434, 314, 448, 335, 397, 505, 0, 457, 464, - 591, 597, 603, 609, 419, 425, 271, 298, 102, 612, - 12229,12227,12226,12223,12222,12205,12187,12176, 614, 622, - 0, 0,12146,12145, 428, 611, 646, 668, 0, 0, - 57, 79, 620, 627,12173,14023, 673,14023,14023,14023, - 308,14023, 4, 25, 59, 52, 71, 72, 96, 279, - 315, 97, 220, 271, 8,14023, 443,14023, 655, 269, - - 312, 578, 673, 330, 429, 681, 327, 358, 368, 686, - 679, 699, 707, 421, 422, 38,12162, 133, 765, 771, - 783,14023,14023,14023,14023, 789,14023,14023, 631,14023, - 815, 76, 764,14023,14023,14023, 278, 798, 348, 417, - 12114, 801, 372, 829, 752,12082, 540, 814, 855, 895, - 883,12081, 546,12078, 904, 830, 901,14023, 913,14023, - 14023, 918,12054,12052,12050, 924, 957, 964, 934, 980, - 991,12049, 601, 1012,12046, 1024, 725, 1042, 770, 1054, - 831,12045, 625, 1063, 645, 978, 802, 867, 663, 1072, - 14023, 1081,14023,12089, 484, 475, 1047, 719, 764, 874, - - 717, 940, 752, 1056, 800, 953, 1064, 818, 1059, 917, - 821, 885, 405, 1139,14023,12083, 1143, 1147, 476, 309, - 1153, 1159, 410, 1011, 490, 493, 1096, 1114,12028, 911, - 1122, 1124, 1129,11967, 943, 1158,14023, 0, 0, 0, - 14023,14023, 990, 1017, 1053, 1062, 1105, 1118,14023, 120, - 1162,11965, 1113, 1168,14023,14023, 282, 1178,11948, 1116, - 11930, 1199, 1200,14023, 495, 0, 1187,11913, 1135, 1140, - 1144, 1149, 1180, 1172, 1168, 1184,14023, 1173, 1178, 1184, - 1199, 1182, 636,11971, 1229, 620, 1196, 1187, 1190, 1187, - 1198, 1200, 1198, 1199, 1213, 1221, 297, 1205, 1225, 1220, - - 1213, 1214, 1234, 1230, 1232, 1236, 1245, 1237, 735, 1243, - 1246, 1254, 1261, 1252, 641,11969,11886, 642, 1321, 1327, - 1333,14023, 1293,14023, 1304,14023, 1294, 1279, 1270, 1283, - 1297, 1268, 1304, 1311, 1298, 1302, 1317, 1302, 1314, 1328, - 1321, 1329, 1354, 1321, 1339, 920,11893, 670, 1395, 1405, - 1400,14023, 1409, 1410, 1406, 1416,11891,11890, 998, 1423, - 1431, 1417, 1429, 1435, 1440, 1439,11862,11858, 1391, 1454, - 1467, 1448, 1468, 1474, 1484, 1498, 1504,14023, 1510, 933, - 1514, 1525,11857, 1518,11906, 1541, 1561, 346, 1578, 1584, - 1585,11855,11854, 1609, 1527, 1624, 1642, 1500, 1648,14023, - - 1673, 1677, 1615, 1707, 842, 1708,14023,14023, 1733, 1739, - 1488,11851,11850, 1005, 1722, 1549, 1633, 1684, 1745, 1701, - 1568,11848, 1172, 1751, 1671, 1599, 1664, 1605, 1764, 1767, - 1734, 1780,14023,11901, 949, 816,14023, 1784,14023,11848, - 1463, 1335, 1402, 1444, 1474, 1477, 1503, 1529, 1581, 1753, - 1658, 1746,11740, 1734, 1739, 1728, 1761, 1758, 1774, 1771, - 14023, 1761, 1780, 1778, 1780, 1771, 1767, 1779, 1791, 1829, - 1792, 1782, 1806, 1533,11763, 1879,14023,11747,14023, 1883, - 1907, 1911, 1567, 701, 1917, 1075, 1691, 1560, 1847,11743, - 1923, 1930, 1861, 898, 1755, 1100, 1889, 1035, 1936, 1851, - - 1110, 1937, 1942,11742, 1860,11685, 1293, 1888,14023, 1941, - 1943,11636,11635, 1428, 1945, 1947, 0, 0, 0, 1829, - 1030, 1882, 1899, 1476, 1921,14023,14023, 1956,11632,11606, - 1955, 1948, 1968,14023, 1979,11600,11599, 1996, 1978, 2008, - 11592, 1919, 1940, 1946, 1936, 1954, 1955, 1975,14023, 1985, - 1984, 1984, 1986, 2035, 1983, 1982, 1967, 2026, 1980, 1992, - 2001, 1633, 1998, 1992, 1669, 2011, 2010, 2006,14023, 2019, - 2010, 2013, 2032, 2032, 2027, 2032, 2067, 2062, 2047, 2041, - 2055, 2065, 2084,14023, 2073, 2087, 2075, 2093, 2109, 2036, - 2123,14023, 2092, 2086, 2081, 2099,14023, 2078, 2093, 2107, - - 14023, 2091, 2098,14023,14023, 2108, 2103, 2098,14023, 2105, - 2121, 2113, 2108, 2110, 2113, 2119, 2132, 2129, 2117, 2166, - 11542,11564, 2184, 2185,11563, 2191,11532,11552, 2198, 2202, - 11546, 2203,11517,11542, 2209, 2215, 2224, 2226, 2232, 2188, - 2249, 856, 2266,11510, 2228, 2214, 2283,11388, 2284,11291, - 11313, 2315, 2275, 2319, 2222, 2373, 2377, 2406, 2407, 2437, - 11351, 2282, 2329, 2438, 2468, 2469, 2498,11309, 2300,11237, - 11259, 2455, 2480, 2218, 2170,11230,11255, 2340, 2341, 2394, - 14023, 2232, 2283, 2303, 2310, 2329, 2315, 2361,11258, 2348, - 2362, 2385, 2380, 2400, 2402, 2495, 2418, 2467, 2451,11252, - - 2454, 2455, 2466,14023, 2479, 2482, 2484, 2489, 2482, 2499, - 11251, 2501, 2522, 2506, 2498, 2497, 2517, 2534, 2501, 2517, - 2504, 2547, 2524, 2515, 2531, 2530, 2549, 2536, 2558,11248, - 11223, 2545, 2260, 2300, 2349, 2544, 2362, 2611, 2620, 2369, - 2621,11242, 2427, 2628, 1372, 2635, 2448, 2636,11241, 2642, - 2486, 2643, 2534, 2604,11156,11176,11170, 2644,11141,11166, - 2571, 2584, 2590, 2598,11158, 2648,11124,11151,11148, 2658, - 11031,10853, 92, 2602, 2602, 2623, 2611, 2611,14023, 2612, - 2624, 2634, 2638, 2620, 2645, 2636, 2664, 2673, 2676, 2648, - 2638, 2654, 2653, 2682, 2681, 2648, 2674, 2687, 2685, 2698, - - 14023, 2540, 2721,10846, 2684,14023, 2686,10845,14023, 2710, - 2707, 2692, 2709, 2717, 2715, 2713,10842, 2705, 2714, 2720, - 2731, 2716, 2723, 2221, 2737, 2734, 2723,10798, 2725, 2733, - 2770, 2732, 2748,14023, 2592, 2745, 2735, 2754, 2741, 2735, - 2755, 2757, 2757, 2776, 2760,14023, 2778, 2779, 2770, 2777, - 2781, 2783, 2788, 2782, 2781, 2789, 1723, 2820, 2853, 1982, - 2850, 2857, 2819, 2859, 2868, 2866, 2877, 947, 2167, 2854, - 10832, 2894, 42, 2867,10792, 916,10789,14023,10749,14023, - 2893, 2884, 2917, 2937, 2955, 1309, 2980, 2829, 2943,10743, - 2981, 3006, 2999, 3037, 2252, 3067, 3068, 3033, 2258, 3088, - - 14023,10742,14023, 989, 2298, 3097, 3106, 2829, 2880, 3127, - 2836, 2921, 3048, 2886, 2805, 2849, 2873, 2870, 2887, 2917, - 2925, 3083,14023, 2942, 2946,14023,10729, 2943, 3145, 3154, - 2969, 2995, 2983,14023, 2993, 2999, 2999,14023, 3030, 3075, - 3085, 3067, 3075,10719, 3077, 3084, 3081, 3094, 3118, 3129, - 3114, 3158, 3131, 3138, 3157, 3149, 3144, 3161, 3141, 3153, - 3163, 3154, 3146,10701, 3156, 3153, 3159, 3172, 3164, 3168, - 3162, 3167, 3175,14023,10712, 3163, 2916, 2931, 3020, 3066, - 3086, 3134, 3138, 3211, 3236, 3144, 3240,10718, 3244, 3246, - 3250, 3252, 3256, 3258, 3262, 2901, 3096, 3024, 3259, 3213, - - 3199, 3217, 3029, 3261, 3252, 3267, 3260,10652,10628,14023, - 3225, 3225,14023, 3246, 3248, 3243, 3237, 3237, 3260, 3242, - 3256, 3260, 3251, 3264, 3250, 3262, 3249, 3304, 3251, 3257, - 3278, 3298, 3282, 3287, 3289, 3293, 3294, 3300, 3302, 3302, - 3314, 3302, 3312, 3310, 3321, 3312, 3313,14023, 3351, 3308, - 3322, 3368, 3315, 3324, 3338, 3348, 3358, 3366, 3354, 3350, - 3363,10648, 3368, 3370, 3356, 3358, 3363,14023, 3360, 3364, - 3361, 3405, 3378, 3381,14023, 3383, 3372, 3371, 3378, 3393, - 3411, 3396, 3396, 3408, 3410, 3421, 3407, 3414,14023, 3414, - 3431, 3419, 3430, 3429, 3427, 3436, 3425, 3429, 3440, 3418, - - 10618,10521,10489,10481,10403, 3502, 3481, 1508,10413,10367, - 3506, 3497, 3460, 3462, 1344, 3537, 3567, 3496, 3588, 3555, - 3603, 3568, 3602,10391,10291, 3438,10251, 3469,10302, 3476, - 3480,14023, 3478,14023, 3479, 3488, 3576, 3503, 3487,10317, - 3505, 3642, 3498, 3541, 3562, 3559, 3575,14023,14023,10298, - 3572,14023, 3587,10257, 0, 3589, 3591, 3614, 3614, 3615, - 3603, 3613, 3670, 3617, 3608, 3623, 3628, 3626, 3639, 3647, - 3648, 3642, 3652, 3662, 3667,14023, 3668, 3661, 3666, 3662, - 3666,10209, 3671, 3670, 3679, 3682,10196, 18,10194, 3527, - 3631, 3633, 3632, 3716, 3717, 3718, 3741, 3723, 3745, 3724, - - 3749, 3677,10134,10087,10023, 3696, 3691, 3695, 9983, 9865, - 9875, 9829, 9512, 9101, 3701, 3714, 3720,14023, 3721, 3708, - 14023, 3714, 3720, 3709, 3722, 3732, 3726, 3720, 3727, 3724, - 3728, 3730, 3742, 3723, 3744, 3745, 3737, 3738, 3734, 3752, - 3748, 3760, 3755, 3770, 3764, 3760, 3766, 3778, 3765, 3763, - 3766, 3782, 3785, 3787, 3776, 3794, 3791,14023, 3782, 3793, - 3798, 3785, 3776, 3787,14023, 3802, 3801, 3059, 3788, 3816, - 3827, 9101, 3834, 3823, 3824, 3820, 9100, 3815, 3821, 3839, - 3824, 9089, 3831, 9088, 3845, 3831, 3836, 3843, 3848, 3850, - 3850, 9000, 3841,14023, 3848, 3838, 3842, 3853, 3844, 3863, - - 3868, 3862, 3863, 3884, 3888, 3880,14023, 3874, 3891, 3895, - 3872, 3884, 3879, 3886, 3898, 3902, 3919, 2389, 1689, 9038, - 3920, 3960, 1818, 9037, 3929, 1837, 3961, 1749, 2936, 3992, - 3951, 3910, 3935,14023, 3901, 3929, 3939, 3936, 3938, 3946, - 3960, 3956, 0, 4020, 3944,14023, 3956, 3969, 3953, 3983, - 3970, 3996, 3995, 3997, 9041, 3984, 9022, 9019, 8876, 8793, - 8741, 3984, 4059, 3987, 8738, 8693, 4000, 3992, 4006, 3997, - 4010, 4002, 4024, 4027, 4013, 4016,14023, 4039, 4025, 4024, - 4058,14023, 4055, 4051, 4046, 4060, 4052, 4047, 966, 8660, - 2415, 0, 3939, 4048, 4049, 4050, 4100, 3553, 4067, 4057, - - 8571, 8570, 4071, 4062, 8618, 4066, 4063, 4060, 4066, 4069, - 4063, 4066, 4080, 4071, 4084, 4075, 4097, 4091, 4091, 4097, - 4096, 4095, 4117, 4106, 4107, 4119, 4121, 4123, 4109, 4128, - 4122, 4116, 4133, 4124, 4163, 4126, 4137, 4124, 4145, 4143, - 4156, 4143, 4158, 4155, 4151, 4163, 4157, 4165, 4164, 4172, - 4175, 4175, 4190, 4183, 4180, 4177,14023, 8452, 8451, 8445, - 4193, 4179, 4194, 4195, 4182, 4223, 8436, 8428, 4203, 4208, - 4226, 4245, 4216, 4208, 4219, 4214, 4223, 4224, 4242, 4245, - 4246, 4239, 4245, 4246, 4246, 4230, 4243, 4245, 4238, 4259, - 4260, 4269, 4263, 4276, 4281, 4286, 4281, 4271, 4290,14023, - - 4276, 4283, 4287, 4278, 4313, 4326, 4355, 4278, 4297, 4302, - 4303,14023, 4304, 4313, 4299, 4324, 4314, 4321, 4370, 2963, - 8378, 4374, 4338, 8351, 8294, 4325, 4338, 4348, 4354, 4413, - 4346, 4358,14023, 4345,14023, 4366,14023,14023,14023,14023, - 8309, 4358, 4379, 4424, 8291, 4381, 4391, 4419, 4420, 4423, - 4424, 4414, 4414, 4422, 4428, 4420, 4408, 4429, 4432, 4412, - 4432, 4429, 4436, 4437, 4438, 4427, 8251, 3930, 8289, 0, - 4401, 4438, 3559, 8148, 2420, 4430, 4431, 8196,14023, 4445, - 4432, 4434, 4444, 4473, 4426, 4432, 4461, 4479, 4469, 4470, - 4481, 4469, 4474, 4484, 4481, 4479, 4480, 4481, 4479, 4480, - - 4487, 4483, 4493, 4494, 4499, 4489, 4499, 4485, 4503, 4500, - 4488, 4494, 4520, 4523, 4533, 4534, 4537, 4525, 4524, 4525, - 4525, 4532, 4528, 4525, 4544, 4545, 4534, 4531, 4550, 4566, - 4549, 4535, 4551,14023, 4544, 4545, 4533, 4544, 4540, 4544, - 4577, 4568, 4571, 4573, 8140, 4580, 4578, 4593, 4583, 4584, - 4581, 4596, 4639, 3965, 8004, 4598, 4602, 4589,14023, 4601, - 4597,14023, 4604, 4590,14023,14023,14023, 4585, 4593, 4611, - 4611,14023, 4604, 4628, 4627, 4631, 4630, 4645, 4635, 4635, - 4636, 4652, 4653, 4652, 4654, 4643, 4659, 4690, 4647, 4650, - 4649, 4650, 4652, 4692, 1961, 7975, 4697, 4684,14023, 4682, - - 4698, 4699, 4700, 4702, 4694, 7889, 4737, 7882, 4358, 7915, - 4692, 0,14023, 7766, 4708, 4698, 4758, 4700, 4708, 4712, - 4721, 4740, 7753, 4757,14023, 7749, 4719, 4787, 4756, 4757, - 4744, 4751, 4748, 4753, 4754, 4751, 4768,14023, 4772, 4765, - 4799, 4803, 4787, 4789, 4799, 4800, 4807, 4794, 4795, 4790, - 4696, 4392, 7649, 7659, 7644, 4792, 4798, 0, 7693, 4797, - 4802,14023, 4804, 4805, 4807, 4805, 4806, 4823, 4808, 4824, - 4823, 4830, 4839, 4829, 4856, 4842, 4846, 4843, 4859, 4854, - 4855, 4866, 4861, 4844, 4850, 4853, 4861, 4868, 4402, 4854, - 4857, 4859, 4861, 4874, 4874, 4865, 4871, 4867, 4882, 4878, - - 4885, 4900, 4907, 4642, 4912, 4913, 4915, 4911, 4918, 4915, - 14023, 4911, 4908, 4941,14023, 4927, 4925, 4926, 4928, 4929, - 4930, 4935, 4936, 4929, 7637, 4936,14023, 4934, 4956, 4942, - 4949, 4967, 4955, 4956, 4975, 4960, 4968, 4973, 4970, 4975, - 4963, 4964,14023, 5009, 4981, 4973, 4969,14023, 4977, 4984, - 14023,14023,14023,14023, 4989, 7624, 4974, 4973, 4986, 4980, - 14023, 5008, 5007, 5013, 5021, 5013, 5020,14023, 5024, 5033, - 14023, 5028, 5022, 5026, 5023, 5027, 5037, 5071, 5066, 5030, - 5029, 5071, 5049, 5049, 5058, 5076, 5062, 5070, 5142, 7658, - 5104, 5105, 7635, 7633, 5106, 5086, 5090,14023, 5091, 5101, - - 5089, 5103, 5094, 5100,14023, 5103, 5122, 5123, 5188, 7629, - 5124, 5121,14023, 5118, 5135, 5135, 5141, 5142, 5138, 5143, - 5139, 5140, 5138, 5158, 5166, 5157, 5174, 5188, 5195, 5196, - 5183, 5196, 5186, 5202, 5203, 5194, 2486, 7592, 5240, 7566, - 5268,14023, 5196, 7488, 5196, 5206, 5202, 5220, 5221, 5224, - 5246, 5239, 5240, 5237, 5243, 5249, 5234, 5248, 5243, 7469, - 4752, 5252, 5259, 5259, 5241, 5242, 5250, 5256,14023, 5258, - 5267, 5264, 5254, 5178, 5268, 5251, 5272, 5273, 5274, 5279, - 5295, 5288, 5295, 5304, 5303, 5299, 5295, 5296, 5292, 5342, - 5294, 5303, 5309, 5311, 5316, 5318, 5305, 5310, 5324, 4394, - - 14023, 5312, 5318, 5309, 5311, 5333, 5336, 5321, 5320, 5325, - 5329, 5345, 5384, 5360, 5349, 5348, 5351, 5352, 5356, 5358, - 5363, 5360, 5376, 5366, 5370, 5382, 5370, 5375, 5386, 5404, - 5402, 5404, 5417, 5409, 5408, 5412, 5427, 5414, 5430,14023, - 7346, 5431, 5429, 5423, 5430, 7367,14023, 7363,14023, 5428, - 5427, 5438, 5429, 5421, 5428, 5448, 5448, 5434,14023,14023, - 5444, 1035, 1169, 5442, 5441, 5487, 5491, 5493, 5473, 5478, - 5470, 5473, 5486, 5473, 5487, 5482, 5495, 5483, 5179,14023, - 5504, 5508, 5510,14023,14023, 5491, 5480, 5479, 5485, 5493, - 5499, 5490, 5501, 5490, 5496, 5555, 5618, 5522, 5521, 5535, - - 5548, 5528, 5538, 5553, 0, 5552, 5554, 5540, 5560, 5554, - 5567, 5568, 5554,14023, 5570, 5571, 5572, 5585, 5591, 5578, - 5585, 5604, 5608, 5604, 5599, 5618,14023, 5602, 5620, 5622, - 5623, 5620, 7306, 7305, 5658, 1957, 5661, 5664, 5667, 5630, - 14023, 5634, 5621, 5632, 5643, 5720, 5642, 5644, 5641, 5646, - 5642, 5650, 5646, 5663, 5655, 5654, 5654, 5706, 5691, 5673, - 5676, 5668, 5683, 5690, 5692, 5692, 5696, 5688, 5694, 5743, - 0, 5708, 5705, 5704, 5719, 5708, 5705, 5705, 5706, 5713, - 5712, 0, 5726, 5736, 5744, 5728, 0, 5798, 5739, 5757, - 5741, 5750, 5758, 5688, 5751, 5764, 5759,14023, 5776, 5764, - - 5154, 5794, 5766, 5765, 5762, 5779, 5784, 5770, 5784, 5779, - 5777, 5795, 5790, 5796, 5788, 5797, 5795, 5808, 5806, 5800, - 5795, 5811,14023,14023,14023,14023, 5804, 5817, 5816, 5800, - 5817, 5828, 5830, 5830, 5828, 5818, 7124, 5836, 5827, 5843, - 5830, 5849,14023,14023,14023,14023, 5846, 5834,14023, 5837, - 7101,14023,14023, 5852, 5845,14023, 5845, 5840, 5861, 5848, - 5862, 5859, 5868, 1446, 1625,14023, 3283,14023, 5861, 5864, - 5871, 7044, 7031, 5899, 7019, 5900,14023, 5865, 5882, 5883, - 5874, 5890, 5885, 5881, 5879, 5888, 250, 5957, 7040, 6997, - 6990, 5919, 6951, 5924, 5898, 5903, 5904, 5895, 5899, 5896, - - 5902,14023, 5918, 5909, 5915, 5971, 5933, 5929, 5943, 5937, - 5938, 5939, 5956, 5964, 5961, 5969, 5967, 5956, 5971, 5959, - 5963, 0, 5971, 5972, 5980,14023, 5985,14023,14023, 5965, - 14023, 5975, 5976, 5979, 6972, 5979, 5982, 5984, 5981, 5990, - 5992, 5991,14023,14023, 5987,14023, 6007, 6655, 6053, 6642, - 6067, 5988, 6026,14023, 6025, 6019, 6691, 6686, 6026, 6028, - 6043, 6040, 6026, 6022, 6043, 6030, 5939, 6036, 6032, 6048, - 6034, 6037, 6047, 6046, 6055, 0, 6092, 6683, 6057, 6048, - 6067, 6079, 6082, 6074, 6086, 6088,14023, 6664, 6078, 6654, - 6085, 6094, 6096, 6086, 6097, 6094, 6095, 6100, 6086, 6102, - - 0, 6094, 6101, 6097, 6111, 6446, 6103, 6100, 6151, 6113, - 6106, 6170, 6123, 6133, 6134, 6135, 6144,14023,14023, 6146, - 6139, 6391, 6136, 6376, 6168, 6142,14023, 6136, 6146, 6139, - 6148, 6160, 6140, 6247, 6144, 6151, 6156, 6152, 6158, 6171, - 14023, 6155, 6169, 6161, 6140, 6169, 6166, 6178,14023, 6178, - 6179, 6177, 6179, 6185, 6203, 6189, 6190, 6194, 6195, 6210, - 14023,14023, 6209, 6215, 6212,14023, 6210, 6214, 6215, 6069, - 3943,14023, 6223, 6220, 6055, 6030, 5984, 6244, 5958, 6245, - 6246, 6209, 6221, 6215, 6213, 6221, 6225, 6227,14023, 6225, - 5948, 6304, 6269, 6270, 6288, 6308, 6323, 5938, 5716, 5648, - - 6272, 5685, 6274, 6279, 6252, 5598, 6255, 6268, 6277, 6268, - 6272, 6284, 6299, 6294,14023, 6306, 6304, 6312, 6312, 6300, - 6315, 6303, 6306, 6307, 6306, 6306, 6310, 6314, 6315, 6324, - 6320, 6332, 6334, 6331, 6338, 6340, 6346, 6347, 5521, 6357, - 5507, 6355, 6344, 6360, 6354, 6357, 6366, 6359, 6359, 5350, - 6405,14023, 5342, 6409,14023, 6367, 6367, 6380, 0, 0, - 0, 6368, 6377, 6372, 6374, 6382, 6381, 6383, 6381, 6397, - 6433, 6386, 6400,14023, 6411, 6395, 6411, 6420, 6409, 5388, - 0, 0, 6404, 6420, 6419, 6431, 6433, 6431,14023, 6423, - 0, 6428,14023, 6436, 6427, 6423, 6446,14023, 6432, 6442, - - 6454, 6487, 6459, 6463, 6451, 6464, 6456,14023, 6457, 6469, - 6510, 6477, 6471, 0, 6529, 1544, 6469, 5336, 6467, 6486, - 6490, 6476, 6477, 6486, 6493, 6503,14023, 6496, 6510, 6498, - 6507, 6514, 6511, 6516, 6520, 6512, 6508, 6523, 6520, 6522, - 6531, 5332, 5331, 6514, 6533, 6523, 6532, 6541, 6527, 6542, - 6544, 6549,14023, 6546, 6548, 6539, 6537, 6546, 6551,14023, - 6558, 6556, 6551,14023, 6558, 6558, 6571, 6565, 6566, 6578, - 6602, 6603,14023, 6573, 6587, 6584, 6586, 6586, 6588,14023, - 5169, 6613, 6650, 6651, 5115, 6621, 6625, 6652, 6611, 6681, - 6682, 6690, 652, 6711, 6715, 5114, 6619, 6620, 6606, 6594, - - 6624,14023, 6640, 6665, 6655, 6662, 6661, 6664, 6664, 6673, - 6679, 6680, 6690, 6687, 6683, 6696, 6699, 6704, 6697,14023, - 6713, 6709, 6715, 6716, 6704, 6722, 6721, 6708, 6710, 6730, - 6726, 6734, 6723,14023, 6721, 6736, 6726, 6742, 6741, 6747, - 14023, 6754,14023, 5007, 0, 6744, 6754, 6748, 6742, 6761, - 6749, 6765, 5008, 6756, 0, 0, 6763, 6767, 6756, 6776, - 6777, 6761, 6781,14023, 4964, 6779, 6771, 6783, 4767, 6634, - 14023, 6778, 6768, 0, 6788, 6783, 6822, 6817, 6781, 6806, - 6806, 6788, 6850, 6812, 6816, 6803, 6825, 6807, 6829, 6835, - 6828, 0, 0, 6829, 6825, 6833, 1551, 4693, 2033, 6839, - - 6828, 6657, 6829, 4591, 6865, 6844, 6845, 6833, 6837, 6861, - 6854, 6865, 4585, 4359, 6857, 6868, 6862, 6870, 6871, 6895, - 6881, 6883, 6867, 6883, 6876, 6872, 6879, 6889, 6877, 6885, - 6881,14023, 6888, 6881, 6891, 6888, 6906, 6891, 6896, 6895, - 6906, 6908, 6922, 6924, 6924, 6915, 6917, 6932, 6922, 6958, - 6937, 6925, 6925, 6920, 4381, 6945, 6984, 6968, 749, 7002, - 7014, 7015, 7033, 4393, 4188, 6999, 7020, 7021, 7022, 2647, - 7053, 942, 7068, 7079, 7091, 7097, 7024, 7109, 7127, 6980, - 4232, 4174, 6943,14023, 6948, 6934, 6941, 6974, 7007, 7020, - 7024, 7016, 4158, 7034, 7048,14023, 7067,14023, 7070,14023, - - 7072, 7068, 7078,14023, 7082, 7073, 7086, 7084, 7085, 7088, - 7080, 7092, 7087, 7097, 7100,14023,14023,14023, 7114, 7104, - 14023, 7108, 7114, 7129, 7112, 7110, 7132,14023, 3935, 7116, - 3639, 7124, 7124, 7134, 7120, 7123, 3636, 7126,14023, 7133, - 7132, 7134, 0, 7203,14023,14023, 7131, 7144, 0, 7155, - 7154, 7149, 7155, 7154, 7181, 7156, 3621, 7170, 0, 0, - 7166, 7169, 7167, 3594, 7180, 7170, 7192, 7187, 3573, 7187, - 7197, 7190, 3518, 5020, 3549, 7189, 7195,14023, 7025, 7186, - 14023, 7192, 7194, 7184, 7194, 7200, 7214, 7219, 7213, 7237, - 7225, 7223, 7224, 7234, 7230, 7231,14023, 7231, 7229, 7247, - - 7233, 7233, 7240, 7251, 7243, 7271, 7254, 7277, 7248,14023, - 7241, 7243, 7250,14023, 7250, 3493, 7271, 7280, 7268,14023, - 7271, 7288, 7291, 7279, 7292, 3512, 7277, 7278, 7299,14023, - 7276, 7301, 1445, 7336, 3477, 7325, 7051, 7304, 7362, 7373, - 7374, 7385, 3515, 7354, 7359, 2200, 7394, 7383, 7403, 7432, - 14023, 3399, 7310, 7346, 7359, 3386, 7374, 3348, 7378, 3344, - 7382, 7376, 7390, 7380,14023, 7388, 7372, 7378, 7394, 7384, - 7383, 7385, 7390,14023, 7393, 7397, 7419, 7408,14023, 7428, - 7428, 7418, 7415, 7465, 7438, 7435, 3307, 7430,14023, 7440, - 7445, 7435, 7444, 7441, 7490, 7461, 3291,14023, 7460, 0, - - 0, 7516, 7448, 7448, 3209, 7460, 7469, 7463, 7476, 7489, - 7495, 7490, 7492, 7499, 7516, 7499, 7495, 7514, 3145, 7507, - 7511, 7501, 0, 7506, 7512, 7517, 7519,14023, 7516, 7523, - 7527, 5078, 7513, 7508,14023, 7526, 7516, 7530,14023, 7523, - 7534,14023, 7522, 7535, 7539, 7546, 7541, 7546, 3086, 7553, - 7553, 7552, 7558, 3031, 7563, 7554, 7567, 7557,14023, 7569, - 14023, 7563,14023,14023, 7564,14023, 2993, 7593, 7569,14023, - 7572,14023, 7568, 7582, 7586, 7577, 7574, 7591, 7581,14023, - 7578, 7599, 7604, 7590, 7606, 7592, 7662, 7629, 2947, 7673, - 7685, 7691, 7631, 7703, 7721, 2358, 7722, 7742, 7589, 7626, - - 7633, 7645, 7635, 3003, 7644, 7641, 7661,14023, 7662, 7667, - 7682, 7691, 7692, 7696,14023,14023, 7705, 7706, 7697, 7702, - 7720, 7722,14023, 7763, 7714, 7726, 7731, 7719, 7719, 7733, - 7731, 7730, 7785, 7735, 7795, 7762, 3007, 7751, 7777, 0, - 7756, 7767, 7792, 7789, 7790, 7798, 7789, 7790, 7799, 7816, - 2984, 7807, 7808,14023, 7801, 7812, 7813, 0, 7800, 7806, - 7817, 2966, 7802, 2933, 7805, 7819, 7828, 7808, 7319, 7815, - 7818, 7818, 7813, 2846, 7819, 7834, 7836, 7838, 7847, 2840, - 14023, 2787, 7839, 7850, 7852, 7843,14023, 2782, 7839, 7859, - 7869, 7860,14023, 7857,14023, 7858, 7871, 7870, 7867, 7873, - - 7875, 7875, 7885, 2804, 7875, 7888, 7877, 7889, 7893, 7888, - 7952, 7914, 7953, 7469, 7968, 7972, 7891, 7913, 7926, 7920, - 7930, 2769,14023, 7911,14023, 7945,14023, 7943, 7941, 7942, - 7950, 7957,14023, 7948, 7480, 7960, 7999, 8010, 7946, 7964, - 7949, 7949, 8001, 8010, 8015, 8012, 8012, 8048, 8013,14023, - 8011, 8069, 8041, 0, 8046, 8029, 8036, 8033, 8055, 8063, - 8060, 8065,14023, 2746, 7786, 7935, 8057, 8052, 8000, 8057, - 8059, 8073, 2684, 2678, 8093,14023, 8060,14023, 8086,14023, - 8084,14023, 7329, 2563, 8081, 8089, 8087, 7759, 8094, 8089, - 8097, 8090, 8096, 8093, 8108, 8097, 8111, 8109, 8105, 8110, - - 8119, 8100, 8125, 8120, 8120,14023, 8115, 8125, 8127, 8122, - 8138, 5523, 8144, 8144, 8147, 2571, 8151, 8154, 8197, 8155, - 8157, 8164, 2497, 8141,14023, 8164,14023,14023,14023, 8169, - 14023, 8153, 8225, 2494, 8224, 8161, 8172, 8174, 8164, 8167, - 8201, 8210,14023, 8218, 8224,14023, 8250, 8245, 8246, 8233, - 8238, 8281, 8250, 8238, 8238, 8239, 0, 2453, 8010, 8058, - 8258, 8259, 8291, 8257, 8251, 8260, 2432, 2389, 8309, 8322, - 8254,14023,14023,14023, 8303, 8284, 8276, 8278,14023, 8288, - 8297, 8318, 8324, 8306, 8323, 2323, 8311, 2305,14023, 8312, - 14023, 8326, 8327, 8319, 8318, 8322,14023, 2354, 8331, 8325, - - 4327, 8333, 8327, 8369, 8339, 8346, 8376, 0, 2263, 8362, - 8364, 8379, 8381, 2251, 8381, 8369, 8006, 8407, 8427, 8436, - 14023, 8386, 8389, 8393, 2253, 8432, 8418, 8430, 8017, 8424, - 8420, 8422,14023, 8425, 8455, 8450, 8435, 8436, 8483, 8432, - 2237, 8298, 0, 2229, 8370, 0, 8434, 8435, 7426, 8458, - 8457, 8451, 8503, 8526, 8513,14023, 8465, 8503, 8499,14023, - 8519, 1998, 8521, 8525, 8509, 8513, 8516, 8517, 8516, 8530, - 8515, 8515, 8516, 8529, 8532, 8533,14023, 2050, 8533, 5114, - 14023, 5733, 8535, 8570, 8545, 8550, 8563, 0, 0, 8581, - 14023, 8566, 8580,14023,14023, 8500, 8614, 8625, 8554, 8597, - - 8059, 8586, 8640, 8231, 0, 8603, 8615, 8606, 8607, 8618, - 8613, 8650, 8628, 8637,14023, 8667, 8647, 8638, 1922, 1852, - 8656, 8659, 7736, 1714, 8227, 8647, 8666, 8666, 8719, 8658, - 8665, 8670,14023, 8684, 8681, 8687, 8672, 8678, 8695, 8696, - 8688, 8706, 8707, 7928, 7990, 8703,14023, 8705,14023, 1711, - 6826,14023, 8215, 8724, 1630, 8708, 0, 8703,14023, 8711, - 8629, 0, 8763, 8769, 0,14023, 8710, 8708, 8712, 8771, - 8709, 0, 0, 8770, 0, 8764, 8751, 8756, 8760, 8764, - 8765, 8786, 8764, 8780,14023,14023, 8782, 8783, 8769, 8788, - 1580, 8367, 1372, 8781, 8772, 8774, 8774, 8775, 8777, 8779, - - 8790, 8800,14023, 8797, 8804, 8789,14023, 8788, 8792,14023, - 14023, 8803, 8607,14023, 8230,14023, 8808,14023, 8812, 8820, - 14023, 1313, 8807, 0, 8869, 0, 8853, 0, 1065, 8823, - 8834, 8831, 8838, 8833, 8836, 8841, 8876, 1060, 989, 8846, - 8851, 8875, 8844, 8851,14023, 8856, 8857,14023, 8860, 8857, - 8847, 8852, 8854, 8853, 8865, 885,14023,14023, 8873, 8865, - 8880, 8884,14023, 8877, 929, 0, 8890, 826, 8921,14023, - 8880, 8886,14023, 8890, 8890, 8896, 8891, 0, 8905, 8297, - 8375, 832, 745, 8895, 8899, 8911, 8897, 8913,14023, 670, - 8912, 8909, 8913, 8921, 8913, 8927, 580, 475, 8923, 8371, - - 14023, 437, 8943, 483, 8926, 8924, 8930,14023, 8920, 8927, - 0, 8933, 8413, 0, 8414, 0, 8499, 8632,14023, 8937, - 14023, 8936, 8950, 8951,14023, 8944, 8946, 8960, 8943, 8962, - 8972, 0, 367, 8999, 9000, 8988, 8963, 382, 8961, 368, - 14023, 8979, 337, 262, 9020, 0, 9023, 0,14023, 8985, - 8987, 8979, 8985, 8994, 8984, 8996, 8992, 8986, 8989, 8995, - 0, 0, 0, 254, 9041, 8997, 9051, 145, 9060, 9033, - 14023,14023, 138, 109, 9034, 9033, 9046,14023,14023, 9034, - 14023, 9055, 9046, 9051, 9052, 0, 43,14023, 9078, 9087, - 9104, 9067,14023,14023, 9085, 9098, 9099,14023, 6, 9090, - - 9100,14023,14023, 9130,14023,14023,14023, 9097,14023,14023, - 9093, 9094, 9106, 9103, 9096,14023, 9108, 9109, 9111,14023, - 14023, 9173, 9191, 9209, 9227, 9245, 9263, 9281, 9299, 9317, - 9335, 9353, 9371, 9389, 9407, 9425, 9443, 9461, 9479, 9497, - 9515, 9533, 9551, 9569, 9587, 9605, 9623, 9641, 9659, 9677, - 9695, 9713, 9731, 9749, 9767, 9785, 9803, 9821, 9839, 9857, - 9875, 9893, 9911, 9929, 9947, 9965, 9983,10001,10019,10037, - 10055,10073,10091,10109,10127,10145,10163,10181,10199,10217, - 10234,10252,10270,10288,10306,10324,10341,10359,10377,10395, - 10413,10431,10449,10467,10485,10503,10521,10539,10557,10575, - - 10593,10611,10629,10647,10665,10683,10701,10719,10737,10755, - 10772,10790,10808,10826,10844,10862,10880,10898,10915,10933, - 10951,10969,10987,11005,11023,11041,11059,11077,11095,11113, - 11131,11149,11167,11185,11203,11221,11239,11256,11274,11292, - 11310,11328,11346,11364,11381,11399,11417,11435,11453,11471, - 11489,11507,11525,11543,11561,11579,11597,11615,11633,11651, - 11669,11687,11704,11722,11740,11758,11776,11794,11812,11830, - 11848,11866,11884,11895,11909,11927,11935,11951,11964,11968, - 11984,12002,12012,12028,12046,12064,12082,12099,12115,12133, - 12151,12169,12187,12205,12222,12238,12256,12265,12281,12299, - - 12317,12335,12348,12356,12367,12383,12400,12418,12436,12454, - 12472,12490,12508,12526,12544,12562,12580,12590,12598,12606, - 12621,12632,12640,12648,12664,12680,12696,12713,12731,12749, - 12767,12785,12803,12821,12839,12857,12875,12893,12911,12929, - 12947,12965,12983,12996,13004,13012,13020,13031,13047,13063, - 13071,13079,13095,13113,13131,13149,13167,13185,13203,13221, - 13239,13257,13275,13293,13311,13327,13343,13361,13371,13382, - 13398,13408,13424,13440,13453,13471,13488,13505,13522,13533, - 13549,13566,13583,13595,13611,13629,13647,13664,13682,13700, - 13716,13732,13749,13759,13775,13792,13810,13827,13845,13863, - - 13880,13897,13915,13927,13943,13960,13977,13988,14004 - } ; - -static const flex_int16_t yy_def[4210] = - { 0, - 3922, 3922, 3921, 3, 3923, 3923, 3, 3, 3924, 3924, - 3924, 3924, 3925, 3925, 3926, 3926, 3927, 3927, 3928, 3928, - 3929, 3929, 3923, 3923, 3923, 3923, 3930, 3930, 3931, 3931, - 3931, 3931, 3932, 3932, 3933, 3933, 3921, 37, 37, 37, - 3923, 3923, 3923, 3923, 3923, 3923, 3934, 3934, 3935, 3935, - 3936, 3936, 3937, 3937, 3938, 3938, 3939, 3939, 3940, 3940, - 3923, 3923, 3941, 3941, 3942, 3942, 3940, 3940, 3923, 3923, - 3943, 3943, 3944, 3944, 3921, 3921, 3921, 3921, 3921, 3921, - 3945, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 131, 3921, 3921, 3921, 3946, 3946, 3946, 3921, - 3921, 3946, 3947, 3947, 3947, 3921, 3948, 3947, 3949, 3949, - 3949, 3921, 3950, 3921, 3949, 3951, 3951, 3921, 3951, 3921, - 3921, 3952, 3921, 3921, 3921, 3952, 3953, 3952, 3954, 3954, - 3954, 3921, 3955, 3954, 3921, 3956, 3921, 3954, 3957, 3957, - 3957, 3921, 3958, 3957, 3959, 3959, 3959, 3921, 3921, 3959, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3960, 3960, 3921, 3921, - 3960, 3961, 3961, 3921, 3962, 3961, 3921, 3963, 3964, 3965, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3966, 3921, 3967, 3966, 3921, 3921, 3921, 3968, 3921, 3969, - 3921, 3968, 3921, 3921, 3921, 3970, 3970, 3970, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3971, 3921, 3971, 3971, 3971, - 3921, 3921, 3971, 3971, 3971, 3972, 3921, 3973, 3972, 3972, - 3972, 3921, 3972, 3972, 3972, 3974, 3921, 3975, 3974, 3974, - 3974, 3921, 3974, 3974, 3974, 3976, 3976, 3921, 3976, 3921, - 3976, 3977, 3921, 3977, 3921, 3978, 3979, 3980, 3979, 3977, - 3981, 3921, 3982, 3981, 3981, 3981, 3981, 3921, 3981, 3921, - - 3983, 3984, 3985, 3984, 3986, 3984, 3921, 3921, 3981, 3981, - 3987, 3921, 3988, 3987, 3987, 3987, 3921, 3987, 3987, 3987, - 3989, 3921, 3989, 3989, 3921, 3989, 3921, 3921, 3989, 3989, - 3989, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3990, 3921, 3990, 3921, 3921, 3990, - 3991, 3921, 3992, 3991, 3921, 3991, 3993, 3994, 3995, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3996, 3921, 3997, - 3996, 3921, 3996, 3921, 3998, 3921, 3999, 3998, 3921, 3998, - 4000, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4001, - 3921, 3921, 4001, 4001, 4002, 4003, 3921, 3921, 4003, 4003, - 4004, 4005, 3921, 3921, 4005, 4005, 3921, 3921, 4006, 4007, - 4006, 4008, 4009, 4010, 4010, 4010, 4009, 4011, 4012, 3921, - 3921, 4013, 4014, 4013, 4015, 4013, 4016, 4017, 4017, 4017, - 4018, 4018, 4018, 4019, 4017, 4012, 4012, 4020, 4021, 3921, - 3921, 4021, 4021, 3921, 4022, 3921, 3921, 4022, 3921, 4022, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4023, 3921, 3921, 4024, 4025, 3921, 3921, - 3921, 3921, 3921, 3921, 4026, 4027, 3921, 3921, 4028, 4029, - 3921, 3921, 4030, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 4031, 3921, 4031, 4032, - 3921, 4032, 4033, 3921, 4033, 3921, 4034, 4035, 4035, 4035, - 4036, 4034, 4036, 4036, 3921, 4037, 3921, 3921, 4037, 3921, - 4012, 3921, 4038, 4038, 4038, 4039, 4040, 4039, 4039, 4041, - 4042, 4038, 4043, 4040, 4041, 4040, 4040, 4012, 4044, 4012, - - 3921, 4044, 3921, 4044, 4044, 4045, 4012, 4046, 3921, 4046, - 4047, 3921, 4047, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4048, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 4049, 3921, 4050, 3921, 3921, - - 3921, 3921, 3921, 4051, 3921, 4052, 3921, 4053, 4053, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 4054, 3921, 4055, 3921, 4056, 4057, 4058, 4059, 3921, - 4038, 4060, 4060, 4060, 4041, 4038, 4040, 4041, 4040, 4061, - 4040, 4062, 4063, 4064, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4065, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4048, 4066, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4067, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 4068, 3921, 3921, 3921, 3921, 4069, 3921, - 4070, 3921, 4071, 4071, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 4057, 4058, 4057, 4058, - 4060, 4040, 4060, 4041, 4060, 4041, 4072, 4041, 4041, 4040, - 4062, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 4065, 4073, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 4074, 3921, 3921, 4066, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4067, 3921, - 4067, 4075, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 4071, 4071, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 4060, 4041, 4061, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4073, 4076, - 4065, 4073, 3921, 3921, 3921, 3921, 3921, 3921, 4077, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4067, 3921, 4075, - 3921, 3921, 3921, 4071, 4078, 3921, 3921, 4079, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 4041, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 4065, 4073, 3921, 4076, 4065, - 3921, 4080, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4067, 3921, 4071, 4081, 4082, 3921, 3921, 4083, 4079, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4084, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4073, 3921, - 4076, 4076, 3921, 4080, 4085, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 4086, 4081, 4081, 4082, - 4082, 3921, 3921, 4083, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4087, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4088, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 4084, 4089, 4084, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4090, 3921, - 4085, 4091, 4085, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 4092, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 4093, 4094, 4081, 3921, 4081, 4082, 4082, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4095, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4087, - 4096, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 4097, 3921, 3921, 3921, 3921, 4098, 4088, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 4084, 4089, 3921, 4089, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 4090, 4099, 4100, 3921, - 4085, 4091, 3921, 4091, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 4092, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4093, 4101, 4094, - 4102, 3921, 3921, 3921, 3921, 3921, 4103, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 4104, 4095, 4105, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4096, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 4097, 3921, 3921, 3921, 3921, 4098, 3921, 3921, 3921, 3921, - 3921, 4106, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4089, 3921, 4084, - 4089, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4107, 4099, 4108, 4090, 4109, 4110, 4099, 4111, 3921, 3921, - - 4112, 3921, 4113, 4112, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4114, - 4115, 3921, 4116, 4117, 3921, 3921, 3921, 3921, 4118, 4119, - 4120, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4121, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4122, - 4123, 4124, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4125, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4126, 3921, 3921, 4127, 4127, 4128, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4129, 4130, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4131, 4132, 4133, 4134, 3921, 4135, 4136, 4132, 4137, 4138, - 4139, 4140, 4131, 4133, 4140, 4141, 4142, 4143, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4144, 4145, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 4146, 4147, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 4148, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4149, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 4150, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 4151, 4152, 3921, 3921, 3921, 4153, 3921, 4153, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4154, - 3921, 3921, 3921, 3921, 3921, 3921, 4133, 4155, 4131, 4156, - 4133, 4133, 4157, 3921, 3921, 4155, 4155, 4158, 4158, 4159, - 4160, 4141, 4160, 4160, 4161, 4161, 4131, 4162, 4162, 4163, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4164, 3921, - 4146, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 4165, 4166, 3921, 3921, 3921, 3921, 4167, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4168, 4169, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4170, 3921, - 3921, 3921, 3921, 4153, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 4131, 4133, 3921, 4155, 4131, 4159, 4160, 4156, - 4162, 4133, 3921, 4158, 4155, 4141, 4160, 4141, 4171, 4160, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 4164, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4165, - - 4172, 4166, 3921, 3921, 4167, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4168, 3921, - 3921, 3921, 4173, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 4153, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 4133, 4155, 4159, 4156, - 4156, 4162, 4158, 4160, 4171, 4141, 4160, 4171, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4174, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 4172, 3921, 3921, 4175, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4173, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4133, 4155, 4171, 4141, 4160, 4171, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4175, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4176, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 4177, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4171, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 4176, 4176, 4178, 4179, - 3921, 3921, 3921, 3921, 3921, 3921, 4177, 4177, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4180, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4178, 4178, 4181, 4179, 4179, 4182, 3921, 3921, 4183, 3921, - 3921, 3921, 4177, 4177, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4180, 4184, 3921, - 3921, 3921, 3921, 3921, 3921, 4185, 4186, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 4187, 3921, 4188, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4181, 4182, - 3921, 3921, 4183, 3921, 4183, 3921, 3921, 3921, 4177, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 4184, 3921, 3921, 3921, - 4185, 4189, 4186, 4186, 4190, 3921, 3921, 4191, 3921, 3921, - 3921, 4187, 4192, 4188, 4193, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 4183, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 4189, 3921, 4194, 4191, 4195, 4196, 4192, 4193, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 4183, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 4194, 4195, 4196, 3921, 4196, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 4197, 3921, 4198, - 4199, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 4196, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4197, 3921, 4198, 4200, 4199, 4201, 4202, 4203, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 4204, 3921, 3921, 4205, 4196, 3921, 3921, 3921, 3921, - 3921, 3921, 4200, 4201, 4202, 4206, 4203, 4207, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 4204, 4208, 4209, 4205, 4205, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 4206, 4207, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 4208, 4209, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 0, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921 - } ; - -static const flex_int16_t yy_nxt[14111] = - { 0, - 3921, 77, 78, 79, 77, 118, 80, 81, 118, 118, - 283, 284, 118, 3921, 82, 119, 120, 121, 119, 122, - 123, 3921, 129, 98, 124, 129, 130, 98, 125, 1390, - 83, 135, 84, 85, 3909, 269, 136, 86, 87, 88, - 315, 316, 98, 89, 90, 91, 135, 92, 93, 3903, - 131, 136, 94, 1108, 138, 139, 95, 138, 83, 873, - 84, 85, 140, 269, 141, 86, 87, 88, 256, 270, - 126, 89, 90, 91, 1391, 92, 93, 132, 283, 284, - 94, 77, 78, 79, 77, 257, 80, 81, 129, 98, - 256, 129, 130, 271, 82, 157, 158, 270, 157, 127, - - 96, 272, 129, 98, 233, 129, 130, 257, 234, 142, - 83, 235, 84, 85, 273, 3894, 131, 86, 87, 88, - 274, 271, 1008, 89, 90, 91, 275, 92, 93, 272, - 133, 280, 94, 526, 318, 527, 95, 318, 83, 1009, - 84, 85, 273, 132, 3893, 86, 87, 88, 274, 3890, - 159, 89, 90, 91, 275, 92, 93, 132, 236, 280, - 94, 96, 97, 98, 96, 97, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 99, 96, 96, 100, 101, 102, 103, 104, 105, - - 96, 96, 96, 106, 96, 107, 108, 109, 110, 111, - 112, 113, 96, 114, 115, 96, 96, 116, 96, 99, - 96, 96, 100, 101, 102, 103, 104, 105, 96, 96, - 96, 106, 96, 107, 108, 109, 110, 111, 112, 113, - 96, 114, 115, 96, 96, 96, 96, 117, 119, 120, - 121, 119, 122, 123, 281, 129, 98, 124, 129, 130, - 3921, 125, 138, 139, 2289, 138, 144, 145, 3872, 144, - 140, 146, 141, 228, 147, 229, 144, 145, 2491, 144, - 230, 146, 281, 133, 147, 150, 151, 347, 150, 347, - 152, 150, 151, 153, 150, 526, 152, 527, 154, 153, - - 228, 282, 229, 126, 154, 157, 158, 230, 157, 267, - 132, 489, 267, 569, 276, 180, 181, 142, 180, 289, - 182, 148, 277, 183, 569, 163, 164, 231, 163, 282, - 165, 148, 127, 96, 348, 166, 186, 187, 163, 188, - 155, 167, 276, 3871, 189, 278, 155, 289, 163, 164, - 277, 163, 163, 165, 231, 290, 268, 347, 166, 347, - 159, 163, 279, 645, 167, 490, 170, 171, 295, 170, - 184, 172, 3869, 278, 173, 163, 174, 301, 357, 175, - 168, 358, 176, 290, 170, 171, 3867, 170, 302, 172, - 279, 190, 173, 177, 174, 3862, 295, 175, 186, 187, - - 176, 188, 646, 168, 348, 301, 189, 474, 475, 163, - 163, 177, 497, 498, 170, 171, 302, 170, 303, 172, - 224, 178, 173, 224, 174, 225, 224, 175, 359, 224, - 176, 225, 163, 163, 252, 170, 171, 253, 170, 178, - 172, 177, 252, 173, 285, 174, 303, 285, 175, 180, - 181, 176, 180, 190, 182, 313, 252, 183, 214, 215, - 216, 217, 177, 191, 314, 214, 215, 216, 217, 178, - 191, 191, 296, 351, 297, 226, 441, 487, 191, 441, - 487, 226, 488, 313, 254, 438, 439, 440, 438, 3769, - 178, 502, 314, 3804, 502, 503, 504, 283, 284, 286, - - 296, 352, 297, 3832, 184, 191, 192, 193, 194, 192, - 191, 195, 191, 191, 191, 191, 191, 191, 191, 196, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 197, 198, 199, 200, 201, - 191, 191, 191, 202, 191, 191, 203, 204, 205, 206, - 207, 191, 208, 209, 210, 191, 211, 191, 212, 191, - 191, 213, 191, 197, 198, 199, 200, 201, 191, 191, - 191, 202, 191, 191, 203, 204, 205, 206, 207, 191, - 208, 209, 210, 191, 211, 191, 212, 191, 191, 191, - 191, 191, 218, 219, 220, 221, 359, 222, 218, 219, - - 220, 221, 369, 222, 218, 219, 220, 221, 3831, 222, - 218, 219, 220, 221, 233, 222, 291, 252, 234, 242, - 253, 235, 315, 316, 352, 252, 259, 242, 292, 260, - 352, 261, 327, 259, 259, 327, 260, 557, 261, 252, - 557, 259, 590, 318, 291, 590, 318, 223, 259, 422, - 243, 242, 244, 223, 422, 259, 292, 395, 243, 223, - 244, 245, 246, 247, 248, 223, 2289, 254, 236, 245, - 246, 247, 248, 242, 263, 264, 262, 263, 243, 619, - 244, 414, 243, 262, 244, 400, 243, 265, 244, 245, - 246, 247, 248, 245, 246, 247, 248, 245, 246, 247, - - 248, 423, 287, 489, 243, 288, 244, 293, 2877, 400, - 243, 298, 244, 306, 294, 245, 246, 247, 248, 428, - 304, 245, 246, 247, 248, 299, 620, 3824, 307, 265, - 287, 300, 243, 288, 244, 293, 305, 308, 407, 298, - 408, 306, 294, 245, 246, 247, 248, 400, 304, 3818, - 310, 584, 309, 299, 311, 312, 307, 490, 357, 300, - 446, 358, 584, 2289, 305, 308, 319, 320, 321, 319, - 452, 322, 323, 320, 321, 323, 412, 324, 310, 413, - 309, 398, 311, 312, 325, 321, 321, 325, 446, 326, - 323, 320, 321, 323, 447, 324, 455, 342, 452, 349, - - 343, 448, 349, 353, 354, 3037, 422, 347, 359, 347, - 347, 422, 347, 449, 344, 345, 364, 365, 474, 475, - 357, 320, 447, 358, 455, 342, 414, 320, 343, 448, - 360, 377, 378, 360, 377, 357, 3817, 412, 358, 321, - 413, 449, 344, 345, 459, 320, 328, 329, 330, 331, - 332, 333, 465, 334, 350, 472, 335, 355, 423, 662, - 336, 367, 337, 338, 368, 339, 340, 341, 285, 367, - 363, 285, 459, 873, 328, 329, 330, 331, 332, 333, - 465, 334, 3804, 472, 335, 361, 379, 414, 336, 367, - 337, 338, 368, 339, 340, 341, 370, 367, 663, 370, - - 741, 367, 377, 378, 368, 377, 374, 375, 450, 367, - 367, 369, 874, 368, 377, 380, 381, 377, 367, 383, - 383, 451, 383, 427, 383, 383, 383, 473, 383, 347, - 383, 347, 383, 645, 637, 3801, 450, 637, 383, 369, - 392, 386, 3795, 393, 470, 394, 383, 471, 392, 451, - 441, 371, 383, 441, 742, 473, 2289, 379, 383, 388, - 373, 383, 392, 383, 869, 383, 383, 508, 383, 379, - 383, 388, 646, 453, 384, 471, 348, 1567, 383, 424, - 384, 396, 425, 454, 396, 383, 392, 422, 460, 393, - 395, 394, 383, 3781, 392, 509, 461, 392, 3048, 514, - - 393, 453, 394, 383, 383, 392, 662, 625, 392, 383, - 383, 454, 499, 389, 668, 499, 460, 500, 392, 392, - 390, 393, 1568, 394, 461, 391, 392, 509, 391, 401, - 392, 520, 871, 403, 426, 404, 397, 748, 405, 2265, - 392, 2266, 383, 388, 409, 410, 569, 395, 392, 383, - 383, 393, 392, 394, 626, 415, 392, 569, 415, 520, - 412, 669, 521, 413, 3780, 419, 420, 501, 395, 412, - 392, 3770, 413, 659, 429, 430, 422, 497, 498, 442, - 406, 422, 432, 433, 434, 432, 456, 522, 443, 466, - 521, 749, 444, 467, 462, 435, 523, 445, 399, 468, - - 506, 463, 744, 745, 457, 506, 458, 442, 469, 391, - 416, 464, 503, 504, 456, 522, 443, 466, 506, 418, - 444, 467, 462, 506, 523, 445, 506, 468, 431, 463, - 512, 506, 457, 513, 458, 512, 469, 436, 513, 464, - 476, 477, 478, 476, 480, 477, 478, 481, 482, 483, - 484, 482, 507, 485, 482, 483, 484, 491, 524, 485, - 492, 493, 494, 492, 512, 495, 525, 513, 529, 531, - 507, 530, 538, 2267, 529, 2268, 529, 530, 510, 542, - 514, 674, 529, 543, 536, 514, 524, 537, 267, 536, - 529, 267, 536, 544, 525, 436, 529, 534, 545, 436, - - 534, 263, 264, 486, 263, 536, 536, 542, 537, 486, - 536, 543, 546, 536, 516, 496, 547, 548, 531, 549, - 550, 544, 551, 552, 533, 553, 545, 536, 675, 556, - 285, 554, 559, 285, 538, 268, 560, 561, 562, 563, - 546, 564, 565, 566, 547, 548, 555, 549, 550, 567, - 551, 552, 568, 553, 570, 540, 265, 556, 571, 554, - 559, 572, 573, 574, 560, 561, 562, 563, 575, 564, - 565, 566, 576, 579, 555, 582, 577, 567, 578, 583, - 568, 585, 570, 580, 581, 286, 571, 586, 587, 572, - 573, 574, 588, 589, 323, 327, 575, 323, 327, 324, - - 576, 579, 753, 582, 577, 325, 578, 583, 325, 585, - 326, 580, 581, 593, 594, 586, 587, 595, 598, 3763, - 588, 589, 319, 320, 321, 319, 888, 322, 323, 320, - 321, 323, 604, 324, 325, 321, 321, 325, 599, 326, - 596, 593, 594, 597, 606, 595, 598, 605, 607, 754, - 265, 610, 600, 601, 602, 1326, 603, 611, 612, 614, - 604, 1115, 613, 615, 617, 608, 599, 682, 596, 618, - 609, 597, 606, 613, 987, 605, 607, 320, 3625, 610, - 600, 601, 602, 320, 603, 611, 612, 614, 616, 321, - 613, 615, 617, 608, 890, 682, 349, 618, 609, 349, - - 631, 613, 600, 601, 347, 367, 347, 353, 354, 621, - 623, 355, 624, 623, 619, 347, 616, 347, 347, 347, - 347, 347, 357, 363, 360, 358, 627, 360, 988, 357, - 600, 601, 358, 364, 365, 357, 629, 757, 358, 629, - 625, 357, 630, 683, 358, 367, 357, 632, 368, 358, - 2471, 350, 2472, 367, 373, 370, 622, 633, 370, 2289, - 367, 620, 355, 368, 441, 348, 348, 441, 367, 374, - 375, 683, 359, 628, 367, 635, 631, 368, 635, 361, - 367, 367, 367, 368, 758, 363, 636, 626, 367, 684, - 367, 359, 584, 368, 412, 369, 359, 413, 367, 377, - - 378, 3037, 377, 584, 634, 377, 378, 685, 377, 650, - 371, 377, 380, 381, 377, 377, 638, 684, 377, 383, - 383, 686, 383, 632, 373, 873, 383, 383, 399, 383, - 369, 383, 383, 392, 733, 685, 648, 733, 394, 383, - 369, 392, 383, 640, 414, 383, 383, 383, 687, 686, - 2798, 419, 420, 383, 379, 640, 651, 2973, 668, 688, - 379, 735, 383, 388, 735, 383, 379, 383, 487, 383, - 379, 487, 422, 488, 390, 388, 687, 422, 643, 383, - 388, 384, 383, 649, 382, 383, 383, 688, 383, 383, - 383, 392, 388, 1320, 393, 643, 394, 641, 383, 392, - - 2799, 429, 430, 383, 383, 669, 383, 2974, 674, 431, - 383, 383, 383, 392, 676, 392, 399, 389, 393, 399, - 394, 399, 689, 392, 423, 396, 642, 640, 396, 2265, - 392, 2266, 660, 393, 647, 394, 3693, 392, 392, 418, - 390, 395, 670, 399, 409, 410, 383, 388, 392, 806, - 689, 648, 392, 394, 392, 675, 392, 393, 3718, 394, - 806, 677, 392, 383, 388, 395, 315, 316, 431, 383, - 383, 406, 285, 676, 391, 285, 392, 391, 391, 392, - 397, 391, 653, 392, 654, 809, 403, 655, 404, 671, - 412, 405, 487, 413, 658, 487, 809, 488, 649, 661, - - 399, 392, 693, 673, 399, 392, 869, 412, 391, 391, - 413, 391, 391, 392, 392, 3714, 403, 664, 404, 404, - 677, 405, 405, 415, 658, 658, 415, 427, 412, 656, - 693, 413, 1100, 406, 666, 392, 391, 666, 422, 392, - 418, 667, 393, 422, 394, 392, 672, 392, 393, 672, - 394, 412, 424, 392, 413, 425, 743, 414, 657, 743, - 422, 392, 391, 406, 665, 678, 1115, 392, 679, 680, - 3693, 422, 697, 422, 871, 698, 422, 699, 416, 620, - 694, 432, 433, 434, 432, 438, 439, 440, 438, 395, - 431, 695, 391, 391, 435, 395, 690, 700, 691, 701, - - 697, 414, 692, 698, 702, 699, 704, 426, 694, 705, - 707, 706, 708, 710, 712, 703, 713, 715, 714, 695, - 423, 716, 709, 423, 690, 700, 691, 701, 730, 731, - 692, 711, 702, 887, 704, 888, 436, 705, 707, 706, - 708, 710, 712, 703, 713, 715, 714, 732, 736, 716, - 709, 736, 502, 737, 1115, 502, 730, 731, 3686, 711, - 717, 718, 739, 719, 506, 739, 720, 740, 721, 506, - 722, 723, 724, 761, 725, 732, 726, 727, 728, 729, - 476, 477, 478, 476, 480, 477, 478, 480, 717, 718, - 746, 719, 510, 746, 720, 747, 721, 755, 722, 723, - - 724, 761, 725, 890, 726, 727, 728, 729, 480, 477, - 478, 481, 482, 483, 484, 482, 507, 485, 492, 493, - 494, 492, 1324, 495, 482, 483, 484, 491, 3685, 485, - 762, 492, 493, 494, 492, 436, 495, 499, 502, 436, - 499, 502, 500, 750, 756, 506, 750, 763, 751, 512, - 506, 516, 513, 512, 759, 764, 513, 767, 762, 2136, - 2136, 529, 529, 436, 765, 530, 774, 486, 557, 529, - 529, 557, 775, 496, 529, 763, 533, 530, 1115, 486, - 776, 777, 529, 764, 529, 536, 496, 771, 537, 540, - 536, 1102, 501, 536, 774, 778, 529, 510, 779, 514, - - 775, 760, 536, 516, 768, 769, 540, 536, 776, 777, - 536, 766, 531, 780, 536, 781, 782, 537, 783, 536, - 784, 800, 536, 778, 533, 801, 779, 802, 803, 804, - 802, 805, 807, 808, 772, 538, 536, 590, 626, 2973, - 590, 780, 810, 781, 782, 887, 783, 811, 784, 800, - 812, 813, 770, 801, 3649, 3634, 803, 804, 814, 805, - 807, 808, 815, 816, 540, 785, 786, 787, 788, 817, - 810, 789, 790, 791, 818, 811, 819, 792, 812, 813, - 793, 824, 794, 795, 796, 797, 814, 798, 799, 2799, - 815, 816, 825, 785, 786, 787, 788, 817, 820, 789, - - 790, 791, 818, 826, 819, 792, 822, 823, 793, 824, - 794, 795, 796, 797, 827, 798, 799, 821, 828, 829, - 825, 830, 831, 832, 835, 834, 820, 835, 836, 837, - 838, 826, 839, 840, 822, 823, 834, 841, 842, 843, - 844, 833, 827, 845, 846, 821, 828, 829, 847, 830, - 831, 832, 848, 849, 850, 851, 836, 837, 838, 852, - 839, 840, 853, 854, 855, 841, 842, 843, 844, 833, - 856, 845, 846, 351, 422, 347, 847, 347, 1107, 422, - 848, 849, 850, 851, 869, 623, 859, 852, 623, 859, - 853, 854, 855, 347, 347, 347, 347, 357, 856, 629, - - 358, 355, 629, 862, 357, 869, 862, 358, 357, 367, - 635, 358, 368, 635, 2289, 367, 865, 367, 368, 865, - 390, 367, 857, 367, 368, 637, 911, 866, 637, 367, - 866, 645, 878, 383, 640, 3921, 383, 1068, 383, 888, - 348, 348, 879, 3921, 870, 645, 640, 860, 1068, 867, - 383, 640, 871, 383, 359, 382, 3048, 3603, 359, 863, - 383, 733, 2515, 640, 733, 369, 867, 383, 388, 1115, - 875, 369, 383, 871, 428, 662, 399, 383, 889, 399, - 876, 399, 915, 643, 383, 388, 901, 383, 641, 383, - 392, 3589, 885, 393, 383, 394, 902, 388, 392, 662, - - 643, 977, 431, 399, 977, 872, 412, 890, 1118, 413, - 915, 383, 392, 880, 663, 662, 391, 642, 640, 391, - 391, 392, 389, 391, 653, 392, 654, 916, 653, 655, - 654, 656, 883, 655, 642, 640, 883, 917, 904, 647, - 881, 678, 590, 392, 679, 590, 662, 392, 918, 422, - 735, 877, 388, 735, 1122, 916, 908, 399, 3577, 886, - 887, 919, 3570, 978, 920, 917, 978, 903, 383, 388, - 981, 656, 2289, 981, 391, 656, 918, 391, 391, 392, - 3568, 391, 891, 392, 654, 905, 893, 655, 894, 919, - 883, 895, 920, 3554, 896, 913, 423, 428, 914, 921, - - 657, 391, 923, 422, 657, 392, 873, 391, 391, 924, - 898, 391, 392, 392, 3314, 403, 403, 404, 404, 925, - 899, 405, 1755, 658, 658, 926, 1567, 921, 743, 892, - 923, 743, 927, 897, 392, 392, 3553, 924, 391, 399, - 928, 898, 399, 392, 399, 874, 403, 925, 404, 989, - 423, 899, 989, 926, 658, 660, 672, 3458, 657, 672, - 927, 412, 406, 659, 413, 392, 399, 931, 928, 391, - 666, 1391, 391, 666, 392, 392, 266, 403, 393, 404, - 394, 910, 405, 392, 910, 658, 412, 993, 2134, 413, - 993, 900, 391, 659, 406, 931, 392, 392, 3520, 907, - - 932, 933, 907, 935, 392, 936, 929, 393, 2515, 394, - 937, 414, 392, 930, 930, 930, 930, 930, 930, 930, - 930, 930, 900, 399, 906, 395, 392, 938, 932, 933, - 939, 935, 940, 936, 941, 942, 414, 943, 937, 945, - 951, 802, 266, 952, 802, 736, 953, 954, 736, 958, - 737, 959, 961, 391, 395, 938, 946, 964, 939, 965, - 940, 966, 941, 942, 967, 943, 960, 945, 951, 947, - 948, 952, 949, 950, 953, 954, 955, 958, 956, 959, - 961, 962, 957, 970, 946, 964, 968, 965, 976, 966, - 508, 963, 967, 835, 960, 969, 835, 947, 948, 3508, - - 949, 950, 1000, 971, 955, 972, 956, 973, 506, 962, - 957, 970, 979, 506, 968, 979, 976, 980, 510, 963, - 3475, 739, 982, 969, 739, 982, 740, 983, 1001, 985, - 1000, 971, 985, 972, 986, 973, 746, 990, 1002, 746, - 990, 747, 991, 750, 994, 1003, 750, 994, 751, 995, - 512, 1010, 1011, 513, 529, 1012, 1001, 530, 2876, 1013, - 996, 1014, 529, 1015, 536, 1016, 1002, 537, 1017, 536, - 1018, 1019, 536, 1003, 1023, 2498, 529, 1020, 1033, 1010, - 1011, 1035, 3469, 1012, 1036, 1037, 536, 1013, 3468, 1014, - 1042, 1015, 1021, 1016, 1024, 1022, 1017, 1034, 1018, 1019, - - 998, 1025, 1023, 1027, 1004, 1020, 1033, 1028, 1026, 1035, - 1030, 1029, 1036, 1037, 1006, 1040, 1038, 1043, 1042, 1044, - 1021, 1045, 1024, 1022, 1031, 1034, 1032, 1046, 1047, 1025, - 1041, 1027, 1039, 1051, 1052, 1028, 1026, 1048, 1030, 1029, - 1054, 1055, 1056, 1040, 1038, 1043, 1057, 1044, 1048, 1045, - 3458, 1058, 1031, 1059, 1032, 1046, 1047, 1060, 1041, 1062, - 1039, 1051, 1052, 1063, 1064, 1065, 1066, 1067, 1054, 1055, - 1056, 1069, 1070, 1071, 1057, 1073, 1074, 1077, 1049, 1058, - 2515, 1059, 1078, 1079, 1080, 1060, 1075, 1062, 1081, 1082, - 1083, 1063, 1064, 1065, 1066, 1067, 1084, 1075, 1085, 1069, - - 1070, 1071, 1086, 1073, 1074, 1077, 1087, 1088, 1076, 1089, - 1078, 1079, 1080, 1090, 1092, 1093, 1081, 1082, 1083, 1094, - 1095, 1091, 1096, 1097, 1084, 1098, 1085, 1099, 1104, 1101, - 1086, 355, 3412, 367, 1087, 1088, 1076, 1089, 1124, 3397, - 1112, 1090, 1092, 1093, 3392, 1126, 888, 1094, 1095, 1091, - 1096, 1097, 1128, 1098, 859, 1099, 363, 859, 862, 1103, - 390, 862, 347, 357, 347, 373, 358, 866, 1105, 865, - 866, 869, 865, 390, 367, 632, 622, 368, 383, 640, - 1128, 383, 367, 383, 873, 669, 418, 835, 1106, 1125, - 835, 640, 675, 1110, 867, 383, 640, 3391, 383, 392, - - 383, 1129, 1109, 3385, 394, 383, 628, 392, 640, 348, - 1202, 867, 399, 359, 890, 634, 1130, 977, 391, 1131, - 977, 391, 383, 392, 369, 431, 653, 1132, 1111, 1129, - 1127, 655, 978, 641, 883, 978, 671, 3375, 391, 871, - 651, 391, 428, 392, 1130, 392, 653, 1131, 654, 649, - 872, 655, 1113, 1115, 883, 1132, 391, 754, 3191, 391, - 888, 392, 642, 640, 653, 392, 1111, 1133, 1134, 655, - 3373, 399, 883, 656, 1708, 2498, 1138, 677, 1139, 642, - 640, 391, 399, 392, 391, 399, 392, 399, 3364, 893, - 1141, 894, 1506, 884, 895, 1133, 1134, 896, 885, 1114, - - 399, 1143, 657, 399, 1138, 399, 1139, 391, 392, 399, - 391, 884, 392, 3350, 2515, 653, 1117, 654, 1141, 1709, - 655, 979, 657, 883, 979, 1144, 980, 399, 890, 1143, - 1145, 1146, 1147, 1204, 392, 1148, 887, 656, 391, 392, - 657, 391, 393, 392, 394, 1075, 893, 392, 894, 913, - 3292, 895, 914, 1144, 896, 897, 1075, 422, 1145, 1146, - 1147, 392, 1116, 1148, 1149, 392, 887, 1190, 391, 391, - 1190, 391, 391, 392, 392, 1457, 893, 1120, 1119, 894, - 758, 895, 895, 890, 896, 896, 1457, 981, 3284, 395, - 981, 657, 1149, 897, 392, 392, 391, 393, 391, 394, - - 510, 391, 392, 392, 423, 1203, 1123, 907, 404, 1150, - 907, 405, 392, 1135, 658, 393, 392, 394, 1136, 1151, - 392, 1152, 1153, 897, 1121, 391, 1156, 1157, 910, 1158, - 1137, 910, 1159, 412, 392, 982, 413, 1150, 982, 1191, - 983, 1135, 1191, 3279, 395, 1194, 1136, 1151, 1194, 1152, - 1153, 3254, 756, 665, 1156, 1157, 1160, 1158, 1137, 1161, - 1159, 1162, 395, 1142, 1142, 1142, 1142, 1142, 1142, 1142, - 1142, 1142, 930, 930, 930, 930, 930, 930, 930, 930, - 930, 1165, 391, 414, 1160, 1163, 1166, 1161, 1164, 1162, - 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1177, - - 1179, 1180, 1182, 1178, 1181, 1183, 1184, 1185, 1186, 1165, - 1187, 1189, 1192, 3240, 1166, 1192, 1164, 1193, 1167, 1168, - 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1177, 1179, 1180, - 1182, 1178, 1181, 1183, 1184, 1185, 1186, 985, 1187, 1189, - 985, 1195, 986, 1206, 1195, 989, 1196, 990, 989, 1207, - 990, 1198, 991, 1199, 1198, 1208, 1199, 993, 1200, 994, - 993, 1210, 994, 1201, 995, 516, 1201, 529, 1205, 1212, - 1209, 1206, 1215, 536, 1216, 529, 1211, 1207, 536, 1217, - 533, 536, 1218, 1208, 1219, 1220, 1221, 2267, 540, 2268, - 1222, 1223, 1224, 1225, 1226, 3235, 1227, 1228, 1233, 1236, - - 1215, 1237, 1216, 1229, 1230, 1231, 1232, 1217, 768, 1238, - 1218, 3921, 1219, 1220, 1221, 760, 772, 766, 1222, 1223, - 1224, 1225, 1226, 770, 1227, 1228, 1233, 1236, 1239, 1237, - 1240, 1229, 1230, 1231, 1232, 1234, 1241, 1238, 1242, 1235, - 1243, 1244, 1245, 1248, 1251, 1249, 1246, 1253, 1247, 1250, - 1254, 1255, 1256, 1257, 1258, 2515, 1239, 1263, 1240, 2515, - 1264, 1252, 1267, 1234, 1241, 1268, 1242, 1235, 1243, 1244, - 1245, 1248, 1251, 1249, 1246, 1253, 1247, 1250, 1254, 1255, - 1256, 1257, 1258, 1259, 1265, 1263, 1269, 1260, 1264, 1252, - 1267, 1270, 1271, 1268, 1261, 1265, 1262, 2515, 1272, 1273, - - 1274, 1275, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, - 1898, 1259, 1292, 1293, 1269, 1260, 1294, 1295, 1296, 1270, - 1271, 1297, 1261, 1298, 1262, 1266, 1272, 1273, 1274, 1275, - 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, - 1292, 1293, 1287, 1299, 1294, 1295, 1296, 1288, 1300, 1297, - 1301, 1298, 1302, 1289, 1303, 1304, 1305, 1290, 1306, 1291, - 1307, 1308, 1309, 1310, 1311, 1312, 1285, 1286, 1313, 1314, - 1287, 1299, 1315, 1316, 351, 1288, 1300, 888, 1301, 888, - 1302, 1289, 1303, 1304, 1305, 1290, 1306, 1291, 1307, 1308, - 1309, 1310, 1311, 1312, 428, 1319, 1313, 1314, 869, 1332, - - 1315, 1316, 355, 383, 640, 1328, 383, 391, 383, 1334, - 391, 1323, 392, 1115, 888, 653, 1317, 654, 1325, 867, - 1321, 1335, 431, 883, 399, 1336, 3045, 1332, 1190, 1337, - 383, 1190, 1338, 3043, 392, 1341, 1342, 1334, 391, 1345, - 3180, 391, 1347, 392, 884, 890, 1327, 890, 654, 1335, - 3171, 655, 1329, 1336, 883, 2799, 399, 1337, 641, 399, - 1338, 399, 656, 1341, 1342, 391, 1320, 1345, 391, 1457, - 1347, 391, 1117, 392, 2975, 1659, 893, 1331, 1119, 3128, - 1457, 895, 1324, 399, 896, 662, 1659, 1318, 640, 391, - 1348, 1322, 391, 892, 392, 392, 399, 893, 3123, 894, - - 1349, 1350, 895, 399, 391, 896, 399, 391, 399, 392, - 1339, 897, 893, 1351, 894, 1353, 392, 895, 1348, 660, - 896, 1354, 657, 887, 905, 3115, 1340, 1356, 1349, 1350, - 399, 392, 1191, 1393, 1192, 1191, 1393, 1192, 1339, 1193, - 3095, 1351, 1357, 1353, 897, 3089, 1358, 1359, 1360, 1354, - 1361, 1362, 1364, 1346, 1340, 1356, 1365, 1366, 406, 1330, - 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1367, - 1357, 1368, 1369, 1322, 1358, 1359, 1360, 1370, 1361, 1362, - 1364, 1371, 1372, 1373, 1365, 1366, 1374, 399, 1363, 1363, - 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1367, 1375, 1368, - - 1369, 1376, 1377, 1378, 1379, 1370, 1380, 1381, 1383, 1371, - 1372, 1373, 1384, 1385, 1374, 1386, 1387, 1194, 1195, 1394, - 1194, 1195, 1394, 1196, 1198, 1397, 1375, 1198, 1397, 1376, - 1377, 1378, 1379, 508, 1380, 1381, 1383, 1398, 1399, 1400, - 1384, 1385, 1395, 1386, 1387, 1395, 1199, 1396, 1403, 1199, - 1201, 1200, 1404, 1201, 1405, 1406, 1407, 1408, 1409, 1410, - 1411, 510, 1412, 1413, 1414, 1398, 1399, 1400, 1415, 1416, - 1419, 1417, 1420, 1421, 1422, 1423, 1403, 1418, 1424, 1425, - 1404, 1426, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1427, - 1412, 1413, 1414, 1428, 1429, 1430, 1415, 1416, 1419, 1417, - - 1420, 1421, 1422, 1423, 1431, 1418, 1424, 1425, 1432, 1426, - 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1427, 1440, 1442, - 1443, 1428, 1429, 1430, 1444, 1445, 1446, 1447, 1448, 1449, - 1450, 1451, 1431, 1441, 1452, 1456, 1432, 1458, 1433, 1434, - 1435, 1436, 1437, 1438, 1439, 1453, 1440, 1442, 1443, 1459, - 1454, 1455, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, - 1460, 1441, 1452, 1456, 1462, 1458, 1463, 1464, 1465, 1467, - 1468, 1469, 1470, 1453, 1472, 1474, 1475, 1459, 1454, 1455, - 1476, 1477, 1479, 1480, 1481, 1483, 1484, 1478, 1460, 1485, - 1486, 1487, 1462, 1488, 1463, 1464, 1465, 1467, 1468, 1469, - - 1470, 1489, 1472, 1474, 1475, 1490, 1491, 1492, 1476, 1477, - 1479, 1480, 1481, 1483, 1484, 1478, 1493, 1485, 1486, 1487, - 1494, 1488, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1489, - 1502, 1503, 1504, 1490, 1491, 1492, 869, 888, 1505, 2929, - 1393, 1751, 1508, 1393, 1493, 1511, 888, 2471, 1494, 2472, - 1495, 1496, 1497, 1498, 1499, 1500, 1501, 399, 1502, 1503, - 1504, 391, 399, 1512, 391, 399, 392, 399, 662, 893, - 1508, 894, 1513, 1511, 895, 870, 889, 896, 885, 3921, - 1509, 1843, 1510, 1514, 1515, 1114, 1391, 1516, 392, 399, - 1517, 1512, 1843, 391, 1518, 1523, 391, 1524, 392, 1525, - - 1513, 1507, 1526, 894, 871, 890, 895, 1529, 1509, 896, - 1510, 1514, 1515, 1527, 890, 1516, 897, 656, 1517, 1528, - 391, 1520, 1518, 1523, 1520, 1524, 1520, 1525, 1533, 1534, - 1526, 1521, 1536, 1542, 1520, 659, 1543, 1531, 1546, 1547, - 1548, 1527, 1549, 1532, 1550, 1551, 887, 1528, 1121, 1394, - 1395, 1571, 1394, 1395, 1571, 1396, 1533, 1534, 1552, 1553, - 1536, 1542, 1554, 1555, 1543, 1531, 1546, 1547, 1548, 1556, - 1549, 1532, 1550, 1551, 1557, 1558, 1522, 1363, 1363, 1363, - 1363, 1363, 1363, 1363, 1363, 1363, 1552, 1553, 1559, 1560, - 1554, 1555, 1561, 1563, 1564, 1565, 1566, 1556, 1562, 1572, - - 1573, 1397, 1557, 1558, 1397, 1576, 1577, 1579, 1580, 1581, - 1582, 1583, 1584, 1585, 1586, 1587, 1559, 1560, 1588, 1589, - 1561, 1563, 1564, 1565, 1566, 1593, 1562, 1572, 1573, 1594, - 1595, 1590, 1596, 1576, 1577, 1579, 1580, 1581, 1582, 1583, - 1584, 1585, 1586, 1587, 1591, 1597, 1588, 1589, 1598, 1592, - 1599, 1600, 1601, 1593, 1606, 1602, 1607, 1594, 1595, 1590, - 1596, 1603, 1608, 1604, 1609, 1610, 1605, 1611, 1612, 2515, - 1619, 1620, 1591, 1597, 1621, 1622, 1598, 1592, 1599, 1600, - 1601, 1623, 1606, 1602, 1607, 3051, 1624, 1625, 1626, 1603, - 1608, 1604, 1609, 1610, 1605, 1611, 1612, 1613, 1619, 1620, - - 1627, 1614, 1621, 1622, 1628, 1629, 1630, 1631, 1615, 1623, - 1616, 1617, 1632, 1618, 1624, 1625, 1626, 1633, 1634, 1635, - 1636, 1637, 1638, 1639, 1643, 1613, 1644, 1645, 1627, 1614, - 1646, 1647, 1628, 1629, 1630, 1631, 1615, 1654, 1616, 1617, - 1632, 1618, 1655, 1898, 3043, 1633, 1634, 1635, 1636, 1637, - 1638, 1639, 1643, 1648, 1644, 1645, 1656, 1661, 1646, 1647, - 1649, 1659, 1662, 1663, 1664, 1654, 1665, 1666, 1650, 1657, - 1655, 1658, 1659, 1651, 1667, 1668, 1669, 1670, 1671, 1672, - 1673, 1648, 1674, 1660, 1656, 1661, 1675, 1678, 1649, 1679, - 1662, 1663, 1664, 1676, 1665, 1666, 1650, 1657, 1677, 1658, - - 1680, 1651, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1681, - 1674, 1660, 1682, 1683, 1675, 1678, 1684, 1679, 1685, 1686, - 1687, 1676, 1688, 1692, 1690, 1693, 1677, 1694, 1680, 1691, - 888, 3580, 1696, 3581, 1697, 1695, 1698, 1681, 1689, 1699, - 1682, 1683, 1700, 1115, 1684, 1701, 1685, 1686, 1687, 1702, - 1688, 1692, 1690, 1693, 399, 1694, 399, 1691, 1703, 399, - 1696, 399, 1697, 1704, 1698, 1705, 1689, 1699, 1711, 1891, - 1700, 1520, 1117, 1701, 1520, 1520, 1520, 1702, 1520, 1714, - 1520, 1706, 1329, 399, 1520, 1706, 1703, 1715, 1520, 1716, - 1721, 1704, 1722, 1705, 1723, 1718, 1711, 884, 890, 1719, - - 1724, 1720, 1571, 1974, 2869, 1571, 1974, 1714, 1843, 3030, - 2198, 897, 1726, 1727, 1892, 1715, 2990, 1716, 1721, 1843, - 1722, 2198, 1723, 1718, 1730, 1731, 1707, 1719, 1724, 1720, - 1522, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, - 1726, 1727, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1732, 1730, 1731, 1733, 1734, 1735, 1736, 1737, 1738, - 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, - 1749, 1750, 1752, 1756, 1757, 1760, 1761, 1762, 1763, 1732, - 1766, 1767, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, - 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, - - 1752, 1756, 1757, 1760, 1761, 1762, 1763, 1764, 1766, 1767, - 1768, 1769, 1770, 1771, 1765, 1772, 1773, 1774, 1775, 1776, - 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, - 1787, 1788, 1789, 1790, 1791, 1764, 1792, 1793, 1768, 1769, - 1770, 1771, 1765, 1772, 1773, 1774, 1775, 1776, 1777, 1778, - 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, - 1789, 1790, 1791, 1794, 1792, 1793, 1795, 1796, 1797, 1798, - 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, - 1809, 1810, 1811, 1813, 1814, 1815, 1816, 1817, 1818, 1819, - 1820, 1794, 1821, 1811, 1795, 1796, 1797, 1798, 1799, 1800, - - 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, - 1822, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1823, - 1821, 1824, 1825, 1812, 1827, 1828, 1829, 1830, 1831, 1832, - 1833, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1822, 1852, - 1853, 1834, 2989, 1990, 1854, 1855, 1990, 1823, 2980, 1824, - 1825, 1856, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1845, - 1846, 1847, 1848, 1849, 1850, 1851, 1857, 1852, 1853, 1834, - 1835, 1836, 1854, 1855, 1837, 1858, 1838, 1859, 1860, 1856, - 1839, 1840, 1861, 1862, 1841, 1863, 1864, 1865, 1866, 1842, - 1867, 1868, 1869, 1870, 1857, 1873, 1874, 1875, 1835, 1836, - - 1876, 1877, 1837, 1858, 1838, 1859, 1860, 1567, 1839, 1840, - 1861, 1862, 1841, 1863, 1864, 1865, 1866, 1842, 1867, 1868, - 1869, 1870, 1871, 1873, 1874, 1875, 1878, 1880, 1876, 1877, - 1881, 1882, 1883, 1884, 1885, 1872, 1887, 1888, 1520, 1893, - 1896, 1520, 1897, 1520, 1899, 1900, 1901, 1886, 1889, 2975, - 1871, 1520, 1568, 2158, 1878, 1880, 2158, 1902, 1881, 1882, - 1883, 1884, 1885, 1872, 1887, 1888, 1910, 1893, 1896, 1898, - 1897, 2943, 1899, 1900, 1901, 1886, 1717, 1717, 1717, 1717, - 1717, 1717, 1717, 1717, 1717, 1902, 1903, 1906, 1904, 1911, - 1912, 1913, 1914, 1522, 1910, 1915, 1916, 1917, 1918, 1907, - - 1919, 1920, 1921, 1922, 1908, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1903, 1906, 1904, 1911, 1912, 1913, - 1914, 1929, 1930, 1915, 1916, 1917, 1918, 1907, 1919, 1920, - 1921, 1922, 1908, 1923, 1931, 1926, 1932, 1933, 1934, 1935, - 1936, 1942, 1943, 1924, 1945, 1946, 1927, 1947, 1948, 1929, - 1930, 1949, 1950, 1951, 1925, 1928, 1952, 1953, 1954, 1955, - 1956, 1923, 1931, 1926, 1932, 1933, 1934, 1935, 1936, 1942, - 1943, 1924, 1945, 1946, 1927, 1947, 1948, 1957, 1958, 1949, - 1950, 1951, 1925, 1928, 1952, 1953, 1954, 1955, 1956, 1961, - 1962, 1959, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, - - 1971, 1972, 1973, 1975, 1976, 1957, 1958, 1960, 1977, 1978, - 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1961, 1962, 1959, - 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, - 1973, 1975, 1976, 1986, 1987, 1960, 1977, 1978, 1979, 1980, - 1981, 1982, 1983, 1984, 1985, 1988, 1991, 1992, 1993, 1996, - 1994, 1989, 1997, 1998, 1999, 1995, 2000, 2001, 2003, 2004, - 2005, 1986, 1987, 2008, 2009, 2010, 2011, 2012, 2001, 2014, - 2939, 2006, 2015, 1988, 1991, 1992, 1993, 1996, 1994, 1989, - 1997, 1998, 1999, 1995, 2000, 2007, 2003, 2004, 2005, 2016, - 2017, 2008, 2009, 2010, 2011, 2012, 2018, 2014, 2002, 2006, - - 2015, 2019, 2020, 2021, 2024, 2022, 2025, 2026, 2027, 2028, - 2029, 2030, 2929, 2921, 2036, 2037, 2038, 2016, 2017, 2023, - 2039, 2040, 2041, 2043, 2018, 2044, 3132, 2045, 2046, 2019, - 2020, 2021, 2024, 2022, 2025, 2026, 2027, 2028, 2029, 2030, - 2031, 2032, 2036, 2037, 2038, 2047, 2033, 2023, 2039, 2040, - 2041, 2043, 2048, 2044, 2034, 2045, 2046, 2035, 2049, 2050, - 2051, 2052, 2053, 2059, 2054, 2060, 2055, 2061, 2031, 2032, - 2056, 2062, 2063, 2047, 2033, 2064, 2799, 2067, 2069, 2070, - 2048, 2057, 2034, 2058, 2973, 2035, 2049, 2050, 2051, 2052, - 2053, 2059, 2054, 2060, 2055, 2061, 2073, 2074, 2056, 2062, - - 2063, 2075, 2054, 2064, 2055, 2071, 2069, 2070, 2056, 2057, - 2076, 2058, 2072, 2077, 2078, 1708, 1708, 2082, 3580, 2057, - 3581, 2065, 2068, 2084, 2073, 2074, 2085, 2086, 2289, 2075, - 2054, 2087, 2055, 2071, 2974, 2088, 2056, 2089, 2076, 2090, - 2072, 2077, 2078, 1520, 2091, 2092, 1520, 2057, 1520, 2065, - 2093, 2084, 2094, 1706, 2085, 2086, 1520, 2095, 2106, 2087, - 1709, 1892, 2083, 2088, 2107, 2089, 2108, 2090, 2109, 2110, - 2418, 2864, 2091, 2092, 2111, 2112, 2113, 2114, 2093, 1974, - 2094, 2418, 1974, 2289, 2171, 2095, 2106, 2115, 2116, 2118, - 2288, 2119, 2107, 2289, 2108, 2117, 2109, 2110, 1707, 2096, - - 2120, 2121, 2111, 2112, 2113, 2114, 2097, 2097, 2097, 2097, - 2097, 2097, 2097, 2097, 2097, 2115, 2116, 2118, 2098, 2119, - 2099, 2100, 2101, 2117, 2122, 2123, 2102, 2124, 2120, 2121, - 2126, 2103, 2127, 2128, 2129, 2130, 2131, 2132, 2125, 2140, - 2104, 2135, 2136, 2137, 2135, 2142, 2098, 2143, 2099, 2100, - 2101, 2144, 2122, 2123, 2102, 2124, 2145, 2146, 2126, 2103, - 2127, 2128, 2129, 2130, 2131, 2132, 2125, 2140, 2104, 2138, - 2136, 2139, 2138, 2142, 2147, 2143, 2148, 2149, 2150, 2144, - 2151, 2152, 2153, 2154, 2145, 2146, 2155, 2156, 2159, 2160, - 2161, 2162, 2163, 2164, 2165, 2166, 1939, 2167, 2168, 2169, - - 2172, 2173, 2147, 2174, 2148, 2149, 2150, 2175, 2151, 2152, - 2153, 2154, 2176, 2177, 2155, 2156, 2159, 2160, 2161, 2162, - 2163, 2164, 2165, 2166, 1941, 2167, 2168, 2169, 2172, 2173, - 2178, 2174, 2179, 2180, 2181, 2175, 2182, 2183, 2184, 2185, - 2176, 2177, 2186, 1990, 2189, 2190, 1990, 2191, 2187, 2192, - 2193, 2194, 2195, 2196, 2197, 2199, 2200, 2201, 2178, 2202, - 2179, 2180, 2181, 2203, 2182, 2183, 2184, 2185, 2204, 2205, - 2186, 2206, 2189, 2190, 2207, 2191, 2208, 2192, 2193, 2194, - 2195, 2196, 2197, 2199, 2200, 2201, 2209, 2202, 2825, 2824, - 2221, 2203, 2222, 2801, 2764, 2223, 2204, 2205, 2351, 2206, - - 2224, 2225, 2207, 2226, 2208, 2227, 2349, 2228, 2229, 2230, - 2231, 2232, 2233, 2234, 2209, 2210, 2211, 2212, 2221, 2213, - 2222, 2214, 2215, 2223, 2235, 2216, 2217, 2218, 2224, 2225, - 2236, 2226, 2219, 2227, 2220, 2228, 2229, 2230, 2231, 2232, - 2233, 2234, 2237, 2210, 2211, 2212, 2238, 2213, 2239, 2214, - 2215, 2240, 2235, 2216, 2217, 2218, 2241, 2242, 2236, 2243, - 2219, 2244, 2220, 2245, 2246, 2248, 2249, 2250, 2251, 2254, - 2237, 2255, 2256, 2257, 2238, 2258, 2239, 2259, 2260, 2240, - 2261, 2262, 2264, 2263, 2241, 2242, 2269, 2243, 2270, 2244, - 2271, 2245, 2246, 2248, 2249, 2250, 2251, 2254, 2272, 2255, - - 2256, 2257, 2275, 2258, 2272, 2259, 2260, 2277, 2261, 2262, - 2264, 2263, 2278, 2279, 2269, 2290, 2270, 2280, 2271, 2293, - 2281, 2290, 2282, 2283, 2284, 2285, 2286, 2295, 2296, 2297, - 2298, 2299, 2732, 2300, 2301, 2277, 3504, 2302, 3504, 2303, - 2278, 2279, 2304, 2273, 2305, 2280, 2730, 2276, 2281, 2068, - 2282, 2283, 2284, 2285, 2286, 2295, 2296, 2297, 2298, 2299, - 2291, 2300, 2301, 2314, 2294, 2302, 2083, 2303, 2315, 2316, - 2304, 2319, 2305, 2306, 2306, 2306, 2306, 2306, 2306, 2306, - 2306, 2306, 2320, 2321, 2323, 2307, 2324, 2308, 2309, 2310, - 2317, 2314, 2325, 2311, 2326, 2318, 2315, 2316, 2312, 2319, - - 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2313, 3504, 2673, - 2320, 2321, 2323, 2307, 2324, 2308, 2309, 2310, 2317, 2334, - 2325, 2311, 2326, 2318, 2335, 2336, 2312, 2337, 2327, 2328, - 2329, 2330, 2331, 2332, 2333, 2313, 2097, 2097, 2097, 2097, - 2097, 2097, 2097, 2097, 2097, 2338, 2339, 2334, 2340, 2341, - 2342, 2343, 2335, 2336, 2344, 2337, 2345, 2346, 2347, 2135, - 2136, 2137, 2135, 2136, 2137, 2138, 2136, 2139, 2138, 2136, - 2139, 2352, 2353, 2338, 2339, 2354, 2340, 2341, 2342, 2343, - 2355, 2356, 2344, 2365, 2345, 2346, 2347, 2366, 2367, 2412, - 2368, 2369, 2412, 2370, 2371, 2378, 2504, 2372, 2373, 2352, - - 2353, 2374, 2375, 2354, 2502, 2380, 2381, 2158, 2355, 2356, - 2158, 2365, 2376, 2382, 1939, 2366, 2367, 1939, 2368, 2369, - 1941, 2370, 2371, 1941, 2357, 2372, 2373, 2083, 2383, 2374, - 2375, 2384, 2379, 2380, 2381, 2385, 2386, 3651, 2387, 3652, - 2358, 2382, 2388, 2389, 3921, 2391, 2392, 3921, 2393, 3921, - 2394, 2395, 2396, 2359, 2397, 2360, 2383, 2398, 2399, 2384, - 2379, 2400, 2402, 2385, 2386, 2361, 2387, 2362, 2363, 2364, - 2388, 2389, 2403, 2391, 2392, 2404, 2393, 2405, 2394, 2395, - 2396, 2359, 2397, 2360, 2407, 2398, 2399, 2408, 2409, 2400, - 2402, 2410, 2411, 2361, 2413, 2362, 2363, 2364, 2414, 3921, - - 2403, 2415, 3921, 2404, 3921, 2405, 2416, 2417, 2420, 2421, - 2419, 2422, 2407, 2423, 2424, 2408, 2409, 2427, 2425, 2410, - 2411, 2419, 2413, 2428, 2429, 2430, 2414, 2426, 2431, 2415, - 2432, 2433, 2434, 2435, 2416, 2417, 2420, 2421, 2436, 2422, - 2437, 2423, 2424, 2439, 2440, 2427, 2425, 2441, 2442, 2443, - 2444, 2428, 2429, 2430, 2445, 2438, 2431, 2446, 2432, 2433, - 2434, 2435, 2447, 2448, 2449, 2450, 2436, 2451, 2437, 2453, - 2454, 2439, 2440, 2455, 2456, 2441, 2442, 2443, 2444, 2457, - 2458, 2459, 2445, 2438, 2460, 2446, 2462, 2463, 2464, 2465, - 2447, 2448, 2449, 2450, 2466, 2451, 2467, 2453, 2454, 2468, - - 2469, 2455, 2456, 2470, 2473, 2474, 2475, 2457, 2458, 2459, - 2477, 2480, 2460, 2482, 2462, 2463, 2464, 2465, 2483, 2484, - 2485, 2486, 2466, 2487, 2467, 2488, 2489, 2468, 2469, 2490, - 2500, 2470, 2473, 2474, 2475, 2503, 2505, 2506, 2507, 2508, - 2571, 2482, 2509, 2571, 2510, 2511, 2483, 2484, 2485, 2486, - 2512, 2487, 2289, 2488, 2489, 2478, 2481, 2490, 2493, 2513, - 2514, 2493, 2289, 2493, 2505, 2506, 2507, 2508, 2494, 2481, - 2509, 2495, 2510, 2511, 2516, 2501, 2517, 2518, 2512, 2519, - 2504, 2521, 2515, 2522, 2520, 2496, 2523, 2513, 2514, 2306, - 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2524, 2525, - - 2526, 2527, 2516, 2528, 2517, 2518, 2529, 2519, 2530, 2521, - 2531, 2522, 2520, 2497, 2523, 2532, 2533, 2534, 2535, 2536, - 2537, 2538, 2539, 2541, 2542, 2543, 2524, 2525, 2526, 2527, - 2544, 2528, 2545, 2546, 2529, 2547, 2530, 2548, 2531, 2549, - 2479, 2068, 2555, 2532, 2533, 2534, 2535, 2536, 2537, 2538, - 2539, 2541, 2542, 2543, 2551, 2552, 2556, 2551, 2544, 2557, - 2545, 2546, 2558, 2547, 2562, 2548, 2563, 2549, 2554, 2552, - 2555, 2554, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2572, - 2573, 2670, 2574, 2575, 2556, 2576, 2577, 2557, 2578, 2579, - 2558, 2583, 2562, 3921, 2563, 2667, 3921, 2584, 3921, 2585, - - 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2572, 2573, 2349, - 2574, 2575, 2586, 2576, 2577, 2587, 2578, 2579, 2588, 2583, - 2589, 2590, 2592, 2351, 2348, 2584, 2594, 2585, 2595, 2596, - 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2350, 2605, - 2586, 2606, 2607, 2587, 2609, 2610, 2588, 2612, 2589, 2590, - 2592, 2613, 2611, 2617, 2594, 2611, 2595, 2596, 2597, 2598, - 2599, 2600, 2601, 2602, 2603, 2604, 2618, 2605, 2619, 2606, - 2607, 2615, 2609, 2610, 2615, 2612, 2616, 2620, 2621, 2613, - 2622, 2617, 2623, 2625, 2627, 2629, 2630, 2631, 2632, 2633, - 2634, 2635, 2637, 2638, 2618, 2627, 2619, 2646, 2639, 2640, - - 2641, 2642, 2643, 2644, 2645, 2620, 2621, 2647, 2622, 2648, - 2623, 2625, 2649, 2629, 2630, 2631, 2632, 2633, 2634, 2635, - 2637, 2638, 2650, 2651, 2652, 2628, 2639, 2640, 2641, 2642, - 2643, 2644, 2645, 2653, 2654, 2647, 2655, 2648, 2656, 2657, - 2649, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, - 2650, 2651, 2652, 2668, 2669, 2671, 2272, 2477, 2673, 2674, - 2675, 2653, 2654, 2676, 2655, 2677, 2656, 2657, 2678, 2658, - 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2679, 2680, - 2685, 2668, 2669, 2697, 2289, 2290, 2673, 2674, 2675, 2493, - 2500, 2676, 2493, 2677, 2493, 2699, 2678, 2686, 2491, 2689, - - 2481, 2672, 2481, 2700, 2636, 2493, 2679, 2680, 2493, 2493, - 2493, 2701, 2493, 2702, 2493, 2682, 2690, 1898, 2495, 2693, - 2703, 2704, 2495, 2699, 2493, 2687, 2688, 2493, 2504, 2493, - 2698, 2700, 2683, 2705, 2682, 2504, 2694, 2495, 2706, 2701, - 2707, 2702, 2708, 2709, 2691, 1898, 2710, 2711, 2703, 2704, - 2712, 2683, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, - 2684, 2705, 2721, 2722, 2695, 2723, 2706, 2724, 2707, 2725, - 2708, 2709, 2726, 2727, 2710, 2711, 2728, 2729, 2712, 2497, - 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2731, 2733, - 2721, 2722, 2734, 2723, 2735, 2724, 2736, 2725, 2737, 2738, - - 2726, 2727, 2739, 2740, 2728, 2729, 2551, 2552, 2741, 2551, - 2554, 2552, 2742, 2554, 2743, 2746, 2731, 2733, 2747, 2748, - 2734, 2749, 2735, 2750, 2736, 2751, 2737, 2738, 2752, 2753, - 2739, 2740, 2754, 2626, 2571, 2757, 2741, 2571, 2758, 2755, - 2742, 2759, 2743, 2746, 2760, 2761, 2747, 2748, 2624, 2749, - 2762, 2750, 2608, 2751, 2763, 2766, 2752, 2753, 2767, 2768, - 2754, 2349, 2769, 2757, 2770, 2351, 2758, 2771, 2772, 2759, - 2773, 2775, 2760, 2761, 2776, 2777, 2348, 2778, 2762, 2779, - 2350, 2780, 2763, 2766, 2781, 2782, 2767, 2768, 2783, 2784, - 2769, 2783, 2770, 2786, 2787, 2771, 2772, 2788, 2773, 2775, - - 2789, 2790, 2776, 2777, 2791, 2778, 2796, 2779, 2785, 2780, - 2800, 2611, 2781, 2782, 2611, 2802, 2792, 2784, 2794, 2795, - 2803, 2786, 2787, 2804, 2805, 2788, 2806, 2807, 2789, 2790, - 2615, 2808, 2791, 2615, 2796, 2616, 2785, 2809, 2800, 2810, - 2811, 2812, 2813, 2802, 2814, 2815, 2794, 2795, 2803, 2816, - 2817, 2804, 2805, 2818, 2806, 2807, 2819, 2820, 2821, 2808, - 2822, 2823, 2826, 2827, 2828, 2809, 2829, 2810, 2811, 2812, - 2813, 2830, 2814, 2815, 2831, 2832, 2833, 2816, 2817, 2834, - 2835, 2818, 2836, 2837, 2819, 2820, 2821, 2838, 2822, 2823, - 2826, 2827, 2828, 2839, 2829, 2840, 2841, 2842, 2843, 2830, - - 2844, 2845, 2831, 2832, 2833, 2846, 2847, 2834, 2835, 2848, - 2836, 2837, 2849, 2477, 2850, 2838, 2851, 2852, 2853, 2854, - 2855, 2839, 2856, 2840, 2841, 2842, 2843, 2289, 2844, 2845, - 2500, 2880, 2865, 2846, 2847, 2944, 2868, 2848, 2944, 2498, - 2849, 2491, 2881, 2882, 2851, 2852, 2853, 2854, 2855, 2866, - 2856, 2858, 2493, 2686, 2858, 2493, 2858, 2493, 2478, 2068, - 2593, 2859, 2863, 2497, 2860, 2495, 2289, 2870, 2591, 2688, - 2881, 2882, 2883, 2978, 2884, 2501, 2083, 2867, 2861, 2683, - 2491, 2869, 2858, 2493, 2978, 2858, 2493, 2858, 2493, 2581, - 2561, 2493, 2872, 2875, 2493, 2860, 2493, 2559, 2351, 2885, - - 2883, 2693, 2884, 2886, 2495, 2887, 2862, 2497, 2888, 2873, - 2690, 2349, 2858, 2889, 2890, 2858, 2493, 2858, 2694, 2493, - 2891, 2493, 2859, 2892, 2893, 2860, 2878, 2885, 2894, 2495, - 2895, 2886, 2896, 2887, 2897, 2898, 2888, 2874, 2876, 2861, - 2899, 2889, 2890, 2694, 2900, 2901, 2695, 2902, 2891, 2903, - 2904, 2892, 2893, 2905, 2906, 2907, 2894, 2908, 2895, 2909, - 2896, 2910, 2897, 2898, 2911, 2912, 2913, 2862, 2899, 2914, - 2915, 2879, 2900, 2901, 2916, 2902, 2917, 2903, 2904, 2918, - 2919, 2905, 2906, 2907, 2920, 2908, 2922, 2909, 2923, 2910, - 2924, 2925, 2911, 2912, 2913, 2926, 2927, 2914, 2915, 2928, - - 2930, 2932, 2916, 2933, 2917, 2934, 2935, 2918, 2919, 2936, - 2937, 2938, 2920, 2940, 2922, 2941, 2923, 2942, 2924, 2925, - 2945, 2946, 2947, 2926, 2927, 2948, 2949, 2928, 2930, 2932, - 3651, 2933, 3652, 2934, 2935, 2955, 2956, 2936, 2937, 2938, - 2957, 2940, 2958, 2941, 2961, 2942, 2962, 2951, 2945, 2946, - 2947, 2783, 2963, 2948, 2783, 2952, 2959, 2950, 2953, 2964, - 2954, 2965, 2966, 2955, 2956, 2967, 2968, 2970, 2957, 2971, - 2958, 2972, 2961, 2976, 2962, 2951, 2977, 2979, 2982, 2983, - 2963, 2981, 2984, 2952, 2985, 2950, 2953, 2964, 2954, 2965, - 2966, 2986, 2981, 2967, 2968, 2970, 2987, 2971, 2988, 2972, - - 2991, 2976, 2993, 2994, 2977, 2979, 2982, 2983, 2995, 2996, - 2984, 2997, 2985, 2998, 2992, 2999, 3000, 3001, 3002, 2986, - 3003, 3004, 2997, 3005, 2987, 3006, 2988, 3007, 2991, 3008, - 2993, 2994, 3009, 3010, 3011, 3012, 2995, 2996, 3013, 3014, - 3015, 2998, 3016, 2999, 3000, 3001, 3002, 3017, 3003, 3004, - 3018, 3005, 3019, 3006, 3020, 3007, 3021, 3008, 3022, 3023, - 3009, 3010, 3011, 3012, 3024, 3025, 3013, 3014, 3015, 2477, - 3016, 3026, 3027, 3028, 3029, 3017, 3031, 3052, 3018, 3035, - 3019, 3053, 3020, 3054, 3021, 2858, 3022, 3023, 2858, 3055, - 2858, 2500, 3024, 3025, 3032, 3033, 2866, 2540, 2860, 3026, - - 3027, 3028, 3029, 2858, 3031, 3052, 2858, 2502, 2858, 3053, - 3035, 3054, 2861, 3038, 2276, 2858, 2858, 3055, 2858, 2858, - 2858, 2858, 3032, 3056, 3036, 3033, 3041, 2866, 2860, 2860, - 3039, 3044, 2685, 2685, 2493, 2879, 2294, 2493, 2289, 2493, - 3034, 3135, 2861, 2861, 2682, 3057, 2083, 2495, 2866, 2686, - 2686, 3056, 3135, 2499, 2858, 3036, 3058, 2858, 3040, 2858, - 3059, 2683, 3042, 3060, 3046, 2289, 3061, 2860, 2498, 2858, - 3034, 3042, 2858, 3057, 2858, 2479, 3045, 2687, 2869, 3046, - 2858, 2873, 2860, 2858, 3058, 2858, 3062, 2068, 3059, 2684, - 3049, 3060, 2493, 2860, 3061, 2493, 2873, 2493, 2493, 3063, - - 2476, 2493, 2689, 2493, 3064, 2461, 3065, 2873, 2689, 3047, - 2493, 3066, 3067, 2493, 3062, 2493, 3068, 3069, 3070, 2690, - 2693, 3071, 3072, 2495, 3047, 2690, 3073, 3063, 2493, 3074, - 3075, 2493, 3064, 2493, 3065, 3050, 3076, 2694, 2693, 3066, - 3067, 2495, 3077, 3078, 3068, 3069, 3070, 2691, 3079, 3071, - 3072, 3080, 3081, 2876, 3073, 2694, 3082, 3074, 3075, 3083, - 3084, 3085, 3086, 3088, 3076, 2695, 3090, 3091, 3092, 3093, - 3077, 3078, 3094, 3096, 3097, 3098, 3079, 3099, 3103, 3080, - 3081, 2452, 3104, 2879, 3082, 3106, 3107, 3083, 3084, 3085, - 3086, 3088, 3108, 3109, 3090, 3091, 3092, 3093, 3110, 3114, - - 3094, 3096, 3097, 3098, 2944, 3099, 3103, 2944, 3116, 3101, - 3104, 3111, 3117, 3106, 3107, 3120, 3121, 3122, 3124, 3118, - 3108, 3109, 3112, 3113, 3125, 3126, 3110, 3114, 3127, 3129, - 3130, 3131, 3133, 3134, 3136, 3137, 3116, 3138, 3139, 3111, - 3117, 3140, 3141, 3120, 3121, 3122, 3124, 3118, 3142, 3143, - 3112, 3113, 3125, 3126, 3144, 3147, 3127, 3129, 3130, 3131, - 3133, 3134, 3136, 3137, 3148, 3138, 3139, 3145, 3146, 3140, - 3141, 3149, 3150, 3151, 3152, 3153, 3142, 3143, 3154, 3155, - 3156, 3157, 3144, 3147, 3158, 3159, 3160, 3161, 3163, 3166, - 3167, 3168, 3148, 3164, 3169, 3145, 3146, 3170, 3161, 3149, - - 3150, 3151, 3152, 3153, 3164, 3172, 3154, 3155, 3156, 3157, - 3173, 3174, 3158, 3159, 3160, 3175, 3163, 3166, 3167, 3168, - 3176, 3177, 3169, 3178, 3179, 3170, 3181, 3182, 3162, 3183, - 3185, 3186, 2498, 3172, 3165, 3380, 3188, 2858, 3173, 3174, - 2858, 3199, 2858, 3175, 3184, 3474, 3380, 3187, 3176, 3177, - 2860, 3178, 3179, 2866, 3181, 3182, 3474, 3183, 3185, 3186, - 3189, 2351, 2349, 2858, 2861, 2685, 2858, 2253, 2858, 3199, - 3035, 2252, 3184, 3046, 2858, 2493, 2860, 2858, 2493, 2858, - 2493, 3045, 2686, 3200, 3190, 2693, 2858, 2866, 2495, 2858, - 2873, 2858, 3042, 3201, 3050, 2858, 3033, 2289, 2858, 2860, - - 2858, 3039, 2694, 2247, 2493, 3194, 3202, 2493, 2860, 2493, - 3193, 3200, 3203, 2861, 3196, 3045, 3204, 2495, 3047, 3205, - 3206, 3201, 2873, 3207, 3208, 3209, 3210, 3211, 3212, 3191, - 3192, 3197, 3624, 2858, 3202, 3213, 2858, 3214, 2858, 3215, - 3203, 3042, 3216, 3046, 3204, 3217, 2860, 3205, 3206, 3218, - 3050, 3207, 3208, 3209, 3210, 3211, 3212, 3219, 3220, 3198, - 2873, 3221, 3222, 3213, 3223, 3214, 3224, 3215, 3225, 3224, - 3216, 3226, 3227, 3217, 3228, 3229, 3230, 3218, 3231, 3232, - 3316, 3433, 3625, 2289, 3433, 3219, 3220, 2157, 3050, 3221, - 3222, 3234, 3223, 3236, 2141, 3238, 3225, 3239, 3241, 3226, - - 3227, 3242, 3228, 3229, 3230, 3243, 3231, 3232, 3233, 3233, - 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3921, 3244, 3234, - 3921, 3236, 3921, 3238, 3245, 3239, 3241, 3246, 3247, 3242, - 3248, 3249, 3251, 3243, 3250, 3250, 3250, 3250, 3250, 3250, - 3250, 3250, 3250, 3252, 3253, 3255, 3244, 3256, 3257, 3259, - 3260, 3261, 3245, 3262, 3263, 3246, 3247, 3264, 3248, 3249, - 3251, 3265, 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, - 3274, 3252, 3253, 3255, 3275, 3256, 3257, 3259, 3260, 3261, - 3276, 3262, 3263, 3277, 3278, 3264, 3280, 3281, 3282, 3265, - 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3283, - - 3285, 3286, 3275, 3287, 3288, 3289, 3290, 3291, 3276, 3293, - 3295, 3277, 3278, 3296, 3280, 3281, 3282, 3297, 3298, 3299, - 3293, 3300, 1941, 3301, 3302, 3303, 3304, 3283, 3285, 3286, - 3305, 3287, 3288, 3289, 3290, 3291, 3306, 3307, 3295, 3310, - 3035, 3296, 3312, 3317, 3308, 3297, 3298, 3299, 1939, 3300, - 3294, 3301, 3302, 3303, 3304, 3309, 2105, 2866, 3305, 2686, - 3318, 2080, 2079, 2858, 3306, 3307, 2858, 3310, 2858, 1892, - 3319, 3317, 3308, 3033, 2858, 3320, 2860, 2858, 3321, 2858, - 3322, 2042, 3323, 3309, 3038, 3036, 2858, 2869, 3318, 2858, - 2861, 2858, 2493, 3324, 2013, 2493, 3038, 2493, 3319, 3921, - - 1941, 3039, 3311, 3320, 2858, 2495, 3321, 2858, 3322, 2858, - 3323, 3325, 3326, 3039, 3046, 1939, 3327, 2860, 3034, 2694, - 1937, 3324, 2493, 2858, 3328, 2493, 2858, 2493, 2858, 3040, - 3329, 2873, 3196, 2872, 3330, 2495, 2860, 3331, 3332, 3325, - 3326, 3191, 3691, 2493, 3327, 3333, 2493, 2879, 2493, 3197, - 2873, 3334, 3328, 3315, 3335, 3336, 2495, 3339, 3329, 3047, - 3340, 3341, 3330, 3342, 3224, 3331, 3332, 3224, 3343, 3337, - 3197, 3344, 3345, 3333, 3346, 3479, 1909, 3313, 2874, 3334, - 1905, 3352, 3335, 3336, 3347, 3339, 3479, 3459, 3340, 3341, - 3459, 3342, 3692, 1895, 3349, 3351, 3343, 3355, 3316, 3344, - - 3345, 3356, 3346, 3233, 3233, 3233, 3233, 3233, 3233, 3233, - 3233, 3233, 3347, 3348, 3348, 3348, 3348, 3348, 3348, 3348, - 3348, 3348, 3349, 3351, 3353, 3355, 3357, 3358, 3359, 3356, - 3360, 3361, 3362, 3363, 3250, 3250, 3250, 3250, 3250, 3250, - 3250, 3250, 3250, 3365, 3366, 3367, 3368, 3369, 3370, 3371, - 3372, 3374, 3353, 3376, 3357, 3358, 3359, 3377, 3360, 3361, - 3362, 3363, 3378, 3379, 3381, 3382, 3383, 3384, 3386, 3387, - 3388, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3374, - 3389, 3376, 3390, 3393, 3394, 3377, 3395, 3396, 3398, 3399, - 3378, 3379, 3381, 3382, 3383, 3384, 3386, 3387, 3388, 3400, - - 3403, 3401, 3404, 3405, 3406, 3407, 3408, 3409, 3389, 3402, - 3390, 3393, 3394, 3410, 3395, 3396, 3398, 3399, 3411, 3413, - 3414, 3415, 3416, 3417, 3418, 3035, 1522, 3400, 3403, 3401, - 3404, 3405, 3406, 3407, 3408, 3409, 3460, 3402, 1890, 3460, - 3420, 3410, 2866, 3421, 3710, 1710, 3411, 3413, 3414, 3415, - 3416, 3417, 3418, 2858, 2493, 3710, 2858, 2493, 2858, 2493, - 3422, 3423, 3424, 3033, 3419, 3425, 2860, 2495, 3420, 2858, - 2867, 3421, 2858, 2493, 2858, 3426, 2493, 3427, 2493, 3046, - 2861, 3197, 2860, 3196, 3428, 3429, 2495, 3430, 3422, 3423, - 3424, 3431, 3432, 3425, 3434, 3436, 2873, 3437, 3438, 3439, - - 3197, 3463, 1879, 3426, 3463, 3427, 3711, 3596, 2862, 3316, - 3597, 3542, 3428, 3429, 3542, 3430, 3543, 3711, 3607, 3431, - 3432, 3607, 3434, 3436, 2874, 3437, 3438, 3439, 3316, 3435, - 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3435, - 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, - 3338, 3440, 3441, 3442, 3435, 3443, 3444, 3445, 3446, 3545, - 3668, 1844, 3545, 3668, 3546, 3338, 3348, 3348, 3348, 3348, - 3348, 3348, 3348, 3348, 3348, 3448, 3449, 3450, 3451, 3440, - 3441, 3442, 3452, 3443, 3444, 3445, 3446, 3447, 3447, 3447, - 3447, 3447, 3447, 3447, 3447, 3447, 3453, 3454, 3455, 3456, - - 3461, 3462, 3464, 3448, 3449, 3450, 3451, 3465, 3466, 3471, - 3452, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, - 3472, 3473, 3476, 3477, 3453, 3454, 3455, 3456, 3461, 3462, - 3464, 3478, 3480, 3481, 3482, 3465, 3466, 3471, 3485, 3486, - 3487, 3488, 3483, 3484, 3489, 3490, 3491, 3492, 3472, 3473, - 3476, 3477, 3493, 3494, 3495, 3496, 3497, 3498, 3499, 3478, - 3480, 3481, 3482, 3500, 3501, 3502, 3485, 3486, 3487, 3488, - 3483, 3484, 3489, 3490, 3491, 3492, 3503, 3505, 3506, 3507, - 3493, 3494, 3495, 3496, 3497, 3498, 3499, 3509, 3510, 3511, - 3512, 3500, 3501, 3502, 3513, 3514, 3515, 1826, 2493, 3516, - - 3517, 2493, 1758, 2493, 3503, 3505, 3506, 3507, 3196, 3522, - 3523, 2495, 3524, 3525, 3526, 3509, 3510, 3511, 3512, 3715, - 1753, 3716, 3513, 3514, 3515, 3197, 3433, 3516, 3517, 3433, - 3521, 3518, 3671, 3691, 3715, 3671, 3716, 3522, 3523, 3527, - 3524, 3525, 3526, 3519, 3519, 3519, 3519, 3519, 3519, 3519, - 3519, 3519, 3528, 3313, 3435, 3435, 3435, 3435, 3435, 3435, - 3435, 3435, 3435, 3435, 3435, 3529, 3530, 3527, 3447, 3447, - 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3531, 3532, 3435, - 3528, 3533, 3534, 3625, 3537, 3535, 3538, 3539, 3540, 3547, - 3548, 3550, 3463, 3529, 3530, 3463, 3551, 3549, 3552, 3542, - - 1391, 3780, 3542, 3814, 3543, 3531, 3532, 1569, 3556, 3533, - 3534, 3536, 3537, 1729, 3538, 3539, 3540, 3547, 3548, 3550, - 1725, 1713, 3559, 3560, 3551, 3561, 3552, 3555, 3555, 3555, - 3555, 3555, 3555, 3555, 3555, 3555, 3556, 3562, 3563, 3536, - 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3557, - 3559, 3560, 3564, 3561, 3565, 3558, 3566, 3567, 3569, 3571, - 3572, 3573, 3574, 3575, 3576, 3562, 3563, 3578, 3579, 3582, - 3583, 3545, 3834, 3742, 3545, 3835, 3546, 3557, 1712, 3781, - 3564, 3816, 3565, 3558, 3566, 3567, 3569, 3571, 3572, 3573, - 3574, 3575, 3576, 3585, 3586, 3578, 3579, 3582, 3583, 3584, - - 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, - 3587, 3590, 3591, 3592, 3593, 3594, 3595, 3921, 3921, 3921, - 3921, 3585, 3586, 3625, 3584, 3598, 3598, 3598, 3598, 3598, - 3598, 3598, 3598, 3598, 1710, 3600, 3601, 3602, 3587, 3590, - 3591, 3592, 3593, 3594, 3595, 3519, 3519, 3519, 3519, 3519, - 3519, 3519, 3519, 3519, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3599, 3599, 3600, 3601, 3602, 3604, 3605, 3606, 3608, - 3609, 3610, 3611, 3612, 3612, 3612, 3612, 3612, 3612, 3612, - 3612, 3612, 3613, 3614, 3615, 1653, 3618, 3616, 3621, 3622, - 3626, 3627, 3628, 1652, 3604, 3605, 3606, 3608, 3609, 3610, - - 3611, 3596, 1642, 3817, 3596, 3846, 3662, 3553, 1641, 1640, - 3613, 3614, 3615, 3617, 3618, 3630, 3621, 3622, 3626, 3627, - 3628, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, - 3554, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, - 3631, 3617, 3632, 3630, 3629, 3629, 3629, 3629, 3629, 3629, - 3629, 3629, 3629, 3633, 3635, 3636, 3637, 3638, 3639, 3640, - 3641, 3642, 3643, 3644, 3645, 3646, 3647, 3648, 3631, 3650, - 3632, 3653, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3633, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642, - 3643, 3644, 3645, 3646, 3647, 3648, 3654, 3650, 3655, 3653, - - 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, - 3584, 3656, 3658, 3659, 3660, 3664, 3607, 3665, 3664, 3607, - 3662, 3675, 1578, 3758, 3654, 3584, 3655, 3667, 3665, 3669, - 3921, 3666, 1575, 3921, 3758, 3921, 3818, 1574, 3848, 3656, - 3658, 3659, 3660, 3598, 3598, 3598, 3598, 3598, 3598, 3598, - 3598, 3598, 3673, 3676, 3677, 3667, 3678, 3669, 3670, 3670, - 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3679, 3612, 3612, - 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3680, 3681, 3683, - 3673, 3676, 3677, 3684, 3678, 3682, 3682, 3682, 3682, 3682, - 3682, 3682, 3682, 3682, 3687, 3679, 3694, 3688, 3695, 3661, - - 3696, 3689, 3697, 3698, 3699, 3680, 3681, 3683, 3690, 3668, - 3671, 3684, 3668, 3671, 3724, 3727, 1569, 1545, 3700, 3701, - 3702, 3703, 3687, 3553, 3694, 3688, 3695, 3704, 3696, 3689, - 3697, 3698, 3699, 3705, 3706, 3707, 3690, 3629, 3629, 3629, - 3629, 3629, 3629, 3629, 3629, 3629, 3700, 3701, 3702, 3703, - 3708, 3709, 3712, 3713, 3717, 3704, 3719, 3720, 3721, 3723, - 3726, 3705, 3706, 3707, 3665, 1544, 3665, 3665, 1541, 3921, - 3664, 3921, 3665, 3664, 3921, 3662, 3921, 3665, 3708, 3709, - 3712, 3713, 3717, 3665, 3719, 3720, 3721, 3723, 3726, 3670, - 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3730, 3731, - - 3732, 3733, 3734, 3735, 3682, 3682, 3682, 3682, 3682, 3682, - 3682, 3682, 3682, 3736, 3737, 3738, 3739, 3740, 3741, 3743, - 1540, 3744, 3745, 3746, 3747, 3748, 3730, 3731, 3732, 3733, - 3734, 3735, 3749, 3750, 3751, 3752, 3753, 3754, 3755, 3756, - 3757, 3736, 3737, 3738, 3739, 3740, 3741, 3743, 3661, 3744, - 3745, 3746, 3747, 3748, 3661, 3759, 3760, 3764, 3761, 3768, - 3749, 3750, 3751, 3752, 3753, 3754, 3755, 3756, 3757, 3762, - 3921, 3771, 3772, 3921, 3773, 3921, 3774, 3775, 3776, 3777, - 3778, 3691, 3782, 3759, 3760, 3764, 3761, 3783, 3784, 3785, - 3786, 3787, 3788, 3789, 3790, 3791, 3802, 3762, 3792, 3771, - - 3772, 3793, 3773, 1539, 3774, 3775, 3776, 3777, 3794, 3769, - 3782, 3796, 3797, 3798, 3799, 3783, 3784, 3785, 3786, 3787, - 3788, 3789, 3790, 3791, 3779, 3800, 3792, 3802, 3805, 3793, - 3806, 3692, 3807, 3808, 3809, 3810, 3794, 3812, 3819, 3796, - 3797, 3798, 3799, 3820, 3821, 3822, 3803, 3823, 3825, 3836, - 3826, 3827, 3779, 3800, 3828, 3829, 3805, 3830, 3806, 3833, - 3807, 3808, 3809, 3810, 3837, 3812, 3819, 3838, 3839, 3840, - 3841, 3820, 3821, 3822, 3842, 3823, 3825, 3769, 3826, 3827, - 3849, 3850, 3828, 3829, 3851, 3830, 3852, 3833, 3853, 3854, - 3855, 3856, 3837, 3857, 3802, 3838, 3839, 3840, 3841, 3769, - - 3834, 3865, 3842, 3834, 3865, 3863, 3863, 3866, 3849, 3850, - 3868, 3858, 3851, 3870, 3852, 3875, 3853, 3854, 3855, 3856, - 3876, 3857, 3859, 3877, 3921, 3860, 3921, 3921, 3878, 3921, - 3879, 3880, 3881, 3882, 3883, 3866, 3884, 3885, 3868, 3858, - 3888, 3870, 3865, 3875, 3803, 3865, 1538, 3863, 3876, 1537, - 3859, 3877, 1535, 3860, 1115, 873, 3878, 1482, 3879, 3880, - 3881, 3882, 3883, 3892, 3884, 3885, 3895, 3896, 3888, 3889, - 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3891, 3891, - 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3897, 3898, 3899, - 3900, 3892, 3901, 3902, 3895, 3896, 3889, 3889, 3889, 3889, - - 3889, 3889, 3889, 3889, 3889, 3904, 3904, 3904, 3904, 3904, - 3904, 3904, 3904, 3904, 3905, 3897, 3898, 3899, 3900, 3906, - 3901, 3902, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, - 3891, 3907, 3908, 3910, 3911, 3912, 3913, 3914, 3915, 3916, - 3917, 3918, 3905, 3919, 3920, 1473, 1471, 3906, 3904, 3904, - 3904, 3904, 3904, 3904, 3904, 3904, 3904, 1466, 1461, 3907, - 3908, 3910, 3911, 3912, 3913, 3914, 3915, 3916, 3917, 3918, - 1402, 3919, 3920, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 98, 98, 98, 98, 98, 98, 98, 98, 98, - - 98, 98, 98, 98, 98, 98, 98, 98, 98, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 156, - - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 169, 169, 169, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 169, 169, 169, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 239, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, - - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, - 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 258, - 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, - 258, 258, 258, 258, 258, 258, 258, 266, 266, 1401, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - - 266, 266, 266, 266, 266, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 363, 363, 363, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 363, 363, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 376, 376, 376, 376, 376, - - 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, - 376, 376, 376, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - - 402, 402, 402, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 421, 421, 421, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 516, 516, 516, 516, 516, 516, 516, - - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 517, 517, 540, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 518, - 518, 538, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 519, 519, 533, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 528, 528, 528, 528, 528, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, - 528, 528, 528, 533, 533, 533, 533, 533, 533, 533, - 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, - - 533, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 540, - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 266, 266, 531, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 363, 363, 363, 363, 363, 363, 363, 363, 363, - - 363, 363, 363, 363, 363, 363, 363, 516, 363, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 514, 373, 376, 376, 376, 376, 376, - 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, - 376, 376, 376, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 387, - - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 644, 510, 644, - 644, 1392, 1388, 644, 644, 644, 644, 644, 1382, 644, - 644, 644, 644, 644, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 3921, 399, - 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, - 652, 652, 652, 652, 652, 652, 652, 652, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - - 402, 402, 402, 402, 402, 402, 659, 659, 659, 659, - 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, - 659, 659, 659, 659, 661, 1352, 661, 661, 1344, 1333, - 661, 661, 661, 661, 661, 431, 661, 661, 661, 661, - 661, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 418, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 418, 418, 418, 421, 421, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 421, 505, 505, 505, 505, 505, - - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 414, 516, 517, - 517, 399, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 518, 518, 395, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 519, 519, 373, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - - 519, 519, 519, 528, 528, 528, 528, 528, 528, 528, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, - 528, 533, 533, 533, 533, 533, 533, 533, 533, 533, - 533, 533, 533, 533, 533, 533, 533, 369, 533, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 363, 540, 266, 266, 359, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 363, 363, 363, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 363, 363, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - - 639, 868, 355, 868, 868, 1276, 1214, 868, 868, 868, - 868, 868, 1213, 868, 868, 868, 868, 868, 868, 871, - 1197, 871, 871, 1188, 1176, 871, 871, 871, 871, 871, - 1155, 871, 871, 871, 871, 871, 871, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 644, 1140, 644, 644, 662, - 1115, 644, 644, 644, 644, 644, 645, 644, 644, 644, - 644, 644, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - - 391, 391, 391, 391, 391, 391, 391, 391, 652, 652, - 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, - 652, 652, 652, 652, 652, 652, 884, 884, 884, 884, - 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, - 884, 884, 884, 884, 886, 385, 886, 886, 385, 873, - 886, 886, 886, 886, 886, 1072, 886, 886, 886, 886, - 886, 886, 657, 657, 657, 657, 657, 657, 657, 657, - 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 661, 1061, - - 661, 661, 1053, 1050, 661, 661, 661, 661, 661, 1007, - 661, 661, 661, 661, 661, 659, 659, 659, 659, 659, - 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, - 659, 659, 659, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 421, 421, 421, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - - 505, 505, 505, 505, 505, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 533, 533, 533, 533, 533, 533, 533, 533, 533, - 533, 533, 533, 533, 533, 533, 533, 533, 533, 528, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, - 528, 528, 528, 528, 528, 528, 528, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 535, 535, 535, 535, 535, - - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 266, 266, 540, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - - 639, 639, 639, 868, 538, 868, 868, 1005, 533, 868, - 868, 868, 868, 868, 531, 868, 868, 868, 868, 868, - 868, 871, 999, 871, 871, 516, 514, 871, 871, 871, - 871, 871, 997, 871, 871, 871, 871, 871, 871, 644, - 510, 644, 644, 992, 984, 644, 644, 644, 644, 644, - 975, 644, 644, 644, 644, 644, 652, 652, 652, 652, - 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, - 652, 652, 652, 652, 886, 974, 886, 886, 944, 934, - 886, 886, 886, 886, 886, 922, 886, 886, 886, 886, - 886, 886, 657, 657, 657, 657, 657, 657, 657, 657, - - 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 890, 912, 890, 890, 431, 909, 890, 890, 890, 890, - 890, 418, 890, 890, 890, 890, 890, 890, 884, 884, - 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, - 884, 884, 884, 884, 884, 884, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 661, 414, 661, 661, 662, 882, - 661, 661, 661, 661, 661, 399, 661, 661, 661, 661, - 661, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 411, - - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 421, 421, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, - 421, 421, 421, 421, 421, 1154, 1154, 1154, 1154, 1154, - 1154, 1154, 1154, 1154, 395, 1154, 1154, 1154, 1154, 1154, - 1154, 1154, 1154, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 528, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, - - 528, 528, 528, 528, 528, 528, 528, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 266, 266, 645, 266, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 363, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, - 363, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 868, 864, 868, - - 868, 373, 369, 868, 868, 868, 868, 868, 861, 868, - 868, 868, 868, 868, 868, 871, 363, 871, 871, 359, - 858, 871, 871, 871, 871, 871, 355, 871, 871, 871, - 871, 871, 871, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 886, 773, 886, 886, 538, 539, 886, 886, 886, - 886, 886, 531, 886, 886, 886, 886, 886, 886, 887, - 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 661, 532, 661, - 661, 514, 515, 661, 661, 661, 661, 661, 661, 661, - - 661, 661, 661, 661, 659, 659, 659, 659, 659, 659, - 659, 659, 659, 659, 659, 659, 659, 659, 659, 659, - 659, 659, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 1343, 508, 1343, 1343, 752, 738, 1343, 1343, 1343, 479, - 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 734, 1355, 696, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 516, 516, 516, 516, 516, 516, - - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 533, 533, 533, 533, 533, 533, 533, 533, - 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, 266, 266, - 681, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 884, 884, 884, 884, - 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, - 884, 884, 884, 884, 1519, 1519, 1519, 1519, 1519, 1519, - 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, - - 1519, 1519, 1530, 437, 428, 1530, 414, 417, 1530, 1570, - 395, 398, 390, 385, 369, 1570, 1570, 1570, 372, 1570, - 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1520, 1520, 1520, - 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, - 1520, 1520, 1520, 1520, 1520, 1717, 359, 362, 1717, 351, - 1717, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, - 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1759, - 592, 591, 1759, 558, 1759, 541, 1759, 1759, 1759, 1759, - 1894, 1894, 1894, 1894, 1938, 1938, 539, 1938, 1938, 1938, - 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, - - 1938, 1938, 1940, 1940, 539, 1940, 1940, 1940, 1940, 1940, - 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, - 1944, 532, 1944, 515, 1944, 1944, 1944, 1944, 2066, 2066, - 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, - 2066, 2066, 2066, 2066, 2066, 2066, 2081, 2081, 2081, 2081, - 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, - 2081, 2081, 2081, 2081, 2133, 2133, 2133, 2133, 2133, 2133, - 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, 2133, - 2133, 2133, 2170, 2170, 508, 479, 2170, 2170, 2170, 2170, - 2170, 437, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, - - 2188, 417, 398, 2188, 2188, 398, 385, 2188, 385, 2188, - 385, 2188, 2188, 2188, 2188, 2274, 2274, 2274, 2274, 2274, - 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, - 2274, 2274, 2274, 2287, 372, 2287, 2287, 372, 362, 2287, - 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, - 2287, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, - 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2322, - 351, 317, 3921, 250, 250, 2322, 2322, 2322, 98, 2322, - 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2348, 2348, 98, - 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, - - 2348, 2348, 2348, 2348, 2348, 2350, 2350, 98, 2350, 2350, - 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, - 2350, 2350, 2350, 2377, 98, 98, 2377, 2377, 98, 98, - 2377, 98, 2377, 161, 2377, 2377, 2377, 2377, 2390, 161, - 160, 160, 3921, 3921, 2390, 2390, 2390, 3921, 2390, 2390, - 2390, 2390, 2390, 2390, 2390, 2390, 2401, 2401, 3921, 2401, - 2401, 3921, 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401, - 2401, 2401, 2401, 2406, 3921, 2406, 3921, 2406, 2406, 2406, - 2406, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, - 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2289, - - 3921, 2289, 2289, 3921, 3921, 2289, 2289, 2289, 2289, 2289, - 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2550, 2550, 2550, - 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, - 2550, 2550, 2550, 2550, 2550, 2553, 2553, 2553, 2553, 2553, - 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, - 2553, 2553, 2553, 2560, 3921, 3921, 2560, 3921, 2560, 3921, - 2560, 2560, 2560, 2560, 2580, 3921, 2580, 3921, 2580, 2580, - 2580, 2580, 2582, 3921, 3921, 2582, 3921, 2582, 3921, 2582, - 2582, 2582, 2582, 2614, 2614, 3921, 2614, 2614, 2614, 2614, - 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, - - 2681, 3921, 2681, 2681, 3921, 3921, 2681, 2681, 2681, 2681, - 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2493, 2493, - 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, - 2493, 2493, 2493, 2493, 2493, 2493, 2495, 2495, 2495, 2495, - 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, - 2495, 2495, 2495, 2495, 2692, 2692, 2692, 2692, 2692, 2692, - 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, - 2692, 2692, 2696, 3921, 2696, 2696, 3921, 3921, 2696, 2696, - 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, - 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, - - 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2081, 2081, - 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, - 2081, 2081, 2081, 2081, 2081, 2081, 2348, 2348, 3921, 2348, - 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, - 2348, 2348, 2348, 2348, 2550, 2550, 2550, 2550, 2550, 2550, - 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, - 2550, 2550, 2350, 2350, 3921, 2350, 2350, 2350, 2350, 2350, - 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350, - 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, - 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2744, 3921, - - 2744, 3921, 2744, 2744, 2744, 2744, 2560, 3921, 2560, 3921, - 2560, 2560, 2560, 2560, 2745, 3921, 2745, 3921, 2745, 2745, - 2745, 2745, 2756, 3921, 3921, 2756, 2756, 3921, 3921, 2756, - 3921, 2756, 3921, 2756, 2756, 2756, 2756, 2580, 3921, 3921, - 2580, 3921, 2580, 3921, 2580, 2580, 2580, 2580, 2765, 3921, - 2765, 3921, 2765, 2765, 2765, 2765, 2582, 3921, 2582, 3921, - 2582, 2582, 2582, 2582, 2774, 2774, 3921, 2774, 2774, 3921, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2793, 3921, 3921, 2793, 2793, 3921, 3921, 2793, 3921, - 2793, 3921, 2793, 2793, 2793, 2793, 2614, 2614, 3921, 2614, - - 2614, 3921, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, - 2614, 2614, 2614, 2797, 2797, 2797, 2797, 2797, 2797, 2797, - 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, - 2797, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, - 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2066, - 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, - 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2681, 3921, 2681, - 2681, 3921, 3921, 2681, 2681, 2681, 2681, 2681, 2681, 2681, - 2681, 2681, 2681, 2681, 2681, 2287, 3921, 2287, 2287, 3921, - 3921, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, - - 2287, 2287, 2287, 2857, 2857, 2857, 2857, 2857, 2857, 2857, - 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, - 2857, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, - 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2858, - 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, - 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2493, 2493, 2493, - 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, - 2493, 2493, 2493, 2493, 2493, 2289, 3921, 2289, 2289, 3921, - 3921, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, - 2289, 2289, 2289, 2871, 2871, 2871, 2871, 2871, 2871, 2871, - - 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, - 2871, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, - 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2692, - 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, - 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2696, 3921, 2696, - 2696, 3921, 3921, 2696, 2696, 2696, 2696, 2696, 2696, 2696, - 2696, 2696, 2696, 2696, 2696, 2292, 2292, 2292, 2292, 2292, - 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, - 2292, 2292, 2292, 2081, 2081, 2081, 2081, 2081, 2081, 2081, - 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, - - 2081, 2744, 3921, 3921, 2744, 3921, 2744, 3921, 2744, 2744, - 2744, 2744, 2745, 3921, 2745, 3921, 2745, 2745, 2745, 2745, - 2931, 3921, 2931, 3921, 2931, 2931, 2931, 2931, 2756, 3921, - 2756, 3921, 2756, 2756, 2756, 2756, 2765, 3921, 3921, 2765, - 3921, 2765, 3921, 2765, 2765, 2765, 2765, 2774, 2774, 3921, - 2774, 2774, 3921, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2960, 3921, 3921, 2960, 2960, 3921, - 3921, 2960, 3921, 2960, 3921, 2960, 2960, 2960, 2960, 2969, - 3921, 2969, 3921, 2969, 2969, 2969, 2969, 2793, 3921, 2793, - 3921, 2793, 2793, 2793, 2793, 2797, 2797, 2797, 2797, 2797, - - 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797, - 2797, 2797, 2797, 2274, 2274, 2274, 2274, 2274, 2274, 2274, - 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, - 2274, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, - 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2860, - 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2860, - 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2492, 2492, 2492, - 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, - 2492, 2492, 2492, 2492, 2492, 2493, 2493, 2493, 2493, 2493, - 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, - - 2493, 2493, 2493, 2289, 3921, 2289, 2289, 3921, 3921, 2289, - 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, - 2289, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, - 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2495, - 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, - 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2692, 2692, 2692, - 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, - 2692, 2692, 2692, 2692, 2692, 2292, 2292, 2292, 2292, 2292, - 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, - 2292, 2292, 2292, 3087, 3087, 3921, 3921, 3087, 3087, 3087, - - 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, - 3087, 3100, 3100, 3921, 3100, 3100, 3921, 3100, 3100, 3100, - 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3102, 3921, - 3921, 3102, 3102, 3921, 3921, 3102, 3921, 3102, 3921, 3102, - 3102, 3102, 3102, 3105, 3105, 3105, 3105, 3921, 3105, 3105, - 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, - 3105, 3119, 3921, 3921, 3921, 3921, 3921, 3119, 3119, 3119, - 3921, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 2960, - 3921, 2960, 3921, 2960, 2960, 2960, 2960, 2969, 3921, 3921, - 2969, 3921, 2969, 3921, 2969, 2969, 2969, 2969, 3195, 3195, - - 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, - 3195, 3195, 3195, 3195, 3195, 3195, 3237, 3921, 3237, 3921, - 3237, 3237, 3237, 3237, 3258, 3258, 3921, 3258, 3258, 3921, - 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, - 3258, 3338, 3921, 3921, 3338, 3338, 3921, 3921, 3921, 3921, - 3921, 3921, 3338, 3354, 3354, 3921, 3921, 3921, 3354, 3354, - 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, - 3354, 3457, 3457, 3921, 3457, 3457, 3921, 3457, 3457, 3457, - 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3467, 3467, - 3921, 3467, 3467, 3921, 3467, 3467, 3467, 3467, 3467, 3467, - - 3467, 3467, 3467, 3467, 3467, 3541, 3541, 3921, 3541, 3541, - 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, - 3541, 3541, 3544, 3544, 3921, 3544, 3544, 3544, 3544, 3544, - 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3588, - 3921, 3588, 3921, 3588, 3921, 3588, 3588, 3588, 3588, 3619, - 3619, 3921, 3619, 3619, 3921, 3619, 3619, 3619, 3619, 3619, - 3619, 3619, 3619, 3619, 3619, 3619, 3620, 3620, 3921, 3620, - 3620, 3921, 3620, 3620, 3620, 3620, 3620, 3620, 3620, 3620, - 3620, 3620, 3620, 3623, 3623, 3623, 3623, 3623, 3623, 3623, - 3623, 3623, 3623, 3623, 3623, 3623, 3623, 3623, 3623, 3623, - - 3623, 3657, 3921, 3657, 3921, 3657, 3921, 3657, 3657, 3657, - 3657, 3661, 3661, 3921, 3921, 3661, 3661, 3661, 3661, 3661, - 3921, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3663, - 3663, 3921, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, - 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3672, 3672, 3921, - 3672, 3672, 3921, 3672, 3672, 3672, 3672, 3672, 3672, 3672, - 3672, 3672, 3672, 3672, 3674, 3674, 3921, 3921, 3674, 3674, - 3674, 3674, 3674, 3921, 3674, 3674, 3674, 3674, 3674, 3674, - 3674, 3674, 3722, 3921, 3921, 3921, 3921, 3921, 3722, 3722, - 3722, 3921, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, - - 3665, 3665, 3921, 3665, 3665, 3921, 3665, 3665, 3665, 3665, - 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3725, 3921, 3921, - 3725, 3725, 3921, 3921, 3725, 3921, 3725, 3921, 3725, 3725, - 3725, 3725, 3728, 3728, 3921, 3728, 3728, 3921, 3728, 3728, - 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3729, - 3921, 3921, 3921, 3921, 3921, 3729, 3729, 3729, 3921, 3729, - 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3765, 3921, 3765, - 3921, 3765, 3765, 3765, 3765, 3766, 3766, 3921, 3766, 3766, - 3921, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, - 3766, 3766, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, - - 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, - 3811, 3811, 3921, 3811, 3811, 3921, 3811, 3811, 3811, 3811, - 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3813, 3921, 3921, - 3921, 3813, 3813, 3813, 3813, 3813, 3921, 3813, 3813, 3813, - 3813, 3813, 3813, 3813, 3813, 3815, 3921, 3921, 3921, 3815, - 3815, 3815, 3815, 3815, 3921, 3815, 3815, 3815, 3815, 3815, - 3815, 3815, 3815, 3843, 3843, 3921, 3843, 3843, 3921, 3843, - 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, - 3844, 3844, 3921, 3844, 3844, 3921, 3844, 3844, 3844, 3844, - 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3845, 3921, 3921, - - 3921, 3845, 3845, 3845, 3845, 3845, 3921, 3845, 3845, 3845, - 3845, 3845, 3845, 3845, 3845, 3847, 3921, 3921, 3921, 3847, - 3847, 3847, 3847, 3847, 3921, 3847, 3847, 3847, 3847, 3847, - 3847, 3847, 3847, 3861, 3921, 3861, 3921, 3861, 3921, 3861, - 3861, 3861, 3861, 3864, 3864, 3921, 3864, 3864, 3864, 3864, - 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, - 3873, 3873, 3921, 3873, 3873, 3921, 3873, 3873, 3873, 3873, - 3873, 3873, 3873, 3873, 3873, 3873, 3873, 3874, 3874, 3921, - 3874, 3874, 3921, 3874, 3874, 3874, 3874, 3874, 3874, 3874, - 3874, 3874, 3874, 3874, 3886, 3921, 3886, 3921, 3886, 3921, - - 3886, 3886, 3886, 3886, 3887, 3921, 3921, 3921, 3921, 3921, - 3887, 3887, 3887, 3921, 3887, 3887, 3887, 3887, 3887, 3887, - 3887, 3887, 75, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921 - } ; - -static const flex_int16_t yy_chk[14111] = - { 0, - 0, 1, 1, 1, 1, 5, 1, 1, 5, 6, - 95, 95, 6, 0, 1, 7, 7, 7, 7, 7, - 7, 0, 9, 9, 7, 9, 9, 13, 7, 1188, - 1, 13, 1, 1, 3899, 83, 13, 1, 1, 1, - 116, 116, 14, 1, 1, 1, 14, 1, 1, 3887, - 9, 14, 1, 873, 15, 15, 1, 15, 1, 873, - 1, 1, 15, 83, 15, 1, 1, 1, 71, 84, - 7, 1, 1, 1, 1188, 1, 1, 9, 132, 132, - 1, 2, 2, 2, 2, 71, 2, 2, 10, 10, - 72, 10, 10, 85, 2, 21, 21, 84, 21, 7, - - 7, 86, 11, 11, 49, 11, 11, 72, 49, 15, - 2, 49, 2, 2, 87, 3874, 10, 2, 2, 2, - 88, 85, 773, 2, 2, 2, 89, 2, 2, 86, - 11, 92, 2, 250, 118, 250, 2, 118, 2, 773, - 2, 2, 87, 10, 3873, 2, 2, 2, 88, 3868, - 21, 2, 2, 2, 89, 2, 2, 11, 49, 92, - 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 8, 8, - 8, 8, 8, 8, 93, 12, 12, 8, 12, 12, - 3864, 8, 16, 16, 2287, 16, 17, 17, 3844, 17, - 16, 17, 16, 47, 17, 47, 18, 18, 2287, 18, - 47, 18, 93, 12, 18, 19, 19, 137, 19, 137, - 19, 20, 20, 19, 20, 257, 20, 257, 19, 20, - - 48, 94, 48, 8, 20, 22, 22, 48, 22, 81, - 12, 220, 81, 297, 90, 33, 33, 16, 33, 100, - 33, 17, 90, 33, 297, 27, 27, 47, 27, 94, - 27, 18, 8, 8, 137, 27, 35, 35, 27, 35, - 19, 27, 90, 3843, 35, 91, 20, 100, 28, 28, - 90, 28, 27, 28, 48, 101, 81, 139, 28, 139, - 22, 28, 91, 388, 28, 220, 29, 29, 104, 29, - 33, 29, 3840, 91, 29, 28, 29, 107, 143, 29, - 27, 143, 29, 101, 30, 30, 3838, 30, 108, 30, - 91, 35, 30, 29, 30, 3833, 104, 30, 36, 36, - - 30, 36, 388, 28, 139, 107, 36, 213, 213, 27, - 27, 30, 223, 223, 31, 31, 108, 31, 109, 31, - 45, 29, 31, 45, 31, 45, 46, 31, 143, 46, - 31, 46, 28, 28, 65, 32, 32, 65, 32, 30, - 32, 31, 65, 32, 97, 32, 109, 97, 32, 34, - 34, 32, 34, 36, 34, 114, 65, 34, 39, 39, - 39, 39, 32, 39, 115, 40, 40, 40, 40, 31, - 40, 39, 105, 140, 105, 45, 196, 219, 40, 196, - 219, 46, 219, 114, 65, 195, 195, 195, 195, 3804, - 32, 225, 115, 3802, 225, 226, 226, 265, 265, 97, - - 105, 140, 105, 3798, 34, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 41, 41, 41, 41, 147, 41, 42, 42, - - 42, 42, 153, 42, 43, 43, 43, 43, 3797, 43, - 44, 44, 44, 44, 50, 44, 102, 66, 50, 59, - 66, 50, 286, 286, 147, 66, 73, 60, 102, 73, - 153, 73, 129, 74, 73, 129, 74, 283, 74, 66, - 283, 74, 315, 318, 102, 315, 318, 41, 73, 185, - 59, 67, 59, 42, 185, 74, 102, 173, 60, 43, - 60, 59, 59, 59, 59, 44, 2693, 66, 50, 60, - 60, 60, 60, 68, 77, 77, 73, 77, 59, 348, - 59, 183, 67, 74, 67, 173, 60, 129, 60, 59, - 59, 59, 59, 67, 67, 67, 67, 60, 60, 60, - - 60, 185, 99, 484, 68, 99, 68, 103, 2693, 183, - 67, 106, 67, 111, 103, 68, 68, 68, 68, 189, - 110, 67, 67, 67, 67, 106, 348, 3790, 111, 77, - 99, 106, 68, 99, 68, 103, 110, 112, 177, 106, - 177, 111, 103, 68, 68, 68, 68, 189, 110, 3783, - 113, 309, 112, 106, 113, 113, 111, 484, 145, 106, - 198, 145, 309, 2859, 110, 112, 119, 119, 119, 119, - 201, 119, 120, 120, 120, 120, 179, 120, 113, 179, - 112, 177, 113, 113, 121, 121, 121, 121, 198, 121, - 126, 126, 126, 126, 199, 126, 203, 133, 201, 138, - - 133, 199, 138, 142, 142, 2859, 187, 138, 145, 138, - 142, 187, 142, 199, 133, 133, 148, 148, 436, 436, - 148, 119, 199, 148, 203, 133, 179, 120, 133, 199, - 144, 156, 156, 144, 156, 144, 3782, 181, 144, 121, - 181, 199, 133, 133, 205, 126, 131, 131, 131, 131, - 131, 131, 208, 131, 138, 211, 131, 142, 187, 405, - 131, 149, 131, 131, 149, 131, 131, 131, 188, 149, - 148, 188, 205, 642, 131, 131, 131, 131, 131, 131, - 208, 131, 3768, 211, 131, 144, 156, 181, 131, 151, - 131, 131, 151, 131, 131, 131, 150, 151, 405, 150, - - 494, 150, 157, 157, 150, 157, 155, 155, 200, 150, - 155, 149, 642, 155, 159, 159, 159, 159, 155, 162, - 162, 200, 162, 188, 162, 166, 166, 212, 166, 346, - 166, 346, 162, 876, 380, 3765, 200, 380, 166, 151, - 169, 166, 3756, 169, 210, 169, 162, 210, 169, 200, - 435, 150, 166, 435, 494, 212, 2872, 157, 167, 167, - 155, 167, 169, 167, 868, 168, 168, 230, 168, 159, - 168, 167, 876, 202, 162, 210, 346, 1389, 168, 186, - 166, 170, 186, 202, 170, 167, 170, 186, 206, 170, - 169, 170, 168, 3739, 170, 230, 206, 171, 2872, 235, - - 171, 202, 171, 162, 162, 171, 904, 359, 170, 166, - 166, 202, 224, 167, 414, 224, 206, 224, 174, 171, - 168, 174, 1389, 174, 206, 176, 174, 235, 176, 174, - 176, 243, 868, 176, 186, 176, 170, 498, 176, 2062, - 174, 2062, 167, 167, 178, 178, 521, 171, 178, 168, - 168, 178, 176, 178, 359, 180, 178, 521, 180, 243, - 180, 414, 244, 180, 3738, 184, 184, 224, 174, 184, - 178, 3729, 184, 904, 190, 190, 190, 486, 486, 197, - 176, 190, 192, 192, 192, 192, 204, 245, 197, 209, - 244, 498, 197, 209, 207, 192, 246, 197, 178, 209, - - 227, 207, 496, 496, 204, 227, 204, 197, 209, 176, - 180, 207, 501, 501, 204, 245, 197, 209, 228, 184, - 197, 209, 207, 228, 246, 197, 231, 209, 190, 207, - 232, 231, 204, 232, 204, 233, 209, 192, 233, 207, - 214, 214, 214, 214, 217, 217, 217, 217, 218, 218, - 218, 218, 227, 218, 221, 221, 221, 221, 247, 221, - 222, 222, 222, 222, 236, 222, 248, 236, 251, 253, - 228, 251, 260, 2063, 254, 2063, 251, 254, 231, 269, - 232, 423, 254, 270, 258, 233, 247, 258, 267, 258, - 251, 267, 258, 271, 248, 214, 254, 253, 272, 217, - - 260, 263, 263, 218, 263, 262, 258, 269, 262, 221, - 262, 270, 273, 262, 236, 222, 274, 275, 251, 276, - 278, 271, 279, 280, 254, 280, 272, 262, 423, 282, - 285, 281, 287, 285, 258, 267, 288, 289, 290, 291, - 273, 292, 293, 294, 274, 275, 281, 276, 278, 295, - 279, 280, 296, 280, 298, 262, 263, 282, 299, 281, - 287, 300, 301, 302, 288, 289, 290, 291, 303, 292, - 293, 294, 304, 305, 281, 307, 304, 295, 304, 308, - 296, 310, 298, 306, 306, 285, 299, 311, 312, 300, - 301, 302, 313, 314, 323, 327, 303, 323, 327, 323, - - 304, 305, 507, 307, 304, 325, 304, 308, 325, 310, - 325, 306, 306, 328, 329, 311, 312, 330, 332, 3722, - 313, 314, 319, 319, 319, 319, 886, 319, 320, 320, - 320, 320, 335, 320, 321, 321, 321, 321, 333, 321, - 331, 328, 329, 331, 336, 330, 332, 335, 337, 507, - 327, 338, 333, 333, 334, 1115, 334, 339, 340, 341, - 335, 1115, 340, 342, 344, 337, 333, 442, 331, 345, - 337, 331, 336, 345, 745, 335, 337, 319, 3693, 338, - 333, 333, 334, 320, 334, 339, 340, 341, 343, 321, - 340, 342, 344, 337, 886, 442, 349, 345, 337, 349, - - 369, 345, 343, 343, 349, 369, 349, 350, 350, 351, - 353, 351, 354, 353, 350, 355, 343, 355, 353, 354, - 353, 354, 356, 362, 360, 356, 362, 360, 745, 360, - 343, 343, 360, 361, 361, 363, 364, 514, 363, 364, - 361, 364, 365, 443, 364, 366, 365, 369, 366, 365, - 2264, 349, 2264, 366, 372, 370, 351, 372, 370, 3033, - 370, 350, 355, 370, 441, 353, 354, 441, 370, 371, - 371, 443, 356, 362, 373, 374, 371, 373, 374, 360, - 374, 371, 373, 374, 514, 363, 375, 361, 374, 444, - 375, 364, 524, 375, 411, 366, 365, 411, 375, 376, - - 376, 3033, 376, 524, 372, 377, 377, 445, 377, 398, - 370, 379, 379, 379, 379, 381, 381, 444, 381, 384, - 384, 446, 384, 371, 373, 1108, 382, 382, 398, 382, - 374, 382, 384, 395, 474, 445, 395, 474, 395, 382, - 375, 395, 386, 386, 411, 386, 384, 386, 447, 446, - 2616, 416, 416, 382, 376, 386, 398, 2797, 416, 448, - 377, 488, 387, 387, 488, 387, 379, 387, 483, 386, - 381, 483, 421, 483, 384, 387, 447, 421, 387, 389, - 389, 382, 389, 395, 389, 390, 390, 448, 390, 387, - 390, 391, 389, 1108, 391, 389, 391, 386, 390, 391, - - 2616, 426, 426, 384, 384, 416, 389, 2797, 426, 428, - 382, 382, 390, 391, 428, 394, 403, 387, 394, 403, - 394, 403, 449, 394, 421, 396, 386, 386, 396, 2265, - 396, 2265, 403, 396, 389, 396, 3691, 394, 396, 417, - 390, 391, 417, 403, 397, 397, 387, 387, 397, 562, - 449, 397, 396, 397, 399, 426, 397, 399, 3655, 399, - 562, 428, 399, 389, 389, 394, 427, 427, 427, 390, - 390, 403, 425, 427, 401, 425, 399, 401, 402, 401, - 396, 402, 401, 402, 401, 565, 402, 401, 402, 417, - 418, 402, 487, 418, 402, 487, 565, 487, 397, 403, - - 403, 401, 451, 420, 399, 402, 1319, 420, 404, 406, - 420, 404, 406, 404, 406, 3650, 404, 406, 404, 406, - 427, 404, 406, 415, 404, 406, 415, 425, 415, 401, - 451, 415, 857, 402, 409, 404, 406, 409, 431, 409, - 418, 410, 409, 431, 409, 410, 419, 409, 410, 419, - 410, 419, 424, 410, 419, 424, 495, 420, 401, 495, - 424, 409, 402, 404, 406, 429, 1328, 410, 429, 430, - 3624, 430, 454, 429, 1319, 455, 430, 456, 415, 857, - 452, 432, 432, 432, 432, 438, 438, 438, 438, 409, - 431, 452, 404, 406, 432, 410, 450, 457, 450, 458, - - 454, 419, 450, 455, 459, 456, 460, 424, 452, 462, - 463, 462, 464, 465, 466, 459, 467, 468, 467, 452, - 429, 469, 464, 430, 450, 457, 450, 458, 471, 472, - 450, 465, 459, 1328, 460, 1323, 432, 462, 463, 462, - 464, 465, 466, 459, 467, 468, 467, 473, 489, 469, - 464, 489, 500, 489, 1326, 500, 471, 472, 3620, 465, - 470, 470, 493, 470, 505, 493, 470, 493, 470, 505, - 470, 470, 470, 520, 470, 473, 470, 470, 470, 470, - 476, 476, 476, 476, 480, 480, 480, 480, 470, 470, - 497, 470, 508, 497, 470, 497, 470, 508, 470, 470, - - 470, 520, 470, 1323, 470, 470, 470, 470, 481, 481, - 481, 481, 482, 482, 482, 482, 505, 482, 485, 485, - 485, 485, 1326, 485, 491, 491, 491, 491, 3619, 491, - 522, 492, 492, 492, 492, 476, 492, 499, 502, 480, - 499, 502, 499, 503, 508, 510, 503, 523, 503, 511, - 510, 515, 511, 516, 515, 525, 516, 532, 522, 2136, - 2136, 531, 528, 481, 531, 528, 542, 482, 557, 531, - 528, 557, 543, 485, 533, 523, 532, 533, 1695, 491, - 544, 545, 533, 525, 528, 535, 492, 539, 535, 539, - 535, 860, 499, 535, 542, 546, 533, 510, 547, 511, - - 543, 515, 538, 516, 532, 538, 539, 535, 544, 545, - 538, 531, 528, 548, 540, 550, 551, 540, 552, 540, - 553, 555, 540, 546, 533, 556, 547, 558, 559, 560, - 558, 561, 563, 564, 539, 535, 540, 590, 860, 2799, - 590, 548, 566, 550, 551, 1695, 552, 567, 553, 555, - 568, 570, 538, 556, 3578, 3562, 559, 560, 571, 561, - 563, 564, 572, 573, 540, 554, 554, 554, 554, 574, - 566, 554, 554, 554, 575, 567, 576, 554, 568, 570, - 554, 579, 554, 554, 554, 554, 571, 554, 554, 2799, - 572, 573, 580, 554, 554, 554, 554, 574, 577, 554, - - 554, 554, 575, 581, 576, 554, 578, 578, 554, 579, - 554, 554, 554, 554, 582, 554, 554, 577, 583, 585, - 580, 586, 587, 588, 591, 589, 577, 591, 593, 594, - 595, 581, 596, 598, 578, 578, 589, 599, 600, 602, - 603, 588, 582, 606, 607, 577, 583, 585, 608, 586, - 587, 588, 610, 611, 612, 613, 593, 594, 595, 614, - 596, 598, 615, 616, 617, 599, 600, 602, 603, 588, - 618, 606, 607, 619, 675, 620, 608, 620, 869, 675, - 610, 611, 612, 613, 869, 623, 624, 614, 623, 624, - 615, 616, 617, 623, 624, 623, 624, 626, 618, 629, - - 626, 619, 629, 630, 629, 640, 630, 629, 630, 632, - 635, 630, 632, 635, 3046, 635, 636, 632, 635, 636, - 646, 636, 620, 635, 636, 637, 675, 638, 637, 636, - 638, 646, 645, 639, 639, 3544, 639, 824, 639, 655, - 623, 624, 645, 3541, 640, 645, 639, 626, 824, 639, - 641, 641, 869, 641, 629, 641, 3046, 3525, 630, 632, - 639, 733, 3514, 641, 733, 635, 641, 643, 643, 895, - 643, 636, 643, 640, 674, 899, 653, 641, 655, 653, - 643, 653, 682, 643, 647, 647, 662, 647, 639, 647, - 649, 3509, 653, 649, 643, 649, 662, 647, 649, 662, - - 647, 734, 674, 653, 734, 641, 669, 655, 895, 669, - 682, 647, 649, 645, 899, 905, 652, 639, 639, 652, - 654, 652, 643, 654, 652, 654, 652, 683, 654, 652, - 654, 653, 652, 654, 641, 641, 654, 684, 663, 647, - 649, 678, 679, 652, 678, 679, 663, 654, 685, 678, - 735, 643, 643, 735, 905, 683, 669, 663, 3498, 653, - 653, 686, 3488, 737, 687, 684, 737, 662, 647, 647, - 740, 652, 3196, 740, 656, 654, 685, 656, 657, 656, - 3486, 657, 656, 657, 656, 663, 657, 656, 657, 686, - 656, 657, 687, 3468, 657, 680, 678, 679, 680, 688, - - 652, 656, 690, 680, 654, 657, 1318, 658, 659, 691, - 658, 659, 658, 659, 3196, 658, 659, 658, 659, 692, - 658, 659, 1575, 658, 659, 693, 1391, 688, 743, 656, - 690, 743, 694, 657, 658, 659, 3467, 691, 660, 664, - 695, 660, 664, 660, 664, 1318, 660, 692, 660, 747, - 680, 660, 747, 693, 660, 664, 672, 3458, 656, 672, - 694, 672, 658, 659, 672, 660, 664, 697, 695, 665, - 666, 1391, 665, 666, 665, 666, 1575, 665, 666, 665, - 666, 673, 665, 666, 673, 665, 673, 751, 1937, 673, - 751, 658, 659, 660, 664, 697, 665, 666, 3434, 667, - - 698, 699, 667, 701, 667, 702, 696, 667, 3423, 667, - 703, 672, 667, 696, 696, 696, 696, 696, 696, 696, - 696, 696, 660, 664, 665, 666, 667, 705, 698, 699, - 706, 701, 707, 702, 708, 709, 673, 710, 703, 712, - 714, 802, 1937, 715, 802, 736, 716, 717, 736, 719, - 736, 720, 721, 665, 667, 705, 713, 723, 706, 724, - 707, 725, 708, 709, 726, 710, 720, 712, 714, 713, - 713, 715, 713, 713, 716, 717, 718, 719, 718, 720, - 721, 722, 718, 728, 713, 723, 727, 724, 732, 725, - 753, 722, 726, 835, 720, 727, 835, 713, 713, 3416, - - 713, 713, 761, 729, 718, 729, 718, 729, 754, 722, - 718, 728, 738, 754, 727, 738, 732, 738, 753, 722, - 3384, 739, 741, 727, 739, 741, 739, 741, 762, 744, - 761, 729, 744, 729, 744, 729, 746, 748, 763, 746, - 748, 746, 748, 750, 752, 764, 750, 752, 750, 752, - 758, 774, 775, 758, 766, 776, 762, 766, 2870, 777, - 754, 778, 766, 780, 770, 781, 763, 770, 782, 770, - 783, 784, 770, 764, 786, 2870, 766, 785, 790, 774, - 775, 791, 3374, 776, 792, 793, 770, 777, 3373, 778, - 796, 780, 785, 781, 787, 785, 782, 790, 783, 784, - - 758, 787, 786, 788, 766, 785, 790, 788, 787, 791, - 789, 788, 792, 793, 770, 795, 794, 797, 796, 797, - 785, 798, 787, 785, 789, 790, 789, 799, 800, 787, - 795, 788, 794, 805, 807, 788, 787, 803, 789, 788, - 810, 811, 812, 795, 794, 797, 813, 797, 803, 798, - 3364, 814, 789, 815, 789, 799, 800, 816, 795, 818, - 794, 805, 807, 819, 820, 821, 822, 823, 810, 811, - 812, 825, 826, 827, 813, 829, 830, 832, 803, 814, - 3322, 815, 833, 836, 837, 816, 831, 818, 838, 839, - 840, 819, 820, 821, 822, 823, 841, 831, 842, 825, - - 826, 827, 843, 829, 830, 832, 844, 845, 831, 847, - 833, 836, 837, 848, 849, 850, 838, 839, 840, 851, - 852, 848, 853, 854, 841, 855, 842, 856, 863, 858, - 843, 858, 3304, 863, 844, 845, 831, 847, 908, 3288, - 888, 848, 849, 850, 3282, 911, 888, 851, 852, 848, - 853, 854, 915, 855, 859, 856, 861, 859, 862, 861, - 870, 862, 859, 862, 859, 864, 862, 866, 864, 865, - 866, 870, 865, 874, 865, 863, 858, 865, 867, 867, - 915, 867, 865, 867, 874, 908, 909, 914, 867, 909, - 914, 867, 911, 882, 867, 872, 872, 3280, 872, 881, - - 872, 916, 881, 3274, 881, 867, 861, 881, 872, 859, - 996, 872, 882, 862, 888, 864, 917, 977, 883, 918, - 977, 883, 872, 883, 865, 912, 883, 919, 883, 916, - 912, 883, 978, 867, 883, 978, 909, 3264, 884, 870, - 882, 884, 914, 884, 917, 883, 884, 918, 884, 881, - 872, 884, 889, 1329, 884, 919, 885, 996, 3189, 885, - 889, 885, 867, 867, 885, 884, 885, 920, 921, 885, - 3262, 889, 885, 883, 1520, 3189, 924, 912, 925, 872, - 872, 887, 891, 885, 887, 891, 887, 891, 3251, 887, - 928, 887, 1329, 884, 887, 920, 921, 887, 891, 889, - - 893, 931, 883, 893, 924, 893, 925, 892, 887, 891, - 892, 885, 892, 3237, 3204, 892, 893, 892, 928, 1520, - 892, 979, 884, 892, 979, 932, 979, 893, 889, 931, - 933, 935, 936, 998, 892, 937, 887, 891, 894, 898, - 885, 894, 898, 894, 898, 1003, 894, 898, 894, 913, - 3167, 894, 913, 932, 894, 893, 1003, 913, 933, 935, - 936, 898, 892, 937, 939, 894, 891, 980, 896, 897, - 980, 896, 897, 896, 897, 1268, 896, 897, 896, 897, - 998, 896, 897, 893, 896, 897, 1268, 981, 3154, 898, - 981, 892, 939, 894, 900, 896, 897, 900, 906, 900, - - 997, 906, 900, 906, 913, 997, 906, 907, 906, 940, - 907, 906, 907, 922, 906, 907, 900, 907, 922, 941, - 907, 942, 943, 896, 897, 906, 945, 946, 910, 947, - 922, 910, 948, 910, 907, 982, 910, 940, 982, 983, - 982, 922, 983, 3149, 900, 986, 922, 941, 986, 942, - 943, 3119, 997, 906, 945, 946, 949, 947, 922, 950, - 948, 951, 907, 929, 929, 929, 929, 929, 929, 929, - 929, 929, 930, 930, 930, 930, 930, 930, 930, 930, - 930, 953, 906, 910, 949, 952, 954, 950, 952, 951, - 955, 956, 957, 958, 959, 960, 961, 962, 963, 965, - - 966, 967, 968, 965, 967, 969, 970, 971, 972, 953, - 973, 976, 984, 3105, 954, 984, 952, 984, 955, 956, - 957, 958, 959, 960, 961, 962, 963, 965, 966, 967, - 968, 965, 967, 969, 970, 971, 972, 985, 973, 976, - 985, 987, 985, 1000, 987, 989, 987, 990, 989, 1001, - 990, 991, 990, 992, 991, 1002, 992, 993, 992, 994, - 993, 1005, 994, 995, 994, 999, 995, 1004, 999, 1007, - 1004, 1000, 1011, 1006, 1012, 1004, 1006, 1001, 1006, 1014, - 1005, 1006, 1015, 1002, 1016, 1017, 1018, 2267, 1007, 2267, - 1019, 1020, 1021, 1022, 1023, 3097, 1024, 1025, 1027, 1029, - - 1011, 1030, 1012, 1026, 1026, 1026, 1026, 1014, 1005, 1031, - 1015, 3087, 1016, 1017, 1018, 999, 1007, 1004, 1019, 1020, - 1021, 1022, 1023, 1006, 1024, 1025, 1027, 1029, 1032, 1030, - 1033, 1026, 1026, 1026, 1026, 1028, 1034, 1031, 1035, 1028, - 1036, 1037, 1038, 1039, 1041, 1040, 1038, 1042, 1038, 1040, - 1043, 1044, 1045, 1046, 1047, 3060, 1032, 1050, 1033, 3058, - 1051, 1041, 1053, 1028, 1034, 1054, 1035, 1028, 1036, 1037, - 1038, 1039, 1041, 1040, 1038, 1042, 1038, 1040, 1043, 1044, - 1045, 1046, 1047, 1049, 1052, 1050, 1055, 1049, 1051, 1041, - 1053, 1056, 1057, 1054, 1049, 1052, 1049, 3056, 1058, 1059, - - 1060, 1061, 1063, 1064, 1065, 1066, 1067, 1069, 1070, 1071, - 3052, 1049, 1073, 1074, 1055, 1049, 1076, 1077, 1078, 1056, - 1057, 1079, 1049, 1080, 1049, 1052, 1058, 1059, 1060, 1061, - 1063, 1064, 1065, 1066, 1067, 1069, 1070, 1071, 1072, 1072, - 1073, 1074, 1072, 1081, 1076, 1077, 1078, 1072, 1082, 1079, - 1083, 1080, 1084, 1072, 1085, 1086, 1087, 1072, 1088, 1072, - 1090, 1091, 1092, 1093, 1094, 1095, 1072, 1072, 1096, 1097, - 1072, 1081, 1098, 1099, 1100, 1072, 1082, 1113, 1083, 1114, - 1084, 1072, 1085, 1086, 1087, 1072, 1088, 1072, 1090, 1091, - 1092, 1093, 1094, 1095, 1126, 1107, 1096, 1097, 1107, 1128, - - 1098, 1099, 1100, 1106, 1106, 1118, 1106, 1111, 1106, 1130, - 1111, 1112, 1111, 1118, 1112, 1111, 1106, 1111, 1114, 1106, - 1111, 1131, 1126, 1111, 1118, 1133, 3043, 1128, 1190, 1135, - 1106, 1190, 1136, 3035, 1111, 1138, 1139, 1130, 1116, 1141, - 3026, 1116, 1143, 1116, 1113, 1113, 1116, 1114, 1116, 1131, - 3016, 1116, 1118, 1133, 1116, 2975, 1120, 1135, 1106, 1120, - 1136, 1120, 1111, 1138, 1139, 1116, 1107, 1141, 1117, 1398, - 1143, 1117, 1120, 1117, 2973, 1573, 1117, 1122, 1117, 2969, - 1398, 1117, 1112, 1120, 1117, 1122, 1573, 1106, 1106, 1119, - 1144, 1111, 1119, 1116, 1119, 1117, 1122, 1119, 2964, 1119, - - 1145, 1146, 1119, 1123, 1121, 1119, 1123, 1121, 1123, 1121, - 1137, 1120, 1121, 1147, 1121, 1151, 1119, 1121, 1144, 1123, - 1121, 1153, 1116, 1117, 1122, 2957, 1137, 1156, 1145, 1146, - 1123, 1121, 1191, 1193, 1192, 1191, 1193, 1192, 1137, 1192, - 2937, 1147, 1157, 1151, 1119, 2931, 1158, 1159, 1160, 1153, - 1161, 1162, 1164, 1142, 1137, 1156, 1165, 1166, 1123, 1121, - 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1167, - 1157, 1168, 1169, 1119, 1158, 1159, 1160, 1170, 1161, 1162, - 1164, 1171, 1171, 1172, 1165, 1166, 1173, 1123, 1163, 1163, - 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1167, 1174, 1168, - - 1169, 1175, 1177, 1178, 1179, 1170, 1180, 1181, 1183, 1171, - 1171, 1172, 1184, 1185, 1173, 1186, 1186, 1194, 1195, 1196, - 1194, 1195, 1196, 1195, 1198, 1200, 1174, 1198, 1200, 1175, - 1177, 1178, 1179, 1202, 1180, 1181, 1183, 1206, 1207, 1208, - 1184, 1185, 1197, 1186, 1186, 1197, 1199, 1197, 1215, 1199, - 1201, 1199, 1216, 1201, 1217, 1219, 1220, 1222, 1223, 1224, - 1225, 1202, 1226, 1227, 1228, 1206, 1207, 1208, 1229, 1230, - 1232, 1231, 1233, 1234, 1235, 1236, 1215, 1231, 1237, 1238, - 1216, 1239, 1217, 1219, 1220, 1222, 1223, 1224, 1225, 1240, - 1226, 1227, 1228, 1241, 1242, 1243, 1229, 1230, 1232, 1231, - - 1233, 1234, 1235, 1236, 1244, 1231, 1237, 1238, 1245, 1239, - 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1240, 1253, 1254, - 1255, 1241, 1242, 1243, 1256, 1257, 1259, 1260, 1261, 1262, - 1263, 1264, 1244, 1253, 1266, 1267, 1245, 1269, 1246, 1247, - 1248, 1249, 1250, 1251, 1252, 1266, 1253, 1254, 1255, 1270, - 1266, 1266, 1256, 1257, 1259, 1260, 1261, 1262, 1263, 1264, - 1271, 1253, 1266, 1267, 1273, 1269, 1274, 1275, 1276, 1278, - 1279, 1280, 1281, 1266, 1283, 1285, 1286, 1270, 1266, 1266, - 1287, 1288, 1289, 1290, 1291, 1293, 1295, 1288, 1271, 1296, - 1297, 1298, 1273, 1299, 1274, 1275, 1276, 1278, 1279, 1280, - - 1281, 1300, 1283, 1285, 1286, 1301, 1302, 1303, 1287, 1288, - 1289, 1290, 1291, 1293, 1295, 1288, 1304, 1296, 1297, 1298, - 1305, 1299, 1306, 1308, 1309, 1310, 1311, 1312, 1313, 1300, - 1314, 1315, 1316, 1301, 1302, 1303, 1317, 1321, 1325, 2929, - 1393, 1568, 1332, 1393, 1304, 1335, 1325, 2471, 1305, 2471, - 1306, 1308, 1309, 1310, 1311, 1312, 1313, 1325, 1314, 1315, - 1316, 1322, 1327, 1336, 1322, 1327, 1322, 1327, 1331, 1322, - 1332, 1322, 1337, 1335, 1322, 1317, 1321, 1322, 1327, 1331, - 1333, 1654, 1333, 1338, 1339, 1325, 1568, 1340, 1322, 1327, - 1341, 1336, 1654, 1330, 1342, 1345, 1330, 1347, 1330, 1348, - - 1337, 1330, 1349, 1330, 1317, 1321, 1330, 1352, 1333, 1330, - 1333, 1338, 1339, 1350, 1325, 1340, 1322, 1327, 1341, 1351, - 1330, 1344, 1342, 1345, 1344, 1347, 1344, 1348, 1353, 1354, - 1349, 1344, 1356, 1362, 1344, 1331, 1364, 1352, 1367, 1368, - 1369, 1350, 1370, 1352, 1371, 1372, 1327, 1351, 1330, 1394, - 1395, 1396, 1394, 1395, 1396, 1395, 1353, 1354, 1373, 1374, - 1356, 1362, 1375, 1376, 1364, 1352, 1367, 1368, 1369, 1378, - 1370, 1352, 1371, 1372, 1379, 1380, 1344, 1363, 1363, 1363, - 1363, 1363, 1363, 1363, 1363, 1363, 1373, 1374, 1381, 1383, - 1375, 1376, 1384, 1385, 1386, 1387, 1388, 1378, 1384, 1399, - - 1400, 1397, 1379, 1380, 1397, 1403, 1404, 1406, 1407, 1408, - 1409, 1410, 1411, 1412, 1413, 1414, 1381, 1383, 1415, 1416, - 1384, 1385, 1386, 1387, 1388, 1418, 1384, 1399, 1400, 1419, - 1420, 1417, 1421, 1403, 1404, 1406, 1407, 1408, 1409, 1410, - 1411, 1412, 1413, 1414, 1417, 1422, 1415, 1416, 1423, 1417, - 1424, 1425, 1426, 1418, 1428, 1427, 1429, 1419, 1420, 1417, - 1421, 1427, 1430, 1427, 1431, 1432, 1427, 1433, 1434, 2893, - 1436, 1437, 1417, 1422, 1438, 1439, 1423, 1417, 1424, 1425, - 1426, 1440, 1428, 1427, 1429, 2882, 1441, 1442, 1443, 1427, - 1430, 1427, 1431, 1432, 1427, 1433, 1434, 1435, 1436, 1437, - - 1444, 1435, 1438, 1439, 1445, 1446, 1447, 1448, 1435, 1440, - 1435, 1435, 1449, 1435, 1441, 1442, 1443, 1450, 1451, 1452, - 1453, 1454, 1455, 1456, 1461, 1435, 1462, 1463, 1444, 1435, - 1464, 1465, 1445, 1446, 1447, 1448, 1435, 1469, 1435, 1435, - 1449, 1435, 1470, 2881, 2865, 1450, 1451, 1452, 1453, 1454, - 1455, 1456, 1461, 1466, 1462, 1463, 1471, 1473, 1464, 1465, - 1466, 1472, 1474, 1475, 1476, 1469, 1477, 1478, 1466, 1471, - 1470, 1471, 1472, 1466, 1479, 1480, 1481, 1482, 1483, 1484, - 1485, 1466, 1486, 1472, 1471, 1473, 1487, 1489, 1466, 1490, - 1474, 1475, 1476, 1488, 1477, 1478, 1466, 1471, 1488, 1471, - - 1491, 1466, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1492, - 1486, 1472, 1493, 1494, 1487, 1489, 1495, 1490, 1496, 1497, - 1498, 1488, 1499, 1502, 1501, 1503, 1488, 1504, 1491, 1501, - 1505, 3501, 1508, 3501, 1509, 1506, 1510, 1492, 1499, 1511, - 1493, 1494, 1513, 1506, 1495, 1514, 1496, 1497, 1498, 1515, - 1499, 1502, 1501, 1503, 1506, 1504, 1507, 1501, 1516, 1507, - 1508, 1507, 1509, 1517, 1510, 1518, 1499, 1511, 1523, 1709, - 1513, 1519, 1507, 1514, 1519, 1522, 1519, 1515, 1522, 1526, - 1522, 1519, 1506, 1507, 1519, 1522, 1516, 1527, 1522, 1528, - 1531, 1517, 1532, 1518, 1534, 1529, 1523, 1505, 1505, 1529, - - 1536, 1529, 1571, 1789, 2864, 1571, 1789, 1526, 1752, 2855, - 2000, 1507, 1542, 1543, 1709, 1527, 2814, 1528, 1531, 1752, - 1532, 2000, 1534, 1529, 1546, 1547, 1519, 1529, 1536, 1529, - 1522, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, - 1542, 1543, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, - 1544, 1548, 1546, 1547, 1549, 1550, 1551, 1552, 1553, 1554, - 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, - 1565, 1566, 1572, 1576, 1577, 1580, 1581, 1582, 1583, 1548, - 1585, 1586, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, - 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, - - 1572, 1576, 1577, 1580, 1581, 1582, 1583, 1584, 1585, 1586, - 1587, 1588, 1589, 1590, 1584, 1591, 1592, 1593, 1594, 1595, - 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, - 1606, 1607, 1608, 1609, 1610, 1584, 1611, 1612, 1587, 1588, - 1589, 1590, 1584, 1591, 1592, 1593, 1594, 1595, 1596, 1597, - 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, - 1608, 1609, 1610, 1613, 1611, 1612, 1614, 1615, 1616, 1617, - 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, - 1628, 1629, 1630, 1631, 1632, 1633, 1635, 1636, 1637, 1638, - 1639, 1613, 1640, 1630, 1614, 1615, 1616, 1617, 1618, 1619, - - 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, - 1641, 1631, 1632, 1633, 1635, 1636, 1637, 1638, 1639, 1642, - 1640, 1643, 1644, 1630, 1646, 1647, 1648, 1649, 1650, 1651, - 1652, 1656, 1657, 1658, 1660, 1661, 1663, 1664, 1641, 1668, - 1669, 1652, 2813, 1804, 1670, 1671, 1804, 1642, 2804, 1643, - 1644, 1673, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1656, - 1657, 1658, 1660, 1661, 1663, 1664, 1674, 1668, 1669, 1652, - 1653, 1653, 1670, 1671, 1653, 1675, 1653, 1676, 1677, 1673, - 1653, 1653, 1678, 1679, 1653, 1680, 1681, 1682, 1683, 1653, - 1684, 1685, 1686, 1687, 1674, 1689, 1690, 1691, 1653, 1653, - - 1692, 1693, 1653, 1675, 1653, 1676, 1677, 1751, 1653, 1653, - 1678, 1679, 1653, 1680, 1681, 1682, 1683, 1653, 1684, 1685, - 1686, 1687, 1688, 1689, 1690, 1691, 1694, 1697, 1692, 1693, - 1698, 1700, 1701, 1702, 1703, 1688, 1704, 1705, 1707, 1711, - 1715, 1707, 1716, 1707, 1718, 1719, 1720, 1703, 1707, 2798, - 1688, 1707, 1751, 1961, 1694, 1697, 1961, 1721, 1698, 1700, - 1701, 1702, 1703, 1688, 1704, 1705, 1727, 1711, 1715, 1717, - 1716, 2769, 1718, 1719, 1720, 1703, 1717, 1717, 1717, 1717, - 1717, 1717, 1717, 1717, 1717, 1721, 1722, 1724, 1722, 1729, - 1729, 1730, 1731, 1707, 1727, 1732, 1733, 1734, 1735, 1724, - - 1736, 1737, 1739, 1740, 1724, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1722, 1724, 1722, 1729, 1729, 1730, - 1731, 1743, 1744, 1732, 1733, 1734, 1735, 1724, 1736, 1737, - 1739, 1740, 1724, 1741, 1745, 1742, 1746, 1747, 1748, 1749, - 1750, 1756, 1757, 1741, 1760, 1761, 1742, 1763, 1764, 1743, - 1744, 1765, 1766, 1767, 1741, 1742, 1768, 1769, 1770, 1771, - 1772, 1741, 1745, 1742, 1746, 1747, 1748, 1749, 1750, 1756, - 1757, 1741, 1760, 1761, 1742, 1763, 1764, 1773, 1774, 1765, - 1766, 1767, 1741, 1742, 1768, 1769, 1770, 1771, 1772, 1776, - 1777, 1775, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, - - 1786, 1787, 1788, 1790, 1791, 1773, 1774, 1775, 1792, 1793, - 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1776, 1777, 1775, - 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, - 1788, 1790, 1791, 1801, 1802, 1775, 1792, 1793, 1794, 1795, - 1796, 1797, 1798, 1799, 1800, 1803, 1805, 1806, 1807, 1808, - 1807, 1803, 1809, 1810, 1812, 1807, 1813, 1814, 1816, 1817, - 1818, 1801, 1802, 1820, 1821, 1822, 1823, 1824, 1814, 1826, - 2765, 1819, 1828, 1803, 1805, 1806, 1807, 1808, 1807, 1803, - 1809, 1810, 1812, 1807, 1813, 1819, 1816, 1817, 1818, 1829, - 1830, 1820, 1821, 1822, 1823, 1824, 1831, 1826, 1814, 1819, - - 1828, 1832, 1833, 1834, 1836, 1835, 1837, 1838, 1839, 1840, - 1841, 1842, 2753, 2744, 1845, 1846, 1847, 1829, 1830, 1835, - 1849, 1850, 1855, 1857, 1831, 1858, 2974, 1859, 1860, 1832, - 1833, 1834, 1836, 1835, 1837, 1838, 1839, 1840, 1841, 1842, - 1844, 1844, 1845, 1846, 1847, 1862, 1844, 1835, 1849, 1850, - 1855, 1857, 1863, 1858, 1844, 1859, 1860, 1844, 1864, 1865, - 1866, 1867, 1869, 1872, 1870, 1873, 1870, 1874, 1844, 1844, - 1870, 1875, 1876, 1862, 1844, 1877, 2974, 1879, 1880, 1881, - 1863, 1870, 1844, 1870, 3132, 1844, 1864, 1865, 1866, 1867, - 1869, 1872, 1870, 1873, 1870, 1874, 1883, 1884, 1870, 1875, - - 1876, 1885, 1878, 1877, 1878, 1882, 1880, 1881, 1878, 1870, - 1886, 1870, 1882, 1887, 1888, 1891, 1892, 1895, 3580, 1878, - 3580, 1878, 1879, 1896, 1883, 1884, 1897, 1899, 2696, 1885, - 1878, 1900, 1878, 1882, 3132, 1901, 1878, 1901, 1886, 1902, - 1882, 1887, 1888, 1889, 1903, 1904, 1889, 1878, 1889, 1878, - 1906, 1896, 1907, 1889, 1897, 1899, 1889, 1908, 1911, 1900, - 1891, 1892, 1895, 1901, 1912, 1901, 1914, 1902, 1915, 1916, - 2201, 2685, 1903, 1904, 1917, 1918, 1919, 1920, 1906, 1974, - 1907, 2201, 1974, 2681, 1974, 1908, 1911, 1921, 1922, 1923, - 2079, 1924, 1912, 2079, 1914, 1922, 1915, 1916, 1889, 1909, - - 1925, 1926, 1917, 1918, 1919, 1920, 1909, 1909, 1909, 1909, - 1909, 1909, 1909, 1909, 1909, 1921, 1922, 1923, 1909, 1924, - 1909, 1909, 1909, 1922, 1927, 1928, 1909, 1929, 1925, 1926, - 1930, 1909, 1931, 1932, 1933, 1934, 1935, 1936, 1929, 1943, - 1909, 1939, 1939, 1939, 1939, 1945, 1909, 1946, 1909, 1909, - 1909, 1947, 1927, 1928, 1909, 1929, 1948, 1949, 1930, 1909, - 1931, 1932, 1933, 1934, 1935, 1936, 1929, 1943, 1909, 1941, - 1941, 1941, 1941, 1945, 1950, 1946, 1951, 1952, 1953, 1947, - 1954, 1955, 1956, 1957, 1948, 1949, 1958, 1959, 1962, 1963, - 1964, 1965, 1966, 1967, 1968, 1970, 1939, 1971, 1972, 1973, - - 1975, 1976, 1950, 1977, 1951, 1952, 1953, 1978, 1954, 1955, - 1956, 1957, 1979, 1980, 1958, 1959, 1962, 1963, 1964, 1965, - 1966, 1967, 1968, 1970, 1941, 1971, 1972, 1973, 1975, 1976, - 1981, 1977, 1982, 1983, 1984, 1978, 1985, 1986, 1987, 1988, - 1979, 1980, 1989, 1990, 1991, 1992, 1990, 1993, 1990, 1994, - 1995, 1996, 1997, 1998, 1999, 2002, 2003, 2004, 1981, 2005, - 1982, 1983, 1984, 2006, 1985, 1986, 1987, 1988, 2007, 2008, - 1989, 2009, 1991, 1992, 2010, 1993, 2011, 1994, 1995, 1996, - 1997, 1998, 1999, 2002, 2003, 2004, 2012, 2005, 2643, 2642, - 2014, 2006, 2015, 2618, 2580, 2016, 2007, 2008, 2553, 2009, - - 2017, 2018, 2010, 2019, 2011, 2020, 2550, 2021, 2022, 2023, - 2024, 2025, 2026, 2027, 2012, 2013, 2013, 2013, 2014, 2013, - 2015, 2013, 2013, 2016, 2028, 2013, 2013, 2013, 2017, 2018, - 2029, 2019, 2013, 2020, 2013, 2021, 2022, 2023, 2024, 2025, - 2026, 2027, 2030, 2013, 2013, 2013, 2031, 2013, 2032, 2013, - 2013, 2033, 2028, 2013, 2013, 2013, 2034, 2035, 2029, 2036, - 2013, 2037, 2013, 2038, 2039, 2042, 2043, 2044, 2045, 2050, - 2030, 2051, 2052, 2053, 2031, 2054, 2032, 2055, 2056, 2033, - 2057, 2058, 2061, 2058, 2034, 2035, 2064, 2036, 2065, 2037, - 2065, 2038, 2039, 2042, 2043, 2044, 2045, 2050, 2066, 2051, - - 2052, 2053, 2067, 2054, 2068, 2055, 2056, 2069, 2057, 2058, - 2061, 2058, 2070, 2071, 2064, 2081, 2065, 2072, 2065, 2082, - 2073, 2083, 2074, 2075, 2076, 2077, 2078, 2086, 2087, 2088, - 2089, 2090, 2541, 2091, 2092, 2069, 3412, 2093, 3412, 2094, - 2070, 2071, 2095, 2066, 2095, 2072, 2539, 2067, 2073, 2068, - 2074, 2075, 2076, 2077, 2078, 2086, 2087, 2088, 2089, 2090, - 2081, 2091, 2092, 2098, 2082, 2093, 2083, 2094, 2099, 2100, - 2095, 2102, 2095, 2096, 2096, 2096, 2096, 2096, 2096, 2096, - 2096, 2096, 2103, 2104, 2106, 2096, 2107, 2096, 2096, 2096, - 2101, 2098, 2108, 2096, 2109, 2101, 2099, 2100, 2096, 2102, - - 2110, 2111, 2112, 2113, 2115, 2116, 2117, 2096, 3412, 2506, - 2103, 2104, 2106, 2096, 2107, 2096, 2096, 2096, 2101, 2118, - 2108, 2096, 2109, 2101, 2119, 2120, 2096, 2121, 2110, 2111, - 2112, 2113, 2115, 2116, 2117, 2096, 2097, 2097, 2097, 2097, - 2097, 2097, 2097, 2097, 2097, 2122, 2123, 2118, 2124, 2125, - 2126, 2128, 2119, 2120, 2129, 2121, 2130, 2131, 2132, 2135, - 2135, 2135, 2135, 2137, 2137, 2138, 2138, 2138, 2138, 2139, - 2139, 2140, 2142, 2122, 2123, 2143, 2124, 2125, 2126, 2128, - 2144, 2145, 2129, 2147, 2130, 2131, 2132, 2148, 2149, 2194, - 2150, 2151, 2194, 2152, 2153, 2159, 2502, 2154, 2155, 2140, - - 2142, 2156, 2157, 2143, 2500, 2160, 2161, 2158, 2144, 2145, - 2158, 2147, 2158, 2162, 2135, 2148, 2149, 2137, 2150, 2151, - 2138, 2152, 2153, 2139, 2146, 2154, 2155, 2499, 2163, 2156, - 2157, 2164, 2159, 2160, 2161, 2165, 2166, 3582, 2167, 3582, - 2146, 2162, 2168, 2169, 2170, 2172, 2173, 2170, 2174, 2170, - 2175, 2176, 2177, 2146, 2178, 2146, 2163, 2179, 2180, 2164, - 2159, 2181, 2183, 2165, 2166, 2146, 2167, 2146, 2146, 2146, - 2168, 2169, 2184, 2172, 2173, 2185, 2174, 2186, 2175, 2176, - 2177, 2146, 2178, 2146, 2189, 2179, 2180, 2190, 2191, 2181, - 2183, 2192, 2193, 2146, 2195, 2146, 2146, 2146, 2196, 2188, - - 2184, 2197, 2188, 2185, 2188, 2186, 2199, 2200, 2203, 2204, - 2202, 2205, 2189, 2206, 2207, 2190, 2191, 2209, 2208, 2192, - 2193, 2202, 2195, 2210, 2211, 2212, 2196, 2208, 2213, 2197, - 2214, 2215, 2216, 2217, 2199, 2200, 2203, 2204, 2218, 2205, - 2219, 2206, 2207, 2220, 2221, 2209, 2208, 2222, 2227, 2228, - 2229, 2210, 2211, 2212, 2230, 2219, 2213, 2231, 2214, 2215, - 2216, 2217, 2232, 2233, 2234, 2235, 2218, 2236, 2219, 2238, - 2239, 2220, 2221, 2240, 2241, 2222, 2227, 2228, 2229, 2242, - 2247, 2248, 2230, 2219, 2250, 2231, 2254, 2255, 2257, 2258, - 2232, 2233, 2234, 2235, 2259, 2236, 2260, 2238, 2239, 2261, - - 2262, 2240, 2241, 2263, 2269, 2270, 2271, 2242, 2247, 2248, - 2274, 2276, 2250, 2278, 2254, 2255, 2257, 2258, 2279, 2280, - 2281, 2282, 2259, 2283, 2260, 2284, 2285, 2261, 2262, 2286, - 2292, 2263, 2269, 2270, 2271, 2294, 2295, 2296, 2297, 2298, - 2367, 2278, 2299, 2367, 2300, 2301, 2279, 2280, 2281, 2282, - 2303, 2283, 2498, 2284, 2285, 2274, 2276, 2286, 2288, 2304, - 2305, 2288, 2491, 2288, 2295, 2296, 2297, 2298, 2288, 2479, - 2299, 2288, 2300, 2301, 2307, 2292, 2308, 2309, 2303, 2310, - 2294, 2311, 2306, 2312, 2310, 2288, 2313, 2304, 2305, 2306, - 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2314, 2315, - - 2316, 2317, 2307, 2318, 2308, 2309, 2319, 2310, 2320, 2311, - 2321, 2312, 2310, 2288, 2313, 2323, 2324, 2325, 2327, 2330, - 2332, 2333, 2334, 2336, 2337, 2338, 2314, 2315, 2316, 2317, - 2339, 2318, 2340, 2341, 2319, 2342, 2320, 2345, 2321, 2347, - 2477, 2476, 2352, 2323, 2324, 2325, 2327, 2330, 2332, 2333, - 2334, 2336, 2337, 2338, 2349, 2349, 2353, 2349, 2339, 2355, - 2340, 2341, 2356, 2342, 2359, 2345, 2360, 2347, 2351, 2351, - 2352, 2351, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2368, - 2369, 2475, 2370, 2371, 2353, 2372, 2373, 2355, 2374, 2375, - 2356, 2379, 2359, 2377, 2360, 2470, 2377, 2380, 2377, 2381, - - 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2368, 2369, 2349, - 2370, 2371, 2382, 2372, 2373, 2383, 2374, 2375, 2384, 2379, - 2385, 2386, 2389, 2351, 2349, 2380, 2391, 2381, 2392, 2393, - 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2402, 2351, 2403, - 2382, 2404, 2405, 2383, 2407, 2408, 2384, 2410, 2385, 2386, - 2389, 2411, 2409, 2413, 2391, 2409, 2392, 2393, 2394, 2395, - 2396, 2397, 2398, 2399, 2400, 2402, 2414, 2403, 2415, 2404, - 2405, 2412, 2407, 2408, 2412, 2410, 2412, 2416, 2417, 2411, - 2420, 2413, 2421, 2423, 2425, 2426, 2428, 2429, 2430, 2431, - 2432, 2433, 2435, 2436, 2414, 2425, 2415, 2445, 2437, 2438, - - 2439, 2440, 2442, 2443, 2444, 2416, 2417, 2446, 2420, 2447, - 2421, 2423, 2448, 2426, 2428, 2429, 2430, 2431, 2432, 2433, - 2435, 2436, 2450, 2451, 2452, 2425, 2437, 2438, 2439, 2440, - 2442, 2443, 2444, 2453, 2454, 2446, 2455, 2447, 2456, 2457, - 2448, 2458, 2459, 2460, 2463, 2464, 2465, 2467, 2468, 2469, - 2450, 2451, 2452, 2473, 2474, 2478, 2480, 2481, 2482, 2483, - 2484, 2453, 2454, 2485, 2455, 2486, 2456, 2457, 2487, 2458, - 2459, 2460, 2463, 2464, 2465, 2467, 2468, 2469, 2488, 2490, - 2493, 2473, 2474, 2501, 2494, 2503, 2482, 2483, 2484, 2495, - 2504, 2485, 2495, 2486, 2495, 2505, 2487, 2493, 2494, 2495, - - 2478, 2480, 2481, 2507, 2434, 2492, 2488, 2490, 2492, 2496, - 2492, 2508, 2496, 2509, 2496, 2492, 2495, 2510, 2492, 2496, - 2511, 2512, 2496, 2505, 2497, 2493, 2494, 2497, 2501, 2497, - 2503, 2507, 2492, 2513, 2497, 2504, 2496, 2497, 2514, 2508, - 2516, 2509, 2517, 2518, 2495, 2510, 2519, 2520, 2511, 2512, - 2521, 2497, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, - 2492, 2513, 2530, 2531, 2496, 2532, 2514, 2533, 2516, 2534, - 2517, 2518, 2535, 2536, 2519, 2520, 2537, 2538, 2521, 2497, - 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2540, 2542, - 2530, 2531, 2543, 2532, 2544, 2533, 2545, 2534, 2546, 2547, - - 2535, 2536, 2548, 2549, 2537, 2538, 2551, 2551, 2556, 2551, - 2554, 2554, 2557, 2554, 2558, 2562, 2540, 2542, 2563, 2564, - 2543, 2565, 2544, 2566, 2545, 2567, 2546, 2547, 2568, 2569, - 2548, 2549, 2570, 2424, 2571, 2572, 2556, 2571, 2573, 2571, - 2557, 2575, 2558, 2562, 2576, 2577, 2563, 2564, 2422, 2565, - 2578, 2566, 2406, 2567, 2579, 2583, 2568, 2569, 2584, 2585, - 2570, 2551, 2586, 2572, 2587, 2554, 2573, 2588, 2590, 2575, - 2590, 2592, 2576, 2577, 2594, 2595, 2551, 2596, 2578, 2597, - 2554, 2599, 2579, 2583, 2600, 2601, 2584, 2585, 2602, 2603, - 2586, 2602, 2587, 2604, 2605, 2588, 2590, 2606, 2590, 2592, - - 2607, 2609, 2594, 2595, 2610, 2596, 2613, 2597, 2603, 2599, - 2617, 2611, 2600, 2601, 2611, 2619, 2611, 2603, 2612, 2612, - 2620, 2604, 2605, 2621, 2622, 2606, 2623, 2624, 2607, 2609, - 2615, 2625, 2610, 2615, 2613, 2615, 2603, 2626, 2617, 2628, - 2629, 2630, 2631, 2619, 2632, 2633, 2612, 2612, 2620, 2634, - 2635, 2621, 2622, 2636, 2623, 2624, 2637, 2638, 2639, 2625, - 2640, 2641, 2644, 2645, 2646, 2626, 2647, 2628, 2629, 2630, - 2631, 2648, 2632, 2633, 2649, 2650, 2651, 2634, 2635, 2652, - 2654, 2636, 2655, 2656, 2637, 2638, 2639, 2657, 2640, 2641, - 2644, 2645, 2646, 2658, 2647, 2659, 2661, 2662, 2663, 2648, - - 2665, 2666, 2649, 2650, 2651, 2667, 2668, 2652, 2654, 2669, - 2655, 2656, 2670, 2671, 2672, 2657, 2674, 2675, 2676, 2677, - 2678, 2658, 2679, 2659, 2661, 2662, 2663, 2682, 2665, 2666, - 2697, 2698, 2686, 2667, 2668, 2770, 2687, 2669, 2770, 2689, - 2670, 2682, 2699, 2700, 2674, 2675, 2676, 2677, 2678, 2686, - 2679, 2683, 2684, 2687, 2683, 2684, 2683, 2684, 2671, 2672, - 2390, 2683, 2684, 2688, 2683, 2684, 2688, 2689, 2388, 2682, - 2699, 2700, 2701, 2802, 2703, 2697, 2698, 2686, 2683, 2684, - 2688, 2687, 2690, 2691, 2802, 2690, 2691, 2690, 2691, 2378, - 2358, 2692, 2690, 2691, 2692, 2690, 2692, 2357, 2350, 2704, - - 2701, 2692, 2703, 2705, 2692, 2706, 2683, 2684, 2707, 2690, - 2691, 2348, 2694, 2708, 2709, 2694, 2695, 2694, 2692, 2695, - 2710, 2695, 2694, 2711, 2712, 2694, 2695, 2704, 2713, 2695, - 2714, 2705, 2715, 2706, 2716, 2717, 2707, 2690, 2691, 2694, - 2718, 2708, 2709, 2695, 2719, 2721, 2692, 2722, 2710, 2723, - 2724, 2711, 2712, 2725, 2726, 2727, 2713, 2728, 2714, 2729, - 2715, 2730, 2716, 2717, 2731, 2732, 2733, 2694, 2718, 2735, - 2736, 2695, 2719, 2721, 2737, 2722, 2738, 2723, 2724, 2739, - 2740, 2725, 2726, 2727, 2742, 2728, 2746, 2729, 2747, 2730, - 2748, 2749, 2731, 2732, 2733, 2750, 2751, 2735, 2736, 2752, - - 2754, 2757, 2737, 2758, 2738, 2759, 2760, 2739, 2740, 2761, - 2762, 2763, 2742, 2766, 2746, 2767, 2747, 2768, 2748, 2749, - 2772, 2773, 2775, 2750, 2751, 2776, 2777, 2752, 2754, 2757, - 3651, 2758, 3651, 2759, 2760, 2779, 2780, 2761, 2762, 2763, - 2781, 2766, 2782, 2767, 2784, 2768, 2785, 2778, 2772, 2773, - 2775, 2783, 2786, 2776, 2783, 2778, 2783, 2777, 2778, 2787, - 2778, 2788, 2789, 2779, 2780, 2790, 2791, 2794, 2781, 2795, - 2782, 2796, 2784, 2800, 2785, 2778, 2801, 2803, 2806, 2807, - 2786, 2805, 2808, 2778, 2809, 2777, 2778, 2787, 2778, 2788, - 2789, 2810, 2805, 2790, 2791, 2794, 2811, 2795, 2812, 2796, - - 2815, 2800, 2816, 2817, 2801, 2803, 2806, 2807, 2818, 2819, - 2808, 2820, 2809, 2821, 2815, 2822, 2823, 2824, 2825, 2810, - 2826, 2827, 2820, 2828, 2811, 2829, 2812, 2830, 2815, 2831, - 2816, 2817, 2833, 2834, 2835, 2836, 2818, 2819, 2837, 2838, - 2839, 2821, 2840, 2822, 2823, 2824, 2825, 2841, 2826, 2827, - 2842, 2828, 2843, 2829, 2844, 2830, 2845, 2831, 2846, 2847, - 2833, 2834, 2835, 2836, 2848, 2849, 2837, 2838, 2839, 2850, - 2840, 2851, 2852, 2853, 2854, 2841, 2856, 2883, 2842, 2858, - 2843, 2885, 2844, 2886, 2845, 2857, 2846, 2847, 2857, 2887, - 2857, 2880, 2848, 2849, 2856, 2857, 2858, 2335, 2857, 2851, - - 2852, 2853, 2854, 2860, 2856, 2883, 2860, 2293, 2860, 2885, - 2866, 2886, 2857, 2860, 2850, 2861, 2862, 2887, 2861, 2862, - 2861, 2862, 2856, 2888, 2858, 2861, 2862, 2866, 2861, 2862, - 2860, 2867, 2868, 2869, 2863, 2877, 2880, 2863, 2877, 2863, - 2857, 2979, 2861, 2862, 2863, 2889, 2291, 2863, 2867, 2868, - 2869, 2888, 2979, 2290, 2871, 2866, 2890, 2871, 2860, 2871, - 2891, 2863, 3037, 2892, 2871, 3037, 2894, 2871, 2289, 2873, - 2861, 2862, 2873, 2889, 2873, 2275, 2867, 2868, 2869, 2873, - 2874, 2871, 2873, 2874, 2890, 2874, 2895, 2273, 2891, 2863, - 2874, 2892, 2875, 2874, 2894, 2875, 2873, 2875, 2876, 2897, - - 2272, 2876, 2875, 2876, 2899, 2251, 2901, 2874, 2876, 2871, - 2878, 2902, 2903, 2878, 2895, 2878, 2905, 2906, 2907, 2875, - 2878, 2908, 2909, 2878, 2873, 2876, 2910, 2897, 2879, 2911, - 2912, 2879, 2899, 2879, 2901, 2874, 2913, 2878, 2879, 2902, - 2903, 2879, 2914, 2915, 2905, 2906, 2907, 2875, 2919, 2908, - 2909, 2920, 2922, 2876, 2910, 2879, 2923, 2911, 2912, 2924, - 2925, 2926, 2927, 2930, 2913, 2878, 2932, 2933, 2934, 2935, - 2914, 2915, 2936, 2938, 2940, 2941, 2919, 2942, 2947, 2920, - 2922, 2237, 2948, 2879, 2923, 2950, 2951, 2924, 2925, 2926, - 2927, 2930, 2952, 2953, 2932, 2933, 2934, 2935, 2954, 2956, - - 2936, 2938, 2940, 2941, 2944, 2942, 2947, 2944, 2958, 2944, - 2948, 2955, 2958, 2950, 2951, 2961, 2962, 2963, 2965, 2958, - 2952, 2953, 2955, 2955, 2966, 2967, 2954, 2956, 2968, 2970, - 2971, 2972, 2976, 2977, 2980, 2982, 2958, 2983, 2984, 2955, - 2958, 2985, 2986, 2961, 2962, 2963, 2965, 2958, 2987, 2988, - 2955, 2955, 2966, 2967, 2989, 2991, 2968, 2970, 2971, 2972, - 2976, 2977, 2980, 2982, 2992, 2983, 2984, 2990, 2990, 2985, - 2986, 2993, 2994, 2995, 2996, 2998, 2987, 2988, 2999, 3000, - 3001, 3002, 2989, 2991, 3003, 3004, 3005, 3006, 3007, 3009, - 3011, 3012, 2992, 3008, 3013, 2990, 2990, 3015, 3006, 2993, - - 2994, 2995, 2996, 2998, 3008, 3017, 2999, 3000, 3001, 3002, - 3018, 3019, 3003, 3004, 3005, 3021, 3007, 3009, 3011, 3012, - 3022, 3023, 3013, 3024, 3025, 3015, 3027, 3028, 3006, 3029, - 3031, 3032, 3038, 3017, 3008, 3269, 3036, 3034, 3018, 3019, - 3034, 3053, 3034, 3021, 3029, 3383, 3269, 3034, 3022, 3023, - 3034, 3024, 3025, 3036, 3027, 3028, 3383, 3029, 3031, 3032, - 3038, 2134, 2133, 3039, 3034, 3044, 3039, 2048, 3039, 3053, - 3045, 2046, 3029, 3039, 3040, 3041, 3039, 3040, 3041, 3040, - 3041, 3036, 3044, 3054, 3040, 3041, 3042, 3045, 3041, 3042, - 3039, 3042, 3034, 3055, 3048, 3047, 3042, 3048, 3047, 3042, - - 3047, 3040, 3041, 2041, 3049, 3047, 3057, 3049, 3047, 3049, - 3044, 3054, 3059, 3042, 3049, 3045, 3061, 3049, 3039, 3062, - 3063, 3055, 3047, 3064, 3066, 3067, 3068, 3069, 3070, 3040, - 3041, 3049, 3549, 3050, 3057, 3071, 3050, 3072, 3050, 3073, - 3059, 3042, 3075, 3050, 3061, 3076, 3050, 3062, 3063, 3077, - 3047, 3064, 3066, 3067, 3068, 3069, 3070, 3078, 3080, 3049, - 3050, 3081, 3082, 3071, 3083, 3072, 3084, 3073, 3085, 3084, - 3075, 3086, 3088, 3076, 3090, 3091, 3092, 3077, 3093, 3094, - 3314, 3335, 3549, 3314, 3335, 3078, 3080, 1960, 3050, 3081, - 3082, 3096, 3083, 3099, 1944, 3103, 3085, 3104, 3106, 3086, - - 3088, 3107, 3090, 3091, 3092, 3108, 3093, 3094, 3095, 3095, - 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3102, 3109, 3096, - 3102, 3099, 3102, 3103, 3110, 3104, 3106, 3111, 3112, 3107, - 3113, 3114, 3116, 3108, 3115, 3115, 3115, 3115, 3115, 3115, - 3115, 3115, 3115, 3117, 3118, 3120, 3109, 3121, 3122, 3124, - 3125, 3126, 3110, 3127, 3129, 3111, 3112, 3130, 3113, 3114, - 3116, 3131, 3133, 3134, 3136, 3137, 3138, 3140, 3141, 3143, - 3144, 3117, 3118, 3120, 3145, 3121, 3122, 3124, 3125, 3126, - 3146, 3127, 3129, 3147, 3148, 3130, 3150, 3151, 3152, 3131, - 3133, 3134, 3136, 3137, 3138, 3140, 3141, 3143, 3144, 3153, - - 3155, 3156, 3145, 3157, 3158, 3160, 3162, 3165, 3146, 3168, - 3169, 3147, 3148, 3171, 3150, 3151, 3152, 3173, 3174, 3175, - 3168, 3176, 1940, 3177, 3178, 3179, 3181, 3153, 3155, 3156, - 3182, 3157, 3158, 3160, 3162, 3165, 3183, 3184, 3169, 3186, - 3188, 3171, 3193, 3199, 3185, 3173, 3174, 3175, 1938, 3176, - 3168, 3177, 3178, 3179, 3181, 3185, 1910, 3188, 3182, 3193, - 3200, 1894, 1893, 3187, 3183, 3184, 3187, 3186, 3187, 1890, - 3201, 3199, 3185, 3187, 3190, 3202, 3187, 3190, 3203, 3190, - 3205, 1856, 3206, 3185, 3190, 3188, 3191, 3193, 3200, 3191, - 3187, 3191, 3192, 3207, 1825, 3192, 3191, 3192, 3201, 1759, - - 1755, 3190, 3192, 3202, 3194, 3192, 3203, 3194, 3205, 3194, - 3206, 3209, 3210, 3191, 3194, 1754, 3211, 3194, 3187, 3192, - 1753, 3207, 3195, 3197, 3212, 3195, 3197, 3195, 3197, 3190, - 3213, 3194, 3195, 3197, 3214, 3195, 3197, 3217, 3218, 3209, - 3210, 3191, 3623, 3198, 3211, 3219, 3198, 3192, 3198, 3195, - 3197, 3220, 3212, 3198, 3221, 3222, 3198, 3225, 3213, 3194, - 3226, 3227, 3214, 3228, 3224, 3217, 3218, 3224, 3229, 3224, - 3198, 3230, 3231, 3219, 3232, 3388, 1726, 3195, 3197, 3220, - 1723, 3239, 3221, 3222, 3234, 3225, 3388, 3365, 3226, 3227, - 3365, 3228, 3623, 1714, 3236, 3238, 3229, 3241, 3198, 3230, - - 3231, 3242, 3232, 3233, 3233, 3233, 3233, 3233, 3233, 3233, - 3233, 3233, 3234, 3235, 3235, 3235, 3235, 3235, 3235, 3235, - 3235, 3235, 3236, 3238, 3239, 3241, 3243, 3244, 3245, 3242, - 3246, 3247, 3248, 3249, 3250, 3250, 3250, 3250, 3250, 3250, - 3250, 3250, 3250, 3252, 3253, 3255, 3256, 3257, 3259, 3260, - 3261, 3263, 3239, 3265, 3243, 3244, 3245, 3266, 3246, 3247, - 3248, 3249, 3267, 3268, 3270, 3271, 3272, 3273, 3275, 3276, - 3277, 3252, 3253, 3255, 3256, 3257, 3259, 3260, 3261, 3263, - 3278, 3265, 3279, 3283, 3284, 3266, 3285, 3286, 3289, 3290, - 3267, 3268, 3270, 3271, 3272, 3273, 3275, 3276, 3277, 3291, - - 3294, 3292, 3296, 3297, 3298, 3299, 3300, 3301, 3278, 3292, - 3279, 3283, 3284, 3302, 3285, 3286, 3289, 3290, 3303, 3305, - 3306, 3307, 3308, 3309, 3310, 3312, 1710, 3291, 3294, 3292, - 3296, 3297, 3298, 3299, 3300, 3301, 3366, 3292, 1708, 3366, - 3317, 3302, 3312, 3318, 3644, 1706, 3303, 3305, 3306, 3307, - 3308, 3309, 3310, 3311, 3313, 3644, 3311, 3313, 3311, 3313, - 3319, 3320, 3321, 3311, 3313, 3324, 3311, 3313, 3317, 3315, - 3312, 3318, 3315, 3316, 3315, 3326, 3316, 3328, 3316, 3315, - 3311, 3313, 3315, 3316, 3329, 3330, 3316, 3331, 3319, 3320, - 3321, 3332, 3334, 3324, 3336, 3339, 3315, 3340, 3341, 3342, - - 3316, 3369, 1696, 3326, 3369, 3328, 3645, 3517, 3311, 3313, - 3517, 3459, 3329, 3330, 3459, 3331, 3459, 3645, 3529, 3332, - 3334, 3529, 3336, 3339, 3315, 3340, 3341, 3342, 3316, 3337, - 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, - 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, - 3338, 3343, 3344, 3345, 3337, 3346, 3347, 3349, 3351, 3460, - 3601, 1655, 3460, 3601, 3460, 3338, 3348, 3348, 3348, 3348, - 3348, 3348, 3348, 3348, 3348, 3353, 3355, 3356, 3357, 3343, - 3344, 3345, 3358, 3346, 3347, 3349, 3351, 3352, 3352, 3352, - 3352, 3352, 3352, 3352, 3352, 3352, 3359, 3360, 3361, 3362, - - 3367, 3368, 3370, 3353, 3355, 3356, 3357, 3371, 3372, 3377, - 3358, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, - 3379, 3381, 3385, 3386, 3359, 3360, 3361, 3362, 3367, 3368, - 3370, 3387, 3389, 3390, 3391, 3371, 3372, 3377, 3392, 3393, - 3394, 3395, 3391, 3391, 3396, 3397, 3398, 3399, 3379, 3381, - 3385, 3386, 3400, 3401, 3402, 3403, 3404, 3405, 3407, 3387, - 3389, 3390, 3391, 3408, 3409, 3410, 3392, 3393, 3394, 3395, - 3391, 3391, 3396, 3397, 3398, 3399, 3411, 3413, 3414, 3415, - 3400, 3401, 3402, 3403, 3404, 3405, 3407, 3417, 3418, 3420, - 3421, 3408, 3409, 3410, 3422, 3424, 3426, 1645, 3419, 3430, - - 3432, 3419, 1578, 3419, 3411, 3413, 3414, 3415, 3419, 3436, - 3437, 3419, 3438, 3439, 3440, 3417, 3418, 3420, 3421, 3653, - 1574, 3653, 3422, 3424, 3426, 3419, 3433, 3430, 3432, 3433, - 3435, 3433, 3604, 3625, 3715, 3604, 3715, 3436, 3437, 3441, - 3438, 3439, 3440, 3433, 3433, 3433, 3433, 3433, 3433, 3433, - 3433, 3433, 3442, 3419, 3435, 3435, 3435, 3435, 3435, 3435, - 3435, 3435, 3435, 3435, 3435, 3444, 3445, 3441, 3447, 3447, - 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3448, 3449, 3435, - 3442, 3450, 3451, 3625, 3453, 3452, 3454, 3455, 3456, 3461, - 3462, 3464, 3463, 3444, 3445, 3463, 3465, 3463, 3466, 3542, - - 1569, 3780, 3542, 3780, 3542, 3448, 3449, 1567, 3471, 3450, - 3451, 3452, 3453, 1545, 3454, 3455, 3456, 3461, 3462, 3464, - 1541, 1525, 3476, 3477, 3465, 3478, 3466, 3469, 3469, 3469, - 3469, 3469, 3469, 3469, 3469, 3469, 3471, 3480, 3481, 3452, - 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3475, - 3476, 3477, 3482, 3478, 3483, 3475, 3484, 3485, 3487, 3490, - 3492, 3493, 3494, 3495, 3496, 3480, 3481, 3499, 3500, 3502, - 3503, 3545, 3800, 3692, 3545, 3800, 3545, 3475, 1524, 3781, - 3482, 3781, 3483, 3475, 3484, 3485, 3487, 3490, 3492, 3493, - 3494, 3495, 3496, 3505, 3506, 3499, 3500, 3502, 3503, 3504, - - 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, - 3507, 3510, 3511, 3512, 3513, 3515, 3516, 3813, 3815, 3813, - 3815, 3505, 3506, 3692, 3504, 3518, 3518, 3518, 3518, 3518, - 3518, 3518, 3518, 3518, 1521, 3522, 3523, 3524, 3507, 3510, - 3511, 3512, 3513, 3515, 3516, 3519, 3519, 3519, 3519, 3519, - 3519, 3519, 3519, 3519, 3520, 3520, 3520, 3520, 3520, 3520, - 3520, 3520, 3520, 3522, 3523, 3524, 3526, 3527, 3528, 3530, - 3531, 3532, 3534, 3535, 3535, 3535, 3535, 3535, 3535, 3535, - 3535, 3535, 3536, 3537, 3538, 1468, 3540, 3539, 3547, 3548, - 3550, 3551, 3552, 1467, 3526, 3527, 3528, 3530, 3531, 3532, - - 3534, 3596, 1460, 3817, 3596, 3817, 3596, 3553, 1459, 1458, - 3536, 3537, 3538, 3539, 3540, 3557, 3547, 3548, 3550, 3551, - 3552, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, - 3554, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, - 3558, 3539, 3559, 3557, 3554, 3554, 3554, 3554, 3554, 3554, - 3554, 3554, 3554, 3561, 3563, 3564, 3565, 3566, 3567, 3568, - 3569, 3570, 3571, 3572, 3573, 3574, 3575, 3576, 3558, 3579, - 3559, 3583, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, - 3599, 3561, 3563, 3564, 3565, 3566, 3567, 3568, 3569, 3570, - 3571, 3572, 3573, 3574, 3575, 3576, 3585, 3579, 3586, 3583, - - 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, - 3584, 3587, 3590, 3592, 3593, 3597, 3607, 3597, 3597, 3607, - 3597, 3607, 1405, 3713, 3585, 3584, 3586, 3600, 3597, 3602, - 3661, 3598, 1402, 3661, 3713, 3661, 3818, 1401, 3818, 3587, - 3590, 3592, 3593, 3598, 3598, 3598, 3598, 3598, 3598, 3598, - 3598, 3598, 3606, 3608, 3609, 3600, 3610, 3602, 3603, 3603, - 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3611, 3612, 3612, - 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3613, 3614, 3617, - 3606, 3608, 3609, 3618, 3610, 3616, 3616, 3616, 3616, 3616, - 3616, 3616, 3616, 3616, 3621, 3611, 3626, 3622, 3627, 3597, - - 3628, 3622, 3630, 3631, 3632, 3613, 3614, 3617, 3622, 3668, - 3671, 3618, 3668, 3671, 3668, 3671, 1390, 1366, 3634, 3635, - 3636, 3637, 3621, 3629, 3626, 3622, 3627, 3638, 3628, 3622, - 3630, 3631, 3632, 3639, 3640, 3641, 3622, 3629, 3629, 3629, - 3629, 3629, 3629, 3629, 3629, 3629, 3634, 3635, 3636, 3637, - 3642, 3643, 3646, 3648, 3654, 3638, 3656, 3658, 3660, 3667, - 3669, 3639, 3640, 3641, 3663, 1365, 3663, 3663, 1361, 3663, - 3664, 3674, 3664, 3664, 3674, 3664, 3674, 3663, 3642, 3643, - 3646, 3648, 3654, 3664, 3656, 3658, 3660, 3667, 3669, 3670, - 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3676, 3677, - - 3678, 3679, 3680, 3681, 3682, 3682, 3682, 3682, 3682, 3682, - 3682, 3682, 3682, 3683, 3684, 3687, 3688, 3689, 3690, 3694, - 1360, 3695, 3696, 3697, 3698, 3699, 3676, 3677, 3678, 3679, - 3680, 3681, 3700, 3701, 3702, 3704, 3705, 3706, 3708, 3709, - 3712, 3683, 3684, 3687, 3688, 3689, 3690, 3694, 3663, 3695, - 3696, 3697, 3698, 3699, 3664, 3717, 3719, 3723, 3720, 3727, - 3700, 3701, 3702, 3704, 3705, 3706, 3708, 3709, 3712, 3720, - 3725, 3730, 3731, 3725, 3732, 3725, 3733, 3734, 3735, 3736, - 3737, 3742, 3740, 3717, 3719, 3723, 3720, 3741, 3743, 3744, - 3746, 3747, 3749, 3750, 3751, 3752, 3767, 3720, 3753, 3730, - - 3731, 3754, 3732, 1359, 3733, 3734, 3735, 3736, 3755, 3727, - 3740, 3759, 3760, 3761, 3762, 3741, 3743, 3744, 3746, 3747, - 3749, 3750, 3751, 3752, 3737, 3764, 3753, 3769, 3771, 3754, - 3772, 3742, 3774, 3775, 3776, 3777, 3755, 3779, 3784, 3759, - 3760, 3761, 3762, 3785, 3786, 3787, 3767, 3788, 3791, 3803, - 3792, 3793, 3737, 3764, 3794, 3795, 3771, 3796, 3772, 3799, - 3774, 3775, 3776, 3777, 3805, 3779, 3784, 3806, 3807, 3809, - 3810, 3785, 3786, 3787, 3812, 3788, 3791, 3769, 3792, 3793, - 3820, 3822, 3794, 3795, 3823, 3796, 3824, 3799, 3826, 3827, - 3828, 3829, 3805, 3830, 3836, 3806, 3807, 3809, 3810, 3803, - - 3834, 3835, 3812, 3834, 3835, 3834, 3835, 3837, 3820, 3822, - 3839, 3831, 3823, 3842, 3824, 3850, 3826, 3827, 3828, 3829, - 3851, 3830, 3831, 3852, 3845, 3831, 3845, 3847, 3853, 3847, - 3854, 3855, 3856, 3857, 3858, 3837, 3859, 3860, 3839, 3831, - 3866, 3842, 3865, 3850, 3836, 3865, 1358, 3865, 3851, 1357, - 3831, 3852, 1355, 3831, 1324, 1320, 3853, 1292, 3854, 3855, - 3856, 3857, 3858, 3870, 3859, 3860, 3875, 3876, 3866, 3867, - 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3869, 3869, - 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3877, 3880, 3882, - 3883, 3870, 3884, 3885, 3875, 3876, 3889, 3889, 3889, 3889, - - 3889, 3889, 3889, 3889, 3889, 3890, 3890, 3890, 3890, 3890, - 3890, 3890, 3890, 3890, 3892, 3877, 3880, 3882, 3883, 3895, - 3884, 3885, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, - 3891, 3896, 3897, 3900, 3901, 3908, 3911, 3912, 3913, 3914, - 3915, 3917, 3892, 3918, 3919, 1284, 1282, 3895, 3904, 3904, - 3904, 3904, 3904, 3904, 3904, 3904, 3904, 1277, 1272, 3896, - 3897, 3900, 3901, 3908, 3911, 3912, 3913, 3914, 3915, 3917, - 1214, 3918, 3919, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, - - 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3924, - 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, - 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3925, 3925, 3925, - 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3925, - 3925, 3925, 3925, 3925, 3925, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3927, 3927, 3927, 3927, 3927, 3927, 3927, - 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, - 3927, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, - 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3928, 3929, - - 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, - 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3930, 3930, 3930, - 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, 3930, - 3930, 3930, 3930, 3930, 3930, 3931, 3931, 3931, 3931, 3931, - 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, 3931, - 3931, 3931, 3931, 3932, 3932, 3932, 3932, 3932, 3932, 3932, - 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, - 3932, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, - 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3934, - 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3934, - - 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3935, 3935, 3935, - 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, - 3935, 3935, 3935, 3935, 3935, 3936, 3936, 3936, 3936, 3936, - 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, - 3936, 3936, 3936, 3937, 3937, 3937, 3937, 3937, 3937, 3937, - 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, 3937, - 3937, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, - 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3939, - 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, - 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3940, 3940, 3940, - - 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, - 3940, 3940, 3940, 3940, 3940, 3941, 3941, 3941, 3941, 3941, - 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, - 3941, 3941, 3941, 3942, 3942, 3942, 3942, 3942, 3942, 3942, - 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, - 3942, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, - 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3943, 3944, - 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, - 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3945, 3945, 1213, - 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, 3945, - - 3945, 3945, 3945, 3945, 3945, 3946, 3946, 3946, 3946, 3946, - 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, - 3946, 3946, 3946, 3947, 3947, 3947, 3947, 3947, 3947, 3947, - 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, - 3947, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, - 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3949, - 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, - 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3950, 3950, 3950, - 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, - 3950, 3950, 3950, 3950, 3950, 3951, 3951, 3951, 3951, 3951, - - 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, - 3951, 3951, 3951, 3952, 3952, 3952, 3952, 3952, 3952, 3952, - 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, - 3952, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, - 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3954, - 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3954, - 3954, 3954, 3954, 3954, 3954, 3954, 3954, 3955, 3955, 3955, - 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, - 3955, 3955, 3955, 3955, 3955, 3956, 3956, 3956, 3956, 3956, - 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, 3956, - - 3956, 3956, 3956, 3957, 3957, 3957, 3957, 3957, 3957, 3957, - 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, - 3957, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, - 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3959, - 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3959, - 3959, 3959, 3959, 3959, 3959, 3959, 3959, 3960, 3960, 3960, - 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, - 3960, 3960, 3960, 3960, 3960, 3961, 3961, 3961, 3961, 3961, - 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, - 3961, 3961, 3961, 3962, 3962, 3962, 3962, 3962, 3962, 3962, - - 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, 3962, - 3962, 3963, 3963, 1212, 3963, 3963, 3963, 3963, 3963, 3963, - 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3964, - 3964, 1211, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, - 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3965, 3965, 1210, - 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, - 3965, 3965, 3965, 3965, 3965, 3966, 3966, 3966, 3966, 3966, - 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, - 3966, 3966, 3966, 3967, 3967, 3967, 3967, 3967, 3967, 3967, - 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, - - 3967, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, - 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3969, - 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, - 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3970, 3970, 1209, - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3970, 3970, 3970, 3971, 3971, 3971, 3971, 3971, - 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, - 3971, 3971, 3971, 3972, 3972, 3972, 3972, 3972, 3972, 3972, - 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, 3972, - 3972, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, - - 3973, 3973, 3973, 3973, 3973, 3973, 3973, 1205, 3973, 3974, - 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, - 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3975, 3975, 3975, - 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, - 3975, 3975, 3975, 1204, 3975, 3976, 3976, 3976, 3976, 3976, - 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, - 3976, 3976, 3976, 3977, 3977, 3977, 3977, 3977, 3977, 3977, - 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, - 3977, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, - 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3979, - - 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, - 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3980, 1203, 3980, - 3980, 1189, 1187, 3980, 3980, 3980, 3980, 3980, 1182, 3980, - 3980, 3980, 3980, 3980, 3981, 3981, 3981, 3981, 3981, 3981, - 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, - 3981, 3981, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, - 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 1154, 3982, - 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, - 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3984, 3984, - 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, 3984, - - 3984, 3984, 3984, 3984, 3984, 3984, 3985, 3985, 3985, 3985, - 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, - 3985, 3985, 3985, 3985, 3986, 1150, 3986, 3986, 1140, 1129, - 3986, 3986, 3986, 3986, 3986, 1127, 3986, 3986, 3986, 3986, - 3986, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, - 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3987, 3988, - 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, - 3988, 3988, 3988, 3988, 3988, 1125, 3988, 3989, 3989, 3989, - 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, - 3989, 3989, 3989, 3989, 3989, 3990, 3990, 3990, 3990, 3990, - - 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, 3990, - 3990, 3990, 3990, 3991, 3991, 3991, 3991, 3991, 3991, 3991, - 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, - 3991, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, - 3992, 3992, 3992, 3992, 3992, 3992, 3992, 1124, 3992, 3993, - 3993, 1110, 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3993, - 3993, 3993, 3993, 3993, 3993, 3993, 3993, 3994, 3994, 1109, - 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, - 3994, 3994, 3994, 3994, 3994, 3995, 3995, 1105, 3995, 3995, - 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, 3995, - - 3995, 3995, 3995, 3996, 3996, 3996, 3996, 3996, 3996, 3996, - 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, 3996, - 3996, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, - 3997, 3997, 3997, 3997, 3997, 3997, 3997, 1104, 3997, 3998, - 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, - 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3999, 3999, 3999, - 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, 3999, - 3999, 3999, 3999, 1103, 3999, 4000, 4000, 1102, 4000, 4000, - 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, - 4000, 4000, 4000, 4001, 4001, 4001, 4001, 4001, 4001, 4001, - - 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, - 4001, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, - 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4003, - 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, - 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4004, 4004, 4004, - 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, - 4004, 4004, 4004, 4004, 4004, 4005, 4005, 4005, 4005, 4005, - 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005, 4005, - 4005, 4005, 4005, 4006, 4006, 4006, 4006, 4006, 4006, 4006, - 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, 4006, - - 4006, 4007, 1101, 4007, 4007, 1062, 1009, 4007, 4007, 4007, - 4007, 4007, 1008, 4007, 4007, 4007, 4007, 4007, 4007, 4008, - 988, 4008, 4008, 975, 964, 4008, 4008, 4008, 4008, 4008, - 944, 4008, 4008, 4008, 4008, 4008, 4008, 4009, 4009, 4009, - 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, - 4009, 4009, 4009, 4009, 4009, 4010, 927, 4010, 4010, 902, - 890, 4010, 4010, 4010, 4010, 4010, 879, 4010, 4010, 4010, - 4010, 4010, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, - 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, - 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, - - 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4013, 4013, - 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, - 4013, 4013, 4013, 4013, 4013, 4013, 4014, 4014, 4014, 4014, - 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, - 4014, 4014, 4014, 4014, 4015, 877, 4015, 4015, 875, 871, - 4015, 4015, 4015, 4015, 4015, 828, 4015, 4015, 4015, 4015, - 4015, 4015, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, - 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, - 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, - 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4017, 4018, 817, - - 4018, 4018, 808, 804, 4018, 4018, 4018, 4018, 4018, 772, - 4018, 4018, 4018, 4018, 4018, 4019, 4019, 4019, 4019, 4019, - 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, 4019, - 4019, 4019, 4019, 4020, 4020, 4020, 4020, 4020, 4020, 4020, - 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, 4020, - 4020, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, - 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4022, - 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, - 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4023, 4023, 4023, - 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, - - 4023, 4023, 4023, 4023, 4023, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4025, 4025, 4025, 4025, 4025, 4025, 4025, - 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, - 4025, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, - 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4027, - 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4027, - 4027, 4027, 4027, 4027, 4027, 4027, 4027, 4028, 4028, 4028, - 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, 4028, - 4028, 4028, 4028, 4028, 4028, 4029, 4029, 4029, 4029, 4029, - - 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, - 4029, 4029, 4029, 4030, 4030, 771, 4030, 4030, 4030, 4030, - 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, - 4030, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, - 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4032, - 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, - 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4033, 4033, 4033, - 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, 4033, - 4033, 4033, 4033, 4033, 4033, 4034, 4034, 4034, 4034, 4034, - 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, - - 4034, 4034, 4034, 4035, 769, 4035, 4035, 768, 767, 4035, - 4035, 4035, 4035, 4035, 765, 4035, 4035, 4035, 4035, 4035, - 4035, 4036, 760, 4036, 4036, 759, 757, 4036, 4036, 4036, - 4036, 4036, 756, 4036, 4036, 4036, 4036, 4036, 4036, 4037, - 755, 4037, 4037, 749, 742, 4037, 4037, 4037, 4037, 4037, - 731, 4037, 4037, 4037, 4037, 4037, 4038, 4038, 4038, 4038, - 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, - 4038, 4038, 4038, 4038, 4039, 730, 4039, 4039, 711, 700, - 4039, 4039, 4039, 4039, 4039, 689, 4039, 4039, 4039, 4039, - 4039, 4039, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, - - 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, 4040, - 4041, 677, 4041, 4041, 676, 671, 4041, 4041, 4041, 4041, - 4041, 670, 4041, 4041, 4041, 4041, 4041, 4041, 4042, 4042, - 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, 4042, - 4042, 4042, 4042, 4042, 4042, 4042, 4043, 4043, 4043, 4043, - 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, - 4043, 4043, 4043, 4043, 4044, 668, 4044, 4044, 661, 651, - 4044, 4044, 4044, 4044, 4044, 650, 4044, 4044, 4044, 4044, - 4044, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, - 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4046, - - 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, - 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4047, 4047, 4047, - 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, 4047, - 4047, 4047, 4047, 4047, 4047, 4048, 4048, 4048, 4048, 4048, - 4048, 4048, 4048, 4048, 648, 4048, 4048, 4048, 4048, 4048, - 4048, 4048, 4048, 4049, 4049, 4049, 4049, 4049, 4049, 4049, - 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, - 4049, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, - 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4051, - 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, - - 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4052, 4052, 4052, - 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, - 4052, 4052, 4052, 4052, 4052, 4053, 4053, 644, 4053, 4053, - 4053, 4053, 4053, 4053, 4053, 4053, 4053, 4053, 4053, 4053, - 4053, 4053, 4053, 4054, 4054, 4054, 4054, 4054, 4054, 4054, - 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, - 4054, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, - 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4056, - 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, - 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4057, 634, 4057, - - 4057, 633, 631, 4057, 4057, 4057, 4057, 4057, 628, 4057, - 4057, 4057, 4057, 4057, 4057, 4058, 627, 4058, 4058, 625, - 622, 4058, 4058, 4058, 4058, 4058, 621, 4058, 4058, 4058, - 4058, 4058, 4058, 4059, 4059, 4059, 4059, 4059, 4059, 4059, - 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, - 4059, 4060, 541, 4060, 4060, 537, 536, 4060, 4060, 4060, - 4060, 4060, 530, 4060, 4060, 4060, 4060, 4060, 4060, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4062, 529, 4062, - 4062, 513, 512, 4062, 4062, 4062, 4062, 4062, 4062, 4062, - - 4062, 4062, 4062, 4062, 4063, 4063, 4063, 4063, 4063, 4063, - 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, - 4063, 4063, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, - 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, - 4065, 506, 4065, 4065, 504, 490, 4065, 4065, 4065, 478, - 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4066, 4066, - 4066, 4066, 4066, 4066, 4066, 475, 4066, 453, 4066, 4066, - 4066, 4066, 4066, 4066, 4066, 4066, 4067, 4067, 4067, 4067, - 4067, 4067, 4067, 4067, 4067, 4067, 4067, 4067, 4067, 4067, - 4067, 4067, 4067, 4067, 4068, 4068, 4068, 4068, 4068, 4068, - - 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, - 4068, 4068, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, - 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, - 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4070, - 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4071, 4071, - 440, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, - 4071, 4071, 4071, 4071, 4071, 4071, 4072, 4072, 4072, 4072, - 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, - 4072, 4072, 4072, 4072, 4073, 4073, 4073, 4073, 4073, 4073, - 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, - - 4073, 4073, 4074, 434, 422, 4074, 413, 412, 4074, 4075, - 393, 392, 385, 383, 368, 4075, 4075, 4075, 367, 4075, - 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4076, 4076, 4076, - 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, 4076, - 4076, 4076, 4076, 4076, 4076, 4077, 358, 357, 4077, 347, - 4077, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, - 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4078, 4079, - 317, 316, 4079, 284, 4079, 268, 4079, 4079, 4079, 4079, - 4080, 4080, 4080, 4080, 4081, 4081, 261, 4081, 4081, 4081, - 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, - - 4081, 4081, 4082, 4082, 259, 4082, 4082, 4082, 4082, 4082, - 4082, 4082, 4082, 4082, 4082, 4082, 4082, 4082, 4082, 4082, - 4083, 252, 4083, 234, 4083, 4083, 4083, 4083, 4084, 4084, - 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, - 4084, 4084, 4084, 4084, 4084, 4084, 4085, 4085, 4085, 4085, - 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, 4085, - 4085, 4085, 4085, 4085, 4086, 4086, 4086, 4086, 4086, 4086, - 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, - 4086, 4086, 4087, 4087, 229, 216, 4087, 4087, 4087, 4087, - 4087, 194, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, - - 4088, 182, 175, 4088, 4088, 172, 165, 4088, 164, 4088, - 163, 4088, 4088, 4088, 4088, 4089, 4089, 4089, 4089, 4089, - 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, - 4089, 4089, 4089, 4090, 154, 4090, 4090, 152, 146, 4090, - 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, 4090, - 4090, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, - 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4092, - 141, 117, 75, 64, 63, 4092, 4092, 4092, 58, 4092, - 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4093, 4093, 57, - 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, - - 4093, 4093, 4093, 4093, 4093, 4094, 4094, 56, 4094, 4094, - 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, - 4094, 4094, 4094, 4095, 55, 54, 4095, 4095, 53, 52, - 4095, 51, 4095, 26, 4095, 4095, 4095, 4095, 4096, 25, - 24, 23, 0, 0, 4096, 4096, 4096, 0, 4096, 4096, - 4096, 4096, 4096, 4096, 4096, 4096, 4097, 4097, 0, 4097, - 4097, 0, 4097, 4097, 4097, 4097, 4097, 4097, 4097, 4097, - 4097, 4097, 4097, 4098, 0, 4098, 0, 4098, 4098, 4098, - 4098, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, - 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4099, 4100, - - 0, 4100, 4100, 0, 0, 4100, 4100, 4100, 4100, 4100, - 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4101, 4101, 4101, - 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, - 4101, 4101, 4101, 4101, 4101, 4102, 4102, 4102, 4102, 4102, - 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, - 4102, 4102, 4102, 4103, 0, 0, 4103, 0, 4103, 0, - 4103, 4103, 4103, 4103, 4104, 0, 4104, 0, 4104, 4104, - 4104, 4104, 4105, 0, 0, 4105, 0, 4105, 0, 4105, - 4105, 4105, 4105, 4106, 4106, 0, 4106, 4106, 4106, 4106, - 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, 4106, - - 4107, 0, 4107, 4107, 0, 0, 4107, 4107, 4107, 4107, - 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4107, 4108, 4108, - 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, - 4108, 4108, 4108, 4108, 4108, 4108, 4109, 4109, 4109, 4109, - 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, - 4109, 4109, 4109, 4109, 4110, 4110, 4110, 4110, 4110, 4110, - 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, - 4110, 4110, 4111, 0, 4111, 4111, 0, 0, 4111, 4111, - 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, - 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, - - 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4112, 4113, 4113, - 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, - 4113, 4113, 4113, 4113, 4113, 4113, 4114, 4114, 0, 4114, - 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, 4114, - 4114, 4114, 4114, 4114, 4115, 4115, 4115, 4115, 4115, 4115, - 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, - 4115, 4115, 4116, 4116, 0, 4116, 4116, 4116, 4116, 4116, - 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, - 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, - 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4118, 0, - - 4118, 0, 4118, 4118, 4118, 4118, 4119, 0, 4119, 0, - 4119, 4119, 4119, 4119, 4120, 0, 4120, 0, 4120, 4120, - 4120, 4120, 4121, 0, 0, 4121, 4121, 0, 0, 4121, - 0, 4121, 0, 4121, 4121, 4121, 4121, 4122, 0, 0, - 4122, 0, 4122, 0, 4122, 4122, 4122, 4122, 4123, 0, - 4123, 0, 4123, 4123, 4123, 4123, 4124, 0, 4124, 0, - 4124, 4124, 4124, 4124, 4125, 4125, 0, 4125, 4125, 0, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4126, 0, 0, 4126, 4126, 0, 0, 4126, 0, - 4126, 0, 4126, 4126, 4126, 4126, 4127, 4127, 0, 4127, - - 4127, 0, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, - 4127, 4127, 4127, 4128, 4128, 4128, 4128, 4128, 4128, 4128, - 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, - 4128, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4130, - 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, - 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4131, 0, 4131, - 4131, 0, 0, 4131, 4131, 4131, 4131, 4131, 4131, 4131, - 4131, 4131, 4131, 4131, 4131, 4132, 0, 4132, 4132, 0, - 0, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - - 4132, 4132, 4132, 4133, 4133, 4133, 4133, 4133, 4133, 4133, - 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, - 4133, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, - 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4135, - 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, - 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4136, 4136, 4136, - 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, - 4136, 4136, 4136, 4136, 4136, 4137, 0, 4137, 4137, 0, - 0, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, - 4137, 4137, 4137, 4138, 4138, 4138, 4138, 4138, 4138, 4138, - - 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, - 4138, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, - 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4140, - 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, - 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4141, 0, 4141, - 4141, 0, 0, 4141, 4141, 4141, 4141, 4141, 4141, 4141, - 4141, 4141, 4141, 4141, 4141, 4142, 4142, 4142, 4142, 4142, - 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, - 4142, 4142, 4142, 4143, 4143, 4143, 4143, 4143, 4143, 4143, - 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, - - 4143, 4144, 0, 0, 4144, 0, 4144, 0, 4144, 4144, - 4144, 4144, 4145, 0, 4145, 0, 4145, 4145, 4145, 4145, - 4146, 0, 4146, 0, 4146, 4146, 4146, 4146, 4147, 0, - 4147, 0, 4147, 4147, 4147, 4147, 4148, 0, 0, 4148, - 0, 4148, 0, 4148, 4148, 4148, 4148, 4149, 4149, 0, - 4149, 4149, 0, 4149, 4149, 4149, 4149, 4149, 4149, 4149, - 4149, 4149, 4149, 4149, 4150, 0, 0, 4150, 4150, 0, - 0, 4150, 0, 4150, 0, 4150, 4150, 4150, 4150, 4151, - 0, 4151, 0, 4151, 4151, 4151, 4151, 4152, 0, 4152, - 0, 4152, 4152, 4152, 4152, 4153, 4153, 4153, 4153, 4153, - - 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, - 4153, 4153, 4153, 4154, 4154, 4154, 4154, 4154, 4154, 4154, - 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, - 4154, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, - 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4156, - 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, - 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4157, 4157, 4157, - 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, - 4157, 4157, 4157, 4157, 4157, 4158, 4158, 4158, 4158, 4158, - 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, - - 4158, 4158, 4158, 4159, 0, 4159, 4159, 0, 0, 4159, - 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, - 4159, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, - 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4161, - 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, - 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4162, 4162, 4162, - 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, - 4162, 4162, 4162, 4162, 4162, 4163, 4163, 4163, 4163, 4163, - 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, - 4163, 4163, 4163, 4164, 4164, 0, 0, 4164, 4164, 4164, - - 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, - 4164, 4165, 4165, 0, 4165, 4165, 0, 4165, 4165, 4165, - 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4166, 0, - 0, 4166, 4166, 0, 0, 4166, 0, 4166, 0, 4166, - 4166, 4166, 4166, 4167, 4167, 4167, 4167, 0, 4167, 4167, - 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, - 4167, 4168, 0, 0, 0, 0, 0, 4168, 4168, 4168, - 0, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4169, - 0, 4169, 0, 4169, 4169, 4169, 4169, 4170, 0, 0, - 4170, 0, 4170, 0, 4170, 4170, 4170, 4170, 4171, 4171, - - 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, - 4171, 4171, 4171, 4171, 4171, 4171, 4172, 0, 4172, 0, - 4172, 4172, 4172, 4172, 4173, 4173, 0, 4173, 4173, 0, - 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, - 4173, 4174, 0, 0, 4174, 4174, 0, 0, 0, 0, - 0, 0, 4174, 4175, 4175, 0, 0, 0, 4175, 4175, - 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, - 4175, 4176, 4176, 0, 4176, 4176, 0, 4176, 4176, 4176, - 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4177, 4177, - 0, 4177, 4177, 0, 4177, 4177, 4177, 4177, 4177, 4177, - - 4177, 4177, 4177, 4177, 4177, 4178, 4178, 0, 4178, 4178, - 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, - 4178, 4178, 4179, 4179, 0, 4179, 4179, 4179, 4179, 4179, - 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4180, - 0, 4180, 0, 4180, 0, 4180, 4180, 4180, 4180, 4181, - 4181, 0, 4181, 4181, 0, 4181, 4181, 4181, 4181, 4181, - 4181, 4181, 4181, 4181, 4181, 4181, 4182, 4182, 0, 4182, - 4182, 0, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, - 4182, 4182, 4182, 4183, 4183, 4183, 4183, 4183, 4183, 4183, - 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, - - 4183, 4184, 0, 4184, 0, 4184, 0, 4184, 4184, 4184, - 4184, 4185, 4185, 0, 0, 4185, 4185, 4185, 4185, 4185, - 0, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4186, - 4186, 0, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, - 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4187, 4187, 0, - 4187, 4187, 0, 4187, 4187, 4187, 4187, 4187, 4187, 4187, - 4187, 4187, 4187, 4187, 4188, 4188, 0, 0, 4188, 4188, - 4188, 4188, 4188, 0, 4188, 4188, 4188, 4188, 4188, 4188, - 4188, 4188, 4189, 0, 0, 0, 0, 0, 4189, 4189, - 4189, 0, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, - - 4190, 4190, 0, 4190, 4190, 0, 4190, 4190, 4190, 4190, - 4190, 4190, 4190, 4190, 4190, 4190, 4190, 4191, 0, 0, - 4191, 4191, 0, 0, 4191, 0, 4191, 0, 4191, 4191, - 4191, 4191, 4192, 4192, 0, 4192, 4192, 0, 4192, 4192, - 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4193, - 0, 0, 0, 0, 0, 4193, 4193, 4193, 0, 4193, - 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4194, 0, 4194, - 0, 4194, 4194, 4194, 4194, 4195, 4195, 0, 4195, 4195, - 0, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, - 4195, 4195, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, - - 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, - 4197, 4197, 0, 4197, 4197, 0, 4197, 4197, 4197, 4197, - 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4198, 0, 0, - 0, 4198, 4198, 4198, 4198, 4198, 0, 4198, 4198, 4198, - 4198, 4198, 4198, 4198, 4198, 4199, 0, 0, 0, 4199, - 4199, 4199, 4199, 4199, 0, 4199, 4199, 4199, 4199, 4199, - 4199, 4199, 4199, 4200, 4200, 0, 4200, 4200, 0, 4200, - 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, - 4201, 4201, 0, 4201, 4201, 0, 4201, 4201, 4201, 4201, - 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4202, 0, 0, - - 0, 4202, 4202, 4202, 4202, 4202, 0, 4202, 4202, 4202, - 4202, 4202, 4202, 4202, 4202, 4203, 0, 0, 0, 4203, - 4203, 4203, 4203, 4203, 0, 4203, 4203, 4203, 4203, 4203, - 4203, 4203, 4203, 4204, 0, 4204, 0, 4204, 0, 4204, - 4204, 4204, 4204, 4205, 4205, 0, 4205, 4205, 4205, 4205, - 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, - 4206, 4206, 0, 4206, 4206, 0, 4206, 4206, 4206, 4206, - 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4207, 4207, 0, - 4207, 4207, 0, 4207, 4207, 4207, 4207, 4207, 4207, 4207, - 4207, 4207, 4207, 4207, 4208, 0, 4208, 0, 4208, 0, - - 4208, 4208, 4208, 4208, 4209, 0, 0, 0, 0, 0, - 4209, 4209, 4209, 0, 4209, 4209, 4209, 4209, 4209, 4209, - 4209, 4209, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, - - 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921, 3921 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int yy_flex_debug; -int yy_flex_debug = 1; - -static const flex_int16_t yy_rule_linenum[537] = - { 0, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 562, 563, 566, 567, - 568, 569, 570, 571, 572, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - - 609, 610, 612, 613, 614, 615, 616, 620, 625, 626, - 631, 632, 633, 638, 639, 640, 645, 650, 651, 652, - 657, 658, 662, 663, 664, 668, 669, 673, 674, 678, - 679, 680, 684, 685, 689, 690, 695, 696, 697, 701, - 705, 706, 714, 719, 720, 725, 726, 727, 736, 739, - 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, - 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, - 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, - 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, - - 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, - 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, - 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, - 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, - 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, - 840, 841, 842, 843, 844, 845, 847, 848, 849, 851, - 852, 853, 854, 855, 856, 857, 858, 859, 860, 863, - 867, 868, 869, 870, 871, 875, 876, 877, 878, 879, - 880, 884, 885, 886, 887, 892, 893, 894, 895, 896, - 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, - - 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, - 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, - 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, - 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, - 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, - 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, - 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, - 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, - 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, - - 1007, 1008, 1009, 1010, 1011, 1012, 1015, 1016, 1017, 1018, - 1019, 1020, 1021, 1022, 1023, 1027, 1028, 1029, 1030, 1031, - 1032, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, - 1047, 1048, 1049, 1050, 1051, 1056, 1057, 1058, 1059, 1060, - 1062, 1063, 1065, 1066, 1072, 1073, 1074, 1075, 1076, 1077, - 1080, 1081, 1082, 1083, 1084, 1085, 1089, 1090, 1091, 1092, - 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, - 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, - 1113, 1114, 1115, 1116, 1117, 1119, 1120, 1125, 1129, 1133, - 1134, 1138, 1139, 1142, 1143, 1147, 1148, 1152, 1153, 1157, - - 1158, 1163, 1165, 1166, 1167, 1168, 1170, 1171, 1172, 1173, - 1175, 1176, 1177, 1178, 1180, 1182, 1183, 1185, 1186, 1187, - 1188, 1190, 1195, 1196, 1197, 1201, 1202, 1203, 1208, 1210, - 1211, 1212, 1237, 1263, 1291, 1329 - } ; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "seclang-scanner.ll" -#line 2 "seclang-scanner.ll" -#include -#include -#include -#include - -#include "src/parser/driver.h" -#include "src/parser/seclang-parser.hh" -#include "src/utils/https_client.h" -#include "src/utils/string.h" -#include "others/mbedtls/aes.h" - -using modsecurity::Parser::Driver; -using modsecurity::Utils::HttpsClient; -using modsecurity::utils::string::parserSanitizer; - -typedef yy::seclang_parser p; -static int state_variable_from = 0; -static std::stack YY_PREVIOUS_STATE; - -// Work around an incompatibility in flex (at least versions -// 2.5.31 through 2.5.33): it generates code that does -// not conform to C89. See Debian bug 333231 -// . -# undef yywrap -# define yywrap() 1 - -#define BEGINX(z) { \ - YY_PREVIOUS_STATE.push(YY_START); \ - BEGIN(z); \ -} - -#define BEGINX_() { \ - YY_PREVIOUS_STATE.push(YY_START); \ - if (YY_START == SETVAR_ACTION_NONQUOTED) { \ - BEGIN(EXPECTING_VAR_PARAMETER_OR_MACRO_NONQUOTED); \ - } else if (YY_START == SETVAR_ACTION_QUOTED) { \ - BEGIN(EXPECTING_VAR_PARAMETER_OR_MACRO_QUOTED); \ - } else { \ - BEGIN(EXPECTING_VAR_PARAMETER); \ - } \ -} - -#define BEGIN_PARAMETER() { if (YY_START == EXPECTING_OPERATOR_ENDS_WITH_SPACE) { BEGIN(TRANSITION_FROM_OP_TO_EXPECTING_PARAMETER_ENDS_WITH_SPACE); } else { BEGIN(TRANSITION_FROM_OP_TO_EXPECTING_PARAMETER_ENDS_WITH_QUOTE); } } -#define BEGIN_NO_OP_INFORMED() { if (YY_START == EXPECTING_OPERATOR_ENDS_WITH_SPACE) { BEGIN(NO_OP_INFORMED_ENDS_WITH_SPACE); } else { BEGIN(NO_OP_INFORMED_ENDS_WITH_QUOTE); } } - -#define BEGIN_ACTION_OPERATION() { \ - if (YY_START == SETVAR_ACTION_NONQUOTED) { \ - BEGIN(SETVAR_ACTION_NONQUOTED_WAITING_OPERATION); \ - } else if (YY_START == SETVAR_ACTION_QUOTED) { \ - BEGIN(SETVAR_ACTION_QUOTED_WAITING_OPERATION); \ - } else if (YY_START == SETVAR_ACTION_NONQUOTED_WAITING_COLLECTION_ELEM) { \ - BEGIN(SETVAR_ACTION_NONQUOTED_WAITING_OPERATION); \ - } else if (YY_START == SETVAR_ACTION_QUOTED_WAITING_COLLECTION_ELEM) { \ - BEGIN(SETVAR_ACTION_QUOTED_WAITING_OPERATION); \ - }\ -} - - -#define BEGIN_ACTION_WAITING_CONTENT() { \ - if (YY_START == SETVAR_ACTION_NONQUOTED_WAITING_OPERATION) { \ - BEGIN(SETVAR_ACTION_NONQUOTED_WAITING_CONTENT); \ - } else if (YY_START == SETVAR_ACTION_QUOTED_WAITING_OPERATION) { \ - BEGIN(SETVAR_ACTION_QUOTED_WAITING_CONTENT); \ - } else if (YY_START == EXPECTING_VAR_PARAMETER_OR_MACRO_QUOTED) { \ - BEGIN(SETVAR_ACTION_QUOTED_WAITING_CONTENT); \ - } else if (YY_START == EXPECTING_VAR_PARAMETER_OR_MACRO_NONQUOTED) { \ - BEGIN(SETVAR_ACTION_NONQUOTED_WAITING_CONTENT); \ - } \ -} - - -#define BEGIN_PREVIOUS() { BEGIN(YY_PREVIOUS_STATE.top()); YY_PREVIOUS_STATE.pop(); } - -// The location of the current token. -#line 5125 "seclang-scanner.cc" -#define YY_NO_INPUT 1 - -#line 491 "seclang-scanner.ll" - // Code run each time a pattern is matched. - # define YY_USER_ACTION driver.loc.back()->columns (yyleng); - -#line 5132 "seclang-scanner.cc" -#line 5133 "seclang-scanner.cc" - -#define INITIAL 0 -#define EXPECTING_ACTION_PREDICATE_VARIABLE 1 -#define TRANSACTION_TO_VARIABLE 2 -#define EXPECTING_VARIABLE 3 -#define EXPECTING_OPERATOR_ENDS_WITH_SPACE 4 -#define EXPECTING_OPERATOR_ENDS_WITH_QUOTE 5 -#define EXPECTING_ACTION_PREDICATE 6 -#define ACTION_PREDICATE_ENDS_WITH_QUOTE 7 -#define ACTION_PREDICATE_ENDS_WITH_DOUBLE_QUOTE 8 -#define ACTION_PREDICATE_ENDS_WITH_COMMA_OR_DOUBLE_QUOTE 9 -#define COMMENT 10 -#define TRANSITION_FROM_OP_TO_EXPECTING_PARAMETER_ENDS_WITH_QUOTE 11 -#define TRANSITION_FROM_OP_TO_EXPECTING_PARAMETER_ENDS_WITH_SPACE 12 -#define EXPECTING_VAR_PARAMETER 13 -#define EXPECTING_VAR_PARAMETER_OR_MACRO_NONQUOTED 14 -#define EXPECTING_VAR_PARAMETER_OR_MACRO_QUOTED 15 -#define EXPECTING_PARAMETER_ENDS_WITH_QUOTE 16 -#define EXPECTING_PARAMETER_ENDS_WITH_SPACE 17 -#define EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE 18 -#define EXPECTING_ACTIONS_ONLY_ONE 19 -#define TRANSACTION_FROM_OPERATOR_TO_ACTIONS 20 -#define TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS 21 -#define TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS 22 -#define NO_OP_INFORMED_ENDS_WITH_SPACE 23 -#define NO_OP_INFORMED_ENDS_WITH_QUOTE 24 -#define FINISH_ACTIONS 25 -#define LEXING_ERROR 26 -#define LEXING_ERROR_ACTION 27 -#define LEXING_ERROR_VARIABLE 28 -#define SETVAR_ACTION_NONQUOTED 29 -#define SETVAR_ACTION_NONQUOTED_WAITING_COLLECTION_ELEM 30 -#define SETVAR_ACTION_NONQUOTED_WAITING_OPERATION 31 -#define SETVAR_ACTION_NONQUOTED_WAITING_CONTENT 32 -#define SETVAR_ACTION_QUOTED 33 -#define SETVAR_ACTION_QUOTED_WAITING_COLLECTION_ELEM 34 -#define SETVAR_ACTION_QUOTED_WAITING_OPERATION 35 -#define SETVAR_ACTION_QUOTED_WAITING_CONTENT 36 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -/* %if-c-only */ -#include -/* %endif */ -/* %if-c++-only */ -/* %endif */ -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -/* %if-c-only Reentrant structure and macros (non-C++). */ -/* %if-reentrant */ -/* %if-c-only */ - -static int yy_init_globals ( void ); - -/* %endif */ -/* %if-reentrant */ -/* %endif */ -/* %endif End reentrant structures and macros. */ - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* %if-bison-bridge */ -/* %endif */ - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -/* %not-for-header */ -#ifndef YY_NO_UNPUT - -#endif -/* %ok-for-header */ - -/* %endif */ - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -/* %if-c-only Standard (non-C++) definition */ -/* %not-for-header */ -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif -/* %ok-for-header */ - -/* %endif */ -#endif - -/* %if-c-only */ - -/* %endif */ - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* %if-c-only Standard (non-C++) definition */ -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -/* %endif */ -/* %if-c++-only C++ definition */ -/* %endif */ -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ -/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - int n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ -/* %if-c++-only C++ definition \ */\ -/* %endif */ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -/* %if-c-only */ -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -#endif - -/* %if-tables-serialization structures and prototypes */ -/* %not-for-header */ -/* %ok-for-header */ - -/* %not-for-header */ -/* %tables-yydmap generated elements */ -/* %endif */ -/* end tables serialization structures and prototypes */ - -/* %ok-for-header */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 -/* %if-c-only Standard (non-C++) definition */ - -extern int yylex (void); - -#define YY_DECL int yylex (void) -/* %endif */ -/* %if-c++-only C++ definition */ -/* %endif */ -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -/* %% [6.0] YY_RULE_SETUP definition goes here */ -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/* %not-for-header */ -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) -/* %if-c-only */ - yyin = stdin; -/* %endif */ -/* %if-c++-only */ -/* %endif */ - - if ( ! yyout ) -/* %if-c-only */ - yyout = stdout; -/* %endif */ -/* %if-c++-only */ -/* %endif */ - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { -/* %% [7.0] user's declarations go here */ -#line 496 "seclang-scanner.ll" - - - -#line 500 "seclang-scanner.ll" - // Code run each time yylex is called. - driver.loc.back()->step(); - -#line 5455 "seclang-scanner.cc" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { -/* %% [8.0] yymore()-related code goes here */ - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - -/* %% [9.0] code to set up and find next match goes here */ - yy_current_state = (yy_start); -yy_match: - do - { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3922 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } - while ( yy_current_state != 3921 ); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - -yy_find_action: -/* %% [10.0] code to find the action number goes here */ - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - -/* %% [11.0] code for yylineno update goes here */ - -do_action: /* This label is used only to access EOF actions. */ - -/* %% [12.0] debug code goes here */ - if ( yy_flex_debug ) - { - if ( yy_act == 0 ) - fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 537 ) - fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", - (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 537 ) - fprintf( stderr, "--accepting default rule (\"%s\")\n", - yytext ); - else if ( yy_act == 538 ) - fprintf( stderr, "--(end of buffer or a NUL)\n" ); - else - fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); - } - - switch ( yy_act ) - { /* beginning of action switch */ -/* %% [13.0] actions go here */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 504 "seclang-scanner.ll" -{ return p::make_ACTION_APPEND(yytext, *driver.loc.back()); } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 505 "seclang-scanner.ll" -{ return p::make_ACTION_BLOCK(yytext, *driver.loc.back()); } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 506 "seclang-scanner.ll" -{ return p::make_ACTION_CAPTURE(yytext, *driver.loc.back()); } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 507 "seclang-scanner.ll" -{ return p::make_ACTION_CHAIN(yytext, *driver.loc.back()); } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 508 "seclang-scanner.ll" -{ return p::make_ACTION_DENY(yytext, *driver.loc.back()); } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 509 "seclang-scanner.ll" -{ return p::make_ACTION_DEPRECATE_VAR(yytext, *driver.loc.back()); } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 510 "seclang-scanner.ll" -{ return p::make_ACTION_DROP(yytext, *driver.loc.back()); } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 511 "seclang-scanner.ll" -{ return p::make_ACTION_ID(yytext, *driver.loc.back()); } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 512 "seclang-scanner.ll" -{ return p::make_ACTION_LOG(yytext, *driver.loc.back()); } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 513 "seclang-scanner.ll" -{ return p::make_ACTION_MULTI_MATCH(yytext, *driver.loc.back()); } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 514 "seclang-scanner.ll" -{ return p::make_ACTION_NO_AUDIT_LOG(yytext, *driver.loc.back()); } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 515 "seclang-scanner.ll" -{ return p::make_ACTION_NO_LOG(yytext, *driver.loc.back()); } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 516 "seclang-scanner.ll" -{ return p::make_ACTION_PASS(yytext, *driver.loc.back()); } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 517 "seclang-scanner.ll" -{ return p::make_ACTION_PAUSE(yytext, *driver.loc.back()); } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 518 "seclang-scanner.ll" -{ return p::make_ACTION_PREPEND(yytext, *driver.loc.back()); } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 519 "seclang-scanner.ll" -{ return p::make_ACTION_PROXY(yytext, *driver.loc.back()); } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 520 "seclang-scanner.ll" -{ return p::make_ACTION_SANITISE_ARG(yytext, *driver.loc.back()); } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 521 "seclang-scanner.ll" -{ return p::make_ACTION_SANITISE_MATCHED(yytext, *driver.loc.back()); } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 522 "seclang-scanner.ll" -{ return p::make_ACTION_SANITISE_MATCHED_BYTES(yytext, *driver.loc.back()); } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 523 "seclang-scanner.ll" -{ return p::make_ACTION_SANITISE_REQUEST_HEADER(yytext, *driver.loc.back()); } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 524 "seclang-scanner.ll" -{ return p::make_ACTION_SANITISE_RESPONSE_HEADER(yytext, *driver.loc.back()); } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 525 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_SETRSC(yytext, *driver.loc.back()); } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 527 "seclang-scanner.ll" -{ return p::make_ACTION_STATUS(yytext, *driver.loc.back()); } - YY_BREAK -case 24: -/* rule 24 can match eol */ -YY_RULE_SETUP -#line 528 "seclang-scanner.ll" -{ return p::make_ACTION_ACCURACY(yytext, *driver.loc.back()); } - YY_BREAK -case 25: -/* rule 25 can match eol */ -YY_RULE_SETUP -#line 529 "seclang-scanner.ll" -{ return p::make_ACTION_ACCURACY(yytext, *driver.loc.back()); } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 530 "seclang-scanner.ll" -{ return p::make_ACTION_ALLOW(yytext, *driver.loc.back()); } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 531 "seclang-scanner.ll" -{ return p::make_ACTION_AUDIT_LOG(yytext, *driver.loc.back()); } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 532 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_AUDIT_ENGINE(yytext, *driver.loc.back()); } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 533 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_AUDIT_LOG_PARTS(yytext, *driver.loc.back()); } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 534 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_BDY_JSON(yytext, *driver.loc.back()); } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 535 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_BDY_XML(yytext, *driver.loc.back()); } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 536 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_BDY_URLENCODED(yytext, *driver.loc.back()); } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 537 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_FORCE_REQ_BODY_VAR(yytext, *driver.loc.back()); } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 538 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_REQUEST_BODY_ACCESS(yytext, *driver.loc.back()); } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 539 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_RULE_ENGINE(*driver.loc.back()); } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 540 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_RULE_REMOVE_BY_ID(yytext, *driver.loc.back()); } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 541 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_RULE_REMOVE_BY_TAG(yytext, *driver.loc.back()); } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 542 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID(yytext, *driver.loc.back()); } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 543 "seclang-scanner.ll" -{ return p::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG(yytext, *driver.loc.back()); } - YY_BREAK -case 40: -/* rule 40 can match eol */ -YY_RULE_SETUP -#line 544 "seclang-scanner.ll" -{ return p::make_ACTION_EXEC(yytext, *driver.loc.back()); } - YY_BREAK -case 41: -/* rule 41 can match eol */ -YY_RULE_SETUP -#line 545 "seclang-scanner.ll" -{ return p::make_ACTION_EXEC(yytext, *driver.loc.back()); } - YY_BREAK -case 42: -/* rule 42 can match eol */ -YY_RULE_SETUP -#line 546 "seclang-scanner.ll" -{ return p::make_ACTION_EXPIRE_VAR(yytext, *driver.loc.back()); } - YY_BREAK -case 43: -/* rule 43 can match eol */ -YY_RULE_SETUP -#line 547 "seclang-scanner.ll" -{ return p::make_ACTION_EXPIRE_VAR(yytext, *driver.loc.back()); } - YY_BREAK -case 44: -/* rule 44 can match eol */ -YY_RULE_SETUP -#line 548 "seclang-scanner.ll" -{ return p::make_ACTION_EXPIRE_VAR(yytext, *driver.loc.back()); } - YY_BREAK -case 45: -/* rule 45 can match eol */ -YY_RULE_SETUP -#line 549 "seclang-scanner.ll" -{ return p::make_ACTION_EXPIRE_VAR(yytext, *driver.loc.back()); } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 550 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_INITCOL(yytext, *driver.loc.back()); } - YY_BREAK -case 47: -/* rule 47 can match eol */ -YY_RULE_SETUP -#line 551 "seclang-scanner.ll" -{ return p::make_ACTION_MATURITY(yytext, *driver.loc.back()); } - YY_BREAK -case 48: -/* rule 48 can match eol */ -YY_RULE_SETUP -#line 552 "seclang-scanner.ll" -{ return p::make_ACTION_MATURITY(yytext, *driver.loc.back()); } - YY_BREAK -case 49: -YY_RULE_SETUP -#line 553 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_MSG(yytext, *driver.loc.back()); } - YY_BREAK -case 50: -YY_RULE_SETUP -#line 554 "seclang-scanner.ll" -{ return p::make_ACTION_PHASE(yytext, *driver.loc.back()); } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 555 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_REDIRECT(yytext, *driver.loc.back()); } - YY_BREAK -case 52: -/* rule 52 can match eol */ -YY_RULE_SETUP -#line 556 "seclang-scanner.ll" -{ return p::make_ACTION_REV(yytext, *driver.loc.back()); } - YY_BREAK -case 53: -/* rule 53 can match eol */ -YY_RULE_SETUP -#line 557 "seclang-scanner.ll" -{ return p::make_ACTION_REV(yytext, *driver.loc.back()); } - YY_BREAK -case 54: -YY_RULE_SETUP -#line 558 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_SETENV(yytext, *driver.loc.back()); } - YY_BREAK -case 55: -YY_RULE_SETUP -#line 559 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_SETSID(yytext, *driver.loc.back()); } - YY_BREAK -case 56: -YY_RULE_SETUP -#line 560 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_SETUID(yytext, *driver.loc.back()); } - YY_BREAK -case 57: -YY_RULE_SETUP -#line 562 "seclang-scanner.ll" -{ BEGIN(SETVAR_ACTION_QUOTED); return p::make_ACTION_SETVAR(*driver.loc.back()); } - YY_BREAK -case 58: -YY_RULE_SETUP -#line 563 "seclang-scanner.ll" -{ BEGIN(SETVAR_ACTION_NONQUOTED); return p::make_ACTION_SETVAR(*driver.loc.back()); } - YY_BREAK -case 59: -YY_RULE_SETUP -#line 566 "seclang-scanner.ll" -{ return p::make_ACTION_SEVERITY(yytext, *driver.loc.back()); } - YY_BREAK -case 60: -YY_RULE_SETUP -#line 567 "seclang-scanner.ll" -{ return p::make_ACTION_SEVERITY(yytext, *driver.loc.back()); } - YY_BREAK -case 61: -YY_RULE_SETUP -#line 568 "seclang-scanner.ll" -{ return p::make_ACTION_SKIP_AFTER(yytext, *driver.loc.back()); } - YY_BREAK -case 62: -YY_RULE_SETUP -#line 569 "seclang-scanner.ll" -{ return p::make_ACTION_SKIP(yytext, *driver.loc.back()); } - YY_BREAK -case 63: -YY_RULE_SETUP -#line 570 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_TAG(yytext, *driver.loc.back()); } - YY_BREAK -case 64: -/* rule 64 can match eol */ -YY_RULE_SETUP -#line 571 "seclang-scanner.ll" -{ return p::make_ACTION_VER(yytext, *driver.loc.back()); } - YY_BREAK -case 65: -YY_RULE_SETUP -#line 572 "seclang-scanner.ll" -{ return p::make_ACTION_XMLNS(yytext, *driver.loc.back()); } - YY_BREAK -case 66: -YY_RULE_SETUP -#line 574 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT(yytext, *driver.loc.back()); } - YY_BREAK -case 67: -YY_RULE_SETUP -#line 575 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT(yytext, *driver.loc.back()); } - YY_BREAK -case 68: -YY_RULE_SETUP -#line 576 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT(yytext, *driver.loc.back()); } - YY_BREAK -case 69: -YY_RULE_SETUP -#line 577 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_SQL_HEX_DECODE(yytext, *driver.loc.back()); } - YY_BREAK -case 70: -YY_RULE_SETUP -#line 578 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_BASE_64_ENCODE(yytext, *driver.loc.back()); } - YY_BREAK -case 71: -YY_RULE_SETUP -#line 579 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_BASE_64_DECODE(yytext, *driver.loc.back()); } - YY_BREAK -case 72: -YY_RULE_SETUP -#line 580 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT(yytext, *driver.loc.back()); } - YY_BREAK -case 73: -YY_RULE_SETUP -#line 581 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_CMD_LINE(yytext, *driver.loc.back()); } - YY_BREAK -case 74: -YY_RULE_SETUP -#line 582 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_SHA1(yytext, *driver.loc.back()); } - YY_BREAK -case 75: -YY_RULE_SETUP -#line 583 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_MD5(yytext, *driver.loc.back()); } - YY_BREAK -case 76: -YY_RULE_SETUP -#line 584 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE(yytext, *driver.loc.back()); } - YY_BREAK -case 77: -YY_RULE_SETUP -#line 585 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_HEX_ENCODE(yytext, *driver.loc.back()); } - YY_BREAK -case 78: -YY_RULE_SETUP -#line 586 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_HEX_DECODE(yytext, *driver.loc.back()); } - YY_BREAK -case 79: -YY_RULE_SETUP -#line 587 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_LOWERCASE(yytext, *driver.loc.back()); } - YY_BREAK -case 80: -YY_RULE_SETUP -#line 588 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_UPPERCASE(yytext, *driver.loc.back()); } - YY_BREAK -case 81: -YY_RULE_SETUP -#line 589 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_URL_ENCODE(yytext, *driver.loc.back()); } - YY_BREAK -case 82: -YY_RULE_SETUP -#line 590 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_URL_DECODE_UNI(yytext, *driver.loc.back()); } - YY_BREAK -case 83: -YY_RULE_SETUP -#line 591 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_URL_DECODE(yytext, *driver.loc.back()); } - YY_BREAK -case 84: -YY_RULE_SETUP -#line 592 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_NONE(yytext, *driver.loc.back()); } - YY_BREAK -case 85: -YY_RULE_SETUP -#line 593 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE(yytext, *driver.loc.back()); } - YY_BREAK -case 86: -YY_RULE_SETUP -#line 594 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_REMOVE_WHITESPACE(yytext, *driver.loc.back()); } - YY_BREAK -case 87: -YY_RULE_SETUP -#line 595 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_REPLACE_NULLS(yytext, *driver.loc.back()); } - YY_BREAK -case 88: -YY_RULE_SETUP -#line 596 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_REMOVE_NULLS(yytext, *driver.loc.back()); } - YY_BREAK -case 89: -YY_RULE_SETUP -#line 597 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE(yytext, *driver.loc.back()); } - YY_BREAK -case 90: -YY_RULE_SETUP -#line 598 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_JS_DECODE(yytext, *driver.loc.back()); } - YY_BREAK -case 91: -YY_RULE_SETUP -#line 599 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_CSS_DECODE(yytext, *driver.loc.back()); } - YY_BREAK -case 92: -YY_RULE_SETUP -#line 600 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_TRIM(yytext, *driver.loc.back()); } - YY_BREAK -case 93: -YY_RULE_SETUP -#line 601 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_TRIM_LEFT(yytext, *driver.loc.back()); } - YY_BREAK -case 94: -YY_RULE_SETUP -#line 602 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_TRIM_RIGHT(yytext, *driver.loc.back()); } - YY_BREAK -case 95: -YY_RULE_SETUP -#line 603 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN(yytext, *driver.loc.back()); } - YY_BREAK -case 96: -YY_RULE_SETUP -#line 604 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_NORMALISE_PATH(yytext, *driver.loc.back()); } - YY_BREAK -case 97: -YY_RULE_SETUP -#line 605 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_LENGTH(yytext, *driver.loc.back()); } - YY_BREAK -case 98: -YY_RULE_SETUP -#line 606 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_UTF8_TO_UNICODE(yytext, *driver.loc.back()); } - YY_BREAK -case 99: -YY_RULE_SETUP -#line 607 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR(yytext, *driver.loc.back()); } - YY_BREAK -case 100: -YY_RULE_SETUP -#line 608 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_REMOVE_COMMENTS(yytext, *driver.loc.back()); } - YY_BREAK -case 101: -YY_RULE_SETUP -#line 609 "seclang-scanner.ll" -{ return p::make_ACTION_TRANSFORMATION_REPLACE_COMMENTS(yytext, *driver.loc.back()); } - YY_BREAK -case 102: -YY_RULE_SETUP -#line 610 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTION_PREDICATE); return p::make_ACTION_LOG_DATA(yytext, *driver.loc.back()); } - YY_BREAK -case 103: -YY_RULE_SETUP -#line 612 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_DETC(yytext, *driver.loc.back()); } - YY_BREAK -case 104: -YY_RULE_SETUP -#line 613 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_OFF(yytext, *driver.loc.back()); } - YY_BREAK -case 105: -YY_RULE_SETUP -#line 614 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_ON(yytext, *driver.loc.back()); } - YY_BREAK -case 106: -/* rule 106 can match eol */ -YY_RULE_SETUP -#line 615 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK -case 107: -/* rule 107 can match eol */ -YY_RULE_SETUP -#line 616 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK - - -case 108: -YY_RULE_SETUP -#line 620 "seclang-scanner.ll" -{ return p::make_COMMA(*driver.loc.back()); } - YY_BREAK - - -case 109: -/* rule 109 can match eol */ -YY_RULE_SETUP -#line 625 "seclang-scanner.ll" -{ BEGIN(INITIAL); yyless(yyleng); driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK -case 110: -/* rule 110 can match eol */ -YY_RULE_SETUP -#line 626 "seclang-scanner.ll" -{ BEGIN(INITIAL); yyless(yyleng); driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK - - -case 111: -YY_RULE_SETUP -#line 631 "seclang-scanner.ll" -{ BEGIN(INITIAL); yyless(yyleng); } - YY_BREAK -case 112: -/* rule 112 can match eol */ -YY_RULE_SETUP -#line 632 "seclang-scanner.ll" -{ BEGIN(INITIAL); yyless(1); } - YY_BREAK -case 113: -/* rule 113 can match eol */ -YY_RULE_SETUP -#line 633 "seclang-scanner.ll" -{ BEGIN(INITIAL); driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK - - -case 114: -YY_RULE_SETUP -#line 638 "seclang-scanner.ll" -{ BEGIN(INITIAL); yyless(yyleng); p::make_NEW_LINE(*driver.loc.back()); } - YY_BREAK -case 115: -/* rule 115 can match eol */ -YY_RULE_SETUP -#line 639 "seclang-scanner.ll" -{ BEGIN(INITIAL); yyless(1); } - YY_BREAK -case 116: -/* rule 116 can match eol */ -YY_RULE_SETUP -#line 640 "seclang-scanner.ll" -{ BEGIN(INITIAL); driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK - - -case 117: -YY_RULE_SETUP -#line 645 "seclang-scanner.ll" -{ BEGIN(LEXING_ERROR_ACTION); yyless(0); } - YY_BREAK - - -case 118: -YY_RULE_SETUP -#line 650 "seclang-scanner.ll" -{ BEGIN(ACTION_PREDICATE_ENDS_WITH_QUOTE); } - YY_BREAK -case 119: -YY_RULE_SETUP -#line 651 "seclang-scanner.ll" -{ BEGIN(ACTION_PREDICATE_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 120: -YY_RULE_SETUP -#line 652 "seclang-scanner.ll" -{ BEGIN(ACTION_PREDICATE_ENDS_WITH_COMMA_OR_DOUBLE_QUOTE); yyless(0); } - YY_BREAK - - -case 121: -/* rule 121 can match eol */ -YY_RULE_SETUP -#line 657 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK -case 122: -/* rule 122 can match eol */ -YY_RULE_SETUP -#line 658 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK - - -case 123: -YY_RULE_SETUP -#line 662 "seclang-scanner.ll" -{ yyless(1); BEGIN_PREVIOUS(); } - YY_BREAK -case 124: -YY_RULE_SETUP -#line 663 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); } - YY_BREAK -case 125: -YY_RULE_SETUP -#line 664 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); } - YY_BREAK - - -case 126: -YY_RULE_SETUP -#line 668 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(yyleng); } - YY_BREAK -case 127: -/* rule 127 can match eol */ -YY_RULE_SETUP -#line 669 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK - - -case 128: -YY_RULE_SETUP -#line 673 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(yyleng); } - YY_BREAK -case 129: -/* rule 129 can match eol */ -YY_RULE_SETUP -#line 674 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK - - -case 130: -YY_RULE_SETUP -#line 678 "seclang-scanner.ll" -{ yyless(0); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 131: -YY_RULE_SETUP -#line 679 "seclang-scanner.ll" -{ yyless(0); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE);} - YY_BREAK -case 132: -/* rule 132 can match eol */ -YY_RULE_SETUP -#line 680 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK - - -case 133: -YY_RULE_SETUP -#line 684 "seclang-scanner.ll" -{ BEGINX(EXPECTING_ACTION_PREDICATE_VARIABLE); } - YY_BREAK -case 134: -YY_RULE_SETUP -#line 685 "seclang-scanner.ll" -{ BEGIN(LEXING_ERROR_VARIABLE); yyless(0); } - YY_BREAK - - -case 135: -YY_RULE_SETUP -#line 689 "seclang-scanner.ll" -{ return p::make_NOT(*driver.loc.back()); } - YY_BREAK -case 136: -/* rule 136 can match eol */ -YY_RULE_SETUP -#line 690 "seclang-scanner.ll" -{ BEGIN_ACTION_OPERATION(); yyless(0); } - YY_BREAK - - -case 137: -YY_RULE_SETUP -#line 695 "seclang-scanner.ll" -{ BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS_PLUS(*driver.loc.back()); } - YY_BREAK -case 138: -YY_RULE_SETUP -#line 696 "seclang-scanner.ll" -{ BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS_MINUS(*driver.loc.back()); } - YY_BREAK -case 139: -YY_RULE_SETUP -#line 697 "seclang-scanner.ll" -{ BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS(*driver.loc.back()); } - YY_BREAK - - -case 140: -/* rule 140 can match eol */ -YY_RULE_SETUP -#line 701 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(0);} - YY_BREAK - - -case 141: -YY_RULE_SETUP -#line 705 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 142: -/* rule 142 can match eol */ -YY_RULE_SETUP -#line 706 "seclang-scanner.ll" -{ BEGIN(LEXING_ERROR_ACTION); yyless(0); } - YY_BREAK - - -case 143: -YY_RULE_SETUP -#line 714 "seclang-scanner.ll" -{ BEGINX(EXPECTING_ACTION_PREDICATE_VARIABLE); } - YY_BREAK - - -case 144: -/* rule 144 can match eol */ -YY_RULE_SETUP -#line 719 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK -case 145: -/* rule 145 can match eol */ -YY_RULE_SETUP -#line 720 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(0); } - YY_BREAK - - -case 146: -YY_RULE_SETUP -#line 725 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 147: -/* rule 147 can match eol */ -YY_RULE_SETUP -#line 726 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK -case 148: -/* rule 148 can match eol */ -YY_RULE_SETUP -#line 727 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); yyless(0); } - YY_BREAK - - -case YY_STATE_EOF(FINISH_ACTIONS): -#line 735 "seclang-scanner.ll" -{ BEGIN(INITIAL); yyless(0); p::make_NEW_LINE(*driver.loc.back()); } - YY_BREAK -case 149: -YY_RULE_SETUP -#line 736 "seclang-scanner.ll" -{ BEGIN(INITIAL); } - YY_BREAK - -case 150: -/* rule 150 can match eol */ -YY_RULE_SETUP -#line 739 "seclang-scanner.ll" -{ return p::make_CONFIG_COMPONENT_SIG(strchr(yytext, ' ') + 2, *driver.loc.back()); } - YY_BREAK -case 151: -/* rule 151 can match eol */ -YY_RULE_SETUP -#line 740 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_SERVER_SIG(strchr(yytext, ' ') + 2, *driver.loc.back()); } - YY_BREAK -case 152: -/* rule 152 can match eol */ -YY_RULE_SETUP -#line 741 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_WEB_APP_ID(parserSanitizer(strchr(yytext, ' ') + 2), *driver.loc.back()); } - YY_BREAK -case 153: -YY_RULE_SETUP -#line 742 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_WEB_APP_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 154: -YY_RULE_SETUP -#line 743 "seclang-scanner.ll" -{ return p::make_CONFIG_CONTENT_INJECTION(*driver.loc.back()); } - YY_BREAK -case 155: -YY_RULE_SETUP -#line 744 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_DIR_MOD(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 156: -YY_RULE_SETUP -#line 745 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_DIR_MOD(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 157: -YY_RULE_SETUP -#line 746 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 158: -YY_RULE_SETUP -#line 747 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 159: -YY_RULE_SETUP -#line 748 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_ARGUMENT_SEPARATOR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 160: -YY_RULE_SETUP -#line 749 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_ARGUMENT_SEPARATOR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 161: -YY_RULE_SETUP -#line 750 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_ENG(yytext, *driver.loc.back()); } - YY_BREAK -case 162: -YY_RULE_SETUP -#line 751 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_FLE_MOD(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 163: -YY_RULE_SETUP -#line 752 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_LOG2(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 164: -YY_RULE_SETUP -#line 753 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_LOG_P(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 165: -YY_RULE_SETUP -#line 754 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_LOG_P(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 166: -YY_RULE_SETUP -#line 755 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_LOG(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 167: -YY_RULE_SETUP -#line 756 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_LOG_FMT(*driver.loc.back()); } - YY_BREAK -case 168: -YY_RULE_SETUP -#line 757 "seclang-scanner.ll" -{ return p::make_JSON(*driver.loc.back()); } - YY_BREAK -case 169: -YY_RULE_SETUP -#line 758 "seclang-scanner.ll" -{ return p::make_NATIVE(*driver.loc.back()); } - YY_BREAK -case 170: -YY_RULE_SETUP -#line 759 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_LOG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 171: -YY_RULE_SETUP -#line 760 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_STS(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 172: -YY_RULE_SETUP -#line 761 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_STS(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 173: -YY_RULE_SETUP -#line 762 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_AUDIT_TPE(yytext, *driver.loc.back()); } - YY_BREAK -case 174: -YY_RULE_SETUP -#line 763 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_DEBUG_LOG(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 175: -YY_RULE_SETUP -#line 764 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_DEBUG_LOG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 176: -YY_RULE_SETUP -#line 765 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_DEBUG_LVL(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 177: -YY_RULE_SETUP -#line 766 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_GEO_DB(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 178: -YY_RULE_SETUP -#line 767 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 179: -YY_RULE_SETUP -#line 768 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_PCRE_MATCH_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 180: -YY_RULE_SETUP -#line 769 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 181: -YY_RULE_SETUP -#line 770 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_REQ_BODY_LIMIT_ACTION(yytext, *driver.loc.back()); } - YY_BREAK -case 182: -YY_RULE_SETUP -#line 771 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_REQ_BODY_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 183: -YY_RULE_SETUP -#line 772 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 184: -YY_RULE_SETUP -#line 773 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_REQ_BODY(yytext, *driver.loc.back()); } - YY_BREAK -case 185: -YY_RULE_SETUP -#line 774 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_RES_BODY_LIMIT_ACTION(yytext, *driver.loc.back()); } - YY_BREAK -case 186: -YY_RULE_SETUP -#line 775 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_RES_BODY_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 187: -YY_RULE_SETUP -#line 776 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_RES_BODY(yytext, *driver.loc.back()); } - YY_BREAK -case 188: -YY_RULE_SETUP -#line 777 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_RULE_ENG(yytext, *driver.loc.back()); } - YY_BREAK -case 189: -YY_RULE_SETUP -#line 778 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_SEC_MARKER(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 190: -YY_RULE_SETUP -#line 779 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_SEC_MARKER(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 191: -YY_RULE_SETUP -#line 780 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_UNICODE_MAP_FILE(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 192: -YY_RULE_SETUP -#line 781 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_RULE_REMOVE_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 193: -YY_RULE_SETUP -#line 782 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_RULE_REMOVE_BY_MSG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 194: -YY_RULE_SETUP -#line 783 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_RULE_REMOVE_BY_MSG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 195: -YY_RULE_SETUP -#line 784 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_RULE_REMOVE_BY_TAG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 196: -YY_RULE_SETUP -#line 785 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_RULE_REMOVE_BY_TAG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 197: -YY_RULE_SETUP -#line 786 "seclang-scanner.ll" -{ state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 198: -YY_RULE_SETUP -#line 787 "seclang-scanner.ll" -{ state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 199: -YY_RULE_SETUP -#line 788 "seclang-scanner.ll" -{ state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 200: -YY_RULE_SETUP -#line 789 "seclang-scanner.ll" -{ state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 201: -YY_RULE_SETUP -#line 790 "seclang-scanner.ll" -{ state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 202: -YY_RULE_SETUP -#line 791 "seclang-scanner.ll" -{ state_variable_from = 1; BEGIN(TRANSACTION_TO_VARIABLE); return p::make_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 203: -YY_RULE_SETUP -#line 792 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 204: -YY_RULE_SETUP -#line 793 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 205: -YY_RULE_SETUP -#line 794 "seclang-scanner.ll" -{ return p::make_CONFIG_UPDLOAD_KEEP_FILES(yytext, *driver.loc.back()); } - YY_BREAK -case 206: -YY_RULE_SETUP -#line 795 "seclang-scanner.ll" -{ return p::make_CONFIG_UPDLOAD_SAVE_TMP_FILES(yytext, *driver.loc.back()); } - YY_BREAK -case 207: -YY_RULE_SETUP -#line 796 "seclang-scanner.ll" -{ return p::make_CONFIG_UPLOAD_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 208: -YY_RULE_SETUP -#line 797 "seclang-scanner.ll" -{ return p::make_CONFIG_UPLOAD_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 209: -YY_RULE_SETUP -#line 798 "seclang-scanner.ll" -{ return p::make_CONFIG_UPLOAD_FILE_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 210: -YY_RULE_SETUP -#line 799 "seclang-scanner.ll" -{ return p::make_CONFIG_UPLOAD_FILE_MODE(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 211: -YY_RULE_SETUP -#line 800 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_ABORT(yytext, *driver.loc.back()); } - YY_BREAK -case 212: -YY_RULE_SETUP -#line 801 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_DETC(yytext, *driver.loc.back()); } - YY_BREAK -case 213: -YY_RULE_SETUP -#line 802 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_HTTPS(yytext, *driver.loc.back()); } - YY_BREAK -case 214: -YY_RULE_SETUP -#line 803 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_OFF(yytext, *driver.loc.back()); } - YY_BREAK -case 215: -YY_RULE_SETUP -#line 804 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_ON(yytext, *driver.loc.back()); } - YY_BREAK -case 216: -YY_RULE_SETUP -#line 805 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_PARALLEL(yytext, *driver.loc.back()); } - YY_BREAK -case 217: -YY_RULE_SETUP -#line 806 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_PROCESS_PARTIAL(yytext, *driver.loc.back()); } - YY_BREAK -case 218: -YY_RULE_SETUP -#line 807 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_REJECT(yytext, *driver.loc.back()); } - YY_BREAK -case 219: -YY_RULE_SETUP -#line 808 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_RELEVANT_ONLY(yytext, *driver.loc.back()); } - YY_BREAK -case 220: -YY_RULE_SETUP -#line 809 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_SERIAL(yytext, *driver.loc.back()); } - YY_BREAK -case 221: -YY_RULE_SETUP -#line 810 "seclang-scanner.ll" -{ return p::make_CONFIG_VALUE_WARN(yytext, *driver.loc.back()); } - YY_BREAK -case 222: -YY_RULE_SETUP -#line 811 "seclang-scanner.ll" -{ return p::make_CONFIG_XML_EXTERNAL_ENTITY(yytext, *driver.loc.back()); } - YY_BREAK -case 223: -YY_RULE_SETUP -#line 812 "seclang-scanner.ll" -{ return p::make_CONGIG_DIR_RESPONSE_BODY_MP(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 224: -YY_RULE_SETUP -#line 813 "seclang-scanner.ll" -{ return p::make_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR(*driver.loc.back()); } - YY_BREAK -case 225: -YY_RULE_SETUP -#line 814 "seclang-scanner.ll" -{ return p::make_CONGIG_DIR_SEC_ARG_SEP(yytext, *driver.loc.back()); } - YY_BREAK -case 226: -YY_RULE_SETUP -#line 815 "seclang-scanner.ll" -{ return p::make_CONGIG_DIR_SEC_COOKIE_FORMAT(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 227: -YY_RULE_SETUP -#line 816 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_COOKIEV0_SEPARATOR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 228: -YY_RULE_SETUP -#line 817 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_COOKIEV0_SEPARATOR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 229: -YY_RULE_SETUP -#line 818 "seclang-scanner.ll" -{ return p::make_CONGIG_DIR_SEC_DATA_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 230: -YY_RULE_SETUP -#line 819 "seclang-scanner.ll" -{ return p::make_CONGIG_DIR_SEC_DATA_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 231: -YY_RULE_SETUP -#line 820 "seclang-scanner.ll" -{ return p::make_CONGIG_DIR_SEC_STATUS_ENGINE(yytext, *driver.loc.back()); } - YY_BREAK -case 232: -YY_RULE_SETUP -#line 821 "seclang-scanner.ll" -{ return p::make_CONGIG_DIR_SEC_TMP_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 233: -YY_RULE_SETUP -#line 822 "seclang-scanner.ll" -{ return p::make_CONGIG_DIR_SEC_TMP_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 234: -YY_RULE_SETUP -#line 823 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS); return p::make_DIRECTIVE_SECRULESCRIPT(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 235: -YY_RULE_SETUP -#line 824 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS); return p::make_DIRECTIVE_SECRULESCRIPT(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 236: -YY_RULE_SETUP -#line 825 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_CACHE_TRANSFORMATIONS(yytext, *driver.loc.back()); } - YY_BREAK -case 237: -YY_RULE_SETUP -#line 826 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_CHROOT_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 238: -YY_RULE_SETUP -#line 827 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_CHROOT_DIR(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 239: -YY_RULE_SETUP -#line 828 "seclang-scanner.ll" -{ return p::make_CONFIG_CONN_ENGINE(yytext, *driver.loc.back()); } - YY_BREAK -case 240: -YY_RULE_SETUP -#line 829 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_HASH_ENGINE(yytext, *driver.loc.back()); } - YY_BREAK -case 241: -YY_RULE_SETUP -#line 830 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_HASH_KEY(yytext, *driver.loc.back()); } - YY_BREAK -case 242: -YY_RULE_SETUP -#line 831 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_HASH_PARAM(yytext, *driver.loc.back()); } - YY_BREAK -case 243: -YY_RULE_SETUP -#line 832 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_HASH_METHOD_RX(yytext, *driver.loc.back()); } - YY_BREAK -case 244: -YY_RULE_SETUP -#line 833 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_HASH_METHOD_PM(yytext, *driver.loc.back()); } - YY_BREAK -case 245: -YY_RULE_SETUP -#line 834 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_GSB_DB(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 246: -YY_RULE_SETUP -#line 835 "seclang-scanner.ll" -{ return p::make_CONFIG_DIR_GSB_DB(parserSanitizer(strchr(yytext, ' ') + 1), *driver.loc.back()); } - YY_BREAK -case 247: -YY_RULE_SETUP -#line 836 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_GUARDIAN_LOG(yytext, *driver.loc.back()); } - YY_BREAK -case 248: -YY_RULE_SETUP -#line 837 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_INTERCEPT_ON_ERROR(yytext, *driver.loc.back()); } - YY_BREAK -case 249: -YY_RULE_SETUP -#line 838 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_CONN_R_STATE_LIMIT(yytext, *driver.loc.back()); } - YY_BREAK -case 250: -YY_RULE_SETUP -#line 839 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_CONN_W_STATE_LIMIT(yytext, *driver.loc.back()); } - YY_BREAK -case 251: -YY_RULE_SETUP -#line 840 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_SENSOR_ID(yytext, *driver.loc.back()); } - YY_BREAK -case 252: -YY_RULE_SETUP -#line 841 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_RULE_INHERITANCE(yytext, *driver.loc.back()); } - YY_BREAK -case 253: -YY_RULE_SETUP -#line 842 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_RULE_PERF_TIME(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 254: -YY_RULE_SETUP -#line 843 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_STREAM_IN_BODY_INSPECTION(yytext, *driver.loc.back()); } - YY_BREAK -case 255: -YY_RULE_SETUP -#line 844 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION(yytext, *driver.loc.back()); } - YY_BREAK -case 256: -YY_RULE_SETUP -#line 845 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_DISABLE_BACKEND_COMPRESS(yytext, *driver.loc.back()); } - YY_BREAK -case 257: -YY_RULE_SETUP -#line 847 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_TO_VARIABLE); return p::make_DIRECTIVE(yytext, *driver.loc.back()); } - YY_BREAK -case 258: -YY_RULE_SETUP -#line 848 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS); return p::make_CONFIG_DIR_SEC_DEFAULT_ACTION(yytext, *driver.loc.back()); } - YY_BREAK -case 259: -YY_RULE_SETUP -#line 849 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS); return p::make_CONFIG_DIR_SEC_ACTION(yytext, *driver.loc.back()); } - YY_BREAK -case 260: -YY_RULE_SETUP -#line 851 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION(yytext, *driver.loc.back()); } - YY_BREAK -case 261: -YY_RULE_SETUP -#line 852 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_COLLECTION_TIMEOUT(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 262: -YY_RULE_SETUP -#line 853 "seclang-scanner.ll" -{ return p::make_CONFIG_SEC_HTTP_BLKEY(strchr(yytext, ' ') + 1, *driver.loc.back()); } - YY_BREAK -case 263: -/* rule 263 can match eol */ -YY_RULE_SETUP -#line 854 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK -case 264: -/* rule 264 can match eol */ -YY_RULE_SETUP -#line 855 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(COMMENT); } - YY_BREAK -case 265: -/* rule 265 can match eol */ -YY_RULE_SETUP -#line 856 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(COMMENT); } - YY_BREAK -case 266: -YY_RULE_SETUP -#line 857 "seclang-scanner.ll" -{ driver.loc.back()->step(); /* comment, just ignore. */ } - YY_BREAK -case 267: -YY_RULE_SETUP -#line 858 "seclang-scanner.ll" -{ driver.loc.back()->step(); /* carriage return, just ignore. */} - YY_BREAK -case 268: -YY_RULE_SETUP -#line 859 "seclang-scanner.ll" -{ return p::make_QUOTATION_MARK(yytext, *driver.loc.back()); } - YY_BREAK -case 269: -YY_RULE_SETUP -#line 860 "seclang-scanner.ll" -{ return p::make_COMMA(*driver.loc.back()); } - YY_BREAK - -case 270: -YY_RULE_SETUP -#line 863 "seclang-scanner.ll" -{ BEGIN(EXPECTING_VARIABLE); } - YY_BREAK - - -case 271: -YY_RULE_SETUP -#line 867 "seclang-scanner.ll" -{ return p::make_PIPE(*driver.loc.back()); } - YY_BREAK -case 272: -YY_RULE_SETUP -#line 868 "seclang-scanner.ll" -{ return p::make_PIPE(*driver.loc.back()); } - YY_BREAK -case 273: -YY_RULE_SETUP -#line 869 "seclang-scanner.ll" -{ return p::make_QUOTATION_MARK(yytext, *driver.loc.back()); } - YY_BREAK -case 274: -YY_RULE_SETUP -#line 870 "seclang-scanner.ll" -{ return p::make_VAR_EXCLUSION(*driver.loc.back()); } - YY_BREAK -case 275: -YY_RULE_SETUP -#line 871 "seclang-scanner.ll" -{ return p::make_VAR_COUNT(*driver.loc.back()); } - YY_BREAK - - -case 276: -YY_RULE_SETUP -#line 875 "seclang-scanner.ll" -{ if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_SPACE); } else { state_variable_from = 0; BEGIN(INITIAL);} } - YY_BREAK -case 277: -YY_RULE_SETUP -#line 876 "seclang-scanner.ll" -{ if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_QUOTE); } else { state_variable_from = 0; BEGIN(INITIAL);} } - YY_BREAK -case 278: -/* rule 278 can match eol */ -YY_RULE_SETUP -#line 877 "seclang-scanner.ll" -{ if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_SPACE); } else { state_variable_from = 0; BEGIN(INITIAL);} } - YY_BREAK -case 279: -/* rule 279 can match eol */ -YY_RULE_SETUP -#line 878 "seclang-scanner.ll" -{ if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_QUOTE); } else { state_variable_from = 0; BEGIN(INITIAL);} } - YY_BREAK -case 280: -/* rule 280 can match eol */ -YY_RULE_SETUP -#line 879 "seclang-scanner.ll" -{ if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_SPACE); } else { state_variable_from = 0; BEGIN(INITIAL);} } - YY_BREAK -case 281: -/* rule 281 can match eol */ -YY_RULE_SETUP -#line 880 "seclang-scanner.ll" -{ if (state_variable_from == 0) { BEGIN(EXPECTING_OPERATOR_ENDS_WITH_QUOTE); } else { state_variable_from = 0; BEGIN(INITIAL);} } - YY_BREAK - - -case 282: -YY_RULE_SETUP -#line 884 "seclang-scanner.ll" -{ } - YY_BREAK -case 283: -YY_RULE_SETUP -#line 885 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 284: -/* rule 284 can match eol */ -YY_RULE_SETUP -#line 886 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 285: -/* rule 285 can match eol */ -YY_RULE_SETUP -#line 887 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK - - -case 286: -YY_RULE_SETUP -#line 892 "seclang-scanner.ll" -{ BEGIN(LEXING_ERROR_VARIABLE); yyless(0); } - YY_BREAK -case 287: -YY_RULE_SETUP -#line 893 "seclang-scanner.ll" -{ return p::make_VARIABLE_ARGS_COMBINED_SIZE(*driver.loc.back()); } - YY_BREAK -case 288: -YY_RULE_SETUP -#line 894 "seclang-scanner.ll" -{ return p::make_VARIABLE_ARGS_GET_NAMES(*driver.loc.back()); } - YY_BREAK -case 289: -YY_RULE_SETUP -#line 895 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_GET_NAMES(*driver.loc.back()); } - YY_BREAK -case 290: -YY_RULE_SETUP -#line 896 "seclang-scanner.ll" -{ return p::make_VARIABLE_ARGS_NAMES(*driver.loc.back()); } - YY_BREAK -case 291: -YY_RULE_SETUP -#line 897 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_NAMES(*driver.loc.back()); } - YY_BREAK -case 292: -YY_RULE_SETUP -#line 898 "seclang-scanner.ll" -{ return p::make_VARIABLE_ARGS_POST_NAMES(*driver.loc.back()); } - YY_BREAK -case 293: -YY_RULE_SETUP -#line 899 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_POST_NAMES(*driver.loc.back()); } - YY_BREAK -case 294: -YY_RULE_SETUP -#line 900 "seclang-scanner.ll" -{ return p::make_VARIABLE_AUTH_TYPE(*driver.loc.back()); } - YY_BREAK -case 295: -YY_RULE_SETUP -#line 901 "seclang-scanner.ll" -{ return p::make_VARIABLE_FILES_COMBINED_SIZE(*driver.loc.back()); } - YY_BREAK -case 296: -YY_RULE_SETUP -#line 902 "seclang-scanner.ll" -{ return p::make_VARIABLE_FULL_REQUEST_LENGTH(*driver.loc.back()); } - YY_BREAK -case 297: -YY_RULE_SETUP -#line 903 "seclang-scanner.ll" -{ return p::make_VARIABLE_FULL_REQUEST(*driver.loc.back()); } - YY_BREAK -case 298: -YY_RULE_SETUP -#line 904 "seclang-scanner.ll" -{ return p::make_VARIABLE_INBOUND_DATA_ERROR(*driver.loc.back()); } - YY_BREAK -case 299: -YY_RULE_SETUP -#line 905 "seclang-scanner.ll" -{ return p::make_VARIABLE_MATCHED_VAR_NAME(*driver.loc.back()); } - YY_BREAK -case 300: -YY_RULE_SETUP -#line 906 "seclang-scanner.ll" -{ return p::make_VARIABLE_MATCHED_VAR(*driver.loc.back()); } - YY_BREAK -case 301: -YY_RULE_SETUP -#line 907 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_BOUNDARY_QUOTED(*driver.loc.back()); } - YY_BREAK -case 302: -YY_RULE_SETUP -#line 908 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE(*driver.loc.back()); } - YY_BREAK -case 303: -YY_RULE_SETUP -#line 909 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_CRLF_LF_LINES(*driver.loc.back()); } - YY_BREAK -case 304: -YY_RULE_SETUP -#line 910 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_DATA_AFTER(*driver.loc.back()); } - YY_BREAK -case 305: -YY_RULE_SETUP -#line 911 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_DATA_BEFORE(*driver.loc.back()); } - YY_BREAK -case 306: -YY_RULE_SETUP -#line 912 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED(*driver.loc.back()); } - YY_BREAK -case 307: -YY_RULE_SETUP -#line 913 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_MULTIPART_FILENAME(*driver.loc.back()); } - YY_BREAK -case 308: -YY_RULE_SETUP -#line 914 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_FILENAME(*driver.loc.back()); } - YY_BREAK -case 309: -YY_RULE_SETUP -#line 915 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_HEADER_FOLDING(*driver.loc.back()); } - YY_BREAK -case 310: -YY_RULE_SETUP -#line 916 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_HEADER_FOLDING(*driver.loc.back()); } - YY_BREAK -case 311: -YY_RULE_SETUP -#line 917 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING(*driver.loc.back()); } - YY_BREAK -case 312: -YY_RULE_SETUP -#line 918 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_INVALID_PART(*driver.loc.back()); } - YY_BREAK -case 313: -YY_RULE_SETUP -#line 919 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_INVALID_QUOTING(*driver.loc.back()); } - YY_BREAK -case 314: -YY_RULE_SETUP -#line 920 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_LF_LINE(*driver.loc.back()); } - YY_BREAK -case 315: -YY_RULE_SETUP -#line 921 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_MISSING_SEMICOLON(*driver.loc.back()); } - YY_BREAK -case 316: -YY_RULE_SETUP -#line 922 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_SEMICOLON_MISSING(*driver.loc.back()); } - YY_BREAK -case 317: -YY_RULE_SETUP -#line 923 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_MULTIPART_NAME(*driver.loc.back()); } - YY_BREAK -case 318: -YY_RULE_SETUP -#line 924 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_NAME(*driver.loc.back()); } - YY_BREAK -case 319: -YY_RULE_SETUP -#line 925 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_STRICT_ERROR(*driver.loc.back()); } - YY_BREAK -case 320: -YY_RULE_SETUP -#line 926 "seclang-scanner.ll" -{ return p::make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY(*driver.loc.back()); } - YY_BREAK -case 321: -YY_RULE_SETUP -#line 927 "seclang-scanner.ll" -{ return p::make_VARIABLE_OUTBOUND_DATA_ERROR(*driver.loc.back()); } - YY_BREAK -case 322: -YY_RULE_SETUP -#line 928 "seclang-scanner.ll" -{ return p::make_VARIABLE_PATH_INFO(*driver.loc.back()); } - YY_BREAK -case 323: -YY_RULE_SETUP -#line 929 "seclang-scanner.ll" -{ return p::make_VARIABLE_QUERY_STRING(*driver.loc.back()); } - YY_BREAK -case 324: -YY_RULE_SETUP -#line 930 "seclang-scanner.ll" -{ return p::make_VARIABLE_REMOTE_ADDR(*driver.loc.back()); } - YY_BREAK -case 325: -YY_RULE_SETUP -#line 931 "seclang-scanner.ll" -{ return p::make_VARIABLE_REMOTE_HOST(*driver.loc.back()); } - YY_BREAK -case 326: -YY_RULE_SETUP -#line 932 "seclang-scanner.ll" -{ return p::make_VARIABLE_REMOTE_PORT(*driver.loc.back()); } - YY_BREAK -case 327: -YY_RULE_SETUP -#line 933 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQBODY_ERROR_MSG(*driver.loc.back()); } - YY_BREAK -case 328: -YY_RULE_SETUP -#line 934 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQBODY_ERROR(*driver.loc.back()); } - YY_BREAK -case 329: -YY_RULE_SETUP -#line 935 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG(*driver.loc.back()); } - YY_BREAK -case 330: -YY_RULE_SETUP -#line 936 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQBODY_PROCESSOR_ERROR(*driver.loc.back()); } - YY_BREAK -case 331: -YY_RULE_SETUP -#line 937 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQBODY_PROCESSOR(*driver.loc.back()); } - YY_BREAK -case 332: -YY_RULE_SETUP -#line 938 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_BASENAME(*driver.loc.back()); } - YY_BREAK -case 333: -YY_RULE_SETUP -#line 939 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_BODY_LENGTH(*driver.loc.back()); } - YY_BREAK -case 334: -YY_RULE_SETUP -#line 940 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_BODY(*driver.loc.back()); } - YY_BREAK -case 335: -YY_RULE_SETUP -#line 941 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_FILE_NAME(*driver.loc.back()); } - YY_BREAK -case 336: -YY_RULE_SETUP -#line 942 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_HEADERS_NAMES(*driver.loc.back()); } - YY_BREAK -case 337: -YY_RULE_SETUP -#line 943 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_REQUEST_HEADERS_NAMES(*driver.loc.back()); } - YY_BREAK -case 338: -YY_RULE_SETUP -#line 944 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_LINE(*driver.loc.back()); } - YY_BREAK -case 339: -YY_RULE_SETUP -#line 945 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_METHOD(*driver.loc.back()); } - YY_BREAK -case 340: -YY_RULE_SETUP -#line 946 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_PROTOCOL(*driver.loc.back()); } - YY_BREAK -case 341: -YY_RULE_SETUP -#line 947 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_URI_RAW(*driver.loc.back()); } - YY_BREAK -case 342: -YY_RULE_SETUP -#line 948 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_URI(*driver.loc.back()); } - YY_BREAK -case 343: -YY_RULE_SETUP -#line 949 "seclang-scanner.ll" -{ return p::make_VARIABLE_RESPONSE_BODY(*driver.loc.back()); } - YY_BREAK -case 344: -YY_RULE_SETUP -#line 950 "seclang-scanner.ll" -{ return p::make_VARIABLE_RESPONSE_CONTENT_LENGTH(*driver.loc.back()); } - YY_BREAK -case 345: -YY_RULE_SETUP -#line 951 "seclang-scanner.ll" -{ return p::make_VARIABLE_RESPONSE_CONTENT_TYPE(*driver.loc.back()); } - YY_BREAK -case 346: -YY_RULE_SETUP -#line 952 "seclang-scanner.ll" -{ return p::make_VARIABLE_RESPONSE_HEADERS_NAMES(*driver.loc.back()); } - YY_BREAK -case 347: -YY_RULE_SETUP -#line 953 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_RESPONSE_HEADERS_NAMES(*driver.loc.back()); } - YY_BREAK -case 348: -YY_RULE_SETUP -#line 954 "seclang-scanner.ll" -{ return p::make_VARIABLE_RESPONSE_PROTOCOL(*driver.loc.back()); } - YY_BREAK -case 349: -YY_RULE_SETUP -#line 955 "seclang-scanner.ll" -{ return p::make_VARIABLE_RESPONSE_STATUS(*driver.loc.back()); } - YY_BREAK -case 350: -YY_RULE_SETUP -#line 956 "seclang-scanner.ll" -{ return p::make_VARIABLE_SERVER_ADDR(*driver.loc.back()); } - YY_BREAK -case 351: -YY_RULE_SETUP -#line 957 "seclang-scanner.ll" -{ return p::make_VARIABLE_SERVER_NAME(*driver.loc.back()); } - YY_BREAK -case 352: -YY_RULE_SETUP -#line 958 "seclang-scanner.ll" -{ return p::make_VARIABLE_SERVER_PORT(*driver.loc.back()); } - YY_BREAK -case 353: -YY_RULE_SETUP -#line 959 "seclang-scanner.ll" -{ return p::make_VARIABLE_SESSION_ID(*driver.loc.back()); } - YY_BREAK -case 354: -YY_RULE_SETUP -#line 960 "seclang-scanner.ll" -{ return p::make_VARIABLE_UNIQUE_ID(*driver.loc.back()); } - YY_BREAK -case 355: -YY_RULE_SETUP -#line 961 "seclang-scanner.ll" -{ return p::make_VARIABLE_URL_ENCODED_ERROR(*driver.loc.back()); } - YY_BREAK -case 356: -YY_RULE_SETUP -#line 962 "seclang-scanner.ll" -{ return p::make_VARIABLE_USER_ID(*driver.loc.back()); } - YY_BREAK -case 357: -YY_RULE_SETUP -#line 963 "seclang-scanner.ll" -{ return p::make_VARIABLE_WEB_APP_ID(*driver.loc.back()); } - YY_BREAK -case 358: -YY_RULE_SETUP -#line 964 "seclang-scanner.ll" -{ return p::make_VARIABLE_ARGS(*driver.loc.back()); } - YY_BREAK -case 359: -YY_RULE_SETUP -#line 965 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS(*driver.loc.back()); } - YY_BREAK -case 360: -YY_RULE_SETUP -#line 966 "seclang-scanner.ll" -{ return p::make_VARIABLE_ARGS_GET(*driver.loc.back()); } - YY_BREAK -case 361: -YY_RULE_SETUP -#line 967 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_GET(*driver.loc.back()); } - YY_BREAK -case 362: -YY_RULE_SETUP -#line 968 "seclang-scanner.ll" -{ return p::make_VARIABLE_ARGS_POST(*driver.loc.back()); } - YY_BREAK -case 363: -YY_RULE_SETUP -#line 969 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_ARGS_POST(*driver.loc.back()); } - YY_BREAK -case 364: -YY_RULE_SETUP -#line 970 "seclang-scanner.ll" -{ return p::make_VARIABLE_FILES_SIZES(*driver.loc.back()); } - YY_BREAK -case 365: -YY_RULE_SETUP -#line 971 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES_SIZES(*driver.loc.back()); } - YY_BREAK -case 366: -YY_RULE_SETUP -#line 972 "seclang-scanner.ll" -{ return p::make_VARIABLE_FILES_NAMES(*driver.loc.back()); } - YY_BREAK -case 367: -YY_RULE_SETUP -#line 973 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES_NAMES(*driver.loc.back()); } - YY_BREAK -case 368: -YY_RULE_SETUP -#line 974 "seclang-scanner.ll" -{ return p::make_VARIABLE_FILES_TMP_CONTENT(*driver.loc.back()); } - YY_BREAK -case 369: -YY_RULE_SETUP -#line 975 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES_TMP_CONTENT(*driver.loc.back()); } - YY_BREAK -case 370: -YY_RULE_SETUP -#line 976 "seclang-scanner.ll" -{ return p::make_VARIABLE_MATCHED_VARS_NAMES(*driver.loc.back()); } - YY_BREAK -case 371: -YY_RULE_SETUP -#line 977 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_MATCHED_VARS_NAMES(*driver.loc.back()); } - YY_BREAK -case 372: -YY_RULE_SETUP -#line 978 "seclang-scanner.ll" -{ return p::make_VARIABLE_MATCHED_VARS(*driver.loc.back()); } - YY_BREAK -case 373: -YY_RULE_SETUP -#line 979 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_MATCHED_VARS(*driver.loc.back()); } - YY_BREAK -case 374: -YY_RULE_SETUP -#line 980 "seclang-scanner.ll" -{ return p::make_VARIABLE_FILES(*driver.loc.back()); } - YY_BREAK -case 375: -YY_RULE_SETUP -#line 981 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES(*driver.loc.back()); } - YY_BREAK -case 376: -YY_RULE_SETUP -#line 982 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_COOKIES(*driver.loc.back()); } - YY_BREAK -case 377: -YY_RULE_SETUP -#line 983 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_REQUEST_COOKIES(*driver.loc.back()); } - YY_BREAK -case 378: -YY_RULE_SETUP -#line 984 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_HEADERS(*driver.loc.back()); } - YY_BREAK -case 379: -YY_RULE_SETUP -#line 985 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_REQUEST_HEADERS(*driver.loc.back()); } - YY_BREAK -case 380: -YY_RULE_SETUP -#line 986 "seclang-scanner.ll" -{ return p::make_VARIABLE_RESPONSE_HEADERS(*driver.loc.back()); } - YY_BREAK -case 381: -YY_RULE_SETUP -#line 987 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_RESPONSE_HEADERS(*driver.loc.back()); } - YY_BREAK -case 382: -YY_RULE_SETUP -#line 988 "seclang-scanner.ll" -{ return p::make_VARIABLE_GEO(*driver.loc.back()); } - YY_BREAK -case 383: -YY_RULE_SETUP -#line 989 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_GEO(*driver.loc.back()); } - YY_BREAK -case 384: -YY_RULE_SETUP -#line 990 "seclang-scanner.ll" -{ return p::make_VARIABLE_REQUEST_COOKIES_NAMES(*driver.loc.back()); } - YY_BREAK -case 385: -YY_RULE_SETUP -#line 991 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_REQUEST_COOKIES_NAMES(*driver.loc.back()); } - YY_BREAK -case 386: -YY_RULE_SETUP -#line 992 "seclang-scanner.ll" -{ return p::make_VARIABLE_RULE(*driver.loc.back()); } - YY_BREAK -case 387: -YY_RULE_SETUP -#line 993 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_RULE(*driver.loc.back()); } - YY_BREAK -case 388: -YY_RULE_SETUP -#line 994 "seclang-scanner.ll" -{ return p::make_VARIABLE_FILES_TMP_NAMES(*driver.loc.back()); } - YY_BREAK -case 389: -YY_RULE_SETUP -#line 995 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_VARIABLE_FILES_TMP_NAMES(*driver.loc.back()); } - YY_BREAK -case 390: -YY_RULE_SETUP -#line 996 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_XML(*driver.loc.back()); } - YY_BREAK -case 391: -YY_RULE_SETUP -#line 997 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_RUN_TIME_VAR_XML(*driver.loc.back()); } - YY_BREAK -case 392: -YY_RULE_SETUP -#line 998 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_ENV(*driver.loc.back()); } - YY_BREAK -case 393: -YY_RULE_SETUP -#line 999 "seclang-scanner.ll" -{ BEGINX(EXPECTING_VAR_PARAMETER); return p::make_RUN_TIME_VAR_ENV(*driver.loc.back()); } - YY_BREAK -case 394: -YY_RULE_SETUP -#line 1000 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_BLD(yytext, *driver.loc.back()); } - YY_BREAK -case 395: -YY_RULE_SETUP -#line 1001 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_DUR(yytext, *driver.loc.back()); } - YY_BREAK -case 396: -YY_RULE_SETUP -#line 1002 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_HSV(yytext, *driver.loc.back()); } - YY_BREAK -case 397: -YY_RULE_SETUP -#line 1003 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_REMOTE_USER(yytext, *driver.loc.back()); } - YY_BREAK -case 398: -YY_RULE_SETUP -#line 1004 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_TIME_DAY(yytext, *driver.loc.back()); } - YY_BREAK -case 399: -YY_RULE_SETUP -#line 1005 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_TIME_EPOCH(yytext, *driver.loc.back()); } - YY_BREAK -case 400: -YY_RULE_SETUP -#line 1006 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_TIME_HOUR(yytext, *driver.loc.back()); } - YY_BREAK -case 401: -YY_RULE_SETUP -#line 1007 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_TIME_MIN(yytext, *driver.loc.back()); } - YY_BREAK -case 402: -YY_RULE_SETUP -#line 1008 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_TIME_MON(yytext, *driver.loc.back()); } - YY_BREAK -case 403: -YY_RULE_SETUP -#line 1009 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_TIME_SEC(yytext, *driver.loc.back()); } - YY_BREAK -case 404: -YY_RULE_SETUP -#line 1010 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_TIME_YEAR(yytext, *driver.loc.back()); } - YY_BREAK -case 405: -YY_RULE_SETUP -#line 1011 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_TIME(yytext, *driver.loc.back()); } - YY_BREAK -case 406: -YY_RULE_SETUP -#line 1012 "seclang-scanner.ll" -{ return p::make_RUN_TIME_VAR_TIME_WDAY(yytext, *driver.loc.back()); } - YY_BREAK -case 407: -YY_RULE_SETUP -#line 1015 "seclang-scanner.ll" -{ driver.error (*driver.loc.back(), "Variable VARIABLE_WEBSERVER_ERROR_LOG is not supported by libModSecurity", ""); throw p::syntax_error(*driver.loc.back(), "");} - YY_BREAK -case 408: -YY_RULE_SETUP -#line 1016 "seclang-scanner.ll" -{ return p::make_VARIABLE_GLOBAL(*driver.loc.back()); } - YY_BREAK -case 409: -YY_RULE_SETUP -#line 1017 "seclang-scanner.ll" -{ return p::make_VARIABLE_IP(*driver.loc.back()); } - YY_BREAK -case 410: -YY_RULE_SETUP -#line 1018 "seclang-scanner.ll" -{ return p::make_VARIABLE_RESOURCE(*driver.loc.back()); } - YY_BREAK -case 411: -YY_RULE_SETUP -#line 1019 "seclang-scanner.ll" -{ return p::make_VARIABLE_SESSION(*driver.loc.back()); } - YY_BREAK -case 412: -YY_RULE_SETUP -#line 1020 "seclang-scanner.ll" -{ return p::make_VARIABLE_STATUS(*driver.loc.back()); } - YY_BREAK -case 413: -YY_RULE_SETUP -#line 1021 "seclang-scanner.ll" -{ return p::make_VARIABLE_STATUS_LINE(*driver.loc.back()); } - YY_BREAK -case 414: -YY_RULE_SETUP -#line 1022 "seclang-scanner.ll" -{ return p::make_VARIABLE_TX(*driver.loc.back()); } - YY_BREAK -case 415: -YY_RULE_SETUP -#line 1023 "seclang-scanner.ll" -{ return p::make_VARIABLE_USER(*driver.loc.back()); } - YY_BREAK - - -case 416: -YY_RULE_SETUP -#line 1027 "seclang-scanner.ll" -{ BEGINX_(); return p::make_VARIABLE_GLOBAL(*driver.loc.back()); } - YY_BREAK -case 417: -YY_RULE_SETUP -#line 1028 "seclang-scanner.ll" -{ BEGINX_(); return p::make_VARIABLE_IP(*driver.loc.back()); } - YY_BREAK -case 418: -YY_RULE_SETUP -#line 1029 "seclang-scanner.ll" -{ BEGINX_(); return p::make_VARIABLE_RESOURCE(*driver.loc.back()); } - YY_BREAK -case 419: -YY_RULE_SETUP -#line 1030 "seclang-scanner.ll" -{ BEGINX_(); return p::make_VARIABLE_SESSION(*driver.loc.back()); } - YY_BREAK -case 420: -YY_RULE_SETUP -#line 1031 "seclang-scanner.ll" -{ BEGINX_(); return p::make_VARIABLE_TX(*driver.loc.back()); } - YY_BREAK -case 421: -YY_RULE_SETUP -#line 1032 "seclang-scanner.ll" -{ BEGINX_(); return p::make_VARIABLE_USER(*driver.loc.back()); } - YY_BREAK - - -case 422: -YY_RULE_SETUP -#line 1037 "seclang-scanner.ll" -{ BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS_PLUS(*driver.loc.back()); } - YY_BREAK -case 423: -YY_RULE_SETUP -#line 1038 "seclang-scanner.ll" -{ BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS_MINUS(*driver.loc.back()); } - YY_BREAK -case 424: -YY_RULE_SETUP -#line 1039 "seclang-scanner.ll" -{ BEGIN_ACTION_WAITING_CONTENT(); return p::make_SETVAR_OPERATION_EQUALS(*driver.loc.back()); } - YY_BREAK -case 425: -/* rule 425 can match eol */ -YY_RULE_SETUP -#line 1040 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } - YY_BREAK -case 426: -/* rule 426 can match eol */ -YY_RULE_SETUP -#line 1041 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } - YY_BREAK -case 427: -/* rule 427 can match eol */ -YY_RULE_SETUP -#line 1042 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 0); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } - YY_BREAK -case 428: -/* rule 428 can match eol */ -YY_RULE_SETUP -#line 1043 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } - YY_BREAK -case 429: -/* rule 429 can match eol */ -YY_RULE_SETUP -#line 1044 "seclang-scanner.ll" -{ yyless(yyleng - 1); BEGIN_PREVIOUS(); return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK -case 430: -/* rule 430 can match eol */ -YY_RULE_SETUP -#line 1045 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK -case 431: -/* rule 431 can match eol */ -YY_RULE_SETUP -#line 1047 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } - YY_BREAK -case 432: -/* rule 432 can match eol */ -YY_RULE_SETUP -#line 1048 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } - YY_BREAK -case 433: -YY_RULE_SETUP -#line 1049 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(0); } - YY_BREAK -case 434: -YY_RULE_SETUP -#line 1050 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(0); } - YY_BREAK -case 435: -YY_RULE_SETUP -#line 1051 "seclang-scanner.ll" -{ BEGINX(LEXING_ERROR_ACTION); yyless(0); } - YY_BREAK - - -case 436: -/* rule 436 can match eol */ -YY_RULE_SETUP -#line 1056 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } - YY_BREAK -case 437: -/* rule 437 can match eol */ -YY_RULE_SETUP -#line 1057 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } - YY_BREAK -case 438: -/* rule 438 can match eol */ -YY_RULE_SETUP -#line 1058 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 0); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } - YY_BREAK -case 439: -/* rule 439 can match eol */ -YY_RULE_SETUP -#line 1059 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } - YY_BREAK -case 440: -/* rule 440 can match eol */ -YY_RULE_SETUP -#line 1060 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); return p::make_DICT_ELEMENT(yytext, *driver.loc.back()); } - YY_BREAK -case 441: -/* rule 441 can match eol */ -YY_RULE_SETUP -#line 1062 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 1, yyleng-2), *driver.loc.back()); } - YY_BREAK -case 442: -/* rule 442 can match eol */ -YY_RULE_SETUP -#line 1063 "seclang-scanner.ll" -{ BEGIN_PREVIOUS(); yyless(yyleng - 1); return p::make_DICT_ELEMENT_REGEXP(std::string(yytext, 2, yyleng-4), *driver.loc.back()); } - YY_BREAK -case 443: -YY_RULE_SETUP -#line 1065 "seclang-scanner.ll" -{ BEGINX(LEXING_ERROR_ACTION); yyless(0); } - YY_BREAK -case 444: -YY_RULE_SETUP -#line 1066 "seclang-scanner.ll" -{ return p::make_QUOTATION_MARK(yytext, *driver.loc.back()); } - YY_BREAK - - -case 445: -YY_RULE_SETUP -#line 1072 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_GEOLOOKUP(*driver.loc.back()); } - YY_BREAK -case 446: -YY_RULE_SETUP -#line 1073 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_UNCONDITIONAL_MATCH(*driver.loc.back()); } - YY_BREAK -case 447: -YY_RULE_SETUP -#line 1074 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_DETECT_SQLI(*driver.loc.back()); } - YY_BREAK -case 448: -YY_RULE_SETUP -#line 1075 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_DETECT_XSS(*driver.loc.back()); } - YY_BREAK -case 449: -YY_RULE_SETUP -#line 1076 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_VALIDATE_URL_ENCODING(*driver.loc.back()); } - YY_BREAK -case 450: -YY_RULE_SETUP -#line 1077 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_VALIDATE_UTF8_ENCODING(*driver.loc.back()); } - YY_BREAK - - -case 451: -YY_RULE_SETUP -#line 1080 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_GEOLOOKUP(*driver.loc.back()); } - YY_BREAK -case 452: -YY_RULE_SETUP -#line 1081 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_UNCONDITIONAL_MATCH(*driver.loc.back()); } - YY_BREAK -case 453: -YY_RULE_SETUP -#line 1082 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_DETECT_SQLI(*driver.loc.back()); } - YY_BREAK -case 454: -YY_RULE_SETUP -#line 1083 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_DETECT_XSS(*driver.loc.back()); } - YY_BREAK -case 455: -YY_RULE_SETUP -#line 1084 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_VALIDATE_URL_ENCODING(*driver.loc.back()); } - YY_BREAK -case 456: -YY_RULE_SETUP -#line 1085 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_TO_ACTIONS); return p::make_OPERATOR_VALIDATE_UTF8_ENCODING(*driver.loc.back()); } - YY_BREAK - - -case 457: -YY_RULE_SETUP -#line 1089 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_WITHIN(*driver.loc.back()); } - YY_BREAK -case 458: -YY_RULE_SETUP -#line 1090 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_CONTAINS_WORD(*driver.loc.back()); } - YY_BREAK -case 459: -YY_RULE_SETUP -#line 1091 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_CONTAINS(*driver.loc.back()); } - YY_BREAK -case 460: -YY_RULE_SETUP -#line 1092 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_ENDS_WITH(*driver.loc.back()); } - YY_BREAK -case 461: -YY_RULE_SETUP -#line 1093 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_EQ(*driver.loc.back()); } - YY_BREAK -case 462: -YY_RULE_SETUP -#line 1094 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_GE(*driver.loc.back()); } - YY_BREAK -case 463: -YY_RULE_SETUP -#line 1095 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_GT(*driver.loc.back()); } - YY_BREAK -case 464: -YY_RULE_SETUP -#line 1096 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_IP_MATCH_FROM_FILE(*driver.loc.back()); } - YY_BREAK -case 465: -YY_RULE_SETUP -#line 1097 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_IP_MATCH(*driver.loc.back()); } - YY_BREAK -case 466: -YY_RULE_SETUP -#line 1098 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_LE(*driver.loc.back()); } - YY_BREAK -case 467: -YY_RULE_SETUP -#line 1099 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_LT(*driver.loc.back()); } - YY_BREAK -case 468: -YY_RULE_SETUP -#line 1100 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_PM_FROM_FILE(*driver.loc.back()); } - YY_BREAK -case 469: -YY_RULE_SETUP -#line 1101 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_PM(*driver.loc.back()); } - YY_BREAK -case 470: -YY_RULE_SETUP -#line 1102 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_RBL( *driver.loc.back()); } - YY_BREAK -case 471: -YY_RULE_SETUP -#line 1103 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_RX(*driver.loc.back()); } - YY_BREAK -case 472: -YY_RULE_SETUP -#line 1104 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_STR_EQ(*driver.loc.back()); } - YY_BREAK -case 473: -YY_RULE_SETUP -#line 1105 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_STR_MATCH(*driver.loc.back()); } - YY_BREAK -case 474: -YY_RULE_SETUP -#line 1106 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_BEGINS_WITH(*driver.loc.back()); } - YY_BREAK -case 475: -YY_RULE_SETUP -#line 1107 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_INSPECT_FILE(*driver.loc.back()); } - YY_BREAK -case 476: -YY_RULE_SETUP -#line 1108 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_FUZZY_HASH(*driver.loc.back()); } - YY_BREAK -case 477: -YY_RULE_SETUP -#line 1109 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_VALIDATE_BYTE_RANGE(*driver.loc.back()); } - YY_BREAK -case 478: -YY_RULE_SETUP -#line 1110 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_VALIDATE_DTD(*driver.loc.back()); } - YY_BREAK -case 479: -YY_RULE_SETUP -#line 1111 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_VALIDATE_HASH(*driver.loc.back()); } - YY_BREAK -case 480: -YY_RULE_SETUP -#line 1112 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_VALIDATE_SCHEMA(*driver.loc.back()); } - YY_BREAK -case 481: -YY_RULE_SETUP -#line 1113 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_VERIFY_CC(*driver.loc.back()); } - YY_BREAK -case 482: -YY_RULE_SETUP -#line 1114 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_VERIFY_CPF(*driver.loc.back()); } - YY_BREAK -case 483: -YY_RULE_SETUP -#line 1115 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_VERIFY_SSN(*driver.loc.back()); } - YY_BREAK -case 484: -YY_RULE_SETUP -#line 1116 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_GSB_LOOKUP(*driver.loc.back()); } - YY_BREAK -case 485: -YY_RULE_SETUP -#line 1117 "seclang-scanner.ll" -{ BEGIN_PARAMETER(); return p::make_OPERATOR_RSUB(*driver.loc.back()); } - YY_BREAK -case 486: -YY_RULE_SETUP -#line 1119 "seclang-scanner.ll" -{ return p::make_NOT(*driver.loc.back()); } - YY_BREAK -case 487: -YY_RULE_SETUP -#line 1120 "seclang-scanner.ll" -{ BEGIN_NO_OP_INFORMED(); yyless(0); } - YY_BREAK - - -case 488: -YY_RULE_SETUP -#line 1125 "seclang-scanner.ll" -{ BEGIN(EXPECTING_PARAMETER_ENDS_WITH_SPACE); } - YY_BREAK - - -case 489: -YY_RULE_SETUP -#line 1129 "seclang-scanner.ll" -{ BEGIN(EXPECTING_PARAMETER_ENDS_WITH_QUOTE); } - YY_BREAK - - -case 490: -YY_RULE_SETUP -#line 1133 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS); } - YY_BREAK -case 491: -/* rule 491 can match eol */ -YY_RULE_SETUP -#line 1134 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK - - -case 492: -YY_RULE_SETUP -#line 1138 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS); } - YY_BREAK -case 493: -/* rule 493 can match eol */ -YY_RULE_SETUP -#line 1139 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK - - -case 494: -YY_RULE_SETUP -#line 1142 "seclang-scanner.ll" -{ BEGINX(EXPECTING_ACTION_PREDICATE_VARIABLE); } - YY_BREAK -case 495: -YY_RULE_SETUP -#line 1143 "seclang-scanner.ll" -{ BEGIN(LEXING_ERROR); yyless(0); } - YY_BREAK - - -case 496: -YY_RULE_SETUP -#line 1147 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS); } - YY_BREAK -case 497: -/* rule 497 can match eol */ -YY_RULE_SETUP -#line 1148 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK - - -case 498: -YY_RULE_SETUP -#line 1152 "seclang-scanner.ll" -{ BEGIN(TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS); } - YY_BREAK -case 499: -/* rule 499 can match eol */ -YY_RULE_SETUP -#line 1153 "seclang-scanner.ll" -{ return p::make_FREE_TEXT_QUOTE_MACRO_EXPANSION(yytext, *driver.loc.back()); } - YY_BREAK - - -case 500: -YY_RULE_SETUP -#line 1157 "seclang-scanner.ll" -{ BEGINX(EXPECTING_ACTION_PREDICATE_VARIABLE); } - YY_BREAK -case 501: -YY_RULE_SETUP -#line 1158 "seclang-scanner.ll" -{ BEGIN(LEXING_ERROR_VARIABLE); yyless(0); } - YY_BREAK - - -case 502: -YY_RULE_SETUP -#line 1163 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } - YY_BREAK -case 503: -/* rule 503 can match eol */ -YY_RULE_SETUP -#line 1165 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 504: -/* rule 504 can match eol */ -YY_RULE_SETUP -#line 1166 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 505: -/* rule 505 can match eol */ -YY_RULE_SETUP -#line 1167 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } - YY_BREAK -case 506: -/* rule 506 can match eol */ -YY_RULE_SETUP -#line 1168 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } - YY_BREAK -case 507: -/* rule 507 can match eol */ -YY_RULE_SETUP -#line 1170 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 508: -/* rule 508 can match eol */ -YY_RULE_SETUP -#line 1171 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 509: -/* rule 509 can match eol */ -YY_RULE_SETUP -#line 1172 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 510: -/* rule 510 can match eol */ -YY_RULE_SETUP -#line 1173 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 511: -/* rule 511 can match eol */ -YY_RULE_SETUP -#line 1175 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } - YY_BREAK -case 512: -/* rule 512 can match eol */ -YY_RULE_SETUP -#line 1176 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } - YY_BREAK -case 513: -/* rule 513 can match eol */ -YY_RULE_SETUP -#line 1177 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } - YY_BREAK -case 514: -/* rule 514 can match eol */ -YY_RULE_SETUP -#line 1178 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ONLY_ONE); } - YY_BREAK -case 515: -YY_RULE_SETUP -#line 1180 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 516: -/* rule 516 can match eol */ -YY_RULE_SETUP -#line 1182 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 517: -/* rule 517 can match eol */ -YY_RULE_SETUP -#line 1183 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 518: -/* rule 518 can match eol */ -YY_RULE_SETUP -#line 1185 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 519: -/* rule 519 can match eol */ -YY_RULE_SETUP -#line 1186 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 520: -/* rule 520 can match eol */ -YY_RULE_SETUP -#line 1187 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 521: -/* rule 521 can match eol */ -YY_RULE_SETUP -#line 1188 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK -case 522: -YY_RULE_SETUP -#line 1190 "seclang-scanner.ll" -{ BEGIN(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE); } - YY_BREAK - - -case 523: -YY_RULE_SETUP -#line 1195 "seclang-scanner.ll" -{ } - YY_BREAK -case 524: -/* rule 524 can match eol */ -YY_RULE_SETUP -#line 1196 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK -case 525: -/* rule 525 can match eol */ -YY_RULE_SETUP -#line 1197 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK - - -case 526: -/* rule 526 can match eol */ -YY_RULE_SETUP -#line 1201 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK -case 527: -/* rule 527 can match eol */ -YY_RULE_SETUP -#line 1202 "seclang-scanner.ll" -{ driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK -case 528: -/* rule 528 can match eol */ -YY_RULE_SETUP -#line 1203 "seclang-scanner.ll" -{ BEGIN(INITIAL); driver.loc.back()->lines(1); driver.loc.back()->step(); } - YY_BREAK - -case 529: -YY_RULE_SETUP -#line 1208 "seclang-scanner.ll" -{ BEGIN(LEXING_ERROR); yyless(0); } - YY_BREAK -case 530: -YY_RULE_SETUP -#line 1210 "seclang-scanner.ll" -{ driver.error (*driver.loc.back(), "Invalid input: ", yytext); throw p::syntax_error(*driver.loc.back(), ""); } - YY_BREAK -case 531: -YY_RULE_SETUP -#line 1211 "seclang-scanner.ll" -{ driver.error (*driver.loc.back(), "Expecting an action, got: ", yytext); throw p::syntax_error(*driver.loc.back(), ""); } - YY_BREAK -case 532: -YY_RULE_SETUP -#line 1212 "seclang-scanner.ll" -{ driver.error (*driver.loc.back(), "Expecting a variable, got: : ", yytext); throw p::syntax_error(*driver.loc.back(), ""); } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(EXPECTING_ACTION_PREDICATE_VARIABLE): -case YY_STATE_EOF(TRANSACTION_TO_VARIABLE): -case YY_STATE_EOF(EXPECTING_VARIABLE): -case YY_STATE_EOF(EXPECTING_OPERATOR_ENDS_WITH_SPACE): -case YY_STATE_EOF(EXPECTING_OPERATOR_ENDS_WITH_QUOTE): -case YY_STATE_EOF(EXPECTING_ACTION_PREDICATE): -case YY_STATE_EOF(ACTION_PREDICATE_ENDS_WITH_QUOTE): -case YY_STATE_EOF(ACTION_PREDICATE_ENDS_WITH_DOUBLE_QUOTE): -case YY_STATE_EOF(ACTION_PREDICATE_ENDS_WITH_COMMA_OR_DOUBLE_QUOTE): -case YY_STATE_EOF(COMMENT): -case YY_STATE_EOF(TRANSITION_FROM_OP_TO_EXPECTING_PARAMETER_ENDS_WITH_QUOTE): -case YY_STATE_EOF(TRANSITION_FROM_OP_TO_EXPECTING_PARAMETER_ENDS_WITH_SPACE): -case YY_STATE_EOF(EXPECTING_VAR_PARAMETER): -case YY_STATE_EOF(EXPECTING_VAR_PARAMETER_OR_MACRO_NONQUOTED): -case YY_STATE_EOF(EXPECTING_VAR_PARAMETER_OR_MACRO_QUOTED): -case YY_STATE_EOF(EXPECTING_PARAMETER_ENDS_WITH_QUOTE): -case YY_STATE_EOF(EXPECTING_PARAMETER_ENDS_WITH_SPACE): -case YY_STATE_EOF(EXPECTING_ACTIONS_ENDS_WITH_DOUBLE_QUOTE): -case YY_STATE_EOF(EXPECTING_ACTIONS_ONLY_ONE): -case YY_STATE_EOF(TRANSACTION_FROM_OPERATOR_TO_ACTIONS): -case YY_STATE_EOF(TRANSACTION_FROM_OPERATOR_PARAMETERS_TO_ACTIONS): -case YY_STATE_EOF(TRANSACTION_FROM_DIRECTIVE_TO_ACTIONS): -case YY_STATE_EOF(NO_OP_INFORMED_ENDS_WITH_SPACE): -case YY_STATE_EOF(NO_OP_INFORMED_ENDS_WITH_QUOTE): -case YY_STATE_EOF(LEXING_ERROR): -case YY_STATE_EOF(LEXING_ERROR_ACTION): -case YY_STATE_EOF(LEXING_ERROR_VARIABLE): -case YY_STATE_EOF(SETVAR_ACTION_NONQUOTED): -case YY_STATE_EOF(SETVAR_ACTION_NONQUOTED_WAITING_COLLECTION_ELEM): -case YY_STATE_EOF(SETVAR_ACTION_NONQUOTED_WAITING_OPERATION): -case YY_STATE_EOF(SETVAR_ACTION_NONQUOTED_WAITING_CONTENT): -case YY_STATE_EOF(SETVAR_ACTION_QUOTED): -case YY_STATE_EOF(SETVAR_ACTION_QUOTED_WAITING_COLLECTION_ELEM): -case YY_STATE_EOF(SETVAR_ACTION_QUOTED_WAITING_OPERATION): -case YY_STATE_EOF(SETVAR_ACTION_QUOTED_WAITING_CONTENT): -#line 1215 "seclang-scanner.ll" -{ - if (driver.ref.size() > 1) { - driver.ref.pop_back(); - } - - if (driver.loc.size() > 1) { - yy::location *l = driver.loc.back(); - driver.loc.pop_back(); - delete l; - } - - if (yyin) { - fclose(yyin); - } - - yypop_buffer_state(); - if (!YY_CURRENT_BUFFER) { - return p::make_END(*driver.loc.back()); - } -} - YY_BREAK -case 533: -YY_RULE_SETUP -#line 1237 "seclang-scanner.ll" -{ - std::string err; - const char *file = strchr(yytext, ' ') + 1; - std::string fi = modsecurity::utils::find_resource(file, driver.ref.back(), &err); - if (fi.empty() == true) { - BEGIN(INITIAL); - driver.error (*driver.loc.back(), "", file + std::string(": Not able to open file. ") + err); - throw p::syntax_error(*driver.loc.back(), ""); - } - std::list files = modsecurity::utils::expandEnv(fi, 0); - files.reverse(); - for (auto& s: files) { - std::string err; - std::string f = modsecurity::utils::find_resource(s, driver.ref.back(), &err); - yyin = fopen(f.c_str(), "r" ); - if (!yyin) { - BEGIN(INITIAL); - driver.error (*driver.loc.back(), "", s + std::string(": Not able to open file. ") + err); - throw p::syntax_error(*driver.loc.back(), ""); - } - driver.ref.push_back(f); - driver.loc.push_back(new yy::location()); - yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE )); - } -} - YY_BREAK -case 534: -YY_RULE_SETUP -#line 1263 "seclang-scanner.ll" -{ - std::string err; - const char *file = strchr(yytext, ' ') + 1; - char *f = strdup(file + 1); - f[strlen(f)-1] = '\0'; - std::string fi = modsecurity::utils::find_resource(f, driver.ref.back(), &err); - if (fi.empty() == true) { - BEGIN(INITIAL); - driver.error (*driver.loc.back(), "", file + std::string(": Not able to open file. ") + err); - throw p::syntax_error(*driver.loc.back(), ""); - } - std::list files = modsecurity::utils::expandEnv(fi, 0); - files.reverse(); - for (auto& s: files) { - std::string f = modsecurity::utils::find_resource(s, driver.ref.back(), &err); - yyin = fopen(f.c_str(), "r" ); - if (!yyin) { - BEGIN(INITIAL); - driver.error (*driver.loc.back(), "", s + std::string(": Not able to open file. ") + err); - throw p::syntax_error(*driver.loc.back(), ""); - } - driver.ref.push_back(f.c_str()); - driver.loc.push_back(new yy::location()); - yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE )); - } - free(f); -} - YY_BREAK -case 535: -YY_RULE_SETUP -#line 1291 "seclang-scanner.ll" -{ -// https://tls.mbed.org/kb/how-to/encrypt-with-aes-cbc - mbedtls_aes_context aes; - std::vector conf = modsecurity::utils::string::split(yytext, ' '); - if (conf.size() < 2) { - driver.error (*driver.loc.back(), "", "SecRemoteRules demands a key and a URI"); - throw p::syntax_error(*driver.loc.back(), ""); - } - - std::ifstream t(conf[1]); - std::string str; - std::cout << conf[1] << std::endl; - - - t.seekg(0, std::ios::end); - str.reserve(t.tellg()); - t.seekg(0, std::ios::beg); - - str.assign((std::istreambuf_iterator(t)), - std::istreambuf_iterator()); - - std::cout << str << std::endl; - - driver.ref.push_back(conf[1]); - driver.loc.push_back(new yy::location()); - YY_BUFFER_STATE temp = YY_CURRENT_BUFFER; - yypush_buffer_state(temp); - - unsigned char key[32] = { 0 }; - unsigned char iv[16] = { 0 }; - unsigned char *output = (unsigned char *)malloc(str.size() + 1); - mbedtls_aes_setkey_enc( &aes, key, 256 ); - mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_DECRYPT, 24, iv, (unsigned char *) str.c_str(), output ); - - yy_scan_string(str.c_str()); - -} - YY_BREAK -case 536: -/* rule 536 can match eol */ -YY_RULE_SETUP -#line 1329 "seclang-scanner.ll" -{ - HttpsClient c; - std::string key; - std::string url; - - std::vector conf = modsecurity::utils::string::split(yytext, ' '); - if (conf.size() < 2) { - driver.error (*driver.loc.back(), "", "SecRemoteRules demands a key and a URI"); - throw p::syntax_error(*driver.loc.back(), ""); - } - key = conf[1]; - url = conf[2]; - c.setKey(key); - - driver.ref.push_back(url); - driver.loc.push_back(new yy::location()); - YY_BUFFER_STATE temp = YY_CURRENT_BUFFER; - yypush_buffer_state(temp); - - bool ret = c.download(url); - - if (ret == false) { - BEGIN(INITIAL); - if (driver.m_remoteRulesActionOnFailed == Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction) { - /** TODO: Implement the server logging mechanism. */ - } - if (driver.m_remoteRulesActionOnFailed == Rules::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction) { - driver.error (*driver.loc.back(), "", yytext + std::string(" - Failed to download: ") + c.error); - throw p::syntax_error(*driver.loc.back(), ""); - } - } - - yy_scan_string(c.content.c_str()); -} - YY_BREAK -case 537: -YY_RULE_SETUP -#line 1365 "seclang-scanner.ll" -ECHO; - YY_BREAK -#line 8570 "seclang-scanner.cc" - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; -/* %if-c-only */ - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; -/* %endif */ -/* %if-c++-only */ -/* %endif */ - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { -/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ -/* %ok-for-header */ - -/* %if-c++-only */ -/* %not-for-header */ -/* %ok-for-header */ - -/* %endif */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -/* %if-c-only */ -static int yy_get_next_buffer (void) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -/* %if-c-only */ -/* %not-for-header */ - static yy_state_type yy_get_previous_state (void) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - yy_state_type yy_current_state; - char *yy_cp; - -/* %% [15.0] code to get the start state into yy_current_state goes here */ - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { -/* %% [16.0] code to find the next state goes here */ - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3922 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ -/* %if-c-only */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - int yy_is_jam; - /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ - char *yy_cp = (yy_c_buf_p); - - YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3922 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3921); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT -/* %if-c-only */ - -/* %endif */ -#endif - -/* %if-c-only */ -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - -/* %% [19.0] update BOL and yylineno */ - - return c; -} -/* %if-c-only */ -#endif /* ifndef YY_NO_INPUT */ -/* %endif */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ -/* %if-c-only */ - void yyrestart (FILE * input_file ) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/* %if-c++-only */ -/* %endif */ - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ -/* %if-c-only */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -/* %if-c-only */ -static void yy_load_buffer_state (void) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; -/* %if-c-only */ - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ -/* %if-c-only */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/* %if-c++-only */ -/* %endif */ - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ -/* %if-c-only */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ -/* %if-c-only */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) -/* %endif */ -/* %if-c++-only */ -/* %endif */ - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - -/* %if-c-only */ - b->yy_input_file = file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - -/* %if-c-only */ - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - -/* %endif */ -/* %if-c++-only */ -/* %endif */ - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ -/* %if-c-only */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/* %if-c-or-c++ */ -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -/* %if-c-only */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} -/* %endif */ - -/* %if-c-or-c++ */ -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -/* %if-c-only */ -void yypop_buffer_state (void) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} -/* %endif */ - -/* %if-c-or-c++ */ -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -/* %if-c-only */ -static void yyensure_buffer_stack (void) -/* %endif */ -/* %if-c++-only */ -/* %endif */ -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} -/* %endif */ - -/* %if-c-only */ -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} -/* %endif */ - -/* %if-c-only */ -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} -/* %endif */ - -/* %if-c-only */ -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} -/* %endif */ - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -/* %if-c-only */ -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} -/* %endif */ -/* %if-c++-only */ -/* %endif */ - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/* %if-c-only */ -/* %if-reentrant */ -/* %endif */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/* %if-reentrant */ -/* %endif */ - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -/* %endif */ - -/* %if-reentrant */ -/* %if-bison-bridge */ -/* %endif */ -/* %endif if-c-only */ - -/* %if-c-only */ -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} -/* %endif */ - -/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */ -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - -/* %if-reentrant */ -/* %endif */ - return 0; -} -/* %endif */ - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -/* %if-tables-serialization definitions */ -/* %define-yytables The name for this specific scanner's tables. */ -#define YYTABLES_NAME "yytables" -/* %endif */ - -/* %ok-for-header */ - -#line 1365 "seclang-scanner.ll" - - -namespace modsecurity { - -bool Driver::scan_begin () { - yy_flex_debug = trace_scanning; - - if (buffer.empty() == false) { - yy_scan_string(buffer.c_str()); - return true; - } - return false; -} - -void Driver::scan_end () { - yylex_destroy(); - BEGIN(INITIAL); -} - -} - - diff --git a/src/parser/seclang-scanner.ll b/src/parser/seclang-scanner.ll index 168e3342..95ccbcfc 100755 --- a/src/parser/seclang-scanner.ll +++ b/src/parser/seclang-scanner.ll @@ -9,6 +9,7 @@ #include "src/utils/https_client.h" #include "src/utils/string.h" #include "others/mbedtls/aes.h" +#include "others/mbedtls/sha512.h" using modsecurity::Parser::Driver; using modsecurity::Utils::HttpsClient; @@ -1287,42 +1288,85 @@ EQUALS_MINUS (?i:=\-) free(f); } -{CONFIG_SEC_BINARY_RULES}[ ]+[^\n\r ]+ { -// https://tls.mbed.org/kb/how-to/encrypt-with-aes-cbc - mbedtls_aes_context aes; +{CONFIG_SEC_BINARY_RULES}[ ]+[^\n\r ]+[ ]+[^\n\r ]+ { + std::stringstream z; std::vector conf = modsecurity::utils::string::split(yytext, ' '); - if (conf.size() < 2) { - driver.error (*driver.loc.back(), "", "SecRemoteRules demands a key and a URI"); + + std::cout << " --> " << yytext << std::endl; + for (std::string a : conf) { + std::cout << a << std::endl; + } + + if (conf.size() < 3) { + driver.error (*driver.loc.back(), "", "SecBinaryRules demands a key and a File"); + throw p::syntax_error(*driver.loc.back(), ""); + } + std::string file(conf[2]); + std::ifstream infile(file); + + if (!infile) { + driver.error (*driver.loc.back(), "", "SecBinaryRules demands a target file. " + file + " does not seems to be valid."); throw p::syntax_error(*driver.loc.back(), ""); } - std::ifstream t(conf[1]); - std::string str; - std::cout << conf[1] << std::endl; + infile.seekg(0, infile.end); + size_t inlen = infile.tellg(); + infile.seekg(0, infile.beg); + mbedtls_aes_context ctx; + unsigned char iv[16] = { 0x11, 0x22, 0xed, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; + unsigned char key[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + size_t inblock_size = 16; + unsigned char input[inblock_size]; + unsigned char output[inblock_size]; + unsigned char hash_output[64]; + mbedtls_sha512_context ct; + mbedtls_sha512_init( &ct ); + mbedtls_sha512_starts( &ct, 0 ); + mbedtls_aes_init( &ctx ); + for (int i = 0; i < 16 && i < conf[1].size(); i++) { + key[i] = conf[1].at(i); + } - t.seekg(0, std::ios::end); - str.reserve(t.tellg()); - t.seekg(0, std::ios::beg); + mbedtls_aes_setkey_dec(&ctx, key, 128); - str.assign((std::istreambuf_iterator(t)), - std::istreambuf_iterator()); + for (int i = 0; inlen - i > 64 + inblock_size; i = i+inblock_size) { + infile.read((char*)input, inblock_size); + mbedtls_aes_crypt_cbc( &ctx, MBEDTLS_AES_DECRYPT, inblock_size, iv, input, output); + mbedtls_sha512_update( &ct, output, inblock_size ); + z.write((char*)output, inblock_size); + } - std::cout << str << std::endl; + infile.read((char*)input, inblock_size); + mbedtls_aes_crypt_cbc( &ctx, MBEDTLS_AES_DECRYPT, inblock_size, iv, input, output); + mbedtls_sha512_update( &ct, output, inblock_size ); - driver.ref.push_back(conf[1]); + int i = inblock_size - 1; + for (; i >= 0; i--) { + if (output[i] != 0x01) { + break; + } + } + + z.write((char*)output, i+1); + mbedtls_sha512_finish( &ct, hash_output ); + unsigned char given_hash[64]; + infile.read((char*)given_hash, 64); + + driver.ref.push_back(file); driver.loc.push_back(new yy::location()); YY_BUFFER_STATE temp = YY_CURRENT_BUFFER; yypush_buffer_state(temp); - unsigned char key[32] = { 0 }; - unsigned char iv[16] = { 0 }; - unsigned char *output = (unsigned char *)malloc(str.size() + 1); - mbedtls_aes_setkey_enc( &aes, key, 256 ); - mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_DECRYPT, 24, iv, (unsigned char *) str.c_str(), output ); - - yy_scan_string(str.c_str()); + for (size_t i = 0; i < 64; ++i) { + if (given_hash[i] != hash_output[i]) { + driver.error (*driver.loc.back(), "", "Binary file is corrupted or password is wrong."); + throw p::syntax_error(*driver.loc.back(), ""); + break; + } + } + yy_scan_string(z.str().c_str()); } {CONFIG_SEC_REMOTE_RULES}[ ][^ ]+[ ][^\n\r ]+ { diff --git a/src/parser/stack.hh b/src/parser/stack.hh deleted file mode 100644 index 1ea27022..00000000 --- a/src/parser/stack.hh +++ /dev/null @@ -1,8 +0,0 @@ -// A Bison parser, made by GNU Bison 3.2. - -// Starting with Bison 3.2, this file is useless: the structure it -// used to define is now defined with the parser itself. -// -// To get rid of this file: -// 1. add 'require "3.2"' (or newer) to your grammar file -// 2. remove references to this file from your build system. diff --git a/test/benchmark/basic_rules.conf b/test/benchmark/basic_rules.conf index d6e13db2..0863581d 100644 --- a/test/benchmark/basic_rules.conf +++ b/test/benchmark/basic_rules.conf @@ -1,5 +1,2 @@ -Include "../../modsecurity.conf-recommended" - -Include "owasp-v3/crs-setup.conf.example" -Include "owasp-v3/rules/*.conf" +SecBinaryRules test /tmp/test.rules.bin