/* file contains automatically generated code, DO NOT MODIFY *
 *
 * The code in this file implements a function that determines whether
 * or not a given identifier is really an SQL keyword.  The same thing
 * might be implemented more directly using a hand-written hash table.
 * But by using this automatically generated code, the size of the code
 * is substantially reduced.  This is important for embedded applications
 * on platforms with limited memory.
 *
 * This code has been copied from SQLite's mkkeywordhash.c file and modified.
 * to read the SQL keywords from a file instead of static ones
 */

/* Parsed keywords
 *
 * From line: ABSOLUTE,ACTION,ADD,ALL,ALLOCATE,ALTER,AND
 * KEYWORD: 'ABSOLUTE'
 * KEYWORD: 'ACTION'
 * KEYWORD: 'ADD'
 * KEYWORD: 'ALL'
 * KEYWORD: 'ALLOCATE'
 * KEYWORD: 'ALTER'
 * KEYWORD: 'AND'
 *
 * From line: ANY,ARE,AS,ASC
 * KEYWORD: 'ANY'
 * KEYWORD: 'ARE'
 * KEYWORD: 'AS'
 * KEYWORD: 'ASC'
 *
 * From line: ASSERTION,AT,AUTHORIZATION,AVG
 * KEYWORD: 'ASSERTION'
 * KEYWORD: 'AT'
 * KEYWORD: 'AUTHORIZATION'
 * KEYWORD: 'AVG'
 *
 * From line: BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY
 * KEYWORD: 'BEGIN'
 * KEYWORD: 'BETWEEN'
 * KEYWORD: 'BIT'
 * KEYWORD: 'BIT_LENGTH'
 * KEYWORD: 'BOTH'
 * KEYWORD: 'BY'
 *
 * From line: CASCADE,CASCADED,CASE,CAST,CATALOG,CHAR,CHARACTER,CHAR_
 * KEYWORD: 'CASCADE'
 * KEYWORD: 'CASCADED'
 * KEYWORD: 'CASE'
 * KEYWORD: 'CAST'
 * KEYWORD: 'CATALOG'
 * KEYWORD: 'CHAR'
 * KEYWORD: 'CHARACTER'
 * KEYWORD: 'CHAR_'
 *
 * From line: LENGTH
 * KEYWORD: 'LENGTH'
 *
 * From line: CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,COLLATE,COLLATION
 * KEYWORD: 'CHARACTER_LENGTH'
 * KEYWORD: 'CHECK'
 * KEYWORD: 'CLOSE'
 * KEYWORD: 'COALESCE'
 * KEYWORD: 'COLLATE'
 * KEYWORD: 'COLLATION'
 *
 * From line: COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT
 * KEYWORD: 'COLUMN'
 * KEYWORD: 'COMMIT'
 * KEYWORD: 'CONNECT'
 * KEYWORD: 'CONNECTION'
 * KEYWORD: 'CONSTRAINT'
 *
 * From line: CONSTRAINTS,CONTINUE
 * KEYWORD: 'CONSTRAINTS'
 * KEYWORD: 'CONTINUE'
 *
 * From line: CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT
 * KEYWORD: 'CONVERT'
 * KEYWORD: 'CORRESPONDING'
 * KEYWORD: 'COUNT'
 * KEYWORD: 'CREATE'
 * KEYWORD: 'CROSS'
 * KEYWORD: 'CURRENT'
 *
 * From line: CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_
 * KEYWORD: 'CURRENT_DATE'
 * KEYWORD: 'CURRENT_TIME'
 * KEYWORD: 'CURRENT_TIMESTAMP'
 * KEYWORD: 'CURRENT_'
 *
 * From line: USER,CURSOR
 * KEYWORD: 'USER'
 * KEYWORD: 'CURSOR'
 *
 * From line: DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE
 * KEYWORD: 'DATE'
 * KEYWORD: 'DAY'
 * KEYWORD: 'DEALLOCATE'
 * KEYWORD: 'DEC'
 * KEYWORD: 'DECIMAL'
 * KEYWORD: 'DECLARE'
 * KEYWORD: 'DEFAULT'
 * KEYWORD: 'DEFERRABLE'
 *
 * From line: DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS
 * KEYWORD: 'DEFERRED'
 * KEYWORD: 'DELETE'
 * KEYWORD: 'DESC'
 * KEYWORD: 'DESCRIBE'
 * KEYWORD: 'DESCRIPTOR'
 * KEYWORD: 'DIAGNOSTICS'
 *
 * From line: DISCONNECT,DISTINCT,DOMAIN,DOUBLE,DROP
 * KEYWORD: 'DISCONNECT'
 * KEYWORD: 'DISTINCT'
 * KEYWORD: 'DOMAIN'
 * KEYWORD: 'DOUBLE'
 * KEYWORD: 'DROP'
 *
 * From line: ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION
 * KEYWORD: 'ELSE'
 * KEYWORD: 'END'
 * KEYWORD: 'END'
 * KEYWORD: 'EXEC'
 * KEYWORD: 'ESCAPE'
 * KEYWORD: 'EXCEPT'
 * KEYWORD: 'EXCEPTION'
 *
 * From line: EXEC,EXECUTE,EXISTS
 * KEYWORD: 'EXEC'
 * KEYWORD: 'EXECUTE'
 * KEYWORD: 'EXISTS'
 *
 * From line: EXTERNAL,EXTRACT
 * KEYWORD: 'EXTERNAL'
 * KEYWORD: 'EXTRACT'
 *
 * From line: FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FOUND,FROM,FULL
 * KEYWORD: 'FALSE'
 * KEYWORD: 'FETCH'
 * KEYWORD: 'FIRST'
 * KEYWORD: 'FLOAT'
 * KEYWORD: 'FOR'
 * KEYWORD: 'FOREIGN'
 * KEYWORD: 'FOUND'
 * KEYWORD: 'FROM'
 * KEYWORD: 'FULL'
 *
 * From line: GET,GLOBAL,GO,GOTO,GRANT,GROUP
 * KEYWORD: 'GET'
 * KEYWORD: 'GLOBAL'
 * KEYWORD: 'GO'
 * KEYWORD: 'GOTO'
 * KEYWORD: 'GRANT'
 * KEYWORD: 'GROUP'
 *
 * From line: HAVING,HOUR
 * KEYWORD: 'HAVING'
 * KEYWORD: 'HOUR'
 *
 * From line: IDENTITY,IMMEDIATE,IN,INDICATOR,INITIALLY,INNER,INPUT
 * KEYWORD: 'IDENTITY'
 * KEYWORD: 'IMMEDIATE'
 * KEYWORD: 'IN'
 * KEYWORD: 'INDICATOR'
 * KEYWORD: 'INITIALLY'
 * KEYWORD: 'INNER'
 * KEYWORD: 'INPUT'
 *
 * From line: INSENSITIVE,INSERT,INT,INTEGER,INTERSECT,INTERVAL,INTO,IS
 * KEYWORD: 'INSENSITIVE'
 * KEYWORD: 'INSERT'
 * KEYWORD: 'INT'
 * KEYWORD: 'INTEGER'
 * KEYWORD: 'INTERSECT'
 * KEYWORD: 'INTERVAL'
 * KEYWORD: 'INTO'
 * KEYWORD: 'IS'
 *
 * From line: ISOLATION
 * KEYWORD: 'ISOLATION'
 *
 * From line: JOIN
 * KEYWORD: 'JOIN'
 *
 * From line: KEY
 * KEYWORD: 'KEY'
 *
 * From line: LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER
 * KEYWORD: 'LANGUAGE'
 * KEYWORD: 'LAST'
 * KEYWORD: 'LEADING'
 * KEYWORD: 'LEFT'
 * KEYWORD: 'LEVEL'
 * KEYWORD: 'LIKE'
 * KEYWORD: 'LOCAL'
 * KEYWORD: 'LOWER'
 *
 * From line: MATCH,MAX,MIN,MINUTE,MODULE,MONTH
 * KEYWORD: 'MATCH'
 * KEYWORD: 'MAX'
 * KEYWORD: 'MIN'
 * KEYWORD: 'MINUTE'
 * KEYWORD: 'MODULE'
 * KEYWORD: 'MONTH'
 *
 * From line: NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NOT,NULL
 * KEYWORD: 'NAMES'
 * KEYWORD: 'NATIONAL'
 * KEYWORD: 'NATURAL'
 * KEYWORD: 'NCHAR'
 * KEYWORD: 'NEXT'
 * KEYWORD: 'NO'
 * KEYWORD: 'NOT'
 * KEYWORD: 'NULL'
 *
 * From line: NULLIF,NUMERIC
 * KEYWORD: 'NULLIF'
 * KEYWORD: 'NUMERIC'
 *
 * From line: OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR
 * KEYWORD: 'OCTET_LENGTH'
 * KEYWORD: 'OF'
 * KEYWORD: 'ON'
 * KEYWORD: 'ONLY'
 * KEYWORD: 'OPEN'
 * KEYWORD: 'OPTION'
 * KEYWORD: 'OR'
 *
 * From line: ORDER,OUTER
 * KEYWORD: 'ORDER'
 * KEYWORD: 'OUTER'
 *
 * From line: OUTPUT,OVERLAPS
 * KEYWORD: 'OUTPUT'
 * KEYWORD: 'OVERLAPS'
 *
 * From line: PAD,PARTIAL,POSITION,PRECISION,PREPARE,PRESERVE,PRIMARY
 * KEYWORD: 'PAD'
 * KEYWORD: 'PARTIAL'
 * KEYWORD: 'POSITION'
 * KEYWORD: 'PRECISION'
 * KEYWORD: 'PREPARE'
 * KEYWORD: 'PRESERVE'
 * KEYWORD: 'PRIMARY'
 *
 * From line: PRIOR,PRIVILEGES,PROCEDURE,PUBLIC
 * KEYWORD: 'PRIOR'
 * KEYWORD: 'PRIVILEGES'
 * KEYWORD: 'PROCEDURE'
 * KEYWORD: 'PUBLIC'
 *
 * From line: READ,REAL,REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT
 * KEYWORD: 'READ'
 * KEYWORD: 'REAL'
 * KEYWORD: 'REFERENCES'
 * KEYWORD: 'RELATIVE'
 * KEYWORD: 'RESTRICT'
 * KEYWORD: 'REVOKE'
 * KEYWORD: 'RIGHT'
 *
 * From line: ROLLBACK,ROWS
 * KEYWORD: 'ROLLBACK'
 * KEYWORD: 'ROWS'
 *
 * From line: SCHEMA,SCROLL,SECOND,SECTION,SELECT,SESSION,SESSION_
 * KEYWORD: 'SCHEMA'
 * KEYWORD: 'SCROLL'
 * KEYWORD: 'SECOND'
 * KEYWORD: 'SECTION'
 * KEYWORD: 'SELECT'
 * KEYWORD: 'SESSION'
 * KEYWORD: 'SESSION_'
 *
 * From line: USER,SET
 * KEYWORD: 'USER'
 * KEYWORD: 'SET'
 *
 * From line: SIZE,SMALLINT,SOME,SPACE,SQL,SQLCODE,SQLERROR,SQLSTATE
 * KEYWORD: 'SIZE'
 * KEYWORD: 'SMALLINT'
 * KEYWORD: 'SOME'
 * KEYWORD: 'SPACE'
 * KEYWORD: 'SQL'
 * KEYWORD: 'SQLCODE'
 * KEYWORD: 'SQLERROR'
 * KEYWORD: 'SQLSTATE'
 *
 * From line: SUBSTRING,SUM,SYSTEM_USER
 * KEYWORD: 'SUBSTRING'
 * KEYWORD: 'SUM'
 * KEYWORD: 'SYSTEM_USER'
 *
 * From line: TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_
 * KEYWORD: 'TABLE'
 * KEYWORD: 'TEMPORARY'
 * KEYWORD: 'THEN'
 * KEYWORD: 'TIME'
 * KEYWORD: 'TIMESTAMP'
 * KEYWORD: 'TIMEZONE_'
 *
 * From line: HOUR,TIMEZONE_MINUTE
 * KEYWORD: 'HOUR'
 * KEYWORD: 'TIMEZONE_MINUTE'
 *
 * From line: TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE
 * KEYWORD: 'TO'
 * KEYWORD: 'TRAILING'
 * KEYWORD: 'TRANSACTION'
 * KEYWORD: 'TRANSLATE'
 * KEYWORD: 'TRANSLATION'
 * KEYWORD: 'TRIM'
 * KEYWORD: 'TRUE'
 *
 * From line: UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING
 * KEYWORD: 'UNION'
 * KEYWORD: 'UNIQUE'
 * KEYWORD: 'UNKNOWN'
 * KEYWORD: 'UPDATE'
 * KEYWORD: 'UPPER'
 * KEYWORD: 'USAGE'
 * KEYWORD: 'USER'
 * KEYWORD: 'USING'
 *
 * From line: VALUE,VALUES,VARCHAR,VARYING,VIEW
 * KEYWORD: 'VALUE'
 * KEYWORD: 'VALUES'
 * KEYWORD: 'VARCHAR'
 * KEYWORD: 'VARYING'
 * KEYWORD: 'VIEW'
 *
 * From line: WHEN,WHENEVER,WHERE,WITH,WORK,WRITE
 * KEYWORD: 'WHEN'
 * KEYWORD: 'WHENEVER'
 * KEYWORD: 'WHERE'
 * KEYWORD: 'WITH'
 * KEYWORD: 'WORK'
 * KEYWORD: 'WRITE'
 *
 * From line: YEAR
 * KEYWORD: 'YEAR'
 *
 * From line: ZONE
 * KEYWORD: 'ZONE'
 */
/* Hash score: 675 */
static int keywordCode(const char *z, int n){
  /* zText[] encodes 1645 bytes of keywords in 1047 bytes */
  /*   DISCONNECTIONLYEAREADDEALLOCATEMPORARYINTERSECTIONCHAR             */
  /*   ACTER_LENGTHENDECIMALTEREALANGUAGETABLEVELSECONDECLAREFERENCES     */
  /*   CAPEXCEPTIONEXTERNALIKEYSCROLLBACKVARCHAR_INTERVALUESMALLINT       */
  /*   EGEREVOKEXECUTENDEFERRABLEADINGLOBALOCALASTIMEZONE_MINUTEXISTS     */
  /*   CHEMATCHECKABSOLUTEXTRACTRANSACTIONAMESQLCODELETEASSERTION         */
  /*   ATIONALEFTRANSLATEAUTHORIZATIONATURALOWERELATIVEBEGINDICATOR       */
  /*   DERESTRICTRANSLATIONOTRIMMEDIATEBETWEENULLIFALSELECTRAILING        */
  /*   ROUPDATEBIT_LENGTHAVINGOTOCTET_LENGTHOURIGHTRUEBOTHOUROWS          */
  /*   QLERRORCASETCLOSESSION_COLLATECOLLATIONUMERICREATECURRENT_DATE     */
  /*   CURSORDESCRIBEDESCRIPTORDOMAINITIALLYDOUBLEDROPENFETCH             */
  /*   ISOLATIONJOINNERMODULEMONTHOPTIONPADAYPARTIALPOSITIONPRECISION     */
  /*   PREPAREPRIORPRIVILEGESQLSTATEPROCEDUREUNIONUSAGEWHEREWITHWRITE     */
  /*   ANDEFAULTANYAVGRANTBYCASCADEDEFERREDIAGNOSTICSIZECASTCATALOG       */
  /*   COALESCECOLUMNCOMMITCONSTRAINTSOMECONTINUECONVERTCORRESPONDING     */
  /*   COUNTCROSSPACECURRENT_TIMESTAMPRESERVEDISTINCTFIRSTFLOAT           */
  /*   FOREIGNFOUNDFROMAXFULLIDENTITYINPUTINSENSITIVEINSERTINTOFOUTER     */
  /*   OUTPUTOVERLAPSUBSTRINGPRIMARYPUBLICSUMSYSTEM_USERUNIQUEUNKNOWN     */
  /*   UPPERUSINGVARYINGVIEWHENEVERWORK                                   */
  static const char zText[1046] = {
    'D','I','S','C','O','N','N','E','C','T','I','O','N','L','Y','E','A','R',
    'E','A','D','D','E','A','L','L','O','C','A','T','E','M','P','O','R','A',
    'R','Y','I','N','T','E','R','S','E','C','T','I','O','N','C','H','A','R',
    'A','C','T','E','R','_','L','E','N','G','T','H','E','N','D','E','C','I',
    'M','A','L','T','E','R','E','A','L','A','N','G','U','A','G','E','T','A',
    'B','L','E','V','E','L','S','E','C','O','N','D','E','C','L','A','R','E',
    'F','E','R','E','N','C','E','S','C','A','P','E','X','C','E','P','T','I',
    'O','N','E','X','T','E','R','N','A','L','I','K','E','Y','S','C','R','O',
    'L','L','B','A','C','K','V','A','R','C','H','A','R','_','I','N','T','E',
    'R','V','A','L','U','E','S','M','A','L','L','I','N','T','E','G','E','R',
    'E','V','O','K','E','X','E','C','U','T','E','N','D','E','F','E','R','R',
    'A','B','L','E','A','D','I','N','G','L','O','B','A','L','O','C','A','L',
    'A','S','T','I','M','E','Z','O','N','E','_','M','I','N','U','T','E','X',
    'I','S','T','S','C','H','E','M','A','T','C','H','E','C','K','A','B','S',
    'O','L','U','T','E','X','T','R','A','C','T','R','A','N','S','A','C','T',
    'I','O','N','A','M','E','S','Q','L','C','O','D','E','L','E','T','E','A',
    'S','S','E','R','T','I','O','N','A','T','I','O','N','A','L','E','F','T',
    'R','A','N','S','L','A','T','E','A','U','T','H','O','R','I','Z','A','T',
    'I','O','N','A','T','U','R','A','L','O','W','E','R','E','L','A','T','I',
    'V','E','B','E','G','I','N','D','I','C','A','T','O','R','D','E','R','E',
    'S','T','R','I','C','T','R','A','N','S','L','A','T','I','O','N','O','T',
    'R','I','M','M','E','D','I','A','T','E','B','E','T','W','E','E','N','U',
    'L','L','I','F','A','L','S','E','L','E','C','T','R','A','I','L','I','N',
    'G','R','O','U','P','D','A','T','E','B','I','T','_','L','E','N','G','T',
    'H','A','V','I','N','G','O','T','O','C','T','E','T','_','L','E','N','G',
    'T','H','O','U','R','I','G','H','T','R','U','E','B','O','T','H','O','U',
    'R','O','W','S','Q','L','E','R','R','O','R','C','A','S','E','T','C','L',
    'O','S','E','S','S','I','O','N','_','C','O','L','L','A','T','E','C','O',
    'L','L','A','T','I','O','N','U','M','E','R','I','C','R','E','A','T','E',
    'C','U','R','R','E','N','T','_','D','A','T','E','C','U','R','S','O','R',
    'D','E','S','C','R','I','B','E','D','E','S','C','R','I','P','T','O','R',
    'D','O','M','A','I','N','I','T','I','A','L','L','Y','D','O','U','B','L',
    'E','D','R','O','P','E','N','F','E','T','C','H','I','S','O','L','A','T',
    'I','O','N','J','O','I','N','N','E','R','M','O','D','U','L','E','M','O',
    'N','T','H','O','P','T','I','O','N','P','A','D','A','Y','P','A','R','T',
    'I','A','L','P','O','S','I','T','I','O','N','P','R','E','C','I','S','I',
    'O','N','P','R','E','P','A','R','E','P','R','I','O','R','P','R','I','V',
    'I','L','E','G','E','S','Q','L','S','T','A','T','E','P','R','O','C','E',
    'D','U','R','E','U','N','I','O','N','U','S','A','G','E','W','H','E','R',
    'E','W','I','T','H','W','R','I','T','E','A','N','D','E','F','A','U','L',
    'T','A','N','Y','A','V','G','R','A','N','T','B','Y','C','A','S','C','A',
    'D','E','D','E','F','E','R','R','E','D','I','A','G','N','O','S','T','I',
    'C','S','I','Z','E','C','A','S','T','C','A','T','A','L','O','G','C','O',
    'A','L','E','S','C','E','C','O','L','U','M','N','C','O','M','M','I','T',
    'C','O','N','S','T','R','A','I','N','T','S','O','M','E','C','O','N','T',
    'I','N','U','E','C','O','N','V','E','R','T','C','O','R','R','E','S','P',
    'O','N','D','I','N','G','C','O','U','N','T','C','R','O','S','S','P','A',
    'C','E','C','U','R','R','E','N','T','_','T','I','M','E','S','T','A','M',
    'P','R','E','S','E','R','V','E','D','I','S','T','I','N','C','T','F','I',
    'R','S','T','F','L','O','A','T','F','O','R','E','I','G','N','F','O','U',
    'N','D','F','R','O','M','A','X','F','U','L','L','I','D','E','N','T','I',
    'T','Y','I','N','P','U','T','I','N','S','E','N','S','I','T','I','V','E',
    'I','N','S','E','R','T','I','N','T','O','F','O','U','T','E','R','O','U',
    'T','P','U','T','O','V','E','R','L','A','P','S','U','B','S','T','R','I',
    'N','G','P','R','I','M','A','R','Y','P','U','B','L','I','C','S','U','M',
    'S','Y','S','T','E','M','_','U','S','E','R','U','N','I','Q','U','E','U',
    'N','K','N','O','W','N','U','P','P','E','R','U','S','I','N','G','V','A',
    'R','Y','I','N','G','V','I','E','W','H','E','N','E','V','E','R','W','O',
    'R','K',
  };
  static const unsigned int aHash[128] = {
     209, 121, 230, 149, 0, 0, 223, 226, 219, 195, 0, 154, 212,
     0, 41, 0, 0, 220, 231, 153, 44, 115, 124, 25, 48, 232,
     0, 157, 91, 142, 20, 132, 0, 0, 0, 71, 169, 138, 119,
     117, 168, 0, 0, 184, 217, 0, 170, 191, 0, 203, 165, 0,
     186, 55, 6, 129, 31, 229, 104, 127, 53, 130, 176, 29, 178,
     200, 172, 83, 198, 166, 134, 207, 74, 102, 0, 163, 131, 201,
     35, 123, 189, 0, 0, 108, 175, 202, 179, 193, 206, 120, 181,
     204, 133, 0, 180, 205, 160, 167, 0, 86, 227, 0, 214, 197,
     187, 68, 228, 155, 164, 215, 0, 218, 216, 58, 137, 0, 80,
     49, 161, 173, 146, 0, 27, 196, 0, 224, 210, 2,
  };
  static const unsigned int aNext[232] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   5,   0,   0,   0,  18,   3,   0,   0,  10,
       0,  13,   0,   0,   0,   0,   0,   0,   0,  23,   7,   0,  33,
       0,  19,  14,   0,   0,   0,   0,   0,   0,   0,   0,   0,  51,
       0,  21,   9,   0,  16,  28,  45,  40,   0,  26,   0,   0,   0,
       0,   0,   0,  43,   0,  11,   0,   0,  70,   0,  75,  52,   0,
       0,  63,  59,   0,  62,   0,   0,   0,   0,  78,  85,  87,   0,
      73,   0,   0,  56,   0,   0,   0,  12,   0,   0,   0,  64,  32,
      36,  94,   0,  22,  24,  46,  92,  89,   0, 110,   0,   0,   0,
     106,   0,   0,  42,  17,  72, 100,   0,   0,  54,   0,   0,  34,
       4,   0, 128,   1,  77,  60, 114, 125,  93,  30,   0,  65,  69,
      61,  90,  98,   0,  95, 147,  81,   0, 118, 152,   0,  15, 140,
      39,   0,  82,  37, 159,   8,  67,  66,  99,  96,  50, 151, 122,
       0, 113,   0, 141, 139,   0,   0, 162,   0,   0,  57,  84, 112,
     174, 177, 105, 171, 150, 107,   0, 156, 126,   0, 185,   0, 143,
     182, 183, 136,   0, 199, 192, 188,   0,   0,  79,  38,  88, 103,
       0, 158, 101,  97, 145, 190, 211, 144,   0, 213, 109, 111,   0,
     221, 222, 208, 194,  47,  76,   0, 135, 148, 116, 225,
  };
  static const unsigned char aLen[232] = {
      10,   2,   7,  10,   4,   4,   4,   3,  10,   3,   8,   9,   9,
       7,   5,   4,  16,   9,   6,   4,   3,   7,   5,   4,   8,   3,
       5,   5,   4,   6,   7,   3,  10,   6,   6,   9,   4,   8,   4,
       3,   6,   8,   7,   5,   8,   5,   6,   8,   7,   6,   4,   4,
       7,   3,  10,   7,   6,   5,   4,   9,  15,   4,   2,   3,   6,
       2,   6,   6,   5,   5,   8,   7,  11,   6,   5,   7,   6,   9,
       2,   8,   4,   9,  13,   2,   7,   5,   8,   5,   9,   5,   8,
      11,   3,   4,   9,   7,   6,   4,   5,   6,   8,   5,   6,  10,
       3,   6,   4,   2,  12,   4,   5,   4,   4,   4,   4,   8,   4,
       3,   5,   8,   7,   7,   9,   7,   6,  12,   4,   6,   8,   4,
      10,   2,   6,   9,   6,   4,   4,   5,   9,   4,   5,   6,   5,
       6,   3,   3,   7,   8,   9,   7,   3,   5,  10,   3,   8,   9,
       5,   5,   5,   4,   5,   3,   7,   3,   3,   5,   2,   8,   7,
       3,   8,  11,   2,   4,   4,   7,   8,   6,   6,  11,  10,   3,
       4,   8,   7,  13,   2,   5,   5,   5,  12,  17,   7,   8,   9,
       4,   8,   8,   5,   5,   3,   7,   5,   4,   3,   4,   8,   5,
      11,   6,   4,   2,   5,   6,   8,   9,   7,   6,   3,  11,   4,
       4,   4,   6,   7,   5,   5,   7,   4,   8,   4,   4,
  };
  static const unsigned short int aOffset[232] = {
       0,   1,   3,   3,  11,  14,  17,  19,  21,  23,  23,  29,  38,
      43,  49,  50,  50,  50,  60,  64,  66,  68,  73,  77,  80,  86,
      88,  91,  94,  96, 101, 101, 106, 114, 119, 119, 127, 128, 135,
     137, 140, 142, 150, 153, 158, 163, 163, 168, 173, 179, 184, 184,
     184, 190, 192, 200, 206, 211, 215, 218, 218, 222, 223, 227, 227,
     228, 232, 237, 241, 244, 249, 256, 262, 267, 272, 276, 281, 287,
     287, 295, 302, 305, 314, 322, 326, 332, 336, 344, 347, 354, 358,
     365, 375, 377, 379, 388, 394, 394, 399, 402, 407, 414, 417, 423,
     423, 432, 437, 437, 440, 451, 454, 458, 462, 465, 468, 471, 479,
     481, 484, 487, 487, 495, 502, 510, 516, 522, 530, 534, 540, 548,
     548, 555, 558, 562, 571, 577, 579, 583, 588, 597, 599, 604, 610,
     615, 621, 623, 626, 633, 641, 650, 654, 657, 662, 671, 671, 679,
     688, 693, 698, 703, 707, 712, 714, 721, 724, 726, 731, 733, 733,
     734, 740, 747, 751, 757, 761, 765, 772, 780, 786, 792, 792, 799,
     802, 806, 814, 821, 822, 834, 839, 843, 848, 848, 848, 848, 856,
     856, 864, 872, 880, 885, 890, 890, 897, 902, 905, 908, 912, 920,
     925, 936, 942, 945, 947, 952, 958, 965, 974, 981, 987, 990, 997,
     997, 997, 1001, 1007, 1014, 1019, 1024, 1031, 1034, 1034, 1042,
  };
  int h, i;
  if( n<2 ) return 0;
  h = ((charMap(z[0])*4) ^
      (charMap(z[n-1])*3) ^
      n) % 128;
  for(i=((int)aHash[h])-1; i>=0; i=((int)aNext[i])-1){
    if( aLen[i]==n && casecmp(&zText[aOffset[i]],z,n)==0 ){
      return 1;
    }
  }
  return 0;
}

static gboolean
is_keyword (const char *z)
{
	return keywordCode(z, strlen (z));
}

