// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.

// Generated by JFlex 1.9.2 http://jflex.de/  (tweaked for IntelliJ platform)
// source: xpath-lexer.flex

/* It's an automatically generated code. Do not modify it. */
package org.intellij.lang.xpath;

import com.intellij.lexer.FlexLexer;
import com.intellij.psi.tree.IElementType;



import java.util.BitSet;

abstract class _XPathLexer implements FlexLexer {

  /** This character denotes the end of file */
  public static final int YYEOF = -1;

  /** initial size of the lookahead buffer */
  private static final int ZZ_BUFFERSIZE = 16384;

  /** lexical states */
  public static final int YYINITIAL = 0;
  public static final int S1 = 2;
  public static final int VAR = 4;
  public static final int TYPE = 6;

  /**
   * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
   * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
   *                  at the beginning of a line
   * l is of the form l = 2*k, k a non negative integer
   */
  private static final int ZZ_LEXSTATE[] = {
     0,  0,  1,  1,  2,  2,  3, 3
  };

  /**
   * Top-level table for translating characters to character classes
   */
  private static final int [] ZZ_CMAP_TOP = zzUnpackcmap_top();

  private static final String ZZ_CMAP_TOP_PACKED_0 =
    "\1\0\1\u0100\1\u0200\1\u0300\1\u0400\1\u0500\1\u0600\1\u0700"+
    "\1\u0800\1\u0900\1\u0a00\1\u0b00\1\u0c00\1\u0d00\1\u0e00\1\u0f00"+
    "\1\u1000\1\u0100\1\u1100\1\u1200\1\u1300\1\u0100\1\u1400\1\u1500"+
    "\1\u1600\1\u1700\1\u1800\1\u1900\1\u1a00\1\u1b00\1\u0100\1\u1c00"+
    "\1\u1d00\1\u1e00\12\u1f00\1\u2000\1\u2100\1\u2200\1\u1f00\1\u2300"+
    "\1\u2400\2\u1f00\31\u0100\1\u2500\121\u0100\1\u2600\4\u0100\1\u2700"+
    "\1\u0100\1\u2800\1\u2900\1\u2a00\1\u2b00\1\u2c00\1\u2d00\53\u0100"+
    "\1\u2e00\41\u1f00\1\u0100\1\u2f00\1\u3000\1\u0100\1\u3100\1\u3200"+
    "\1\u3300\1\u3400\1\u1f00\1\u3500\1\u3600\1\u3700\1\u3800\1\u0100"+
    "\1\u3900\1\u3a00\1\u3b00\1\u3c00\1\u3d00\1\u3e00\1\u3f00\1\u1f00"+
    "\1\u4000\1\u4100\1\u4200\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700"+
    "\1\u4800\1\u4900\1\u4a00\1\u4b00\1\u1f00\1\u4c00\1\u4d00\1\u4e00"+
    "\1\u1f00\3\u0100\1\u4f00\1\u5000\1\u5100\12\u1f00\4\u0100\1\u5200"+
    "\17\u1f00\2\u0100\1\u5300\41\u1f00\2\u0100\1\u5400\1\u5500\2\u1f00"+
    "\1\u5600\1\u5700\27\u0100\1\u5800\2\u0100\1\u5900\45\u1f00\1\u0100"+
    "\1\u5a00\1\u5b00\11\u1f00\1\u5c00\27\u1f00\1\u5d00\1\u5e00\1\u5f00"+
    "\1\u6000\11\u1f00\1\u6100\1\u6200\5\u1f00\1\u6300\1\u6400\4\u1f00"+
    "\1\u6500\21\u1f00\246\u0100\1\u6600\20\u0100\1\u6700\1\u6800\25\u0100"+
    "\1\u6900\34\u0100\1\u6a00\14\u1f00\2\u0100\1\u6b00\u0e05\u1f00";

  private static int [] zzUnpackcmap_top() {
    int [] result = new int[4352];
    int offset = 0;
    offset = zzUnpackcmap_top(ZZ_CMAP_TOP_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackcmap_top(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }


  /**
   * Second-level tables for translating characters to character classes
   */
  private static final int [] ZZ_CMAP_BLOCKS = zzUnpackcmap_blocks();

  private static final String ZZ_CMAP_BLOCKS_PACKED_0 =
    "\11\0\2\1\2\0\1\1\22\0\1\1\1\2\1\3"+
    "\1\0\1\4\1\0\1\5\1\6\1\7\1\10\1\11"+
    "\1\12\1\13\1\14\1\15\1\16\12\17\1\20\1\21"+
    "\1\22\1\23\1\24\1\25\1\26\4\27\1\30\25\27"+
    "\1\31\1\0\1\32\1\0\1\27\1\0\1\33\1\34"+
    "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\2\27"+
    "\1\44\1\45\1\46\1\47\1\50\1\51\1\52\1\53"+
    "\1\54\1\55\1\56\1\57\1\60\1\61\1\27\1\62"+
    "\1\63\1\64\54\0\1\27\12\0\1\27\4\0\1\27"+
    "\5\0\27\27\1\0\37\27\1\0\u01ca\27\4\0\14\27"+
    "\16\0\5\27\7\0\1\27\1\0\1\27\201\0\5\27"+
    "\1\0\2\27\2\0\4\27\1\0\1\27\6\0\1\27"+
    "\1\0\3\27\1\0\1\27\1\0\24\27\1\0\123\27"+
    "\1\0\213\27\10\0\246\27\1\0\46\27\2\0\1\27"+
    "\6\0\51\27\107\0\33\27\4\0\4\27\55\0\53\27"+
    "\25\0\12\17\4\0\2\27\1\0\143\27\1\0\1\27"+
    "\17\0\2\27\7\0\2\27\12\17\3\27\2\0\1\27"+
    "\20\0\1\27\1\0\36\27\35\0\131\27\13\0\1\27"+
    "\16\0\12\17\41\27\11\0\2\27\4\0\1\27\5\0"+
    "\26\27\4\0\1\27\11\0\1\27\3\0\1\27\27\0"+
    "\31\27\7\0\13\27\65\0\25\27\1\0\10\27\106\0"+
    "\66\27\3\0\1\27\22\0\1\27\7\0\12\27\4\0"+
    "\12\17\1\0\20\27\4\0\10\27\2\0\2\27\2\0"+
    "\26\27\1\0\7\27\1\0\1\27\3\0\4\27\3\0"+
    "\1\27\20\0\1\27\15\0\2\27\1\0\3\27\4\0"+
    "\12\17\2\27\12\0\1\27\10\0\6\27\4\0\2\27"+
    "\2\0\26\27\1\0\7\27\1\0\2\27\1\0\2\27"+
    "\1\0\2\27\37\0\4\27\1\0\1\27\7\0\12\17"+
    "\2\0\3\27\20\0\11\27\1\0\3\27\1\0\26\27"+
    "\1\0\7\27\1\0\2\27\1\0\5\27\3\0\1\27"+
    "\22\0\1\27\17\0\2\27\4\0\12\17\11\0\1\27"+
    "\13\0\10\27\2\0\2\27\2\0\26\27\1\0\7\27"+
    "\1\0\2\27\1\0\5\27\3\0\1\27\36\0\2\27"+
    "\1\0\3\27\4\0\12\17\1\0\1\27\21\0\1\27"+
    "\1\0\6\27\3\0\3\27\1\0\4\27\3\0\2\27"+
    "\1\0\1\27\1\0\2\27\3\0\2\27\3\0\3\27"+
    "\3\0\14\27\26\0\1\27\25\0\12\17\25\0\10\27"+
    "\1\0\3\27\1\0\27\27\1\0\20\27\3\0\1\27"+
    "\32\0\3\27\5\0\2\27\4\0\12\17\20\0\1\27"+
    "\4\0\10\27\1\0\3\27\1\0\27\27\1\0\12\27"+
    "\1\0\5\27\3\0\1\27\40\0\1\27\1\0\2\27"+
    "\4\0\12\17\1\0\2\27\22\0\10\27\1\0\3\27"+
    "\1\0\51\27\2\0\1\27\20\0\1\27\5\0\3\27"+
    "\10\0\3\27\4\0\12\17\12\0\6\27\5\0\22\27"+
    "\3\0\30\27\1\0\11\27\1\0\1\27\2\0\7\27"+
    "\37\0\12\17\21\0\60\27\1\0\2\27\14\0\7\27"+
    "\11\0\12\17\47\0\2\27\1\0\1\27\1\0\5\27"+
    "\1\0\30\27\1\0\1\27\1\0\12\27\1\0\2\27"+
    "\11\0\1\27\2\0\5\27\1\0\1\27\11\0\12\17"+
    "\2\0\4\27\40\0\1\27\37\0\12\17\26\0\10\27"+
    "\1\0\44\27\33\0\5\27\163\0\53\27\24\0\1\27"+
    "\12\17\6\0\6\27\4\0\4\27\3\0\1\27\3\0"+
    "\2\27\7\0\3\27\4\0\15\27\14\0\1\27\1\0"+
    "\12\17\6\0\46\27\1\0\1\27\5\0\1\27\2\0"+
    "\53\27\1\0\115\27\1\0\4\27\2\0\7\27\1\0"+
    "\1\27\1\0\4\27\2\0\51\27\1\0\4\27\2\0"+
    "\41\27\1\0\4\27\2\0\7\27\1\0\1\27\1\0"+
    "\4\27\2\0\17\27\1\0\71\27\1\0\4\27\2\0"+
    "\103\27\45\0\20\27\20\0\126\27\2\0\6\27\3\0"+
    "\u016c\27\2\0\21\27\1\0\32\27\5\0\113\27\6\0"+
    "\10\27\7\0\15\27\1\0\4\27\16\0\22\27\16\0"+
    "\22\27\16\0\15\27\1\0\3\27\17\0\64\27\43\0"+
    "\1\27\4\0\1\27\3\0\12\17\46\0\12\17\6\0"+
    "\131\27\7\0\5\27\2\0\42\27\1\0\1\27\5\0"+
    "\106\27\12\0\37\27\47\0\12\17\36\27\2\0\5\27"+
    "\13\0\54\27\4\0\32\27\6\0\12\17\46\0\27\27"+
    "\11\0\65\27\53\0\12\17\6\0\12\17\15\0\1\27"+
    "\135\0\57\27\21\0\7\27\4\0\12\17\51\0\36\27"+
    "\15\0\2\27\12\17\54\27\32\0\44\27\34\0\12\17"+
    "\3\0\3\27\12\17\44\27\2\0\11\27\7\0\53\27"+
    "\2\0\3\27\51\0\4\27\1\0\6\27\1\0\2\27"+
    "\3\0\1\27\5\0\300\27\100\0\26\27\2\0\6\27"+
    "\2\0\46\27\2\0\6\27\2\0\10\27\1\0\1\27"+
    "\1\0\1\27\1\0\1\27\1\0\37\27\2\0\65\27"+
    "\1\0\7\27\1\0\1\27\3\0\3\27\1\0\7\27"+
    "\3\0\4\27\2\0\6\27\4\0\15\27\5\0\3\27"+
    "\1\0\7\27\164\0\1\27\15\0\1\27\20\0\15\27"+
    "\145\0\1\27\4\0\1\27\2\0\12\27\1\0\1\27"+
    "\3\0\5\27\6\0\1\27\1\0\1\27\1\0\1\27"+
    "\1\0\4\27\1\0\13\27\2\0\4\27\5\0\5\27"+
    "\4\0\1\27\64\0\2\27\u017b\0\57\27\1\0\57\27"+
    "\1\0\205\27\6\0\4\27\3\0\2\27\14\0\46\27"+
    "\1\0\1\27\5\0\1\27\2\0\70\27\7\0\1\27"+
    "\20\0\27\27\11\0\7\27\1\0\7\27\1\0\7\27"+
    "\1\0\7\27\1\0\7\27\1\0\7\27\1\0\7\27"+
    "\1\0\7\27\120\0\1\27\325\0\2\27\52\0\5\27"+
    "\5\0\2\27\4\0\126\27\6\0\3\27\1\0\132\27"+
    "\1\0\4\27\5\0\53\27\1\0\136\27\21\0\33\27"+
    "\65\0\306\27\112\0\360\27\20\0\215\27\103\0\56\27"+
    "\2\0\15\27\3\0\20\27\12\17\2\27\24\0\57\27"+
    "\20\0\37\27\2\0\106\27\61\0\11\27\2\0\147\27"+
    "\2\0\65\27\2\0\5\27\60\0\13\27\1\0\3\27"+
    "\1\0\4\27\1\0\27\27\35\0\64\27\16\0\62\27"+
    "\34\0\12\17\30\0\6\27\3\0\1\27\1\0\2\27"+
    "\1\0\12\17\34\27\12\0\27\27\31\0\35\27\7\0"+
    "\57\27\34\0\1\27\12\17\6\0\5\27\1\0\12\27"+
    "\12\17\5\27\1\0\51\27\27\0\3\27\1\0\10\27"+
    "\4\0\12\17\6\0\27\27\3\0\1\27\3\0\62\27"+
    "\1\0\1\27\3\0\2\27\2\0\5\27\2\0\1\27"+
    "\1\0\1\27\30\0\3\27\2\0\13\27\7\0\3\27"+
    "\14\0\6\27\2\0\6\27\2\0\6\27\11\0\7\27"+
    "\1\0\7\27\1\0\53\27\1\0\14\27\10\0\163\27"+
    "\15\0\12\17\6\0\244\27\14\0\27\27\4\0\61\27"+
    "\4\0\156\27\2\0\152\27\46\0\7\27\14\0\5\27"+
    "\5\0\1\27\1\0\12\27\1\0\15\27\1\0\5\27"+
    "\1\0\1\27\1\0\2\27\1\0\2\27\1\0\154\27"+
    "\41\0\153\27\22\0\100\27\2\0\66\27\50\0\14\27"+
    "\164\0\5\27\1\0\207\27\23\0\12\17\7\0\32\27"+
    "\6\0\32\27\13\0\131\27\3\0\6\27\2\0\6\27"+
    "\2\0\6\27\2\0\3\27\43\0\14\27\1\0\32\27"+
    "\1\0\23\27\1\0\2\27\1\0\17\27\2\0\16\27"+
    "\42\0\173\27\205\0\35\27\3\0\61\27\57\0\40\27"+
    "\15\0\24\27\1\0\10\27\6\0\46\27\12\0\36\27"+
    "\2\0\44\27\4\0\10\27\60\0\236\27\2\0\12\17"+
    "\6\0\44\27\4\0\44\27\4\0\50\27\10\0\64\27"+
    "\234\0\67\27\11\0\26\27\12\0\10\27\230\0\6\27"+
    "\2\0\1\27\1\0\54\27\1\0\2\27\3\0\1\27"+
    "\2\0\27\27\12\0\27\27\11\0\37\27\101\0\23\27"+
    "\1\0\2\27\12\0\26\27\12\0\32\27\106\0\70\27"+
    "\6\0\2\27\100\0\1\27\17\0\4\27\1\0\3\27"+
    "\1\0\35\27\52\0\35\27\3\0\35\27\43\0\10\27"+
    "\1\0\34\27\33\0\66\27\12\0\26\27\12\0\23\27"+
    "\15\0\22\27\156\0\111\27\67\0\63\27\15\0\63\27"+
    "\15\0\44\27\14\0\12\17\306\0\35\27\12\0\1\27"+
    "\10\0\26\27\232\0\27\27\14\0\65\27\56\0\12\17"+
    "\23\0\55\27\40\0\31\27\7\0\12\17\11\0\44\27"+
    "\17\0\12\17\4\0\1\27\13\0\43\27\3\0\1\27"+
    "\14\0\60\27\16\0\4\27\13\0\12\17\1\27\1\0"+
    "\1\27\43\0\22\27\1\0\31\27\124\0\7\27\1\0"+
    "\1\27\1\0\4\27\1\0\17\27\1\0\12\27\7\0"+
    "\57\27\21\0\12\17\13\0\10\27\2\0\2\27\2\0"+
    "\26\27\1\0\7\27\1\0\2\27\1\0\5\27\3\0"+
    "\1\27\22\0\1\27\14\0\5\27\236\0\65\27\22\0"+
    "\4\27\5\0\12\17\5\0\1\27\40\0\60\27\24\0"+
    "\2\27\1\0\1\27\10\0\12\17\246\0\57\27\51\0"+
    "\4\27\44\0\60\27\24\0\1\27\13\0\12\17\46\0"+
    "\53\27\15\0\1\27\7\0\12\17\66\0\33\27\25\0"+
    "\12\17\306\0\54\27\164\0\100\27\12\17\25\0\1\27"+
    "\240\0\10\27\2\0\47\27\20\0\1\27\1\0\1\27"+
    "\34\0\1\27\12\0\50\27\7\0\1\27\25\0\1\27"+
    "\13\0\56\27\23\0\1\27\42\0\71\27\7\0\11\27"+
    "\1\0\45\27\21\0\1\27\17\0\12\17\30\0\36\27"+
    "\160\0\7\27\1\0\2\27\1\0\46\27\25\0\1\27"+
    "\11\0\12\17\6\0\6\27\1\0\2\27\1\0\40\27"+
    "\16\0\1\27\7\0\12\17\u0136\0\23\27\15\0\232\27"+
    "\346\0\304\27\274\0\57\27\321\0\107\27\271\0\71\27"+
    "\7\0\37\27\1\0\12\17\146\0\36\27\22\0\60\27"+
    "\20\0\4\27\14\0\12\17\11\0\25\27\5\0\23\27"+
    "\260\0\100\27\200\0\113\27\5\0\1\27\102\0\15\27"+
    "\100\0\2\27\1\0\1\27\34\0\370\27\10\0\363\27"+
    "\15\0\37\27\61\0\3\27\21\0\4\27\10\0\u018c\27"+
    "\4\0\153\27\5\0\15\27\3\0\11\27\7\0\12\27"+
    "\146\0\125\27\1\0\107\27\1\0\2\27\2\0\1\27"+
    "\2\0\2\27\2\0\4\27\1\0\14\27\1\0\1\27"+
    "\1\0\7\27\1\0\101\27\1\0\4\27\2\0\10\27"+
    "\1\0\7\27\1\0\34\27\1\0\4\27\1\0\5\27"+
    "\1\0\1\27\3\0\7\27\1\0\u0154\27\2\0\31\27"+
    "\1\0\31\27\1\0\37\27\1\0\31\27\1\0\37\27"+
    "\1\0\31\27\1\0\37\27\1\0\31\27\1\0\37\27"+
    "\1\0\31\27\1\0\10\27\2\0\62\17\55\27\12\0"+
    "\7\27\2\0\12\17\4\0\1\27\u0171\0\54\27\4\0"+
    "\12\17\6\0\305\27\73\0\104\27\7\0\1\27\4\0"+
    "\12\17\246\0\4\27\1\0\33\27\1\0\2\27\1\0"+
    "\1\27\2\0\1\27\1\0\12\27\1\0\4\27\1\0"+
    "\1\27\1\0\1\27\6\0\1\27\4\0\1\27\1\0"+
    "\1\27\1\0\1\27\1\0\3\27\1\0\2\27\1\0"+
    "\1\27\2\0\1\27\1\0\1\27\1\0\1\27\1\0"+
    "\1\27\1\0\1\27\1\0\2\27\1\0\1\27\2\0"+
    "\4\27\1\0\7\27\1\0\4\27\1\0\4\27\1\0"+
    "\1\27\1\0\12\27\1\0\21\27\5\0\3\27\1\0"+
    "\5\27\1\0\21\27\104\0\327\27\51\0\65\27\13\0"+
    "\336\27\2\0\u0182\27\16\0\u0131\27\37\0\36\27\342\0";

  private static int [] zzUnpackcmap_blocks() {
    int [] result = new int[27648];
    int offset = 0;
    offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }

  /**
   * Translates DFA states to action switch labels.
   */
  private static final int [] ZZ_ACTION = zzUnpackAction();

  private static final String ZZ_ACTION_PACKED_0 =
    "\6\0\1\1\1\2\1\1\1\3\1\4\1\1\1\3"+
    "\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14"+
    "\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+
    "\1\25\1\26\14\24\1\27\1\30\1\31\1\32\13\24"+
    "\1\33\1\34\1\35\1\36\1\37\1\40\1\41\15\42"+
    "\2\0\1\43\1\3\2\0\1\3\1\44\1\45\1\15"+
    "\1\46\1\0\1\47\1\50\1\51\1\52\1\53\1\54"+
    "\7\24\1\55\2\24\1\56\1\57\1\60\1\61\1\62"+
    "\1\63\1\24\1\64\10\24\1\65\5\24\1\66\1\24"+
    "\1\67\1\70\3\24\1\71\2\24\1\0\1\72\10\42"+
    "\1\55\2\42\1\56\1\57\1\60\1\61\1\42\1\62"+
    "\1\63\1\42\1\64\7\42\3\0\1\15\10\24\1\73"+
    "\11\24\1\74\1\24\1\75\5\24\1\76\5\24\11\42"+
    "\1\73\12\42\1\21\1\17\11\24\1\77\4\24\1\100"+
    "\1\101\1\102\1\103\1\24\1\104\4\24\1\105\2\24"+
    "\11\42\1\106\1\42\1\77\4\42\1\100\1\101\5\24"+
    "\1\107\14\24\1\110\1\111\6\42\1\107\6\42\11\24"+
    "\1\112\2\24\1\113\1\24\11\42\14\24\11\42\1\100"+
    "\7\24\1\114\1\115\2\24\1\100\10\42\3\24\1\100"+
    "\1\24\1\116\1\117\4\42\1\100\1\42\4\24\5\42"+
    "\3\24\4\42\3\24\4\42\3\24\4\42\2\24\1\120"+
    "\2\42\2\24\2\42\2\24\2\42\1\24\1\42\1\24"+
    "\1\42\1\24\1\42\1\24\1\42\1\24\1\42";

  private static int [] zzUnpackAction() {
    int [] result = new int[434];
    int offset = 0;
    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackAction(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }


  /**
   * Translates a state to a row index in the transition table
   */
  private static final int [] ZZ_ROWMAP = zzUnpackRowMap();

  private static final String ZZ_ROWMAP_PACKED_0 =
    "\0\0\0\65\0\152\0\237\0\324\0\u0109\0\u013e\0\u0173"+
    "\0\u01a8\0\u01dd\0\u013e\0\u0212\0\u0247\0\u027c\0\u013e\0\u013e"+
    "\0\u013e\0\u013e\0\u013e\0\u02b1\0\u02e6\0\u031b\0\u0350\0\u0385"+
    "\0\u013e\0\u03ba\0\u013e\0\u013e\0\u03ef\0\u013e\0\u013e\0\u0424"+
    "\0\u0459\0\u048e\0\u04c3\0\u04f8\0\u052d\0\u0562\0\u0597\0\u05cc"+
    "\0\u0601\0\u0636\0\u066b\0\u013e\0\u013e\0\u013e\0\u013e\0\u06a0"+
    "\0\u06d5\0\u070a\0\u073f\0\u0774\0\u07a9\0\u07de\0\u0813\0\u0848"+
    "\0\u087d\0\u08b2\0\u0350\0\u08e7\0\u027c\0\u013e\0\u013e\0\u013e"+
    "\0\u013e\0\u091c\0\u0951\0\u0986\0\u09bb\0\u09f0\0\u0a25\0\u0a5a"+
    "\0\u0a8f\0\u0ac4\0\u0af9\0\u0b2e\0\u0b63\0\u0b98\0\u0bcd\0\u0c02"+
    "\0\u013e\0\u0c37\0\u0c6c\0\u0ca1\0\u0cd6\0\u013e\0\u013e\0\u0d0b"+
    "\0\u013e\0\u0d40\0\u013e\0\u013e\0\u013e\0\u013e\0\u013e\0\u013e"+
    "\0\u0d75\0\u0daa\0\u0ddf\0\u0e14\0\u0e49\0\u0e7e\0\u0eb3\0\u03ef"+
    "\0\u0ee8\0\u0f1d\0\u03ef\0\u03ef\0\u03ef\0\u03ef\0\u03ef\0\u03ef"+
    "\0\u0f52\0\u03ef\0\u0f87\0\u0fbc\0\u0ff1\0\u1026\0\u105b\0\u1090"+
    "\0\u10c5\0\u10fa\0\u03ef\0\u112f\0\u1164\0\u1199\0\u11ce\0\u1203"+
    "\0\u1238\0\u126d\0\u03ef\0\u03ef\0\u12a2\0\u12d7\0\u130c\0\u03ef"+
    "\0\u1341\0\u1376\0\u13ab\0\u013e\0\u13e0\0\u1415\0\u144a\0\u147f"+
    "\0\u14b4\0\u14e9\0\u151e\0\u1553\0\u091c\0\u1588\0\u15bd\0\u091c"+
    "\0\u091c\0\u091c\0\u091c\0\u15f2\0\u091c\0\u091c\0\u1627\0\u091c"+
    "\0\u165c\0\u1691\0\u16c6\0\u16fb\0\u1730\0\u1765\0\u179a\0\u17cf"+
    "\0\u1804\0\u1839\0\u1839\0\u186e\0\u18a3\0\u18d8\0\u190d\0\u1942"+
    "\0\u1977\0\u19ac\0\u19e1\0\u03ef\0\u1a16\0\u1a4b\0\u1a80\0\u1ab5"+
    "\0\u1aea\0\u1b1f\0\u1b54\0\u1b89\0\u1bbe\0\u03ef\0\u1bf3\0\u03ef"+
    "\0\u1c28\0\u1c5d\0\u1c92\0\u1cc7\0\u1cfc\0\u03ef\0\u1d31\0\u1d66"+
    "\0\u1d9b\0\u1dd0\0\u1e05\0\u1e3a\0\u1e6f\0\u1ea4\0\u1ed9\0\u1f0e"+
    "\0\u1f43\0\u1f78\0\u1fad\0\u1fe2\0\u091c\0\u2017\0\u204c\0\u2081"+
    "\0\u20b6\0\u20eb\0\u2120\0\u2155\0\u218a\0\u21bf\0\u21f4\0\u2229"+
    "\0\u225e\0\u2293\0\u22c8\0\u22fd\0\u2332\0\u2367\0\u239c\0\u23d1"+
    "\0\u2406\0\u243b\0\u03ef\0\u2470\0\u24a5\0\u24da\0\u250f\0\u03ef"+
    "\0\u03ef\0\u2544\0\u03ef\0\u2579\0\u03ef\0\u25ae\0\u25e3\0\u2618"+
    "\0\u264d\0\u03ef\0\u2682\0\u26b7\0\u26ec\0\u2721\0\u2756\0\u278b"+
    "\0\u27c0\0\u27f5\0\u282a\0\u285f\0\u2894\0\u091c\0\u28c9\0\u091c"+
    "\0\u28fe\0\u2933\0\u2968\0\u299d\0\u091c\0\u091c\0\u29d2\0\u2a07"+
    "\0\u2a3c\0\u2a71\0\u2aa6\0\u03ef\0\u2adb\0\u2b10\0\u2b45\0\u2b7a"+
    "\0\u2baf\0\u2be4\0\u2c19\0\u2c4e\0\u2c83\0\u2cb8\0\u2ced\0\u2d22"+
    "\0\u03ef\0\u03ef\0\u2d57\0\u2d8c\0\u2dc1\0\u2df6\0\u2e2b\0\u2e60"+
    "\0\u091c\0\u2e95\0\u2eca\0\u2eff\0\u2f34\0\u2f69\0\u2f9e\0\u2fd3"+
    "\0\u3008\0\u303d\0\u3072\0\u30a7\0\u30dc\0\u3111\0\u3146\0\u317b"+
    "\0\u03ef\0\u31b0\0\u31e5\0\u03ef\0\u321a\0\u324f\0\u3284\0\u32b9"+
    "\0\u32ee\0\u3323\0\u3358\0\u338d\0\u33c2\0\u33f7\0\u342c\0\u3461"+
    "\0\u3496\0\u34cb\0\u3500\0\u3535\0\u356a\0\u359f\0\u35d4\0\u3609"+
    "\0\u363e\0\u3673\0\u36a8\0\u36dd\0\u3712\0\u3747\0\u377c\0\u37b1"+
    "\0\u37e6\0\u381b\0\u3850\0\u3885\0\u38ba\0\u38ef\0\u3924\0\u3959"+
    "\0\u398e\0\u39c3\0\u39f8\0\u03ef\0\u03ef\0\u3a2d\0\u3a62\0\u3a97"+
    "\0\u3acc\0\u3b01\0\u3b36\0\u3b6b\0\u3ba0\0\u3bd5\0\u3c0a\0\u3c3f"+
    "\0\u3c74\0\u3ca9\0\u3cde\0\u3d13\0\u3d48\0\u03ef\0\u03ef\0\u3d7d"+
    "\0\u3db2\0\u3de7\0\u3e1c\0\u3e51\0\u3e86\0\u3ebb\0\u3ef0\0\u3f25"+
    "\0\u3f5a\0\u3f8f\0\u3fc4\0\u3ff9\0\u402e\0\u4063\0\u4098\0\u40cd"+
    "\0\u4102\0\u4137\0\u416c\0\u41a1\0\u41d6\0\u420b\0\u4240\0\u4275"+
    "\0\u42aa\0\u42df\0\u4314\0\u4349\0\u437e\0\u43b3\0\u43e8\0\u441d"+
    "\0\u4452\0\u4487\0\u44bc\0\u44f1\0\u4526\0\u091c\0\u455b\0\u4590"+
    "\0\u45c5\0\u45fa\0\u462f\0\u4664\0\u4699\0\u46ce\0\u4703\0\u4738"+
    "\0\u476d\0\u47a2\0\u47d7\0\u480c\0\u4841\0\u4876\0\u48ab\0\u48e0"+
    "\0\u4915\0\u494a";

  private static int [] zzUnpackRowMap() {
    int [] result = new int[434];
    int offset = 0;
    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackRowMap(String packed, int offset, int [] result) {
    int i = 0;  /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length() - 1;
    while (i < l) {
      int high = packed.charAt(i++) << 16;
      result[j++] = high | packed.charAt(i++);
    }
    return j;
  }

  /**
   * The transition table of the DFA
   */
  private static final int [] ZZ_TRANS = zzUnpacktrans();

  private static final String ZZ_TRANS_PACKED_0 =
    "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+
    "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+
    "\1\27\1\7\1\30\1\31\1\32\1\33\1\34\2\35"+
    "\1\36\1\37\1\40\1\35\1\41\1\42\1\43\1\44"+
    "\1\45\1\35\1\46\1\47\1\35\1\50\1\35\1\51"+
    "\2\35\1\52\1\53\5\35\1\54\1\55\1\56\1\7"+
    "\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17"+
    "\1\57\1\21\1\22\1\23\1\24\1\25\1\26\1\27"+
    "\1\7\1\30\1\31\1\32\1\33\1\34\2\35\1\36"+
    "\1\37\1\60\1\35\1\61\1\62\1\63\1\44\1\45"+
    "\1\35\1\64\1\47\1\65\1\50\1\66\1\51\1\35"+
    "\1\67\1\70\1\71\1\72\4\35\1\54\1\55\1\56"+
    "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+
    "\1\17\1\7\1\21\1\22\1\23\1\24\1\25\1\26"+
    "\1\73\1\7\1\30\1\31\1\32\1\33\1\34\2\74"+
    "\1\36\1\37\27\74\1\54\1\55\1\56\1\7\1\10"+
    "\1\11\1\12\1\13\1\14\1\15\1\75\1\76\1\77"+
    "\1\100\1\22\1\23\1\24\1\25\1\26\1\73\1\7"+
    "\1\30\1\31\1\32\1\101\1\34\2\102\1\36\1\37"+
    "\1\103\1\102\1\104\1\105\1\106\1\107\1\110\1\102"+
    "\1\111\1\112\1\102\1\113\1\102\1\114\2\102\1\115"+
    "\1\116\5\102\1\54\1\55\1\56\27\0\2\117\2\0"+
    "\27\117\23\0\1\120\132\0\1\10\106\0\1\121\41\0"+
    "\3\12\1\122\61\12\41\0\1\123\2\0\1\124\20\0"+
    "\6\15\1\125\56\15\20\0\1\126\61\0\1\127\1\0"+
    "\1\130\63\0\1\131\63\0\1\130\1\0\1\26\10\0"+
    "\1\132\6\0\1\132\35\0\1\133\7\0\1\134\66\0"+
    "\1\135\1\136\64\0\1\137\1\140\54\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\27\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\13\35\1\141\5\35\1\142"+
    "\5\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\7\35\1\143\4\35\1\144\12\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\4\35\1\145\7\35\1\146"+
    "\12\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\11\35\1\147\4\35\1\150\4\35\1\151\3\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\14\35\1\152"+
    "\12\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\4\35\1\153\14\35\1\154\5\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\5\35\1\155\12\35\1\156"+
    "\6\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\4\35\1\157\14\35\1\160\5\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\1\161\3\35\1\162\7\35"+
    "\1\163\12\35\17\0\2\35\1\0\1\35\7\0\2\35"+
    "\2\0\1\164\16\35\1\165\7\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\2\35\1\166\1\35\1\167"+
    "\7\35\1\170\12\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\4\35\1\171\22\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\13\35\1\172\4\35\1\173"+
    "\1\142\5\35\17\0\2\35\1\0\1\35\7\0\2\35"+
    "\2\0\1\174\6\35\1\143\4\35\1\144\12\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\4\35\1\145"+
    "\3\35\1\175\3\35\1\146\12\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\11\35\1\176\4\35\1\150"+
    "\4\35\1\151\1\35\1\177\1\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\3\35\1\200\1\35\1\155"+
    "\5\35\1\201\4\35\1\156\6\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\14\35\1\202\12\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\5\35\1\203"+
    "\11\35\1\204\7\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\4\35\1\205\22\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\1\206\1\35\1\166\1\35"+
    "\1\167\7\35\1\170\12\35\17\0\2\35\1\0\1\35"+
    "\7\0\2\35\2\0\4\35\1\171\2\35\1\207\4\35"+
    "\1\210\2\35\1\211\7\35\17\0\2\35\1\0\1\35"+
    "\7\0\2\35\2\0\13\35\1\212\13\35\4\0\1\213"+
    "\12\0\2\74\1\0\1\74\1\214\6\0\2\74\2\0"+
    "\27\74\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\27\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\13\102\1\215\5\102\1\216\5\102\17\0\2\102\1\0"+
    "\1\102\7\0\2\102\2\0\7\102\1\217\4\102\1\220"+
    "\12\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\4\102\1\221\7\102\1\222\12\102\17\0\2\102\1\0"+
    "\1\102\7\0\2\102\2\0\11\102\1\223\1\224\3\102"+
    "\1\225\4\102\1\226\3\102\17\0\2\102\1\0\1\102"+
    "\7\0\2\102\2\0\14\102\1\227\12\102\17\0\2\102"+
    "\1\0\1\102\7\0\2\102\2\0\4\102\1\230\14\102"+
    "\1\231\5\102\17\0\2\102\1\0\1\102\7\0\2\102"+
    "\2\0\5\102\1\232\12\102\1\233\1\234\5\102\17\0"+
    "\2\102\1\0\1\102\7\0\2\102\2\0\4\102\1\235"+
    "\14\102\1\236\5\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\1\237\3\102\1\240\7\102\1\241\12\102"+
    "\17\0\2\102\1\0\1\102\7\0\2\102\2\0\1\242"+
    "\16\102\1\243\7\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\2\102\1\244\1\102\1\245\7\102\1\246"+
    "\12\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\4\102\1\247\22\102\17\0\2\117\1\0\1\117\7\0"+
    "\2\117\2\0\27\117\4\0\1\120\66\0\1\12\135\0"+
    "\1\250\64\0\1\251\16\0\1\15\75\0\1\130\10\0"+
    "\1\132\6\0\1\132\37\0\1\252\1\0\1\252\2\0"+
    "\1\253\61\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\2\35\1\254\24\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\21\35\1\255\5\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\10\35\1\256\16\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\12\35\1\257"+
    "\14\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\20\35\1\260\6\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\2\35\1\261\24\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\4\35\1\257\22\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\4\35\1\262"+
    "\22\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\11\35\1\263\5\35\1\264\7\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\12\35\1\265\14\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\3\35\1\266"+
    "\23\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\17\35\1\267\7\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\4\35\1\270\7\35\1\271\12\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\7\35\1\272"+
    "\17\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\11\35\1\273\15\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\12\35\1\274\14\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\25\35\1\275\1\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\2\35\1\254"+
    "\1\276\23\35\17\0\2\35\1\0\1\35\7\0\2\35"+
    "\2\0\20\35\1\277\6\35\17\0\2\35\1\0\1\35"+
    "\7\0\2\35\2\0\23\35\1\300\3\35\17\0\2\35"+
    "\1\0\1\35\7\0\2\35\2\0\4\35\1\257\13\35"+
    "\1\301\6\35\17\0\2\35\1\0\1\35\7\0\2\35"+
    "\2\0\2\35\1\302\24\35\17\0\2\35\1\0\1\35"+
    "\7\0\2\35\2\0\10\35\1\303\16\35\17\0\2\35"+
    "\1\0\1\35\7\0\2\35\2\0\20\35\1\304\1\305"+
    "\5\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\3\35\1\306\23\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\21\35\1\307\5\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\21\35\1\310\5\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\4\35\1\311"+
    "\22\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\4\35\1\312\22\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\10\35\1\313\16\35\4\0\1\213\16\0"+
    "\1\214\60\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\2\102\1\314\24\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\21\102\1\315\5\102\17\0\2\102\1\0"+
    "\1\102\7\0\2\102\2\0\10\102\1\316\16\102\17\0"+
    "\2\102\1\0\1\102\7\0\2\102\2\0\12\102\1\317"+
    "\14\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\20\102\1\320\6\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\2\102\1\321\24\102\17\0\2\102\1\0"+
    "\1\102\7\0\2\102\2\0\4\102\1\317\22\102\17\0"+
    "\2\102\1\0\1\102\7\0\2\102\2\0\15\102\1\322"+
    "\11\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\4\102\1\323\22\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\11\102\1\324\5\102\1\325\7\102\17\0"+
    "\2\102\1\0\1\102\7\0\2\102\2\0\4\102\1\326"+
    "\22\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\12\102\1\327\14\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\3\102\1\330\23\102\17\0\2\102\1\0"+
    "\1\102\7\0\2\102\2\0\17\102\1\331\7\102\17\0"+
    "\2\102\1\0\1\102\7\0\2\102\2\0\4\102\1\332"+
    "\7\102\1\333\12\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\7\102\1\334\17\102\17\0\2\102\1\0"+
    "\1\102\7\0\2\102\2\0\11\102\1\335\15\102\17\0"+
    "\2\102\1\0\1\102\7\0\2\102\2\0\12\102\1\336"+
    "\14\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\25\102\1\337\1\102\24\0\1\340\64\0\1\341\62\0"+
    "\1\253\61\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\4\35\1\342\22\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\17\35\1\343\7\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\11\35\1\344\15\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\12\35\1\345"+
    "\14\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\2\35\1\346\24\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\22\35\1\347\4\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\17\35\1\350\7\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\11\35\1\351"+
    "\15\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\4\35\1\352\22\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\4\35\1\353\22\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\4\35\1\354\22\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\2\35\1\355"+
    "\24\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\2\35\1\356\24\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\4\35\1\357\22\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\5\35\1\360\21\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\4\35\1\361"+
    "\22\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\21\35\1\353\5\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\21\35\1\362\5\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\4\35\1\363\22\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\4\35\1\364"+
    "\22\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\23\35\1\365\3\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\21\35\1\366\5\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\4\35\1\367\22\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\22\35\1\370"+
    "\4\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\10\35\1\371\16\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\13\35\1\372\13\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\1\373\26\35\17\0\2\35"+
    "\1\0\1\35\7\0\2\35\2\0\14\35\1\374\12\35"+
    "\17\0\2\102\1\0\1\102\7\0\2\102\2\0\4\102"+
    "\1\375\22\102\17\0\2\102\1\0\1\102\7\0\2\102"+
    "\2\0\17\102\1\376\7\102\17\0\2\102\1\0\1\102"+
    "\7\0\2\102\2\0\11\102\1\377\15\102\17\0\2\102"+
    "\1\0\1\102\7\0\2\102\2\0\12\102\1\u0100\14\102"+
    "\17\0\2\102\1\0\1\102\7\0\2\102\2\0\2\102"+
    "\1\u0101\24\102\17\0\2\102\1\0\1\102\7\0\2\102"+
    "\2\0\22\102\1\u0102\4\102\17\0\2\102\1\0\1\102"+
    "\7\0\2\102\2\0\21\102\1\u0103\5\102\17\0\2\102"+
    "\1\0\1\102\7\0\2\102\2\0\17\102\1\u0104\7\102"+
    "\17\0\2\102\1\0\1\102\7\0\2\102\2\0\11\102"+
    "\1\u0105\15\102\17\0\2\102\1\0\1\102\7\0\2\102"+
    "\2\0\12\102\1\u0106\14\102\17\0\2\102\1\0\1\102"+
    "\7\0\2\102\2\0\4\102\1\u0107\22\102\17\0\2\102"+
    "\1\0\1\102\7\0\2\102\2\0\4\102\1\u0108\22\102"+
    "\17\0\2\102\1\0\1\102\7\0\2\102\2\0\4\102"+
    "\1\u0109\22\102\17\0\2\102\1\0\1\102\7\0\2\102"+
    "\2\0\2\102\1\u010a\24\102\17\0\2\102\1\0\1\102"+
    "\7\0\2\102\2\0\2\102\1\u010b\24\102\17\0\2\102"+
    "\1\0\1\102\7\0\2\102\2\0\4\102\1\u010c\22\102"+
    "\17\0\2\102\1\0\1\102\7\0\2\102\2\0\5\102"+
    "\1\u010d\21\102\17\0\2\102\1\0\1\102\7\0\2\102"+
    "\2\0\4\102\1\u010e\22\102\17\0\2\102\1\0\1\102"+
    "\7\0\2\102\2\0\21\102\1\u0108\5\102\26\0\1\137"+
    "\64\0\1\136\55\0\2\35\1\0\1\35\7\0\2\35"+
    "\2\0\20\35\1\u010f\6\35\17\0\2\35\1\0\1\35"+
    "\7\0\2\35\2\0\10\35\1\u0110\16\35\17\0\2\35"+
    "\1\0\1\35\7\0\2\35\2\0\3\35\1\360\23\35"+
    "\17\0\2\35\1\0\1\35\7\0\2\35\2\0\4\35"+
    "\1\u0111\22\35\17\0\2\35\1\0\1\35\7\0\2\35"+
    "\2\0\4\35\1\u0112\22\35\17\0\2\35\1\0\1\35"+
    "\7\0\2\35\2\0\12\35\1\u0113\14\35\17\0\2\35"+
    "\1\0\1\35\7\0\2\35\2\0\26\35\1\u0114\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\14\35\1\u0115"+
    "\12\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\20\35\1\u0116\6\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\13\35\1\u0117\13\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\4\35\1\u0118\22\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\4\35\1\u0119"+
    "\22\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\12\35\1\u011a\14\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\1\u011b\26\35\17\0\2\35\1\0\1\35"+
    "\7\0\2\35\2\0\15\35\1\u011c\11\35\17\0\2\35"+
    "\1\0\1\35\7\0\2\35\2\0\1\u011d\26\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\17\35\1\u011e"+
    "\7\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\17\35\1\u011f\7\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\20\35\1\u0120\6\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\21\35\1\u0121\5\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\13\35\1\u0122"+
    "\13\35\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\20\102\1\u0123\6\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\10\102\1\u0124\16\102\17\0\2\102\1\0"+
    "\1\102\7\0\2\102\2\0\3\102\1\u010d\23\102\17\0"+
    "\2\102\1\0\1\102\7\0\2\102\2\0\4\102\1\u0125"+
    "\22\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\4\102\1\u0126\22\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\12\102\1\u0127\14\102\17\0\2\102\1\0"+
    "\1\102\7\0\2\102\2\0\26\102\1\u0128\17\0\2\102"+
    "\1\0\1\102\7\0\2\102\2\0\26\102\1\u0129\17\0"+
    "\2\102\1\0\1\102\7\0\2\102\2\0\14\102\1\u012a"+
    "\12\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\20\102\1\u012b\6\102\17\0\2\102\1\0\1\102\7\0"+
    "\2\102\2\0\13\102\1\u012c\13\102\17\0\2\102\1\0"+
    "\1\102\7\0\2\102\2\0\4\102\1\u012d\22\102\17\0"+
    "\2\102\1\0\1\102\7\0\2\102\2\0\4\102\1\u012e"+
    "\22\102\17\0\2\102\1\0\1\102\7\0\2\102\2\0"+
    "\12\102\1\u012f\14\102\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\21\35\1\u0130\5\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\1\35\1\u0131\25\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\13\35\1\275"+
    "\13\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\13\35\1\u0132\13\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\4\35\1\u0133\22\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\24\35\1\u0134\2\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\15\35\1\u0135"+
    "\11\35\17\0\2\35\1\0\1\35\7\0\2\35\2\0"+
    "\21\35\1\360\5\35\17\0\2\35\1\0\1\35\7\0"+
    "\2\35\2\0\3\35\1\u0134\23\35\17\0\2\35\1\0"+
    "\1\35\7\0\2\35\2\0\20\35\1\u0136\6\35\17\0"+
    "\2\35\1\0\1\35\7\0\2\35\2\0\1\u0137\26\35"+
    "\17\0\2\35\1\0\1\35\7\0\2\35\2\0\1\35"+
    "\1\u0138\25\35\17\0\2\35\1\0\1\35\7\0\2\35"+
    "\2\0\21\35\1\u0139\5\35\17\0\2\35\1\0\1\35"+
    "\7\0\2\35\2\0\13\35\1\u013a\13\35\17\0\2\35"+
    "\1\0\1\35\7\0\2\35\2\0\20\35\1\u013b\6\35"+
    "\17\0\2\35\1\0\1\35\7\0\2\35\2\0\13\35"+
    "\1\u013c\13\35\17\0\2\35\1\0\1\35\7\0\2\35"+
