Package com.ximpleware.extended.xpath

Source Code of com.ximpleware.extended.xpath.Yylex

/*
* Copyright (C) 2002-2011 XimpleWare, info@ximpleware.com
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* The following code was generated by JFlex 1.4.1 on 9/21/09 2:31 PM */

/*
* Copyright (C) 2002-2009 XimpleWare, info@ximpleware.com
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/


package com.ximpleware.extended.xpath;
import java_cup.runtime.Symbol;
import com.ximpleware.extended.parser.*;
import com.ximpleware.extended.*;


/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.1
* on 9/21/09 2:31 PM from the specification file
* <tt>C:/Documents and Settings/HP_Administrator/workspace/ximple-dev/com/ximpleware/extended/xpath/scanner.flex</tt>
*/
class Yylex extends sym implements java_cup.runtime.Scanner {

  /** 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;

  /**
   * Translates characters to character classes
   */
  private static final String ZZ_CMAP_PACKED =
    "\11\0\1\1\1\1\2\0\1\1\22\0\1\1\1\20\1\55\1\0"+
    "\1\21\1\0\1\0\1\56\1\11\1\12\1\22\1\6\1\10\1\4"+
    "\1\5\1\23\12\2\1\3\1\0\1\16\1\17\1\15\1\0\1\7"+
    "\15\0\1\53\2\0\1\52\11\0\1\13\1\0\1\14\1\0\1\0"+
    "\1\0\1\31\1\47\1\41\1\24\1\43\1\50\1\44\1\46\1\25"+
    "\2\0\1\35\1\27\1\32\1\30\1\40\1\0\1\33\1\36\1\37"+
    "\1\42\1\26\1\45\1\54\1\0\1\51\1\0\1\34\uff83\0";

  /**
   * Translates characters to character classes
   */
  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);

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

  private static final String ZZ_ACTION_PACKED_0 =
    "\1\0\1\1\1\2\1\3\1\4\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\4\1\21\1\22\1\23\7\1\1\24\12\1"+
    "\2\4\1\0\2\3\1\25\1\26\1\27\1\30\1\31"+
    "\4\1\1\32\35\1\1\0\1\33\1\0\1\1\1\34"+
    "\1\35\2\1\1\36\1\37\55\1\1\0\1\40\2\1"+
    "\1\0\1\41\12\1\1\0\1\42\36\1\2\0\1\1"+
    "\1\0\1\43\6\1\1\0\1\44\1\0\1\45\3\1"+
    "\2\0\1\1\1\0\1\46\2\0\31\1\1\47\3\1"+
    "\1\0\1\1\1\50\6\1\1\0\1\51\1\1\1\52"+
    "\11\1\1\0\1\53\1\1\2\0\6\1\1\0\1\54"+
    "\1\0\1\55\1\0\1\56\6\1\1\0\1\57\5\1"+
    "\1\0\1\1\1\60\3\1\2\0\6\1\1\0\1\61"+
    "\1\1\1\0\1\62\25\1\1\0\1\63\3\1\3\0"+
    "\1\64\1\1\1\0\1\65\4\1\1\0\1\66\3\1"+
    "\2\0\14\1\1\0\1\67\3\1\1\70\1\0\1\71"+
    "\7\1\1\0\1\72\1\1\2\0\1\1\2\0\7\1"+
    "\1\0\1\1\1\73\1\0\1\74\1\1\2\0\3\1"+
    "\1\0\1\75\2\1\2\0\1\1\2\0\1\1\1\0"+
    "\1\76\1\1\1\0\1\77\1\1\1\0\1\100\3\1"+
    "\1\0\1\1\1\101\1\0\1\102\5\1\1\0\1\103"+
    "\2\1\1\0\1\104\2\1\1\0\1\105\1\1\1\0"+
    "\1\106\7\1\1\0\1\107\34\1\1\0\1\1\1\110"+
    "\1\1\1\0\1\111\1\1\1\0\1\112\24\1\1\0"+
    "\1\113\4\1\1\0\1\114\5\1\1\0\1\115\4\1"+
    "\1\0\1\116\2\1\2\0\5\1\1\0\1\117\5\1"+
    "\1\0\1\120\2\1\1\0\1\121\3\1\2\0\1\1"+
    "\4\0\2\1\1\0\1\122\2\1\1\0\1\123\1\1"+
    "\1\0\1\124\1\0\1\125\14\1\1\0\1\126\1\1"+
    "\1\0\1\127\2\1\2\0\2\1\1\130\1\0\1\131"+
    "\1\0\1\132";

  private static int [] zzUnpackAction() {
    int [] result = new int[612];
    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\57\0\136\0\215\0\274\0\274\0\353\0\274"+
    "\0\274\0\274\0\274\0\274\0\274\0\274\0\u011a\0\u0149"+
    "\0\274\0\u0178\0\274\0\274\0\u01a7\0\u01d6\0\u0205\0\u0234"+
    "\0\u0263\0\u0292\0\u02c1\0\u02f0\0\274\0\u031f\0\u034e\0\u037d"+
    "\0\u03ac\0\u03db\0\u040a\0\u0439\0\u0468\0\u0497\0\u04c6\0\u04f5"+
    "\0\u0524\0\u0553\0\u0582\0\u05b1\0\57\0\274\0\274\0\274"+
    "\0\274\0\u05e0\0\u060f\0\u063e\0\u066d\0\57\0\u069c\0\u06cb"+
    "\0\u06fa\0\u0729\0\u0758\0\u0787\0\u07b6\0\u07e5\0\u0814\0\u0843"+
    "\0\u0872\0\u08a1\0\u08d0\0\u08ff\0\u092e\0\u095d\0\u098c\0\u09bb"+
    "\0\u09ea\0\u0a19\0\u0a48\0\u0a77\0\u0aa6\0\u0ad5\0\u0b04\0\u0b33"+
    "\0\u0b62\0\u0b91\0\u0bc0\0\u04f5\0\274\0\u0524\0\u0bef\0\274"+
    "\0\57\0\u0c1e\0\u0c4d\0\57\0\57\0\u0c7c\0\u0cab\0\u0cda"+
    "\0\u0d09\0\u0d38\0\u0d67\0\u0d96\0\u0dc5\0\u0df4\0\u0e23\0\u0e52"+
    "\0\u0e81\0\u0eb0\0\u0edf\0\u0f0e\0\u0f3d\0\u0f6c\0\u0f9b\0\u0fca"+
    "\0\u0ff9\0\u1028\0\u1057\0\u1086\0\u10b5\0\u10e4\0\u1113\0\u1142"+
    "\0\u1171\0\u11a0\0\u11cf\0\u11fe\0\u122d\0\u125c\0\u128b\0\u12ba"+
    "\0\u12e9\0\u1318\0\u1347\0\u1376\0\u13a5\0\u13d4\0\u1403\0\u1432"+
    "\0\u1461\0\u1490\0\u14bf\0\274\0\u14ee\0\u151d\0\u154c\0\274"+
    "\0\u157b\0\u15aa\0\u15d9\0\u1608\0\u1637\0\u1666\0\u1695\0\u16c4"+
    "\0\u16f3\0\u1722\0\u1751\0\274\0\u1780\0\u17af\0\u17de\0\u180d"+
    "\0\u183c\0\u186b\0\u189a\0\u18c9\0\u18f8\0\u1927\0\u1956\0\u1985"+
    "\0\u19b4\0\u19e3\0\u1a12\0\u1a41\0\u1a70\0\u1a9f\0\u1ace\0\u1afd"+
    "\0\u1b2c\0\u1b5b\0\u1b8a\0\u1bb9\0\u1be8\0\u1c17\0\u1c46\0\u1c75"+
    "\0\u1ca4\0\u1cd3\0\u1d02\0\u1d31\0\u1d60\0\u1d8f\0\274\0\u1dbe"+
    "\0\u1ded\0\u1e1c\0\u1e4b\0\u1e7a\0\u1ea9\0\u1ed8\0\274\0\u1f07"+
    "\0\274\0\u1f36\0\u1f65\0\u1f94\0\u1fc3\0\u1ff2\0\u2021\0\u2050"+
    "\0\274\0\u207f\0\u20ae\0\u20dd\0\u210c\0\u213b\0\u216a\0\u2199"+
    "\0\u21c8\0\u21f7\0\u2226\0\u2255\0\u2284\0\u22b3\0\u22e2\0\u2311"+
    "\0\u2340\0\u236f\0\u239e\0\u23cd\0\u23fc\0\u242b\0\u245a\0\u2489"+
    "\0\u24b8\0\u24e7\0\u2516\0\u2545\0\274\0\u2574\0\u25a3\0\u25d2"+
    "\0\u2601\0\u2630\0\274\0\u265f\0\u268e\0\u26bd\0\u26ec\0\u271b"+
    "\0\u274a\0\u2779\0\274\0\u27a8\0\274\0\u27d7\0\u2806\0\u2835"+
    "\0\u2864\0\u2893\0\u28c2\0\u28f1\0\u2920\0\u294f\0\u297e\0\274"+
    "\0\u29ad\0\u29dc\0\u2a0b\0\u2a3a\0\u2a69\0\u2a98\0\u2ac7\0\u2af6"+
    "\0\u2b25\0\u2b54\0\274\0\u2b83\0\274\0\u2bb2\0\274\0\u2be1"+
    "\0\u2c10\0\u2c3f\0\u2c6e\0\u2c9d\0\u2ccc\0\u2cfb\0\274\0\u2d2a"+
    "\0\u2d59\0\u2d88\0\u2db7\0\u2de6\0\u2e15\0\u2e44\0\274\0\u2e73"+
    "\0\u2ea2\0\u2ed1\0\u2f00\0\u2f2f\0\u2f5e\0\u2f8d\0\u2fbc\0\u2feb"+
    "\0\u301a\0\u3049\0\u3078\0\274\0\u30a7\0\u30d6\0\274\0\u3105"+
    "\0\u3134\0\u3163\0\u3192\0\u31c1\0\u31f0\0\u321f\0\u324e\0\u327d"+
    "\0\u32ac\0\u32db\0\u330a\0\u3339\0\u3368\0\u3397\0\u33c6\0\u33f5"+
    "\0\u3424\0\u3453\0\u3482\0\u34b1\0\u34e0\0\274\0\u350f\0\u353e"+
    "\0\u356d\0\u359c\0\u35cb\0\u35fa\0\274\0\u3629\0\u3658\0\274"+
    "\0\u3687\0\u36b6\0\u36e5\0\u3714\0\u3743\0\274\0\u3772\0\u37a1"+
    "\0\u37d0\0\u37ff\0\u382e\0\u385d\0\u388c\0\u38bb\0\u38ea\0\u3919"+
    "\0\u3948\0\u3977\0\u39a6\0\u39d5\0\u3a04\0\u3a33\0\u3a62\0\u3a91"+
    "\0\274\0\u3ac0\0\u3aef\0\u3b1e\0\274\0\u3b4d\0\274\0\u3b7c"+
    "\0\u3bab\0\u3bda\0\u3c09\0\u3c38\0\u3c67\0\u3c96\0\u3cc5\0\274"+
    "\0\u3cf4\0\u3d23\0\u3d52\0\u3d81\0\u3db0\0\u3ddf\0\u3e0e\0\u3e3d"+
    "\0\u3e6c\0\u3e9b\0\u3eca\0\u3ef9\0\u3f28\0\u3f57\0\u3f86\0\274"+
    "\0\u3fb5\0\274\0\u3fe4\0\u4013\0\u4042\0\u4071\0\u40a0\0\u40cf"+
    "\0\u40fe\0\274\0\u412d\0\u415c\0\u418b\0\u41ba\0\u41e9\0\u4218"+
    "\0\u4247\0\u4276\0\u42a5\0\274\0\u42d4\0\u4303\0\274\0\u4332"+
    "\0\u4361\0\274\0\u4390\0\u43bf\0\u43ee\0\u441d\0\u444c\0\274"+
    "\0\u447b\0\274\0\u44aa\0\u44d9\0\u4508\0\u4537\0\u4566\0\u4595"+
    "\0\274\0\u45c4\0\u45f3\0\u4622\0\274\0\u4651\0\u4680\0\u46af"+
    "\0\274\0\u46de\0\u470d\0\274\0\u473c\0\u476b\0\u479a\0\u47c9"+
    "\0\u47f8\0\u4827\0\u4856\0\u4885\0\274\0\u48b4\0\u48e3\0\u4912"+
    "\0\u4941\0\u4970\0\u499f\0\u49ce\0\u49fd\0\u4a2c\0\u4a5b\0\u4a8a"+
    "\0\u4ab9\0\u4ae8\0\u4b17\0\u4b46\0\u4b75\0\u4ba4\0\u4bd3\0\u4c02"+
    "\0\u4c31\0\u4c60\0\u4c8f\0\u4cbe\0\u4ced\0\u4d1c\0\u4d4b\0\u4d7a"+
    "\0\u4da9\0\u4dd8\0\u4e07\0\274\0\u4e36\0\u4e65\0\274\0\u4e94"+
    "\0\u4ec3\0\274\0\u4ef2\0\u4f21\0\u4f50\0\u4f7f\0\u4fae\0\u4fdd"+
    "\0\u500c\0\u503b\0\u506a\0\u5099\0\u50c8\0\u50f7\0\u5126\0\u5155"+
    "\0\u5184\0\u51b3\0\u51e2\0\u5211\0\u5240\0\u526f\0\u529e\0\274"+
    "\0\u52cd\0\u52fc\0\u532b\0\u535a\0\u5389\0\274\0\u53b8\0\u53e7"+
    "\0\u5416\0\u5445\0\u5474\0\u54a3\0\274\0\u54d2\0\u5501\0\u5530"+
    "\0\u555f\0\u558e\0\274\0\u55bd\0\u55ec\0\u561b\0\u564a\0\u5679"+
    "\0\u56a8\0\u56d7\0\u5706\0\u5735\0\u5764\0\274\0\u5793\0\u57c2"+
    "\0\u57f1\0\u5820\0\u584f\0\u587e\0\274\0\u58ad\0\u58dc\0\u590b"+
    "\0\274\0\u593a\0\u5969\0\u5998\0\u59c7\0\u59f6\0\u5a25\0\u5a54"+
    "\0\u5a83\0\u5ab2\0\u5ae1\0\u5b10\0\u5b3f\0\u5b6e\0\274\0\u5b9d"+
    "\0\u5bcc\0\u5bfb\0\274\0\u5c2a\0\u5c59\0\274\0\u5c88\0\274"+
    "\0\u5cb7\0\u5ce6\0\u5d15\0\u5d44\0\u5d73\0\u5da2\0\u5dd1\0\u5e00"+
    "\0\u5e2f\0\u5e5e\0\u5e8d\0\u5ebc\0\u5eeb\0\274\0\u5f1a\0\u5f49"+
    "\0\274\0\u5f78\0\u5fa7\0\u5fd6\0\u6005\0\u6034\0\u6063\0\274"+
    "\0\u6092\0\274\0\u60c1\0\274";

  private static int [] zzUnpackRowMap() {
    int [] result = new int[612];
    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();
    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\2\1\3\1\4\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\1\27\1\2\1\30"+
    "\1\31\1\32\1\33\1\34\1\35\1\36\1\37\1\40"+
    "\1\41\1\42\1\43\1\44\3\2\1\45\1\46\1\2"+
    "\1\47\2\2\1\50\1\51\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\20\2\3\0\1\3\57\0"+
    "\1\4\2\0\1\53\130\0\1\2\1\0\1\54\1\52"+
    "\1\2\1\55\16\0\10\2\1\0\20\2\21\0\1\56"+
    "\56\0\1\57\56\0\1\60\62\0\1\61\33\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\1\2\1\62\6\2"+
    "\1\0\6\2\1\63\11\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\7\2\1\64\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\4\2\1\65"+
    "\3\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\7\2\1\66\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\67\1\2"+
    "\1\0\2\2\1\70\7\2\1\71\5\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\4\2\1\72\1\73"+
    "\2\2\1\0\5\2\1\74\12\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\4\2\1\75\3\2\1\0"+
    "\6\2\1\76\11\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\4\2\1\77\1\100\2\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\2\2\1\101\2\2\1\102\1\103\11\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\7\2\1\104"+
    "\1\0\6\2\1\105\11\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\4\2\1\106\1\107\1\2\1\110"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\4\2\1\111\3\2\1\0\6\2\1\112\2\2"+
    "\1\113\6\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\3\2\1\114\14\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\115\1\2"+
    "\1\0\1\2\1\116\16\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\4\2\1\117\3\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\4\2"+
    "\1\120\1\121\2\2\1\0\1\122\17\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\16\2"+
    "\1\123\1\2\2\0\55\124\1\125\1\124\56\126\1\125"+
    "\1\127\1\0\1\127\1\0\2\127\14\0\1\130\1\0"+
    "\10\127\1\0\20\127\4\0\1\53\54\0\1\2\1\0"+
    "\1\54\1\52\2\2\16\0\10\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\2\2\1\131"+
    "\5\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\1\2\1\132\16\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\1\2\1\133"+
    "\6\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\1\134\7\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\1\135\7\2\1\0"+
    "\4\2\1\136\13\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\2\2\1\137\15\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\1\2\1\140\16\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\1\141\6\2\1\142\1\0\2\2\1\143"+
    "\15\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\3\2\1\144\4\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\3\2\1\145\4\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\5\2\1\146\12\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\1\2\1\147"+
    "\16\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\4\2\1\150\3\2\1\151\7\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\6\2\1\152"+
    "\1\2\1\0\1\2\1\153\16\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\5\2\1\154\1\2\1\155"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\3\2\1\156\4\2\1\0\12\2\1\157\5\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\1\160\17\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\5\2\1\161\2\2\1\0\5\2\1\162"+
    "\12\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\17\2\1\163\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\1\2\1\164\16\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\7\2"+
    "\1\165\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\4\2\1\166\3\2\1\0\6\2\1\167"+
    "\11\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\1\170\2\2\1\171\2\2\1\172\1\2\1\0\5\2"+
    "\1\173\12\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\1\2\1\174\6\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\1\2\1\175\6\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\3\2\1\176\14\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\1\177\7\2\1\0"+
    "\4\2\1\200\13\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\4\2\1\201\13\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\4\2\1\202"+
    "\3\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\1\203\17\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\1\204"+
    "\17\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\4\2\1\205\3\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\5\2\1\206\2\2\1\0"+
    "\20\2\2\0\1\127\1\0\1\127\1\0\2\127\16\0"+
    "\10\127\1\0\20\127\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\4\2\1\207\13\2\2\0"+
    "\1\2\1\0\1\2\1\52\1\210\1\2\16\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\6\2\1\211\11\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\7\2\1\212\1\0"+
    "\20\2\2\0\1\2\1\213\1\2\1\52\2\2\3\0"+
    "\1\214\12\0\10\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\6\2\1\215"+
    "\11\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\3\2\1\216\4\2\1\0\20\2\2\0\1\2\1\217"+
    "\1\2\1\52\2\2\3\0\1\220\12\0\10\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\6\2\1\221\11\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\12\2\1\222"+
    "\5\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\6\2\1\223\1\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\4\2\1\224\3\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\5\2\1\225\2\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\6\2\1\226"+
    "\11\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\7\2\1\227\10\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\2\2\1\230"+
    "\15\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\7\2\1\231\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\1\2\1\232\6\2\1\0\20\2"+
    "\2\0\1\2\1\233\1\2\1\52\2\2\3\0\1\234"+
    "\12\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\1\2\1\235\16\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\13\2\1\236\4\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\6\2\1\237\1\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\6\2\1\240\11\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\2\2\1\241\15\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\1\2"+
    "\1\242\6\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\6\2\1\243\11\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\4\2\1\244\13\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\4\2\1\245\13\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\6\2\1\246\11\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\3\2\1\247\4\2\1\0\3\2"+
    "\1\250\14\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\2\2\1\251\1\2\1\252\13\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\6\2"+
    "\1\253\1\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\1\254\17\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\1\255\17\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\6\2\1\256\11\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\1\2"+
    "\1\257\16\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\4\2\1\260\3\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\5\2\1\261\2\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\1\262\17\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\1\263\17\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\1\2\1\264\16\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\4\2\1\265\3\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\3\2"+
    "\1\266\4\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\6\2\1\267\11\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\2\2\1\270\15\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\1\2\1\271\16\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\1\2"+
    "\1\272\6\2\1\0\20\2\3\0\1\213\7\0\1\214"+
    "\45\0\1\2\1\273\1\2\1\52\2\2\3\0\1\274"+
    "\12\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\5\2\1\275\2\2\1\0\20\2"+
    "\3\0\1\217\7\0\1\220\45\0\1\2\1\276\1\2"+
    "\1\52\2\2\3\0\1\277\12\0\10\2\1\0\1\2"+
    "\1\300\16\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\6\2\1\301\11\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\1\302\7\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\1\303\17\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\1\304\17\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\7\2\1\305"+
    "\1\0\20\2\2\0\1\2\1\306\1\2\1\52\2\2"+
    "\3\0\1\307\12\0\10\2\1\0\20\2\2\0\1\2"+
    "\1\310\1\2\1\52\2\2\3\0\1\311\12\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\2\2\1\312\15\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\313\1\2"+
    "\1\0\20\2\3\0\1\233\7\0\1\234\45\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\2\2"+
    "\1\314\15\2\2\0\1\2\1\315\1\2\1\316\2\2"+
    "\16\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\1\2\1\317\16\2"+
    "\2\0\1\2\1\320\1\2\1\52\2\2\3\0\1\321"+
    "\12\0\10\2\1\0\20\2\2\0\1\2\1\322\1\2"+
    "\1\52\2\2\3\0\1\323\12\0\10\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\2\2\1\324\15\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\6\2\1\325\1\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\6\2\1\326\11\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\6\2\1\327\11\2"+
    "\2\0\1\2\1\0\1\2\1\52\1\330\1\2\16\0"+
    "\10\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\6\2\1\331\11\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\5\2\1\332"+
    "\2\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\5\2\1\333\2\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\5\2\1\334"+
    "\2\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\2\2\1\335\15\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\1\2\1\336"+
    "\6\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\1\337\7\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\7\2\1\340\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\1\341\1\2"+
    "\16\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\1\342\7\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\3\2\1\343\14\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\6\2\1\344\11\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\4\2\1\345"+
    "\3\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\6\2\1\346\11\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\7\2\1\347"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\6\2\1\350\11\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\351\1\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\4\2\1\352\3\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\2\2"+
    "\1\353\15\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\12\2\1\354\5\2\3\0\1\273"+
    "\7\0\1\274\46\0\1\274\10\0\1\355\44\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\1\356"+
    "\17\2\3\0\1\276\7\0\1\277\45\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\3\2\1\357"+
    "\14\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\7\2\1\360\1\0\20\2\2\0\1\2\1\361\1\2"+
    "\1\52\1\362\1\2\3\0\1\363\12\0\10\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\2\2\1\364\5\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\1\365\1\2\16\0\10\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\1\366\1\2\16\0"+
    "\10\2\1\0\20\2\3\0\1\306\7\0\1\307\46\0"+
    "\1\310\7\0\1\311\45\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\1\2\1\367\16\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\7\2\1\370\10\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\7\2\1\371\1\0\20\2\3\0\1\315"+
    "\1\0\1\372\53\0\1\127\1\0\1\127\1\373\2\127"+
    "\14\0\1\130\1\0\10\127\1\0\20\127\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\1\374"+
    "\17\2\3\0\1\320\7\0\1\321\46\0\1\322\7\0"+
    "\1\323\46\0\1\323\10\0\1\375\44\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\1\2\1\376\6\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\2\2\1\377\15\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\1\2\1\u0100"+
    "\16\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\1\u0101\7\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\3\2\1\u0102\14\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\6\2"+
    "\1\u0103\1\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\7\2\1\u0104\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\1\2\1\u0105"+
    "\6\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\2\2\1\u0106\15\2\2\0"+
    "\1\2\1\u0107\1\2\1\52\2\2\3\0\1\u0108\12\0"+
    "\10\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\6\2\1\u0109\1\2\1\0\20\2\2\0"+
    "\1\2\1\u010a\1\2\1\u010b\2\2\16\0\10\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\1\u010c\1\2"+
    "\16\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\10\2\1\u010d\7\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\6\2\1\u010e\11\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\6\2\1\u010f\11\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\5\2"+
    "\1\u0110\2\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\10\2\1\u0111\7\2"+
    "\2\0\1\2\1\u0112\1\2\1\52\2\2\3\0\1\u0113"+
    "\12\0\10\2\1\0\20\2\2\0\1\2\1\u0114\1\2"+
    "\1\52\2\2\3\0\1\u0115\12\0\10\2\1\0\20\2"+
    "\2\0\1\2\1\u0116\1\2\1\52\2\2\3\0\1\u0117"+
    "\12\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\1\u0118\7\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\1\u0119\1\2\16\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\4\2\1\u011a\3\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\5\2"+
    "\1\u011b\12\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\1\2\1\u011c\6\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\5\2\1\u011d\2\2"+
    "\1\0\20\2\2\0\1\2\1\u011e\1\2\1\52\2\2"+
    "\3\0\1\u011f\12\0\10\2\1\0\20\2\3\0\1\361"+
    "\7\0\1\363\45\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\11\2\1\u0120\6\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\6\2"+
    "\1\u0121\11\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\6\2\1\u0122\1\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\4\2"+
    "\1\u0123\13\2\2\0\1\2\1\0\1\2\1\52\1\u0124"+
    "\1\2\16\0\10\2\1\0\20\2\2\0\1\2\1\u0125"+
    "\1\2\1\52\1\u0126\1\2\3\0\1\u0127\12\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\1\2\1\u0128\6\2\1\0\20\2\5\0\1\373"+
    "\53\0\1\2\1\0\1\2\1\52\2\2\16\0\5\2"+
    "\1\u0129\2\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\4\2\1\u012a\3\2\1\0\20\2"+
    "\2\0\1\2\1\u012b\1\2\1\u012c\2\2\16\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\1\2\1\u012d\16\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\1\2\1\u012e\6\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\4\2\1\u012f\3\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\2\2"+
    "\1\u0130\15\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\6\2\1\u0131\11\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\u0132\1\2"+
    "\1\0\20\2\2\0\1\2\1\u0133\1\2\1\52\2\2"+
    "\3\0\1\u0134\12\0\10\2\1\0\20\2\3\0\1\u0107"+
    "\7\0\1\u0108\45\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\7\2\1\u0135\10\2\3\0\1\u010a"+
    "\1\0\1\u0136\53\0\1\127\1\0\1\127\1\u0137\2\127"+
    "\14\0\1\130\1\0\10\127\1\0\20\127\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\4\2"+
    "\1\u0138\13\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\1\2\1\u0139\6\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\1\u013a\1\2\16\0\10\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\1\u013b\1\2"+
    "\16\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\6\2\1\u013c\1\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\1\2"+
    "\1\u013d\6\2\1\0\20\2\3\0\1\u0112\7\0\1\u0113"+
    "\46\0\1\u0114\7\0\1\u0115\46\0\1\u0116\7\0\1\u0117"+
    "\45\0\1\2\1\0\1\2\1\52\2\2\16\0\5\2"+
    "\1\u013e\2\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\5\2\1\u013f\12\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\7\2"+
    "\1\u0140\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\2\2\1\u0141\15\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\14\2\1\u0142\3\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\4\2\1\u0143\13\2\3\0"+
    "\1\u011e\7\0\1\u011f\45\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\5\2\1\u0144\2\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\1\u0145\1\2\16\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\5\2\1\u0146\2\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\5\2\1\u0147\2\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\10\2\1\u0148\7\2\3\0\1\u0125"+
    "\7\0\1\u0127\45\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\1\u0149\17\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\6\2\1\u014a\1\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\2\2\1\u014b\15\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\6\2\1\u014c\1\2\1\0"+
    "\20\2\3\0\1\u012b\1\0\1\u014d\53\0\1\127\1\0"+
    "\1\127\1\u014e\2\127\14\0\1\130\1\0\10\127\1\0"+
    "\20\127\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\1\2\1\u014f\6\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\6\2\1\u0150\1\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\1\2\1\u0151\6\2\1\0\20\2\2\0\1\2\1\u0152"+
    "\1\2\1\52\2\2\3\0\1\u0153\12\0\10\2\1\0"+
    "\20\2\2\0\1\2\1\u0154\1\2\1\52\2\2\3\0"+
    "\1\u0155\12\0\10\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\1\2\1\u0156"+
    "\16\2\3\0\1\u0133\7\0\1\u0134\45\0\1\2\1\u0157"+
    "\1\2\1\52\2\2\3\0\1\u0158\12\0\10\2\1\0"+
    "\20\2\5\0\1\u0137\53\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\5\2\1\u0159\2\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\2\2\1\u015a\15\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\13\2\1\u015b\4\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\11\2\1\u015c\6\2\2\0\1\2\1\u015d\1\2\1\52"+
    "\2\2\3\0\1\u015e\12\0\10\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\6\2\1\u015f"+
    "\1\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\6\2\1\u0160\1\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\7\2\1\u0161"+
    "\1\0\20\2\2\0\1\2\1\u0162\1\2\1\u0163\1\u0164"+
    "\1\2\16\0\10\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\6\2\1\u0165"+
    "\11\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\6\2\1\u0166\11\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\6\2\1\u0167"+
    "\11\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\1\u0168\17\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\15\2\1\u0169\2\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\3\2"+
    "\1\u016a\4\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\1\2\1\u016b\16\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\1\2"+
    "\1\u016c\6\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\6\2\1\u016d\11\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\7\2\1\u016e\10\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\6\2\1\u016f\11\2"+
    "\2\0\1\2\1\u0170\1\2\1\52\2\2\3\0\1\u0171"+
    "\12\0\10\2\1\0\20\2\5\0\1\u014e\53\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\u0172\1\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\7\2\1\u0173\10\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\u0174\1\2"+
    "\1\0\20\2\3\0\1\u0152\7\0\1\u0153\46\0\1\u0153"+
    "\10\0\1\u0175\45\0\1\u0154\7\0\1\u0155\45\0\1\2"+
    "\1\u0176\1\2\1\52\2\2\3\0\1\u0177\12\0\10\2"+
    "\1\0\20\2\3\0\1\u0157\7\0\1\u0158\45\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\1\2"+
    "\1\u0178\16\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\11\2\1\u0179\6\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\4\2\1\u017a\3\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\2\2\1\u017b\15\2\3\0\1\u015d"+
    "\7\0\1\u015e\45\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\7\2\1\u017c\10\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\2\2"+
    "\1\u017d\15\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\1\2\1\u017e\6\2\1\0\20\2\3\0\1\u0162"+
    "\1\0\1\u017f\53\0\1\127\1\0\1\127\1\u0180\2\127"+
    "\14\0\1\130\1\0\10\127\1\0\20\127\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\4\2\1\u0181\3\2"+
    "\1\0\20\2\2\0\1\2\1\u0182\1\2\1\u0183\2\2"+
    "\16\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\1\u0184\1\2\16\0\10\2\1\0\20\2\2\0"+
    "\1\2\1\u0185\1\2\1\u0186\1\u0187\1\2\16\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\13\2\1\u0188\4\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\16\2"+
    "\1\u0189\1\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\6\2\1\u018a\11\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\6\2"+
    "\1\u018b\11\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\2\2\1\u018c\15\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\u018d\1\2"+
    "\1\0\20\2\2\0\1\2\1\u018e\1\2\1\52\1\u018f"+
    "\1\2\3\0\1\u0190\12\0\10\2\1\0\20\2\2\0"+
    "\1\2\1\u0191\1\2\1\52\2\2\3\0\1\u0192\12\0"+
    "\10\2\1\0\20\2\3\0\1\u0170\7\0\1\u0171\45\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\7\2\1\u0193\10\2\2\0\1\2\1\u0194\1\2\1\u0195"+
    "\1\u0196\1\2\16\0\10\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\2\2"+
    "\1\u0197\15\2\3\0\1\u0176\7\0\1\u0177\45\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\6\2"+
    "\1\u0198\11\2\2\0\1\2\1\u0199\1\2\1\52\2\2"+
    "\3\0\1\u019a\12\0\10\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\7\2\1\u019b\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\3\2\1\u019c\4\2\1\0\20\2\2\0\1\2\1\u019d"+
    "\1\2\1\u019e\1\u019f\1\2\16\0\10\2\1\0\20\2"+
    "\2\0\1\2\1\u01a0\1\2\1\u01a1\1\u01a2\1\2\16\0"+
    "\10\2\1\0\20\2\2\0\1\2\1\u01a3\1\2\1\52"+
    "\2\2\3\0\1\u01a4\12\0\10\2\1\0\20\2\5\0"+
    "\1\u0180\53\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\7\2\1\u01a5\1\0\20\2\3\0\1\u0182\1\0\1\u01a6"+
    "\53\0\1\127\1\0\1\127\1\u01a7\2\127\14\0\1\130"+
    "\1\0\10\127\1\0\20\127\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\1\2\1\u01a8\16\2"+
    "\3\0\1\u0185\1\0\1\u01a9\53\0\1\127\1\0\1\127"+
    "\1\u01aa\2\127\14\0\1\130\1\0\10\127\1\0\20\127"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\5\2\1\u01ab\12\2\2\0\1\2\1\0\1\2"+
    "\1\52\1\u01ac\1\2\16\0\10\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\5\2\1\u01ad"+
    "\2\2\1\0\20\2\2\0\1\2\1\u01ae\1\2\1\52"+
    "\1\u01af\1\2\3\0\1\u01b0\12\0\10\2\1\0\20\2"+
    "\2\0\1\2\1\u01b1\1\2\1\52\2\2\3\0\1\u01b2"+
    "\12\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\11\2\1\u01b3\6\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\7\2\1\u01b4\10\2\3\0\1\u018e\7\0\1\u0190"+
    "\45\0\1\2\1\0\1\2\1\52\2\2\16\0\5\2"+
    "\1\u01b5\2\2\1\0\12\2\1\u01b6\5\2\3\0\1\u0191"+
    "\7\0\1\u0192\45\0\1\2\1\0\1\2\1\52\1\u01b7"+
    "\1\2\16\0\10\2\1\0\20\2\3\0\1\u0194\1\0"+
    "\1\u01b8\53\0\1\127\1\0\1\127\1\u01b9\2\127\14\0"+
    "\1\130\1\0\10\127\1\0\20\127\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\1\2\1\u01ba"+
    "\16\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\1\2\1\u01bb\16\2\2\0\1\2\1\u01bc"+
    "\1\2\1\52\2\2\3\0\1\u01bd\12\0\10\2\1\0"+
    "\20\2\3\0\1\u0199\7\0\1\u019a\45\0\1\2\1\0"+
    "\1\2\1\52\1\u01be\1\2\16\0\10\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\1\u01bf\17\2\3\0\1\u019d\1\0\1\u01c0\53\0"+
    "\1\127\1\0\1\127\1\u01c1\2\127\14\0\1\130\1\0"+
    "\10\127\1\0\20\127\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\1\2\1\u01c2\16\2\3\0"+
    "\1\u01a0\1\0\1\u01c3\53\0\1\127\1\0\1\127\1\u01c4"+
    "\2\127\14\0\1\130\1\0\10\127\1\0\20\127\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\4\2\1\u01c5"+
    "\3\2\1\0\20\2\3\0\1\u01a3\7\0\1\u01a4\45\0"+
    "\1\2\1\0\1\2\1\52\1\u01c6\1\2\16\0\10\2"+
    "\1\0\20\2\5\0\1\u01a7\53\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\3\2\1\u01c7\14\2"+
    "\5\0\1\u01aa\53\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\7\2\1\u01c8\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\2\2\1\u01c9"+
    "\15\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\3\2\1\u01ca\4\2\1\0\20\2\3\0\1\u01ae\7\0"+
    "\1\u01b0\45\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\13\2\1\u01cb\4\2\3\0\1\u01b1\7\0"+
    "\1\u01b2\45\0\1\2\1\u01cc\1\2\1\52\2\2\3\0"+
    "\1\u01cd\12\0\10\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\2\2\1\u01ce"+
    "\15\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\13\2\1\u01cf\4\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\6\2\1\u01d0"+
    "\11\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\1\2\1\u01d1\6\2\1\0\20\2\5\0\1\u01b9\53\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\1\2\1\u01d2"+
    "\6\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\1\u01d3\1\2\16\0\10\2\1\0\20\2\3\0\1\u01bc"+
    "\7\0\1\u01bd\45\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\5\2\1\u01d4\12\2\2\0\1\2"+
    "\1\0\1\2\1\52\1\u01d5\1\2\16\0\10\2\1\0"+
    "\20\2\5\0\1\u01c1\53\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\1\2\1\u01d6\6\2\1\0\20\2\5\0"+
    "\1\u01c4\53\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\7\2\1\u01d7\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\1\2\1\u01d8\16\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\5\2"+
    "\1\u01d9\2\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\1\2\1\u01da\6\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\4\2"+
    "\1\u01db\3\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\6\2\1\u01dc\11\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\7\2"+
    "\1\u01dd\1\0\20\2\3\0\1\u01cc\7\0\1\u01cd\45\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\11\2\1\u01de\6\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\2\2\1\u01df\15\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\13\2\1\u01e0\4\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\6\2\1\u01e1\1\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\12\2\1\u01e2\5\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\2\2\1\u01e3\15\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\7\2\1\u01e4"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\5\2\1\u01e5\12\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\12\2"+
    "\1\u01e6\5\2\2\0\1\2\1\0\1\2\1\52\1\u01e7"+
    "\1\2\16\0\10\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\6\2\1\u01e8"+
    "\11\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\4\2\1\u01e9\13\2\2\0\1\2\1\u01ea"+
    "\1\2\1\52\1\u01eb\1\2\3\0\1\u01ec\12\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\1\u01ed"+
    "\1\2\16\0\10\2\1\0\20\2\2\0\1\2\1\u01ee"+
    "\1\2\1\52\2\2\3\0\1\u01ef\12\0\10\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\4\2\1\u01f0\3\2\1\0\20\2\2\0\1\2\1\u01f1"+
    "\1\2\1\52\2\2\3\0\1\u01f2\12\0\10\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\6\2\1\u01f3\11\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\4\2\1\u01f4\3\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\1\2\1\u01f5\16\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\1\u01f6\17\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\4\2"+
    "\1\u01f7\3\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\1\2\1\u01f8\6\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\7\2"+
    "\1\u01f9\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\1\u01fa\17\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\1\2"+
    "\1\u01fb\16\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\1\u01fc\17\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\6\2\1\u01fd"+
    "\11\2\3\0\1\u01ea\7\0\1\u01ec\45\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\13\2\1\u01fe"+
    "\4\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\4\2\1\u01ff\3\2\1\0\6\2\1\u0200\11\2\3\0"+
    "\1\u01ee\7\0\1\u01ef\45\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\3\2\1\u0201\4\2\1\0\20\2\3\0"+
    "\1\u01f1\7\0\1\u01f2\45\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\7\2\1\u0202\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\7\2\1\u0203\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\2\2\1\u0204\15\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\1\2\1\u0205\6\2\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\1\u0206\1\2"+
    "\16\0\10\2\1\0\20\2\2\0\1\2\1\u0207\1\2"+
    "\1\52\2\2\3\0\1\u0208\12\0\10\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\1\2"+
    "\1\u0209\6\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\1\2\1\u020a\6\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\10\2"+
    "\1\0\6\2\1\u020b\11\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\13\2\1\u020c\4\2"+
    "\2\0\1\2\1\u020d\1\2\1\52\2\2\3\0\1\u020e"+
    "\12\0\10\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\4\2\1\u020f\2\2\1\u0210\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\1\u0211\7\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\2\2\1\u0212\5\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\1\u0213\1\2\16\0"+
    "\10\2\1\0\20\2\2\0\1\2\1\u0214\1\2\1\52"+
    "\2\2\3\0\1\u0215\12\0\10\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\6\2\1\u0216\11\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\7\2\1\u0217\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\u0218\1\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\1\2\1\u0219\16\2\3\0\1\u0207"+
    "\7\0\1\u0208\45\0\1\2\1\u021a\1\2\1\52\2\2"+
    "\3\0\1\u021b\12\0\10\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\6\2\1\u021c\1\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\1\u021d\17\2\2\0\1\2\1\u021e"+
    "\1\2\1\u021f\2\2\16\0\10\2\1\0\20\2\3\0"+
    "\1\u020d\7\0\1\u020e\45\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\7\2\1\u0220\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\4\2\1\u0221\3\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\1\u0222\7\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\6\2\1\u0223"+
    "\11\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\15\2\1\u0224\2\2\3\0\1\u0214\7\0"+
    "\1\u0215\45\0\1\2\1\u0225\1\2\1\52\2\2\3\0"+
    "\1\u0226\12\0\10\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\5\2\1\u0227"+
    "\12\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\7\2\1\u0228\10\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\2\2\1\u0229"+
    "\15\2\3\0\1\u021a\7\0\1\u021b\45\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\10\2\1\0\7\2\1\u022a"+
    "\10\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\13\2\1\u022b\4\2\3\0\1\u021e\1\0"+
    "\1\u022c\53\0\1\127\1\0\1\127\1\u022d\2\127\14\0"+
    "\1\130\1\0\10\127\1\0\20\127\2\0\1\2\1\0"+
    "\1\2\1\52\1\u022e\1\2\16\0\10\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\3\2"+
    "\1\u022f\4\2\1\0\20\2\2\0\1\2\1\u0230\1\2"+
    "\1\52\2\2\3\0\1\u0231\12\0\10\2\1\0\20\2"+
    "\2\0\1\2\1\0\1\2\1\52\2\2\16\0\6\2"+
    "\1\u0232\1\2\1\0\20\2\2\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\16\2\1\u0233\1\2"+
    "\3\0\1\u0225\7\0\1\u0226\45\0\1\2\1\0\1\2"+
    "\1\52\2\2\16\0\10\2\1\0\4\2\1\u0234\13\2"+
    "\2\0\1\2\1\u0235\1\2\1\u0236\2\2\16\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\7\2\1\u0237\1\0\20\2\2\0\1\2\1\u0238"+
    "\1\2\1\u0239\2\2\16\0\10\2\1\0\20\2\2\0"+
    "\1\2\1\u023a\1\2\1\u023b\2\2\16\0\10\2\1\0"+
    "\20\2\5\0\1\u022d\53\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\3\2\1\u023c\14\2\2\0"+
    "\1\2\1\0\1\2\1\52\1\u023d\1\2\16\0\10\2"+
    "\1\0\20\2\3\0\1\u0230\7\0\1\u0231\45\0\1\2"+
    "\1\u023e\1\2\1\52\2\2\3\0\1\u023f\12\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\5\2\1\u0240\2\2\1\0\20\2\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\10\2\1\0\2\2"+
    "\1\u0241\15\2\3\0\1\u0235\1\0\1\u0242\53\0\1\127"+
    "\1\0\1\127\1\u0243\2\127\14\0\1\130\1\0\10\127"+
    "\1\0\20\127\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\1\2\1\u0244\6\2\1\0\20\2\3\0\1\u0238"+
    "\1\0\1\u0245\53\0\1\127\1\0\1\127\1\u0246\2\127"+
    "\14\0\1\130\1\0\10\127\1\0\20\127\3\0\1\u023a"+
    "\1\0\1\u0247\53\0\1\127\1\0\1\127\1\u0248\2\127"+
    "\14\0\1\130\1\0\10\127\1\0\20\127\2\0\1\2"+
    "\1\0\1\2\1\52\2\2\16\0\7\2\1\u0249\1\0"+
    "\20\2\2\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\10\2\1\0\15\2\1\u024a\2\2\3\0\1\u023e\7\0"+
    "\1\u023f\45\0\1\2\1\0\1\2\1\52\2\2\16\0"+
    "\3\2\1\u024b\4\2\1\0\20\2\2\0\1\2\1\0"+
    "\1\2\1\52\2\2\16\0\1\2\1\u024c\6\2\1\0"+
    "\20\2\5\0\1\u0243\53\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\6\2\1\u024d\1\2\1\0\20\2\5\0"+
    "\1\u0246\56\0\1\u0248\53\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\6\2\1\u024e\11\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\16\2\1\u024f\1\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\6\2\1\u0250\11\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\4\2\1\u0251"+
    "\3\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\10\2\1\0\7\2\1\u0252\10\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\13\2\1\u0253\4\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\5\2\1\u0254\2\2\1\0\20\2\2\0"+
    "\1\2\1\u0255\1\2\1\52\2\2\3\0\1\u0256\12\0"+
    "\10\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\6\2\1\u0257\1\2\1\0\20\2\2\0"+
    "\1\2\1\u0258\1\2\1\52\2\2\3\0\1\u0259\12\0"+
    "\10\2\1\0\20\2\2\0\1\2\1\0\1\2\1\52"+
    "\2\2\16\0\1\2\1\u025a\6\2\1\0\20\2\2\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\3\2\1\u025b"+
    "\4\2\1\0\20\2\3\0\1\u0255\7\0\1\u0256\45\0"+
    "\1\2\1\u025c\1\2\1\52\2\2\3\0\1\u025d\12\0"+
    "\10\2\1\0\20\2\3\0\1\u0258\7\0\1\u0259\45\0"+
    "\1\2\1\0\1\2\1\52\2\2\16\0\10\2\1\0"+
    "\17\2\1\u025e\2\0\1\2\1\0\1\2\1\52\2\2"+
    "\16\0\10\2\1\0\6\2\1\u025f\11\2\3\0\1\u025c"+
    "\7\0\1\u025d\46\0\1\u025d\10\0\1\u0260\44\0\1\2"+
    "\1\u0261\1\2\1\52\2\2\3\0\1\u0262\12\0\10\2"+
    "\1\0\20\2\2\0\1\2\1\u0263\1\2\1\52\2\2"+
    "\3\0\1\u0264\12\0\10\2\1\0\20\2\3\0\1\u0261"+
    "\7\0\1\u0262\46\0\1\u0263\7\0\1\u0264\45\0";

  private static int [] zzUnpackTrans() {
    int [] result = new int[24816];
    int offset = 0;
    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackTrans(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++);
      value--;
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }


  /* error codes */
  private static final int ZZ_UNKNOWN_ERROR = 0;
  private static final int ZZ_NO_MATCH = 1;
  private static final int ZZ_PUSHBACK_2BIG = 2;

  /* error messages for the codes above */
  private static final String ZZ_ERROR_MSG[] = {
    "Unkown internal scanner error",
    "Error: could not match input",
    "Error: pushback value was too large"
  };

  /**
   * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
   */
  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();

  private static final String ZZ_ATTRIBUTE_PACKED_0 =
    "\1\0\3\1\2\11\1\1\7\11\2\1\1\11\1\1"+
    "\2\11\10\1\1\11\14\1\1\0\3\1\4\11\42\1"+
    "\1\0\1\11\1\0\1\1\1\11\62\1\1\0\1\11"+
    "\2\1\1\0\1\11\12\1\1\0\1\11\36\1\2\0"+
    "\1\1\1\0\1\11\6\1\1\0\1\11\1\0\1\11"+
    "\3\1\2\0\1\1\1\0\1\11\2\0\31\1\1\11"+
    "\3\1\1\0\1\1\1\11\6\1\1\0\1\11\1\1"+
    "\1\11\11\1\1\0\1\11\1\1\2\0\6\1\1\0"+
    "\1\11\1\0\1\11\1\0\1\11\6\1\1\0\1\11"+
    "\5\1\1\0\1\1\1\11\3\1\2\0\6\1\1\0"+
    "\1\11\1\1\1\0\1\11\25\1\1\0\1\11\3\1"+
    "\3\0\1\11\1\1\1\0\1\11\4\1\1\0\1\11"+
    "\3\1\2\0\14\1\1\0\1\11\3\1\1\11\1\0"+
    "\1\11\7\1\1\0\1\11\1\1\2\0\1\1\2\0"+
    "\7\1\1\0\1\1\1\11\1\0\1\11\1\1\2\0"+
    "\3\1\1\0\1\11\2\1\2\0\1\1\2\0\1\1"+
    "\1\0\1\11\1\1\1\0\1\11\1\1\1\0\1\11"+
    "\3\1\1\0\1\1\1\11\1\0\1\11\5\1\1\0"+
    "\1\11\2\1\1\0\1\11\2\1\1\0\1\11\1\1"+
    "\1\0\1\11\7\1\1\0\1\11\34\1\1\0\1\1"+
    "\1\11\1\1\1\0\1\11\1\1\1\0\1\11\24\1"+
    "\1\0\1\11\4\1\1\0\1\11\5\1\1\0\1\11"+
    "\4\1\1\0\1\11\2\1\2\0\5\1\1\0\1\11"+
    "\5\1\1\0\1\11\2\1\1\0\1\11\3\1\2\0"+
    "\1\1\4\0\2\1\1\0\1\11\2\1\1\0\1\11"+
    "\1\1\1\0\1\11\1\0\1\11\14\1\1\0\1\11"+
    "\1\1\1\0\1\11\2\1\2\0\2\1\1\11\1\0"+
    "\1\11\1\0\1\11";

  private static int [] zzUnpackAttribute() {
    int [] result = new int[612];
    int offset = 0;
    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackAttribute(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;
  }

  /** the input device */
  private java.io.Reader zzReader;

  /** the current state of the DFA */
  private int zzState;

  /** the current lexical state */
  private int zzLexicalState = YYINITIAL;

  /** this buffer contains the current text to be matched and is
      the source of the yytext() string */
  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];

  /** the textposition at the last accepting state */
  private int zzMarkedPos;

  /** the textposition at the last state to be included in yytext */
  private int zzPushbackPos;

  /** the current text position in the buffer */
  private int zzCurrentPos;

  /** startRead marks the beginning of the yytext() string in the buffer */
  private int zzStartRead;

  /** endRead marks the last character in the buffer, that has been read
      from input */
  private int zzEndRead;

  /** number of newlines encountered up to the start of the matched text */
  private int yyline;

  /** the number of characters up to the start of the matched text */
  private int yychar;

  /**
   * the number of characters from the last newline up to the start of the
   * matched text
   */
  private int yycolumn;

  /**
   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
   */
  private boolean zzAtBOL = true;

  /** zzAtEOF == true <=> the scanner is at the EOF */
  private boolean zzAtEOF;

  /** denotes if the user-EOF-code has already been executed */
  private boolean zzEOFDone;

  /* user code: */

  private Symbol sym(int sym) {
    return new Symbol(sym);
  }

  private Symbol sym(int sym, Object val) {
    return new Symbol(sym, val);
  }
  int isName;
  NameType name;
  FuncName fname;
  Ntest ntest;
  AxisType at;
  int len;
  String literal;
  Double number;
  int colonPosition;

  public int getOffset(){
    return yychar;
  }
  /* public void report_error(String message, Object info) {
  //throw new XPathParseException("Syntax error during parsing");
  }

  public void report_fatal_error(String message, Object info) throws XPathParseException{
  throw new XPathParseExceptionHuge("Syntax error during parsing: "+ message);
  }

  public void syntax_error(Symbol cur_token) {
 
  }
 
  public void unrecovered_syntax_error(Symbol cur_token) throws XPathParseException{
  throw new XPathParseExceptionHuge("XPath Syntax error: "+cur_token);
  }*/



  /**
   * Creates a new scanner
   * There is also a java.io.InputStream version of this constructor.
   *
   * @param   in  the java.io.Reader to read input from.
   */
  Yylex(java.io.Reader in) {
    isName = 1;
  colonPosition = -1;
    this.zzReader = in;
  }

  /**
   * Creates a new scanner.
   * There is also java.io.Reader version of this constructor.
   *
   * @param   in  the java.io.Inputstream to read input from.
   */
  Yylex(java.io.InputStream in) {
    this(new java.io.InputStreamReader(in));
  }

  /**
   * Unpacks the compressed character translation table.
   *
   * @param packed   the packed character translation table
   * @return         the unpacked character translation table
   */
  private static char [] zzUnpackCMap(String packed) {
    char [] map = new char[0x10000];
    int i = 0/* index in packed string  */
    int j = 0/* index in unpacked array */
    while (i < 138) {
      int  count = packed.charAt(i++);
      char value = packed.charAt(i++);
      do map[j++] = value; while (--count > 0);
    }
    return map;
  }


  /**
   * Refills the input buffer.
   *
   * @return      <code>false</code>, iff there was new input.
   *
   * @exception   java.io.IOException  if any I/O-Error occurs
   */
  private boolean zzRefill() throws java.io.IOException {

    /* first: make room (if you can) */
    if (zzStartRead > 0) {
      System.arraycopy(zzBuffer, zzStartRead,
                       zzBuffer, 0,
                       zzEndRead-zzStartRead);

      /* translate stored positions */
      zzEndRead-= zzStartRead;
      zzCurrentPos-= zzStartRead;
      zzMarkedPos-= zzStartRead;
      zzPushbackPos-= zzStartRead;
      zzStartRead = 0;
    }

    /* is the buffer big enough? */
    if (zzCurrentPos >= zzBuffer.length) {
      /* if not: blow it up */
      char newBuffer[] = new char[zzCurrentPos*2];
      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
      zzBuffer = newBuffer;
    }

    /* finally: fill the buffer with new input */
    int numRead = zzReader.read(zzBuffer, zzEndRead,
                                            zzBuffer.length-zzEndRead);

    if (numRead < 0) {
      return true;
    }
    else {
      zzEndRead+= numRead;
      return false;
    }
  }

   
  /**
   * Closes the input stream.
   */
  public final void yyclose() throws java.io.IOException {
    zzAtEOF = true;            /* indicate end of file */
    zzEndRead = zzStartRead;  /* invalidate buffer    */

    if (zzReader != null)
      zzReader.close();
  }


  /**
   * Resets the scanner to read from a new input stream.
   * Does not close the old reader.
   *
   * All internal variables are reset, the old input stream
   * <b>cannot</b> be reused (internal buffer is discarded and lost).
   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
   *
   * @param reader   the new input stream
   */
  public final void yyreset(java.io.Reader reader) {
    zzReader = reader;
    zzAtBOL  = true;
    zzAtEOF  = false;
    zzEndRead = zzStartRead = 0;
    zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
    yyline = yychar = yycolumn = 0;
    zzLexicalState = YYINITIAL;
  }


  /**
   * Returns the current lexical state.
   */
  public final int yystate() {
    return zzLexicalState;
  }


  /**
   * Enters a new lexical state
   *
   * @param newState the new lexical state
   */
  public final void yybegin(int newState) {
    zzLexicalState = newState;
  }


  /**
   * Returns the text matched by the current regular expression.
   */
  public final String yytext() {
    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
  }


  /**
   * Returns the character at position <tt>pos</tt> from the
   * matched text.
   *
   * It is equivalent to yytext().charAt(pos), but faster
   *
   * @param pos the position of the character to fetch.
   *            A value from 0 to yylength()-1.
   *
   * @return the character at position pos
   */
  public final char yycharat(int pos) {
    return zzBuffer[zzStartRead+pos];
  }


  /**
   * Returns the length of the matched text region.
   */
  public final int yylength() {
    return zzMarkedPos-zzStartRead;
  }


  /**
   * Reports an error that occured while scanning.
   *
   * In a wellformed scanner (no or only correct usage of
   * yypushback(int) and a match-all fallback rule) this method
   * will only be called with things that "Can't Possibly Happen".
   * If this method is called, something is seriously wrong
   * (e.g. a JFlex bug producing a faulty scanner etc.).
   *
   * Usual syntax/scanner level error handling should be done
   * in error fallback rules.
   *
   * @param   errorCode  the code of the errormessage to display
   */
  private void zzScanError(int errorCode) {
    String message;
    try {
      message = ZZ_ERROR_MSG[errorCode];
    }
    catch (ArrayIndexOutOfBoundsException e) {
      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
    }

    throw new Error(message);
  }


  /**
   * Pushes the specified amount of characters back into the input stream.
   *
   * They will be read again by then next call of the scanning method
   *
   * @param number  the number of characters to be read again.
   *                This number must not be greater than yylength()!
   */
  public void yypushback(int number)  {
    if ( number > yylength() )
      zzScanError(ZZ_PUSHBACK_2BIG);

    zzMarkedPos -= number;
  }


  /**
   * Contains user EOF-code, which will be executed exactly once,
   * when the end of file is reached
   */
  private void zzDoEOF() throws java.io.IOException {
    if (!zzEOFDone) {
      zzEOFDone = true;
      yyclose();
    }
  }


  /**
   * Resumes scanning until the next regular expression is matched,
   * the end of input is encountered or an I/O-Error occurs.
   *
   * @return      the next token
   * @exception   java.io.IOException  if any I/O-Error occurs
   */
  public java_cup.runtime.Symbol next_token() throws java.io.IOException, XPathParseExceptionHuge {
    int zzInput;
    int zzAction;

    // cached fields:
    int zzCurrentPosL;
    int zzMarkedPosL;
    int zzEndReadL = zzEndRead;
    char [] zzBufferL = zzBuffer;
    char [] zzCMapL = ZZ_CMAP;

    int [] zzTransL = ZZ_TRANS;
    int [] zzRowMapL = ZZ_ROWMAP;
    int [] zzAttrL = ZZ_ATTRIBUTE;

    while (true) {
      zzMarkedPosL = zzMarkedPos;

      yychar+= zzMarkedPosL-zzStartRead;

      zzAction = -1;

      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
 
      zzState = zzLexicalState;


      zzForAction: {
        while (true) {
   
          if (zzCurrentPosL < zzEndReadL)
            zzInput = zzBufferL[zzCurrentPosL++];
          else if (zzAtEOF) {
            zzInput = YYEOF;
            break zzForAction;
          }
          else {
            // store back cached positions
            zzCurrentPos  = zzCurrentPosL;
            zzMarkedPos   = zzMarkedPosL;
            boolean eof = zzRefill();
            // get translated positions and possibly new buffer
            zzCurrentPosL  = zzCurrentPos;
            zzMarkedPosL   = zzMarkedPos;
            zzBufferL      = zzBuffer;
            zzEndReadL     = zzEndRead;
            if (eof) {
              zzInput = YYEOF;
              break zzForAction;
            }
            else {
              zzInput = zzBufferL[zzCurrentPosL++];
            }
          }
          int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
          if (zzNext == -1) break zzForAction;
          zzState = zzNext;

          int zzAttributes = zzAttrL[zzState];
          if ( (zzAttributes & 1) == 1 ) {
            zzAction = zzState;
            zzMarkedPosL = zzCurrentPosL;
            if ( (zzAttributes & 8) == 8 ) break zzForAction;
          }

        }
      }

      // store back cached position
      zzMarkedPos = zzMarkedPosL;

      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
        case 57:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.CONTAINS;
        fname = new FuncName();
        fname.i = FuncName.CONTAINS;
        return sym(FNAME,fname);
          }
        case 91: break;
        case 74:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.STRING_LENGTH;
        fname = new FuncName();
        fname.i = FuncName.STRING_LENGTH;
        return sym(FNAME,fname);
          }
        case 92: break;
        case 55:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i =  FuncName.POSITION;
        fname = new FuncName();
        fname.i = FuncName.POSITION;
        return sym(FNAME,fname);
          }
        case 93: break;
        case 28:
          { isName = 0;
        len = yytext().length();
        name = new NameType();
                               if (!XMLChar.isNCNameStartChar(yytext().charAt(0)))
          throw new XPathParseExceptionHuge("Invalid char in name token:  "+yytext()+ "@position 0");
       
        for(int i=1;i<len-2;i++){
          if (!XMLChar.isNCNameChar(yytext().charAt(i)))
            throw new XPathParseExceptionHuge("Invalid char in name token:  "+yytext()+ "@position "+i);
        }

        name.prefix = yytext().substring(0,len-2);
        name.localname = "*";
        //System.out.println("NAME "+name+ " returned");
        return sym(NAME,name);
          }
        case 94: break;
        case 26:
          { if (isName == 0) { 
     isName = 1 ;
     return sym(OR);
        } else {
     isName = 0;
     name = new NameType();
     name.qname = "or";
     return sym(NAME,name);
        }
          }
        case 95: break;
        case 24:
          { isName = 1 ; return sym(NE);
          }
        case 96: break;
        case 31:
          { if (isName == 0) {
    isName = 1 ;
     return sym(AND);
        } else {
     isName = 0;
     name = new NameType();
     name.qname = "add";
     return sym(NAME,name);
        }
          }
        case 97: break;
        case 12:
          { isName = 1 ; /*System.out.println( "[ returned");*/ return sym(LB);
          }
        case 98: break;
        case 85:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.DESCENDANT_OR_SELF;
        return sym(AXISNAME,at);
          }
        case 99: break;
        case 62:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.IRI_TO_URI;
        fname = new FuncName();
        fname.i = FuncName.IRI_TO_URI;
        return sym(FNAME,fname);
          }
        case 100: break;
        case 11:
          { isName = 0 ; return sym(RP);
          }
        case 101: break;
        case 64:
          { isName =0;
        at = new AxisType();
        at.i = AxisType.NAMESPACE;
        return sym(AXISNAME,at);
          }
        case 102: break;
        case 37:
          { isName = 1;
         yypushback(1);
        fname = new FuncName();
        fname.i = FuncName.LAST;
        return sym(FNAME,fname);
          }
        case 103: break;
        case 18:
          { if (isName ==0){
    isName = 1;
    //System.out.println("returned a MULT");
    return  sym(MULT);
  }
   else {
    isName = 0;
    name = new NameType();
    name.qname = "*";
    return sym(NAME,name);
   }
          }
        case 104: break;
        case 89:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.NAMESPACE_URI_FOR_PREFIX;
        fname = new FuncName();
        fname.i = FuncName.NAMESPACE_URI_FOR_PREFIX;
        return sym(FNAME,fname);
          }
        case 105: break;
        case 71:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.STARTS_WITH;
        fname = new FuncName();
        fname.i = FuncName.STARTS_WITH;
        return sym(FNAME,fname);
          }
        case 106: break;
        case 8:
          { isName = 1 ; return sym(AT);
          }
        case 107: break;
        case 6:
          { isName = 0 ; /*System.out.println(". returned ");*/ return sym(DOT);
          }
        case 108: break;
        case 66:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.LOWER_CASE;
        fname = new FuncName();
        fname.i = FuncName.LOWER_CASE;
        return sym(FNAME,fname);
          }
        case 109: break;
        case 36:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.LANG;
        fname = new FuncName();
        fname.i = FuncName.LANG;
        return sym(FNAME,fname);
          }
        case 110: break;
        case 79:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.SUBSTRING_BEFORE;
        fname = new FuncName();
        fname.i = FuncName.SUBSTRING_BEFORE;
        return sym(FNAME,fname);
          }
        case 111: break;
        case 35:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i =  FuncName.NAME;
        fname = new FuncName();
        fname.i = FuncName.NAME;
        return sym(FNAME,fname);
          }
        case 112: break;
        case 39:
          { isName = 0;
        ntest = new Ntest();
        ntest.i = Ntest.NODE;
        ntest.arg = null;
        return sym(NTEST,ntest);
          }
        case 113: break;
        case 44:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.FALSE;
        fname = new FuncName();
        fname.i = FuncName.FALSE;
        return sym(FNAME,fname);
          }
        case 114: break;
        case 65:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i =  FuncName.LOCAL_NAME;
        fname = new FuncName();
        fname.i = FuncName.LOCAL_NAME;
        return sym(FNAME,fname);
          }
        case 115: break;
        case 48:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i =  FuncName.STRING;
        fname = new FuncName();
        fname.i = FuncName.STRING;
        return sym(FNAME,fname);
          }
        case 116: break;
        case 14:
          { isName = 1 ; return sym(GT);
          }
        case 117: break;
        case 56:
          { isName = 0;
        ntest = new Ntest();
        ntest.i = Ntest.COMMENT;
        ntest.arg =  null;
        return sym(NTEST,ntest);
          }
        case 118: break;
        case 54:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.BOOLEAN;
        fname = new FuncName();
        fname.i = FuncName.BOOLEAN;
        return sym(FNAME,fname);
          }
        case 119: break;
        case 16:
          { isName = 1 ; return sym(EQ);
          }
        case 120: break;
        case 75:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.ENCODE_FOR_URI;
        fname = new FuncName();
        fname.i = FuncName.ENCODE_FOR_URI;
        return sym(FNAME,fname);
          }
        case 121: break;
        case 63:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.ATTRIBUTE;
        return sym(AXISNAME,at);
          }
        case 122: break;
        case 3:
          { isName = 0;
        number = new Double(yytext());
        //System.out.println("number returned ==> "+ Double.parseDouble(yytext()));
        return sym(NUMBER,number);
          }
        case 123: break;
        case 45:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.FLOOR;
        fname = new FuncName();
        fname.i = FuncName.FLOOR;
        return sym(FNAME,fname);
          }
        case 124: break;
        case 34:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.SUM;
        fname = new FuncName();
        fname.i = FuncName.SUM;
        return sym(FNAME,fname);
          }
        case 125: break;
        case 30:
          { if (isName == 0) {
      isName = 1 ;
     return sym(MOD);
        } else {
     isName = 0;
     name = new NameType();
     name.qname = "mod";
     //System.out.println("returned a NAME "+yytext());
     return sym(NAME,name);
        }
          }
        case 126: break;
        case 29:
          { if (isName == 0 ) {
      isName = 1 ;
     return sym(DIV);
        } else {
     isName = 0;
     name = new NameType();
     name.qname = "div";
     return sym(NAME,name);
        }
          }
        case 127: break;
        case 27:
          { isName = 0;
        len = yytext().length();
        literal = yytext().substring(1, len-1);
        return sym(LITERAL,literal);
          }
        case 128: break;
        case 19:
          { isName = 1 ;
   //System.out.println("SLASH returned ");
   return sym(SLASH);
          }
        case 129: break;
        case 32:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.ABS;
        fname = new FuncName();
        fname.i = FuncName.ABS;
        return sym(FNAME,fname);
          }
        case 130: break;
        case 15:
          { isName = 1 ; return sym(LT);
          }
        case 131: break;
        case 90:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.NAMESPACE_URI_FROM_QNAME;
        fname = new FuncName();
        fname.i = FuncName.NAMESPACE_URI_FROM_QNAME;
        return sym(FNAME,fname);
          }
        case 132: break;
        case 25:
          { isName = 1 ;
   //System.out.println("DSLASH returned ");
   return sym(DSLASH);
          }
        case 133: break;
        case 4:
          { throw new XPathParseExceptionHuge("Invalid char in XPath Expression");
          }
        case 134: break;
        case 88:
          { isName = 0;
            ntest = new Ntest();
            ntest.i = Ntest.PROCESSING_INSTRUCTION;
            ntest.arg = null;
            return sym(NTEST,ntest);
          }
        case 135: break;
        case 13:
          { isName = 0 ; return sym(RB);
          }
        case 136: break;
        case 77:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.SUBSTRING_AFTER;
        fname = new FuncName();
        fname.i = FuncName.SUBSTRING_AFTER;
        return sym(FNAME,fname);
          }
        case 137: break;
        case 38:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.TRUE;
        fname = new FuncName();
        fname.i = FuncName.TRUE;
        return sym(FNAME,fname);
          }
        case 138: break;
        case 53:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.CEILING;
        fname = new FuncName();
        fname.i = FuncName.CEILING;
        return sym(FNAME,fname);
          }
        case 139: break;
        case 17:
          { isName = 1; return sym(DOLLAR);
          }
        case 140: break;
        case 61:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.ENDS_WITH;
        fname = new FuncName();
        fname.i = FuncName.ENDS_WITH;
        return sym(FNAME,fname);
          }
        case 141: break;
        case 86:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.LOCAL_NAME_FROM_QNAME;
        fname = new FuncName();
        fname.i = FuncName.LOCAL_NAME_FROM_QNAME;
        return sym(FNAME,fname);
          }
        case 142: break;
        case 1:
          { isName = 0;
        name = new NameType();
        //name.qname = new String(yytext());
        //System.out.println("returned a NAME ==>" + yytext());
        //if (yytext().charAt(0) =='-'){
        //    throw new XPathParseException("Invalid char in name token:"+yytext());
        //}
       
        name.qname = new String(yytext());
        if (!XMLChar.isNCNameStartChar(name.qname.charAt(0)))
          throw new XPathParseExceptionHuge("Invalid char in name token:  "+yytext()+ "@position 0");
       
        for(int i=1;i<name.qname.length();i++){
          if (!XMLChar.isNCNameChar(name.qname.charAt(i))
            && name.qname.charAt(i)!=':' )
            throw new XPathParseExceptionHuge("Invalid char in name token:  "+yytext()+ "@position "+i);
          if (name.qname.charAt(i)==':'){
            colonPosition = i;
          }
        }
   
        if (colonPosition != -1){
          name.prefix = yytext().substring(0,colonPosition);
          name.localname = yytext().substring(colonPosition+1);       
        }
       
        colonPosition = -1;
        return sym(NAME,name);
          }
        case 143: break;
        case 21:
          { isName = 0 ; return sym(DDOT);
          }
        case 144: break;
        case 83:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.PRECEDING_SIBLING;
        return sym(AXISNAME,at);
          }
        case 145: break;
        case 72:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i =  FuncName.NAMESPACE_URI;
        fname = new FuncName();
        fname.i = FuncName.NAMESPACE_URI;
        return sym(FNAME,fname);
          }
        case 146: break;
        case 10:
          { isName = 1 ; return sym(LP);
          }
        case 147: break;
        case 7:
          { isName = 1 ; return sym(ADD);
          }
        case 148: break;
        case 60:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.TRANSLATE;
        fname = new FuncName();
        fname.i = FuncName.TRANSLATE;
        return sym(FNAME,fname);
          }
        case 149: break;
        case 82:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.ROUND_HALF_TO_EVEN;
        fname = new FuncName();
        fname.i = FuncName.ROUND_HALF_TO_EVEN;
        return sym(FNAME,fname);
          }
        case 150: break;
        case 43:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i =  FuncName.COUNT;
        fname = new FuncName();
        fname.i = FuncName.COUNT;
        return sym(FNAME,fname);
          }
        case 151: break;
        case 67:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.PRECEDING;
        return sym(AXISNAME,at);
          }
        case 152: break;
        case 52:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.COMPARE;
        fname = new FuncName();
        fname.i = FuncName.COMPARE;
        return sym(FNAME,fname);
          }
        case 153: break;
        case 9:
          { isName = 1 ; return sym(COMMA);
          }
        case 154: break;
        case 49:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.CONCAT;
        fname = new FuncName();
        fname.i = FuncName.CONCAT;
        return sym(FNAME,fname);
          }
        case 155: break;
        case 58:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.ANCESTOR;
        return sym(AXISNAME,at);
          }
        case 156: break;
        case 50:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.CHILD;
        return sym(AXISNAME,at);
          }
        case 157: break;
        case 46:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.QNAME;
        fname = new FuncName();
        fname.i = FuncName.QNAME;
        return sym(FNAME,fname);
          }
        case 158: break;
        case 20:
          { isName = 1 ; return sym(UNION) ;
          }
        case 159: break;
        case 84:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.FOLLOWING_SIBLING;
        return sym(AXISNAME,at);
          }
        case 160: break;
        case 5:
          { isName = 1 ; return sym(SUB);
          }
        case 161: break;
        case 33:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.NOT;
        fname = new FuncName();
        fname.i = FuncName.NOT;
        return sym(FNAME,fname);
          }
        case 162: break;
        case 47:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.NUMBER;
        fname = new FuncName();
        fname.i = FuncName.NUMBER;
        return sym(FNAME,fname);
          }
        case 163: break;
        case 68:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.UPPER_CASE;
        fname = new FuncName();
        fname.i = FuncName.UPPER_CASE;
        return sym(FNAME,fname);
          }
        case 164: break;
        case 42:
          { isName = 0;
        ntest = new Ntest();
        ntest.i = Ntest.TEXT;
        ntest.arg = null;
        return sym(NTEST,ntest);
          }
        case 165: break;
        case 69:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.FOLLOWING;
        return sym(AXISNAME,at);
          }
        case 166: break;
        case 81:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.ROUND_HALF_TO_ODD;
        fname = new FuncName();
        fname.i = FuncName.ROUND_HALF_TO_ODD;
        return sym(FNAME,fname);
          }
        case 167: break;
        case 22:
          { isName = 1 ; return sym(GE);
          }
        case 168: break;
        case 51:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.PARENT;
        return sym(AXISNAME,at);
          }
        case 169: break;
        case 87:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.CODE_POINTS_TO_STRING;
        fname = new FuncName();
        fname.i = FuncName.CODE_POINTS_TO_STRING;
        return sym(FNAME,fname);
          }
        case 170: break;
        case 73:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.RESOLVE_QNAME;
        fname = new FuncName();
        fname.i = FuncName.RESOLVE_QNAME;
        return sym(FNAME,fname);
          }
        case 171: break;
        case 80:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.ANCESTOR_OR_SELF;
        return sym(AXISNAME,at);
          }
        case 172: break;
        case 2:
          { /* eat white space */
          }
        case 173: break;
        case 76:
          { isName =1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.NORMALIZE_SPACE;
        fname = new FuncName();
        fname.i = FuncName.NORMALIZE_SPACE;
        return sym(FNAME,fname);
          }
        case 174: break;
        case 40:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.ROUND;
        fname = new FuncName();
        fname.i = FuncName.ROUND;
        return sym(FNAME,fname);
          }
        case 175: break;
        case 41:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.SELF;
        //System.out.println("SELF:: returned");
        return sym(AXISNAME,at);
          }
        case 176: break;
        case 59:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.SUBSTRING;
        fname = new FuncName();
        fname.i = FuncName.SUBSTRING;
        return sym(FNAME,fname);
          }
        case 177: break;
        case 70:
          { isName = 1;
        at = new AxisType();
        at.i = AxisType.DESCENDANT;
        return sym(AXISNAME,at);
          }
        case 178: break;
        case 78:
          { isName = 1;
         yypushback(1);
        //yyparser.yylval.fname.i = FuncName.ESCAPE_HTML_URI;
        fname = new FuncName();
        fname.i = FuncName.ESCAPE_HTML_URI;
        return sym(FNAME,fname);
          }
        case 179: break;
        case 23:
          { isName = 1 ; return sym(LE);
          }
        case 180: break;
        default:
          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
            zzAtEOF = true;
            zzDoEOF();
              { return new java_cup.runtime.Symbol(sym.EOF); }
          }
          else {
            zzScanError(ZZ_NO_MATCH);
          }
      }
    }
  }


}
TOP

Related Classes of com.ximpleware.extended.xpath.Yylex

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.