diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/IdentifiersDeobfuscation.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/IdentifiersDeobfuscation.java index e9fd525f7..8054cc621 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/IdentifiersDeobfuscation.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/IdentifiersDeobfuscation.java @@ -49,7 +49,7 @@ public class IdentifiersDeobfuscation { public static final String VALID_NEXT_CHARACTERS = VALID_FIRST_CHARACTERS + "\\p{Nl}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}"; private static final Pattern VALID_NAME_PATTERN = Pattern.compile("^[a-zA-Z_\\$][a-zA-Z0-9_\\$]*$"); - + private static final Pattern IDENTIFIER_PATTERN = Pattern.compile("^[" + VALID_FIRST_CHARACTERS + "][" + VALID_NEXT_CHARACTERS + "]*$"); public static final String FOO_CHARACTERS = "bcdfghjklmnpqrstvwz"; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ABCInputStream.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ABCInputStream.java index 26b0ce09d..34e800683 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ABCInputStream.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ABCInputStream.java @@ -50,7 +50,7 @@ public class ABCInputStream implements AutoCloseable { public static final boolean DEBUG_READ = false; public DumpInfo dumpInfo; - + private byte[] stringDataBuffer = new byte[256]; public void startBuffer() { @@ -477,17 +477,17 @@ public class ABCInputStream implements AutoCloseable { public String readString(String name) throws IOException { newDumpLevel(name, "String"); int length = readU30Internal(); - + // avoid creating new byte array every time if (stringDataBuffer.length < length) { int newLength = stringDataBuffer.length * 2; while (newLength < length) { newLength *= 2; } - + stringDataBuffer = new byte[newLength]; } - + safeRead(length, stringDataBuffer); String r = new String(stringDataBuffer, 0, length, Utf8Helper.charset); endDumpLevel(r); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java index af07bbd1c..1899f32ca 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java @@ -2,979 +2,1032 @@ /* * Copyright (C) 2010-2015 JPEXS, All rights reserved. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library 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 * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. */ package com.jpexs.decompiler.flash.abc.avm2.parser.script; + import com.jpexs.decompiler.flash.abc.avm2.parser.AVM2ParseException; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import java.util.Stack; - /** - * This class is a scanner generated by + * This class is a scanner generated by * JFlex 1.6.0 - * from the specification file C:/Projects/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/actionscript3_script.flex + * from the specification file + * C:/Projects/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/actionscript3_script.flex */ public final class ActionScriptLexer { - /** This character denotes the end of file */ - public static final int YYEOF = -1; + /** + * 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; + /** + * 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 STRING = 2; - public static final int CHARLITERAL = 4; - public static final int XMLOPENTAG = 6; - public static final int XMLOPENTAGATTRIB = 8; - public static final int XMLINSTROPENTAG = 10; - public static final int XMLINSTRATTRIB = 12; - public static final int XMLCDATA = 14; - public static final int XMLCOMMENT = 16; - public static final int XML = 18; - public static final int OIDENTIFIER = 20; + /** + * lexical states + */ + public static final int YYINITIAL = 0; - /** - * 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, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10 - }; + public static final int STRING = 2; - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\13\1\2\1\113\1\3\1\1\22\0\1\13\1\14\1\33"+ - "\1\0\1\6\1\110\1\105\1\34\1\76\1\77\1\5\1\45\1\103"+ - "\1\15\1\11\1\4\1\35\3\41\4\42\2\21\1\17\1\102\1\12"+ - "\1\32\1\16\1\23\1\111\1\27\1\20\1\25\1\26\1\43\1\20"+ - "\2\10\1\74\4\10\1\75\5\10\1\30\3\10\1\37\2\10\1\24"+ - "\1\46\1\31\1\107\1\10\1\0\1\52\1\50\1\54\1\63\1\44"+ - "\1\40\1\73\1\66\1\61\1\10\1\53\1\64\1\71\1\57\1\56"+ - "\1\67\1\10\1\51\1\55\1\60\1\62\1\72\1\65\1\36\1\70"+ - "\1\10\1\100\1\106\1\101\1\104\6\0\1\113\41\0\1\47\2\0"+ - "\1\6\12\0\1\6\1\0\1\22\2\0\1\6\5\0\2\6\1\112"+ - "\24\6\1\0\37\6\1\0\u01ca\6\4\0\14\6\16\0\5\6\7\0"+ - "\1\6\1\0\1\6\21\0\160\7\5\6\1\0\2\6\2\0\4\6"+ - "\1\0\1\6\6\0\1\6\1\0\3\6\1\0\1\6\1\0\24\6"+ - "\1\0\123\6\1\0\213\6\1\0\5\7\2\0\246\6\1\0\46\6"+ - "\2\0\1\6\7\0\47\6\11\0\55\7\1\0\1\7\1\0\2\7"+ - "\1\0\2\7\1\0\1\7\10\0\33\6\5\0\3\6\35\0\13\7"+ - "\5\0\53\6\37\7\4\0\2\6\1\7\143\6\1\0\1\6\7\7"+ - "\2\0\6\7\2\6\2\7\1\0\4\7\2\6\12\7\3\6\2\0"+ - "\1\6\20\0\1\6\1\7\36\6\33\7\2\0\131\6\13\7\1\6"+ - "\16\0\12\7\41\6\11\7\2\6\4\0\1\6\5\0\26\6\4\7"+ - "\1\6\11\7\1\6\3\7\1\6\5\7\22\0\31\6\3\7\104\0"+ - "\23\6\61\0\40\7\66\6\3\7\1\6\22\7\1\6\7\7\12\6"+ - "\2\7\2\0\12\7\1\0\20\6\3\7\1\0\10\6\2\0\2\6"+ - "\2\0\26\6\1\0\7\6\1\0\1\6\3\0\4\6\2\0\1\7"+ - "\1\6\7\7\2\0\2\7\2\0\3\7\1\6\10\0\1\7\4\0"+ - "\2\6\1\0\3\6\2\7\2\0\12\7\2\6\17\0\3\7\1\0"+ - "\6\6\4\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0"+ - "\2\6\1\0\2\6\2\0\1\7\1\0\5\7\4\0\2\7\2\0"+ - "\3\7\3\0\1\7\7\0\4\6\1\0\1\6\7\0\14\7\3\6"+ - "\1\7\13\0\3\7\1\0\11\6\1\0\3\6\1\0\26\6\1\0"+ - "\7\6\1\0\2\6\1\0\5\6\2\0\1\7\1\6\10\7\1\0"+ - "\3\7\1\0\3\7\2\0\1\6\17\0\2\6\2\7\2\0\12\7"+ - "\21\0\3\7\1\0\10\6\2\0\2\6\2\0\26\6\1\0\7\6"+ - "\1\0\2\6\1\0\5\6\2\0\1\7\1\6\7\7\2\0\2\7"+ - "\2\0\3\7\10\0\2\7\4\0\2\6\1\0\3\6\2\7\2\0"+ - "\12\7\1\0\1\6\20\0\1\7\1\6\1\0\6\6\3\0\3\6"+ - "\1\0\4\6\3\0\2\6\1\0\1\6\1\0\2\6\3\0\2\6"+ - "\3\0\3\6\3\0\14\6\4\0\5\7\3\0\3\7\1\0\4\7"+ - "\2\0\1\6\6\0\1\7\16\0\12\7\20\0\4\7\1\0\10\6"+ - "\1\0\3\6\1\0\27\6\1\0\20\6\3\0\1\6\7\7\1\0"+ - "\3\7\1\0\4\7\7\0\2\7\1\0\2\6\6\0\2\6\2\7"+ - "\2\0\12\7\21\0\3\7\1\0\10\6\1\0\3\6\1\0\27\6"+ - "\1\0\12\6\1\0\5\6\2\0\1\7\1\6\7\7\1\0\3\7"+ - "\1\0\4\7\7\0\2\7\7\0\1\6\1\0\2\6\2\7\2\0"+ - "\12\7\1\0\2\6\16\0\3\7\1\0\10\6\1\0\3\6\1\0"+ - "\51\6\2\0\1\6\7\7\1\0\3\7\1\0\4\7\1\6\10\0"+ - "\1\7\10\0\2\6\2\7\2\0\12\7\12\0\6\6\2\0\2\7"+ - "\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6\2\0\7\6"+ - "\3\0\1\7\4\0\6\7\1\0\1\7\1\0\10\7\6\0\12\7"+ - "\2\0\2\7\15\0\60\6\1\7\2\6\7\7\5\0\7\6\10\7"+ - "\1\0\12\7\47\0\2\6\1\0\1\6\2\0\2\6\1\0\1\6"+ - "\2\0\1\6\6\0\4\6\1\0\7\6\1\0\3\6\1\0\1\6"+ - "\1\0\1\6\2\0\2\6\1\0\4\6\1\7\2\6\6\7\1\0"+ - "\2\7\1\6\2\0\5\6\1\0\1\6\1\0\6\7\2\0\12\7"+ - "\2\0\4\6\40\0\1\6\27\0\2\7\6\0\12\7\13\0\1\7"+ - "\1\0\1\7\1\0\1\7\4\0\2\7\10\6\1\0\44\6\4\0"+ - "\24\7\1\0\2\7\5\6\13\7\1\0\44\7\11\0\1\7\71\0"+ - "\53\6\24\7\1\6\12\7\6\0\6\6\4\7\4\6\3\7\1\6"+ - "\3\7\2\6\7\7\3\6\4\7\15\6\14\7\1\6\17\7\2\0"+ - "\46\6\1\0\1\6\5\0\1\6\2\0\53\6\1\0\u014d\6\1\0"+ - "\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0\51\6\1\0"+ - "\4\6\2\0\41\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0"+ - "\4\6\2\0\17\6\1\0\71\6\1\0\4\6\2\0\103\6\2\0"+ - "\3\7\40\0\20\6\20\0\125\6\14\0\u026c\6\2\0\21\6\1\0"+ - "\32\6\5\0\113\6\3\0\3\7\10\6\7\0\15\6\1\0\4\6"+ - "\3\7\13\0\22\6\3\7\13\0\22\6\2\7\14\0\15\6\1\0"+ - "\3\6\1\0\2\7\14\0\64\6\40\7\3\0\1\6\4\0\1\6"+ - "\1\7\2\0\12\7\41\0\3\7\2\0\12\7\6\0\130\6\10\0"+ - "\51\6\1\7\1\6\5\0\106\6\12\0\37\6\1\0\14\7\4\0"+ - "\14\7\12\0\12\7\36\6\2\0\5\6\13\0\54\6\4\0\21\7"+ - "\7\6\2\7\6\0\12\7\46\0\27\6\5\7\4\0\65\6\12\7"+ - "\1\0\35\7\2\0\13\7\6\0\12\7\15\0\1\6\10\0\16\7"+ - "\102\0\5\7\57\6\21\7\7\6\4\0\12\7\21\0\11\7\14\0"+ - "\3\7\36\6\15\7\2\6\12\7\54\6\16\7\14\0\44\6\24\7"+ - "\10\0\12\7\3\0\3\6\12\7\44\6\122\0\3\7\1\0\25\7"+ - "\4\6\1\7\4\6\3\7\2\6\1\0\2\7\6\0\300\6\66\7"+ - "\6\0\4\7\u0116\6\2\0\6\6\2\0\46\6\2\0\6\6\2\0"+ - "\10\6\1\0\1\6\1\0\1\6\1\0\1\6\1\0\37\6\2\0"+ - "\65\6\1\0\7\6\1\0\1\6\3\0\3\6\1\0\7\6\3\0"+ - "\4\6\2\0\6\6\4\0\15\6\5\0\3\6\1\0\7\6\3\0"+ - "\14\0\2\0\32\0\1\113\1\113\25\0\2\7\23\0\1\7\33\0"+ - "\1\0\1\6\15\0\1\6\20\0\15\6\63\0\15\7\4\0\1\7"+ - "\3\0\14\7\21\0\1\6\4\0\1\6\2\0\12\6\1\0\1\6"+ - "\3\0\5\6\6\0\1\6\1\0\1\6\1\0\1\6\1\0\4\6"+ - "\1\0\13\6\2\0\4\6\5\0\5\6\4\0\1\6\21\0\43\7"+ - "\2\6\4\7\7\0\u0a70\0\57\6\1\0\57\6\1\0\205\6\6\0"+ - "\4\6\3\7\2\6\14\0\46\6\1\0\1\6\5\0\1\6\2\0"+ - "\70\6\7\0\1\6\17\0\1\7\27\6\11\0\7\6\1\0\7\6"+ - "\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6"+ - "\1\0\7\6\1\0\40\7\57\0\1\6\u01c0\0\21\0\4\0\2\6"+ - "\1\7\31\0\17\7\1\0\5\6\2\0\3\7\2\6\4\0\126\6"+ - "\2\0\2\7\2\0\3\6\1\0\132\6\1\0\4\6\5\0\51\6"+ - "\3\0\136\6\21\0\33\6\65\0\20\6\u0200\0\u19b6\6\112\0\u51cd\6"+ - "\63\0\u048d\6\103\0\56\6\2\0\u010d\6\3\0\20\6\12\7\2\6"+ - "\24\0\57\6\1\7\4\0\12\7\1\0\37\6\1\0\1\7\106\6"+ - "\14\7\45\0\11\6\2\0\147\6\2\0\4\6\1\0\36\6\2\0"+ - "\2\6\105\0\13\6\1\7\3\6\1\7\4\6\1\7\27\6\5\7"+ - "\30\0\64\6\14\0\2\7\62\6\21\7\13\0\12\7\6\0\22\7"+ - "\6\6\3\0\1\6\4\0\12\7\34\6\10\7\2\0\27\6\15\7"+ - "\14\0\35\6\3\0\4\7\57\6\16\7\16\0\1\6\12\7\6\0"+ - "\5\6\1\7\12\6\12\7\5\6\1\0\51\6\16\7\11\0\3\6"+ - "\1\7\10\6\2\7\2\0\12\7\6\0\27\6\3\0\1\6\3\7"+ - "\62\6\1\7\1\6\3\7\2\6\2\7\5\6\2\7\1\6\1\7"+ - "\1\6\30\0\3\6\2\0\13\6\5\7\2\0\3\6\2\7\12\0"+ - "\6\6\2\0\6\6\2\0\6\6\11\0\7\6\1\0\7\6\1\0"+ - "\53\6\1\0\4\6\4\0\2\6\132\0\43\6\10\7\1\0\2\7"+ - "\2\0\12\7\6\0\u2ba4\6\14\0\27\6\4\0\61\6\4\0\u1800\0"+ - "\u0900\0\u016e\6\2\0\152\6\46\0\7\6\14\0\5\6\5\0\1\6"+ - "\1\7\12\6\1\0\15\6\1\0\5\6\1\0\1\6\1\0\2\6"+ - "\1\0\2\6\1\0\154\6\41\0\u016b\6\22\0\100\6\2\0\66\6"+ - "\10\0\40\0\14\6\4\0\20\7\20\0\16\7\5\0\2\7\30\0"+ - "\3\7\40\0\5\6\1\0\207\6\23\0\12\7\7\0\32\6\4\0"+ - "\1\7\1\0\32\6\13\0\131\6\3\0\6\6\2\0\6\6\2\0"+ - "\6\6\2\0\3\6\41\0\2\0\14\6\1\0\32\6\1\0\23\6"+ - "\1\0\2\6\1\0\17\6\2\0\16\6\42\0\173\6\105\0\65\7"+ - "\210\0\1\7\202\0\35\6\3\0\61\6\17\0\1\7\37\0\40\6"+ - "\20\0\21\6\1\7\10\6\1\7\5\0\46\6\5\7\5\0\36\6"+ - "\2\0\44\6\4\0\10\6\1\0\5\7\52\0\236\6\2\0\12\7"+ - "\126\0\50\6\10\0\64\6\234\0\u0137\6\11\0\26\6\12\0\10\6"+ - "\230\0\6\6\2\0\1\6\1\0\54\6\1\0\2\6\3\0\1\6"+ - "\2\0\27\6\12\0\27\6\11\0\37\6\141\0\26\6\12\0\32\6"+ - "\106\0\70\6\6\0\2\6\100\0\1\6\3\7\1\0\2\7\5\0"+ - "\4\7\4\6\1\0\3\6\1\0\33\6\4\0\3\7\4\0\1\7"+ - "\40\0\35\6\3\0\35\6\43\0\10\6\1\0\34\6\2\7\31\0"+ - "\66\6\12\0\26\6\12\0\23\6\15\0\22\6\156\0\111\6\u03b7\0"+ - "\3\7\65\6\17\7\37\0\12\7\17\0\4\7\55\6\13\7\25\0"+ - "\31\6\7\0\12\7\6\0\3\7\44\6\16\7\1\0\12\7\20\0"+ - "\43\6\1\7\2\0\1\6\11\0\3\7\60\6\16\7\4\6\13\0"+ - "\12\7\1\6\45\0\22\6\1\0\31\6\14\7\170\0\57\6\14\7"+ - "\5\0\12\7\7\0\3\7\1\0\10\6\2\0\2\6\2\0\26\6"+ - "\1\0\7\6\1\0\2\6\1\0\5\6\2\0\1\7\1\6\7\7"+ - "\2\0\2\7\2\0\3\7\11\0\1\7\5\0\5\6\2\7\2\0"+ - "\7\7\3\0\5\7\u010b\0\60\6\24\7\2\6\1\0\1\6\10\0"+ - "\12\7\246\0\57\6\7\7\2\0\11\7\77\0\60\6\21\7\3\0"+ - "\1\6\13\0\12\7\46\0\53\6\15\7\10\0\12\7\u01d6\0\100\6"+ - "\12\7\25\0\1\6\u01c0\0\71\6\u0507\0\u0399\6\147\0\157\7\u0b91\0"+ - "\u042f\6\u33d1\0\u0239\6\7\0\37\6\1\0\12\7\146\0\36\6\2\0"+ - "\5\7\13\0\60\6\7\7\11\0\4\6\14\0\12\7\11\0\25\6"+ - "\5\0\23\6\u0370\0\105\6\13\0\1\6\56\7\20\0\4\7\15\6"+ - "\u4060\0\2\6\u0bfe\0\153\6\5\0\15\6\3\0\11\6\7\0\12\6"+ - "\3\0\2\7\u14c6\0\5\7\3\0\6\7\10\0\10\7\2\0\7\7"+ - "\36\0\4\7\224\0\3\7\u01bb\0\125\6\1\0\107\6\1\0\2\6"+ - "\2\0\1\6\2\0\2\6\2\0\4\6\1\0\14\6\1\0\1\6"+ - "\1\0\7\6\1\0\101\6\1\0\4\6\2\0\10\6\1\0\7\6"+ - "\1\0\34\6\1\0\4\6\1\0\5\6\1\0\1\6\3\0\7\6"+ - "\1\0\u0154\6\2\0\31\6\1\0\31\6\1\0\37\6\1\0\31\6"+ - "\1\0\37\6\1\0\31\6\1\0\37\6\1\0\31\6\1\0\37\6"+ - "\1\0\31\6\1\0\10\6\2\0\62\7\u1000\0\305\6\13\0\7\7"+ - "\u0529\0\4\6\1\0\33\6\1\0\2\6\1\0\1\6\2\0\1\6"+ - "\1\0\12\6\1\0\4\6\1\0\1\6\1\0\1\6\6\0\1\6"+ - "\4\0\1\6\1\0\1\6\1\0\1\6\1\0\3\6\1\0\2\6"+ - "\1\0\1\6\2\0\1\6\1\0\1\6\1\0\1\6\1\0\1\6"+ - "\1\0\1\6\1\0\2\6\1\0\1\6\2\0\4\6\1\0\7\6"+ - "\1\0\4\6\1\0\4\6\1\0\1\6\1\0\12\6\1\0\21\6"+ - "\5\0\3\6\1\0\5\6\1\0\21\6\u1144\0\ua6d7\6\51\0\u1035\6"+ - "\13\0\336\6\u3fe2\0\u021e\6\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u06ed\0"+ - "\360\7\uffff\0\uffff\0\ufe12\0"; + public static final int CHARLITERAL = 4; - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); + public static final int XMLOPENTAG = 6; - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); + public static final int XMLOPENTAGATTRIB = 8; - private static final String ZZ_ACTION_PACKED_0 = - "\13\0\1\1\2\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\15\2\6\1\24\1\25"+ - "\21\6\1\26\1\27\1\30\1\31\1\32\1\33\1\34"+ - "\1\35\1\36\1\37\1\40\1\41\1\42\2\43\1\44"+ - "\1\1\1\42\2\45\2\46\1\42\2\1\1\47\1\50"+ - "\1\1\1\51\2\1\1\52\1\1\1\53\2\42\2\54"+ - "\2\42\1\55\1\42\1\1\1\56\1\3\1\0\1\57"+ - "\1\60\1\61\1\62\1\63\1\64\1\65\1\66\1\67"+ - "\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\0"+ - "\1\77\1\63\1\100\1\0\2\100\7\6\1\101\1\102"+ - "\2\6\1\103\16\6\1\104\1\105\1\106\4\6\1\107"+ - "\13\6\1\110\1\111\1\112\1\113\1\114\1\115\1\116"+ - "\1\117\1\120\1\116\1\121\1\122\1\123\1\124\1\125"+ - "\1\126\1\116\1\127\1\0\1\130\1\0\1\131\1\0"+ - "\1\132\1\133\1\0\1\134\4\0\1\135\2\0\1\136"+ - "\4\137\2\3\2\0\1\140\1\141\1\142\1\143\1\144"+ - "\1\0\1\63\1\145\2\146\1\100\1\6\1\147\13\6"+ - "\1\150\4\6\1\151\4\6\1\152\6\6\1\153\12\6"+ - "\1\154\1\6\1\155\1\6\1\156\3\0\1\134\1\157"+ - "\1\160\1\0\1\161\2\0\1\162\1\163\1\164\1\0"+ - "\1\165\1\146\1\100\4\6\1\166\1\167\2\6\1\170"+ - "\12\6\1\171\1\172\1\6\1\173\11\6\1\174\5\6"+ - "\1\175\1\6\1\176\2\0\1\177\1\200\1\0\1\146"+ - "\1\100\1\201\1\202\2\6\1\203\1\6\1\204\1\205"+ - "\1\6\1\206\1\6\1\207\4\6\1\210\11\6\1\211"+ - "\5\6\1\0\1\146\1\100\3\6\1\212\1\6\1\213"+ - "\1\214\1\6\1\215\1\6\1\216\3\6\1\217\3\6"+ - "\1\220\4\6\1\221\1\6\1\0\1\146\1\100\1\222"+ - "\1\6\1\223\10\6\1\224\1\225\1\6\1\226\1\227"+ - "\1\6\1\0\1\146\1\100\1\230\1\231\1\232\3\6"+ - "\1\233\3\6\1\234\1\0\1\146\1\100\1\235\1\6"+ - "\1\236\1\6\1\237\1\240\1\241\1\146\1\100\1\242"+ - "\1\243\6\100"; + public static final int XMLINSTROPENTAG = 10; - private static int [] zzUnpackAction() { - int [] result = new int[446]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } + public static final int XMLINSTRATTRIB = 12; - 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); + public static final int XMLCDATA = 14; + + public static final int XMLCOMMENT = 16; + + public static final int XML = 18; + + public static final int OIDENTIFIER = 20; + + /** + * 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, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8, 9, 9, 10, 10 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED + = "\11\0\1\13\1\2\1\113\1\3\1\1\22\0\1\13\1\14\1\33" + + "\1\0\1\6\1\110\1\105\1\34\1\76\1\77\1\5\1\45\1\103" + + "\1\15\1\11\1\4\1\35\3\41\4\42\2\21\1\17\1\102\1\12" + + "\1\32\1\16\1\23\1\111\1\27\1\20\1\25\1\26\1\43\1\20" + + "\2\10\1\74\4\10\1\75\5\10\1\30\3\10\1\37\2\10\1\24" + + "\1\46\1\31\1\107\1\10\1\0\1\52\1\50\1\54\1\63\1\44" + + "\1\40\1\73\1\66\1\61\1\10\1\53\1\64\1\71\1\57\1\56" + + "\1\67\1\10\1\51\1\55\1\60\1\62\1\72\1\65\1\36\1\70" + + "\1\10\1\100\1\106\1\101\1\104\6\0\1\113\41\0\1\47\2\0" + + "\1\6\12\0\1\6\1\0\1\22\2\0\1\6\5\0\2\6\1\112" + + "\24\6\1\0\37\6\1\0\u01ca\6\4\0\14\6\16\0\5\6\7\0" + + "\1\6\1\0\1\6\21\0\160\7\5\6\1\0\2\6\2\0\4\6" + + "\1\0\1\6\6\0\1\6\1\0\3\6\1\0\1\6\1\0\24\6" + + "\1\0\123\6\1\0\213\6\1\0\5\7\2\0\246\6\1\0\46\6" + + "\2\0\1\6\7\0\47\6\11\0\55\7\1\0\1\7\1\0\2\7" + + "\1\0\2\7\1\0\1\7\10\0\33\6\5\0\3\6\35\0\13\7" + + "\5\0\53\6\37\7\4\0\2\6\1\7\143\6\1\0\1\6\7\7" + + "\2\0\6\7\2\6\2\7\1\0\4\7\2\6\12\7\3\6\2\0" + + "\1\6\20\0\1\6\1\7\36\6\33\7\2\0\131\6\13\7\1\6" + + "\16\0\12\7\41\6\11\7\2\6\4\0\1\6\5\0\26\6\4\7" + + "\1\6\11\7\1\6\3\7\1\6\5\7\22\0\31\6\3\7\104\0" + + "\23\6\61\0\40\7\66\6\3\7\1\6\22\7\1\6\7\7\12\6" + + "\2\7\2\0\12\7\1\0\20\6\3\7\1\0\10\6\2\0\2\6" + + "\2\0\26\6\1\0\7\6\1\0\1\6\3\0\4\6\2\0\1\7" + + "\1\6\7\7\2\0\2\7\2\0\3\7\1\6\10\0\1\7\4\0" + + "\2\6\1\0\3\6\2\7\2\0\12\7\2\6\17\0\3\7\1\0" + + "\6\6\4\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0" + + "\2\6\1\0\2\6\2\0\1\7\1\0\5\7\4\0\2\7\2\0" + + "\3\7\3\0\1\7\7\0\4\6\1\0\1\6\7\0\14\7\3\6" + + "\1\7\13\0\3\7\1\0\11\6\1\0\3\6\1\0\26\6\1\0" + + "\7\6\1\0\2\6\1\0\5\6\2\0\1\7\1\6\10\7\1\0" + + "\3\7\1\0\3\7\2\0\1\6\17\0\2\6\2\7\2\0\12\7" + + "\21\0\3\7\1\0\10\6\2\0\2\6\2\0\26\6\1\0\7\6" + + "\1\0\2\6\1\0\5\6\2\0\1\7\1\6\7\7\2\0\2\7" + + "\2\0\3\7\10\0\2\7\4\0\2\6\1\0\3\6\2\7\2\0" + + "\12\7\1\0\1\6\20\0\1\7\1\6\1\0\6\6\3\0\3\6" + + "\1\0\4\6\3\0\2\6\1\0\1\6\1\0\2\6\3\0\2\6" + + "\3\0\3\6\3\0\14\6\4\0\5\7\3\0\3\7\1\0\4\7" + + "\2\0\1\6\6\0\1\7\16\0\12\7\20\0\4\7\1\0\10\6" + + "\1\0\3\6\1\0\27\6\1\0\20\6\3\0\1\6\7\7\1\0" + + "\3\7\1\0\4\7\7\0\2\7\1\0\2\6\6\0\2\6\2\7" + + "\2\0\12\7\21\0\3\7\1\0\10\6\1\0\3\6\1\0\27\6" + + "\1\0\12\6\1\0\5\6\2\0\1\7\1\6\7\7\1\0\3\7" + + "\1\0\4\7\7\0\2\7\7\0\1\6\1\0\2\6\2\7\2\0" + + "\12\7\1\0\2\6\16\0\3\7\1\0\10\6\1\0\3\6\1\0" + + "\51\6\2\0\1\6\7\7\1\0\3\7\1\0\4\7\1\6\10\0" + + "\1\7\10\0\2\6\2\7\2\0\12\7\12\0\6\6\2\0\2\7" + + "\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6\2\0\7\6" + + "\3\0\1\7\4\0\6\7\1\0\1\7\1\0\10\7\6\0\12\7" + + "\2\0\2\7\15\0\60\6\1\7\2\6\7\7\5\0\7\6\10\7" + + "\1\0\12\7\47\0\2\6\1\0\1\6\2\0\2\6\1\0\1\6" + + "\2\0\1\6\6\0\4\6\1\0\7\6\1\0\3\6\1\0\1\6" + + "\1\0\1\6\2\0\2\6\1\0\4\6\1\7\2\6\6\7\1\0" + + "\2\7\1\6\2\0\5\6\1\0\1\6\1\0\6\7\2\0\12\7" + + "\2\0\4\6\40\0\1\6\27\0\2\7\6\0\12\7\13\0\1\7" + + "\1\0\1\7\1\0\1\7\4\0\2\7\10\6\1\0\44\6\4\0" + + "\24\7\1\0\2\7\5\6\13\7\1\0\44\7\11\0\1\7\71\0" + + "\53\6\24\7\1\6\12\7\6\0\6\6\4\7\4\6\3\7\1\6" + + "\3\7\2\6\7\7\3\6\4\7\15\6\14\7\1\6\17\7\2\0" + + "\46\6\1\0\1\6\5\0\1\6\2\0\53\6\1\0\u014d\6\1\0" + + "\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0\51\6\1\0" + + "\4\6\2\0\41\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0" + + "\4\6\2\0\17\6\1\0\71\6\1\0\4\6\2\0\103\6\2\0" + + "\3\7\40\0\20\6\20\0\125\6\14\0\u026c\6\2\0\21\6\1\0" + + "\32\6\5\0\113\6\3\0\3\7\10\6\7\0\15\6\1\0\4\6" + + "\3\7\13\0\22\6\3\7\13\0\22\6\2\7\14\0\15\6\1\0" + + "\3\6\1\0\2\7\14\0\64\6\40\7\3\0\1\6\4\0\1\6" + + "\1\7\2\0\12\7\41\0\3\7\2\0\12\7\6\0\130\6\10\0" + + "\51\6\1\7\1\6\5\0\106\6\12\0\37\6\1\0\14\7\4\0" + + "\14\7\12\0\12\7\36\6\2\0\5\6\13\0\54\6\4\0\21\7" + + "\7\6\2\7\6\0\12\7\46\0\27\6\5\7\4\0\65\6\12\7" + + "\1\0\35\7\2\0\13\7\6\0\12\7\15\0\1\6\10\0\16\7" + + "\102\0\5\7\57\6\21\7\7\6\4\0\12\7\21\0\11\7\14\0" + + "\3\7\36\6\15\7\2\6\12\7\54\6\16\7\14\0\44\6\24\7" + + "\10\0\12\7\3\0\3\6\12\7\44\6\122\0\3\7\1\0\25\7" + + "\4\6\1\7\4\6\3\7\2\6\1\0\2\7\6\0\300\6\66\7" + + "\6\0\4\7\u0116\6\2\0\6\6\2\0\46\6\2\0\6\6\2\0" + + "\10\6\1\0\1\6\1\0\1\6\1\0\1\6\1\0\37\6\2\0" + + "\65\6\1\0\7\6\1\0\1\6\3\0\3\6\1\0\7\6\3\0" + + "\4\6\2\0\6\6\4\0\15\6\5\0\3\6\1\0\7\6\3\0" + + "\14\0\2\0\32\0\1\113\1\113\25\0\2\7\23\0\1\7\33\0" + + "\1\0\1\6\15\0\1\6\20\0\15\6\63\0\15\7\4\0\1\7" + + "\3\0\14\7\21\0\1\6\4\0\1\6\2\0\12\6\1\0\1\6" + + "\3\0\5\6\6\0\1\6\1\0\1\6\1\0\1\6\1\0\4\6" + + "\1\0\13\6\2\0\4\6\5\0\5\6\4\0\1\6\21\0\43\7" + + "\2\6\4\7\7\0\u0a70\0\57\6\1\0\57\6\1\0\205\6\6\0" + + "\4\6\3\7\2\6\14\0\46\6\1\0\1\6\5\0\1\6\2\0" + + "\70\6\7\0\1\6\17\0\1\7\27\6\11\0\7\6\1\0\7\6" + + "\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6" + + "\1\0\7\6\1\0\40\7\57\0\1\6\u01c0\0\21\0\4\0\2\6" + + "\1\7\31\0\17\7\1\0\5\6\2\0\3\7\2\6\4\0\126\6" + + "\2\0\2\7\2\0\3\6\1\0\132\6\1\0\4\6\5\0\51\6" + + "\3\0\136\6\21\0\33\6\65\0\20\6\u0200\0\u19b6\6\112\0\u51cd\6" + + "\63\0\u048d\6\103\0\56\6\2\0\u010d\6\3\0\20\6\12\7\2\6" + + "\24\0\57\6\1\7\4\0\12\7\1\0\37\6\1\0\1\7\106\6" + + "\14\7\45\0\11\6\2\0\147\6\2\0\4\6\1\0\36\6\2\0" + + "\2\6\105\0\13\6\1\7\3\6\1\7\4\6\1\7\27\6\5\7" + + "\30\0\64\6\14\0\2\7\62\6\21\7\13\0\12\7\6\0\22\7" + + "\6\6\3\0\1\6\4\0\12\7\34\6\10\7\2\0\27\6\15\7" + + "\14\0\35\6\3\0\4\7\57\6\16\7\16\0\1\6\12\7\6\0" + + "\5\6\1\7\12\6\12\7\5\6\1\0\51\6\16\7\11\0\3\6" + + "\1\7\10\6\2\7\2\0\12\7\6\0\27\6\3\0\1\6\3\7" + + "\62\6\1\7\1\6\3\7\2\6\2\7\5\6\2\7\1\6\1\7" + + "\1\6\30\0\3\6\2\0\13\6\5\7\2\0\3\6\2\7\12\0" + + "\6\6\2\0\6\6\2\0\6\6\11\0\7\6\1\0\7\6\1\0" + + "\53\6\1\0\4\6\4\0\2\6\132\0\43\6\10\7\1\0\2\7" + + "\2\0\12\7\6\0\u2ba4\6\14\0\27\6\4\0\61\6\4\0\u1800\0" + + "\u0900\0\u016e\6\2\0\152\6\46\0\7\6\14\0\5\6\5\0\1\6" + + "\1\7\12\6\1\0\15\6\1\0\5\6\1\0\1\6\1\0\2\6" + + "\1\0\2\6\1\0\154\6\41\0\u016b\6\22\0\100\6\2\0\66\6" + + "\10\0\40\0\14\6\4\0\20\7\20\0\16\7\5\0\2\7\30\0" + + "\3\7\40\0\5\6\1\0\207\6\23\0\12\7\7\0\32\6\4\0" + + "\1\7\1\0\32\6\13\0\131\6\3\0\6\6\2\0\6\6\2\0" + + "\6\6\2\0\3\6\41\0\2\0\14\6\1\0\32\6\1\0\23\6" + + "\1\0\2\6\1\0\17\6\2\0\16\6\42\0\173\6\105\0\65\7" + + "\210\0\1\7\202\0\35\6\3\0\61\6\17\0\1\7\37\0\40\6" + + "\20\0\21\6\1\7\10\6\1\7\5\0\46\6\5\7\5\0\36\6" + + "\2\0\44\6\4\0\10\6\1\0\5\7\52\0\236\6\2\0\12\7" + + "\126\0\50\6\10\0\64\6\234\0\u0137\6\11\0\26\6\12\0\10\6" + + "\230\0\6\6\2\0\1\6\1\0\54\6\1\0\2\6\3\0\1\6" + + "\2\0\27\6\12\0\27\6\11\0\37\6\141\0\26\6\12\0\32\6" + + "\106\0\70\6\6\0\2\6\100\0\1\6\3\7\1\0\2\7\5\0" + + "\4\7\4\6\1\0\3\6\1\0\33\6\4\0\3\7\4\0\1\7" + + "\40\0\35\6\3\0\35\6\43\0\10\6\1\0\34\6\2\7\31\0" + + "\66\6\12\0\26\6\12\0\23\6\15\0\22\6\156\0\111\6\u03b7\0" + + "\3\7\65\6\17\7\37\0\12\7\17\0\4\7\55\6\13\7\25\0" + + "\31\6\7\0\12\7\6\0\3\7\44\6\16\7\1\0\12\7\20\0" + + "\43\6\1\7\2\0\1\6\11\0\3\7\60\6\16\7\4\6\13\0" + + "\12\7\1\6\45\0\22\6\1\0\31\6\14\7\170\0\57\6\14\7" + + "\5\0\12\7\7\0\3\7\1\0\10\6\2\0\2\6\2\0\26\6" + + "\1\0\7\6\1\0\2\6\1\0\5\6\2\0\1\7\1\6\7\7" + + "\2\0\2\7\2\0\3\7\11\0\1\7\5\0\5\6\2\7\2\0" + + "\7\7\3\0\5\7\u010b\0\60\6\24\7\2\6\1\0\1\6\10\0" + + "\12\7\246\0\57\6\7\7\2\0\11\7\77\0\60\6\21\7\3\0" + + "\1\6\13\0\12\7\46\0\53\6\15\7\10\0\12\7\u01d6\0\100\6" + + "\12\7\25\0\1\6\u01c0\0\71\6\u0507\0\u0399\6\147\0\157\7\u0b91\0" + + "\u042f\6\u33d1\0\u0239\6\7\0\37\6\1\0\12\7\146\0\36\6\2\0" + + "\5\7\13\0\60\6\7\7\11\0\4\6\14\0\12\7\11\0\25\6" + + "\5\0\23\6\u0370\0\105\6\13\0\1\6\56\7\20\0\4\7\15\6" + + "\u4060\0\2\6\u0bfe\0\153\6\5\0\15\6\3\0\11\6\7\0\12\6" + + "\3\0\2\7\u14c6\0\5\7\3\0\6\7\10\0\10\7\2\0\7\7" + + "\36\0\4\7\224\0\3\7\u01bb\0\125\6\1\0\107\6\1\0\2\6" + + "\2\0\1\6\2\0\2\6\2\0\4\6\1\0\14\6\1\0\1\6" + + "\1\0\7\6\1\0\101\6\1\0\4\6\2\0\10\6\1\0\7\6" + + "\1\0\34\6\1\0\4\6\1\0\5\6\1\0\1\6\3\0\7\6" + + "\1\0\u0154\6\2\0\31\6\1\0\31\6\1\0\37\6\1\0\31\6" + + "\1\0\37\6\1\0\31\6\1\0\37\6\1\0\31\6\1\0\37\6" + + "\1\0\31\6\1\0\10\6\2\0\62\7\u1000\0\305\6\13\0\7\7" + + "\u0529\0\4\6\1\0\33\6\1\0\2\6\1\0\1\6\2\0\1\6" + + "\1\0\12\6\1\0\4\6\1\0\1\6\1\0\1\6\6\0\1\6" + + "\4\0\1\6\1\0\1\6\1\0\1\6\1\0\3\6\1\0\2\6" + + "\1\0\1\6\2\0\1\6\1\0\1\6\1\0\1\6\1\0\1\6" + + "\1\0\1\6\1\0\2\6\1\0\1\6\2\0\4\6\1\0\7\6" + + "\1\0\4\6\1\0\4\6\1\0\1\6\1\0\12\6\1\0\21\6" + + "\5\0\3\6\1\0\5\6\1\0\21\6\u1144\0\ua6d7\6\51\0\u1035\6" + + "\13\0\336\6\u3fe2\0\u021e\6\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u06ed\0" + + "\360\7\uffff\0\uffff\0\ufe12\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 + = "\13\0\1\1\2\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\15\2\6\1\24\1\25" + + "\21\6\1\26\1\27\1\30\1\31\1\32\1\33\1\34" + + "\1\35\1\36\1\37\1\40\1\41\1\42\2\43\1\44" + + "\1\1\1\42\2\45\2\46\1\42\2\1\1\47\1\50" + + "\1\1\1\51\2\1\1\52\1\1\1\53\2\42\2\54" + + "\2\42\1\55\1\42\1\1\1\56\1\3\1\0\1\57" + + "\1\60\1\61\1\62\1\63\1\64\1\65\1\66\1\67" + + "\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\0" + + "\1\77\1\63\1\100\1\0\2\100\7\6\1\101\1\102" + + "\2\6\1\103\16\6\1\104\1\105\1\106\4\6\1\107" + + "\13\6\1\110\1\111\1\112\1\113\1\114\1\115\1\116" + + "\1\117\1\120\1\116\1\121\1\122\1\123\1\124\1\125" + + "\1\126\1\116\1\127\1\0\1\130\1\0\1\131\1\0" + + "\1\132\1\133\1\0\1\134\4\0\1\135\2\0\1\136" + + "\4\137\2\3\2\0\1\140\1\141\1\142\1\143\1\144" + + "\1\0\1\63\1\145\2\146\1\100\1\6\1\147\13\6" + + "\1\150\4\6\1\151\4\6\1\152\6\6\1\153\12\6" + + "\1\154\1\6\1\155\1\6\1\156\3\0\1\134\1\157" + + "\1\160\1\0\1\161\2\0\1\162\1\163\1\164\1\0" + + "\1\165\1\146\1\100\4\6\1\166\1\167\2\6\1\170" + + "\12\6\1\171\1\172\1\6\1\173\11\6\1\174\5\6" + + "\1\175\1\6\1\176\2\0\1\177\1\200\1\0\1\146" + + "\1\100\1\201\1\202\2\6\1\203\1\6\1\204\1\205" + + "\1\6\1\206\1\6\1\207\4\6\1\210\11\6\1\211" + + "\5\6\1\0\1\146\1\100\3\6\1\212\1\6\1\213" + + "\1\214\1\6\1\215\1\6\1\216\3\6\1\217\3\6" + + "\1\220\4\6\1\221\1\6\1\0\1\146\1\100\1\222" + + "\1\6\1\223\10\6\1\224\1\225\1\6\1\226\1\227" + + "\1\6\1\0\1\146\1\100\1\230\1\231\1\232\3\6" + + "\1\233\3\6\1\234\1\0\1\146\1\100\1\235\1\6" + + "\1\236\1\6\1\237\1\240\1\241\1\146\1\100\1\242" + + "\1\243\6\100"; + + private static int[] zzUnpackAction() { + int[] result = new int[446]; + int offset = 0; + offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); + return result; } - return j; - } + private static int zzUnpackAction(String packed, int offset, int[] result) { + int i = 0; /* index in packed string */ - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); + int j = offset; /* index in unpacked array */ - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\114\0\230\0\344\0\u0130\0\u017c\0\u01c8\0\u0214"+ - "\0\u0260\0\u02ac\0\u02f8\0\u0344\0\u0390\0\u0344\0\u03dc\0\u0428"+ - "\0\u0474\0\u04c0\0\u050c\0\u0558\0\u05a4\0\u05f0\0\u063c\0\u0688"+ - "\0\u06d4\0\u0344\0\u0344\0\u0344\0\u0720\0\u0344\0\u0344\0\u076c"+ - "\0\u07b8\0\u0804\0\u0850\0\u0344\0\u089c\0\u08e8\0\u0934\0\u0980"+ - "\0\u09cc\0\u0a18\0\u0a64\0\u0ab0\0\u0afc\0\u0b48\0\u0b94\0\u0be0"+ - "\0\u0c2c\0\u0c78\0\u0cc4\0\u0d10\0\u0d5c\0\u0344\0\u0344\0\u0344"+ - "\0\u0344\0\u0344\0\u0344\0\u0344\0\u0da8\0\u0df4\0\u0e40\0\u0e8c"+ - "\0\u0344\0\u0ed8\0\u0f24\0\u0344\0\u0344\0\u0f70\0\u0fbc\0\u1008"+ - "\0\u0344\0\u1054\0\u0344\0\u10a0\0\u10ec\0\u1138\0\u0344\0\u0344"+ - "\0\u1184\0\u0344\0\u11d0\0\u121c\0\u0344\0\u1268\0\u0344\0\u0344"+ - "\0\u12b4\0\u1300\0\u0344\0\u134c\0\u1398\0\u0344\0\u13e4\0\u1430"+ - "\0\u0344\0\u147c\0\u14c8\0\u0344\0\u0344\0\u1514\0\u0344\0\u1560"+ - "\0\u0344\0\u15ac\0\u15f8\0\u0344\0\u0344\0\u1644\0\u0344\0\u0344"+ - "\0\u1690\0\u0344\0\u0344\0\u16dc\0\u1728\0\u1774\0\u17c0\0\u180c"+ - "\0\u1858\0\u18a4\0\u18f0\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c"+ - "\0\u1ab8\0\u0344\0\u0344\0\u1b04\0\u1b50\0\u04c0\0\u1b9c\0\u1be8"+ - "\0\u1c34\0\u1c80\0\u1ccc\0\u1d18\0\u1d64\0\u1db0\0\u1dfc\0\u1e48"+ - "\0\u1e94\0\u1ee0\0\u1f2c\0\u1f78\0\u04c0\0\u04c0\0\u1fc4\0\u2010"+ - "\0\u205c\0\u20a8\0\u20f4\0\u04c0\0\u2140\0\u218c\0\u21d8\0\u2224"+ - "\0\u2270\0\u22bc\0\u2308\0\u2354\0\u23a0\0\u23ec\0\u2438\0\u0344"+ - "\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344"+ - "\0\u2484\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u24d0"+ - "\0\u0344\0\u1138\0\u0344\0\u1184\0\u0344\0\u11d0\0\u0344\0\u0344"+ - "\0\u1268\0\u251c\0\u2568\0\u25b4\0\u2600\0\u264c\0\u2698\0\u26e4"+ - "\0\u2730\0\u0344\0\u0344\0\u2484\0\u24d0\0\u277c\0\u27c8\0\u0344"+ - "\0\u2814\0\u2860\0\u0344\0\u0344\0\u0344\0\u28ac\0\u0344\0\u28f8"+ - "\0\u28f8\0\u0344\0\u2944\0\u180c\0\u2990\0\u29dc\0\u04c0\0\u2a28"+ - "\0\u2a74\0\u2ac0\0\u2b0c\0\u2b58\0\u2ba4\0\u2bf0\0\u2c3c\0\u2c88"+ - "\0\u2cd4\0\u2d20\0\u04c0\0\u2d6c\0\u2db8\0\u2e04\0\u2e50\0\u04c0"+ - "\0\u2e9c\0\u2ee8\0\u2f34\0\u2f80\0\u04c0\0\u2fcc\0\u3018\0\u3064"+ - "\0\u30b0\0\u30fc\0\u3148\0\u04c0\0\u3194\0\u31e0\0\u322c\0\u3278"+ - "\0\u32c4\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u3440\0\u04c0\0\u348c"+ - "\0\u04c0\0\u34d8\0\u04c0\0\u3524\0\u3570\0\u251c\0\u0344\0\u0344"+ - "\0\u0344\0\u35bc\0\u0344\0\u3608\0\u3654\0\u36a0\0\u0344\0\u0344"+ - "\0\u36ec\0\u0344\0\u3738\0\u3784\0\u37d0\0\u381c\0\u3868\0\u38b4"+ - "\0\u04c0\0\u04c0\0\u3900\0\u394c\0\u04c0\0\u3998\0\u39e4\0\u3a30"+ - "\0\u3a7c\0\u3ac8\0\u3b14\0\u3b60\0\u3bac\0\u3bf8\0\u3c44\0\u04c0"+ - "\0\u04c0\0\u3c90\0\u04c0\0\u3cdc\0\u3d28\0\u3d74\0\u3dc0\0\u3e0c"+ - "\0\u3e58\0\u3ea4\0\u3ef0\0\u3f3c\0\u04c0\0\u3f88\0\u3fd4\0\u4020"+ - "\0\u406c\0\u40b8\0\u04c0\0\u4104\0\u0344\0\u2484\0\u4150\0\u0344"+ - "\0\u0344\0\u419c\0\u41e8\0\u4234\0\u04c0\0\u4280\0\u42cc\0\u4318"+ - "\0\u04c0\0\u4364\0\u04c0\0\u04c0\0\u43b0\0\u04c0\0\u43fc\0\u04c0"+ - "\0\u4448\0\u4494\0\u44e0\0\u452c\0\u04c0\0\u4578\0\u45c4\0\u4610"+ - "\0\u465c\0\u46a8\0\u46f4\0\u4740\0\u478c\0\u47d8\0\u04c0\0\u4824"+ - "\0\u4870\0\u48bc\0\u4908\0\u4954\0\u49a0\0\u49ec\0\u4a38\0\u4a84"+ - "\0\u4ad0\0\u4b1c\0\u04c0\0\u4b68\0\u04c0\0\u04c0\0\u4bb4\0\u04c0"+ - "\0\u4c00\0\u04c0\0\u4c4c\0\u4c98\0\u4ce4\0\u04c0\0\u4d30\0\u4d7c"+ - "\0\u4dc8\0\u04c0\0\u4e14\0\u4e60\0\u4eac\0\u4ef8\0\u04c0\0\u4f44"+ - "\0\u4f90\0\u4fdc\0\u5028\0\u04c0\0\u5074\0\u04c0\0\u50c0\0\u510c"+ - "\0\u5158\0\u51a4\0\u51f0\0\u523c\0\u5288\0\u52d4\0\u04c0\0\u04c0"+ - "\0\u5320\0\u04c0\0\u04c0\0\u536c\0\u53b8\0\u5404\0\u5450\0\u04c0"+ - "\0\u04c0\0\u04c0\0\u549c\0\u54e8\0\u5534\0\u04c0\0\u5580\0\u55cc"+ - "\0\u5618\0\u04c0\0\u5664\0\u56b0\0\u56fc\0\u04c0\0\u5748\0\u04c0"+ - "\0\u5794\0\u04c0\0\u04c0\0\u0344\0\u0344\0\u57e0\0\u04c0\0\u04c0"+ - "\0\u582c\0\u5878\0\u58c4\0\u5910\0\u595c\0\u1774"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[446]; - 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++); + 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; } - return j; - } - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); + /** + * Translates a state to a row index in the transition table + */ + private static final int[] ZZ_ROWMAP = zzUnpackRowMap(); - private static final String ZZ_TRANS_PACKED_0 = - "\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\14"+ - "\1\22\1\23\1\24\1\17\1\25\1\26\1\27\1\30"+ - "\1\22\1\31\1\14\1\32\1\33\4\22\1\34\1\35"+ - "\1\36\1\37\1\40\2\22\1\41\2\31\1\22\1\42"+ - "\1\43\1\14\1\44\1\45\1\46\1\47\1\22\1\50"+ - "\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\22"+ - "\1\60\1\22\1\61\2\22\1\62\1\63\1\64\1\65"+ - "\1\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75"+ - "\1\76\1\77\1\100\1\101\1\22\1\14\1\102\1\103"+ - "\1\104\30\102\1\105\12\102\1\106\45\102\1\107\1\110"+ - "\1\111\31\107\1\105\11\107\1\106\45\107\1\14\1\112"+ - "\1\113\1\114\1\115\3\14\1\116\2\14\1\114\2\14"+ - "\1\117\2\116\4\14\4\116\5\14\3\116\2\14\2\116"+ - "\3\14\26\116\2\14\1\120\46\14\1\121\44\14\1\122"+ - "\14\14\1\112\1\113\1\114\4\14\1\123\2\14\1\114"+ - "\3\14\2\123\2\14\1\124\1\14\4\123\5\14\3\123"+ - "\2\14\2\123\3\14\26\123\2\14\1\125\46\14\1\126"+ - "\44\14\1\127\13\14\1\130\1\112\1\113\26\130\1\131"+ - "\63\130\1\132\1\133\12\130\1\134\77\130\1\112\1\113"+ - "\7\130\1\135\65\130\1\136\13\130\1\137\1\110\1\111"+ - "\43\137\1\140\1\141\44\137\116\0\1\16\114\0\1\17"+ - "\7\0\1\17\104\0\1\142\1\143\24\0\1\144\113\0"+ - "\1\145\67\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\26\22\14\0\1\22\12\0\1\146\1\147"+ - "\6\0\1\150\13\0\1\150\3\0\2\150\33\0\1\151"+ - "\25\0\1\152\1\0\1\153\4\0\2\152\4\0\4\152"+ - "\1\0\1\154\3\0\3\152\2\0\2\152\3\0\26\152"+ - "\2\0\1\155\45\0\1\156\76\0\1\157\14\0\1\160"+ - "\77\0\1\161\13\0\1\162\100\0\1\163\105\0\1\150"+ - "\7\0\1\31\13\0\1\31\3\0\2\31\2\164\101\0"+ - "\1\165\72\0\1\150\7\0\1\166\13\0\1\167\2\170"+ - "\1\0\1\171\1\172\2\164\55\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\2\22\1\173\3\22"+ - "\1\174\2\22\1\175\1\176\13\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\1\22\1\177"+ - "\6\22\3\0\2\22\1\200\11\22\1\201\11\22\14\0"+ - "\1\22\33\0\1\202\12\0\1\203\54\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\1\22\1\204"+ - "\24\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\7\22\1\205\3\0\26\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\5\22\1\206\20\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22"+ - "\1\207\3\22\1\210\5\22\1\211\11\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22"+ - "\1\212\3\0\10\22\1\213\1\22\1\214\2\22\1\215"+ - "\10\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\22\22\1\216\3\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\7\22\1\217\3\0\2\22\1\220\7\22\1\221\13\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\1\22\1\222\14\22\1\223\1\22"+ - "\1\224\5\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\3\22\1\225\4\22\3\0\5\22"+ - "\1\226\1\22\1\227\11\22\1\230\4\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\5\22\1\231\1\22\1\232\16\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22"+ - "\1\233\3\0\6\22\1\234\11\22\1\235\5\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\11\22\1\236\4\22\1\237\7\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\1\22\1\240\1\241\7\22\1\242\13\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\2\22\1\243\3\22\1\244\17\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\7\22\1\245\3\0\26\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\7\22\1\246\16\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\2\22\1\247"+ - "\23\22\14\0\1\22\33\0\1\250\52\0\1\251\40\0"+ - "\1\252\53\0\1\253\37\0\1\254\113\0\1\255\61\0"+ - "\1\102\2\0\30\102\1\0\12\102\1\0\45\102\2\0"+ - "\1\104\111\0\1\256\3\0\27\256\1\257\1\260\1\256"+ - "\1\261\1\256\1\262\5\256\1\263\1\256\1\264\1\265"+ - "\5\256\1\266\1\267\1\256\1\270\30\256\1\0\1\107"+ - "\2\0\31\107\1\0\11\107\1\0\45\107\2\0\1\111"+ - "\113\0\1\113\114\0\1\114\7\0\1\114\116\0\1\271"+ - "\105\0\2\272\3\0\1\272\1\0\4\272\2\0\4\272"+ - "\1\0\1\273\2\0\10\272\3\0\26\272\16\0\1\274"+ - "\2\0\30\274\1\275\60\274\10\0\2\276\3\0\1\276"+ - "\1\0\4\276\2\0\4\276\1\0\1\277\2\0\10\276"+ - "\3\0\26\276\34\0\1\300\75\0\1\301\2\0\30\301"+ - "\1\302\1\303\57\301\31\0\1\304\64\0\1\133\126\0"+ - "\1\305\102\0\1\306\3\0\1\307\3\0\1\310\2\0"+ - "\2\307\2\0\1\311\1\0\4\307\5\0\3\307\2\0"+ - "\2\307\3\0\26\307\2\0\1\312\13\0\1\137\2\0"+ - "\43\137\2\0\44\137\1\313\3\0\32\313\1\314\1\313"+ - "\1\262\5\313\1\263\1\313\1\264\1\265\5\313\1\266"+ - "\1\267\1\313\1\315\27\313\1\316\1\0\1\142\1\317"+ - "\1\320\111\142\5\321\1\322\106\321\11\0\1\323\123\0"+ - "\1\150\13\0\1\150\3\0\2\150\2\164\57\0\2\152"+ - "\3\0\1\152\1\0\4\152\2\0\4\152\4\0\10\152"+ - "\3\0\26\152\50\0\1\324\113\0\1\325\77\0\1\326"+ - "\13\0\1\327\76\0\1\330\3\0\1\331\13\0\1\331"+ - "\3\0\2\331\2\0\1\330\100\0\1\332\72\0\1\150"+ - "\7\0\1\166\13\0\1\166\3\0\2\166\2\164\60\0"+ - "\1\150\7\0\1\166\13\0\1\167\3\0\1\171\1\172"+ - "\2\164\67\0\2\333\3\0\3\333\5\0\1\334\2\0"+ - "\5\333\3\0\1\333\1\0\1\333\1\0\1\333\6\0"+ - "\1\333\41\0\1\150\7\0\1\166\13\0\1\172\3\0"+ - "\2\172\2\164\60\0\1\150\7\0\1\166\13\0\1\335"+ - "\3\0\2\335\2\164\55\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\14\22\1\336\11\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\1\22\1\337\24\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\7\22\1\340\16\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\7\22\1\341"+ - "\16\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\10\22\1\342\15\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\4\22\1\343\21\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\5\22\1\344\20\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\7\22\1\345\3\0\26\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\10\22\1\346\15\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\5\22\1\347\2\22\1\350\15\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\7\22\1\351\16\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22"+ - "\1\352\23\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\10\22\1\353\15\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\2\22\1\354\23\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\17\22\1\355\6\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\11\22"+ - "\1\356\14\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\7\22\1\357\3\0\26\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\15\22\1\360\10\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\10\22\1\361\10\22\1\362\4\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\14\22\1\363\11\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\12\22\1\364"+ - "\5\22\1\365\5\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\1\22\1\366"+ - "\7\22\1\367\14\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\17\22\1\370"+ - "\6\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\5\22\1\371\2\22\1\372"+ - "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\17\22\1\373\6\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\7\22\1\374\3\0\26\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\13\22"+ - "\1\375\12\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\3\22\1\376\4\22\3\0\14\22"+ - "\1\377\11\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\7\22\1\u0100\16\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\10\22\1\u0101\15\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\11\22\1\u0102\14\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\6\22"+ - "\1\u0103\2\22\1\u0104\14\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\4\22"+ - "\1\u0105\21\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\1\u0106\25\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\1\22\1\u0107\24\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\11\22\1\u0108\14\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u0109"+ - "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\3\22\1\u010a\4\22\3\0\26\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\25\22\1\u010b\14\0\1\22\21\0\2\u010c"+ - "\3\0\3\u010c\5\0\1\u010c\2\0\5\u010c\3\0\1\u010c"+ - "\1\0\1\u010c\1\0\1\u010c\6\0\1\u010c\50\0\2\u010d"+ - "\3\0\3\u010d\5\0\1\u010d\2\0\5\u010d\3\0\1\u010d"+ - "\1\0\1\u010d\1\0\1\u010d\6\0\1\u010d\30\0\1\u010e"+ - "\2\0\30\u010e\1\302\1\0\57\u010e\1\303\2\0\30\303"+ - "\1\u010f\60\303\16\0\1\u0110\113\0\1\u0111\105\0\1\u0112"+ - "\6\0\2\u0112\4\0\4\u0112\5\0\3\u0112\2\0\2\u0112"+ - "\3\0\26\u0112\2\0\1\u0113\23\0\2\307\3\0\1\307"+ - "\1\0\4\307\2\0\4\307\4\0\10\307\3\0\26\307"+ - "\33\0\1\u0114\6\0\1\u0115\77\0\1\u0116\6\0\2\u0116"+ - "\4\0\4\u0116\5\0\3\u0116\2\0\2\u0116\3\0\26\u0116"+ - "\2\0\1\u0117\62\0\1\u0118\46\0\1\320\111\0\5\321"+ - "\1\u0119\106\321\4\0\1\320\1\322\140\0\1\u011a\102\0"+ - "\1\331\13\0\1\331\3\0\2\331\71\0\2\u011b\3\0"+ - "\3\u011b\5\0\1\u011b\2\0\5\u011b\3\0\1\u011b\1\0"+ - "\1\u011b\1\0\1\u011b\6\0\1\u011b\41\0\1\150\7\0"+ - "\1\166\13\0\1\u011c\3\0\2\u011c\2\164\55\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\5\22"+ - "\1\u011d\20\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\2\22\1\u011e\23\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\4\22\1\u011f\21\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22"+ - "\1\u0120\3\0\26\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\16\22\1\u0121"+ - "\7\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\7\22\1\u0122\3\0\26\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\2\22\1\u0123\23\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\12\22"+ - "\1\u0124\13\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\7\22\1\u0125\3\0\26\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\4\22\1\u0126\21\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\5\22\1\u0127\2\22\1\u0128\15\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\5\22\1\u0129\20\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u012a"+ - "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\7\22\1\u012b\3\0\26\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\10\22\1\u012c\15\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\1\22"+ - "\1\u012d\24\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\11\22\1\u012e\14\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\7\22\1\u012f\3\0\26\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\14\22\1\u0130\11\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\7\22\1\u0131\3\0\26\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\6\22\1\u0132\17\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\5\22\1\u0133\20\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0134\3\0"+ - "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\10\22\1\u0135\15\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\7\22\1\u0136\3\0\26\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\6\22"+ - "\1\u0137\5\22\1\u0138\11\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0139\3\0"+ - "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\2\22\1\u013a\23\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\7\22\1\u013b\3\0\26\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22"+ - "\1\u013c\23\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\16\22\1\u013d\7\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\14\22\1\u013e\11\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\10\22\1\u013f\15\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\22\22"+ - "\1\u0140\3\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\3\22\1\u0141\22\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\14\22\1\u0142\11\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\13\22\1\u0143\12\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\11\22"+ - "\1\u0144\14\22\14\0\1\22\21\0\2\u0145\3\0\3\u0145"+ - "\5\0\1\u0145\2\0\5\u0145\3\0\1\u0145\1\0\1\u0145"+ - "\1\0\1\u0145\6\0\1\u0145\50\0\2\u0146\3\0\3\u0146"+ - "\5\0\1\u0146\2\0\5\u0146\3\0\1\u0146\1\0\1\u0146"+ - "\1\0\1\u0146\6\0\1\u0146\31\0\2\u0147\5\0\2\u0112"+ - "\1\0\1\u0147\1\0\1\u0112\1\u0148\4\u0112\2\0\4\u0112"+ - "\4\0\10\u0112\3\0\26\u0112\33\0\1\u0149\123\0\1\u014a"+ - "\76\0\2\u0116\3\0\1\u0116\1\0\4\u0116\2\0\4\u0116"+ - "\4\0\10\u0116\3\0\26\u0116\16\0\4\321\1\320\1\u0119"+ - "\106\321\20\0\2\u014b\3\0\3\u014b\5\0\1\u014b\2\0"+ - "\5\u014b\3\0\1\u014b\1\0\1\u014b\1\0\1\u014b\6\0"+ - "\1\u014b\41\0\1\150\7\0\1\166\13\0\1\u014c\3\0"+ - "\2\u014c\2\164\55\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\7\22\1\u014d\3\0\26\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\14\22\1\u014e\11\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u014f"+ - "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\7\22\1\u0150\16\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\3\22\1\u0151\22\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\1\22\1\u0152\24\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\16\22\1\u0153"+ - "\7\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\10\22\1\u0154\15\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\11\22\1\u0155\14\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\5\22\1\u0156\20\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\11\22\1\u0157"+ - "\14\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\1\22\1\u0158\24\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\4\22\1\u0159\21\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\1\22\1\u015a\24\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\22\22\1\u015b"+ - "\3\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\5\22\1\u015c\20\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\15\22\1\u015d\10\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\6\22\1\u015e\17\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\2\22\1\u015f"+ - "\23\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\1\22\1\u0160\24\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\1\22\1\u0161\24\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\u0162"+ - "\3\0\26\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\3\22\1\u0163\4\22\3\0\26\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\12\22\1\u0164\13\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\10\22\1\u0165\15\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\21\22"+ - "\1\u0166\4\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\7\22\1\u0167\3\0\26\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\7\22\1\u0168\3\0\26\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22"+ - "\1\u0169\23\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\2\22\1\u016a\23\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\11\22\1\u016b\14\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\7\22\1\u016c\16\22\14\0\1\22\2\0\2\u0147"+ - "\10\0\1\u0147\2\0\1\u0148\123\0\1\u016d\105\0\2\u016e"+ - "\3\0\3\u016e\5\0\1\u016e\2\0\5\u016e\3\0\1\u016e"+ - "\1\0\1\u016e\1\0\1\u016e\6\0\1\u016e\41\0\1\150"+ - "\7\0\1\166\13\0\1\u016f\3\0\2\u016f\2\164\55\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\14\22\1\u0170\11\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\11\22\1\u0171"+ - "\14\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\13\22\1\u0172\12\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\7\22\1\u0173\16\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\7\22\1\u0174\16\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\4\22\1\u0175"+ - "\21\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\16\22\1\u0176\7\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\11\22\1\u0177\14\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\u0178"+ - "\3\0\26\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\17\22\1\u0179\6\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\3\22\1\u017a\4\22\3\0\26\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\7\22\1\u017b\16\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\3\22\1\u017c\4\22"+ - "\3\0\7\22\1\u017d\16\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\10\22"+ - "\1\u017e\15\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\21\22\1\u017f\4\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\11\22\1\u0180\14\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\14\22\1\u0181\11\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0182\3\0"+ - "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\11\22\1\u0183\14\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\4\22\1\u0184\21\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\10\22\1\u0185\15\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\23\22\1\u0186"+ - "\2\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\4\22\1\u0187\21\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\11\22\1\u0188\14\22\14\0\1\22\30\0"+ - "\1\u0189\104\0\2\u018a\3\0\3\u018a\5\0\1\u018a\2\0"+ - "\5\u018a\3\0\1\u018a\1\0\1\u018a\1\0\1\u018a\6\0"+ - "\1\u018a\41\0\1\150\7\0\1\166\13\0\1\u018b\3\0"+ - "\2\u018b\2\164\55\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\20\22\1\u018c\5\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\6\22\1\u018d\17\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\5\22"+ - "\1\u018e\20\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\12\22\1\u018f\13\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\13\22\1\u0190\12\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\2\22\1\u0191\23\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\4\22"+ - "\1\u0192\21\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\2\22\1\u0193\23\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\10\22\3\0\2\22\1\u0194\23\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22"+ - "\1\u0195\3\0\26\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u0196"+ - "\16\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\10\22\1\u0197\15\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\4\22\1\u0198\21\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\10\22\1\u0199\15\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\7\22\1\u019a\3\0\26\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\7\22\1\u019b\3\0\26\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\10\22\1\u019c\15\22\14\0\1\22\31\0\1\u019d\103\0"+ - "\2\u019e\3\0\3\u019e\5\0\1\u019e\2\0\5\u019e\3\0"+ - "\1\u019e\1\0\1\u019e\1\0\1\u019e\6\0\1\u019e\41\0"+ - "\1\150\7\0\1\166\13\0\1\u019f\3\0\2\u019f\2\164"+ - "\55\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\7\22\1\u01a0\16\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\7\22\1\u01a1\3\0"+ - "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\7\22\1\u01a2\3\0\26\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\4\22\1\u01a3\21\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\7\22\1\u01a4\3\0"+ - "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\4\22\1\u01a5\21\22\14\0"+ - "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0"+ - "\10\22\3\0\14\22\1\u01a6\11\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\7\22\1\u01a7\16\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\7\22\1\u01a8\3\0\26\22"+ - "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22"+ - "\4\0\7\22\1\u01a9\3\0\26\22\14\0\1\22\7\0"+ - "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0"+ - "\20\22\1\u01aa\5\22\14\0\1\22\30\0\1\u01ab\104\0"+ - "\2\u01ac\3\0\3\u01ac\5\0\1\u01ac\2\0\5\u01ac\3\0"+ - "\1\u01ac\1\0\1\u01ac\1\0\1\u01ac\6\0\1\u01ac\41\0"+ - "\1\150\7\0\1\166\13\0\1\u01ad\3\0\2\u01ad\2\164"+ - "\55\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22"+ - "\1\u01ae\3\0\26\22\14\0\1\22\7\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\10\22\3\0\6\22\1\u01af"+ - "\17\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\7\22\1\u01b0\3\0\26\22\14\0\1\22"+ - "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22"+ - "\3\0\10\22\1\u01b1\15\22\14\0\1\22\7\0\3\22"+ - "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\13\22"+ - "\1\u01b2\12\22\14\0\1\22\7\0\3\22\7\0\2\22"+ - "\3\0\4\22\4\0\10\22\3\0\13\22\1\u01b3\12\22"+ - "\14\0\1\22\25\0\1\u01b4\107\0\2\u01b5\3\0\3\u01b5"+ - "\5\0\1\u01b5\2\0\5\u01b5\3\0\1\u01b5\1\0\1\u01b5"+ - "\1\0\1\u01b5\6\0\1\u01b5\41\0\1\150\7\0\1\166"+ - "\13\0\1\u01b6\3\0\2\u01b6\2\164\55\0\3\22\7\0"+ - "\2\22\3\0\4\22\4\0\3\22\1\u01b7\4\22\3\0"+ - "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0"+ - "\4\22\4\0\10\22\3\0\5\22\1\u01b8\20\22\14\0"+ - "\1\22\12\0\1\150\7\0\1\166\13\0\1\u01b9\3\0"+ - "\2\u01b9\2\164\60\0\1\150\7\0\1\166\13\0\1\u01ba"+ - "\3\0\2\u01ba\2\164\60\0\1\150\7\0\1\166\13\0"+ - "\1\u01bb\3\0\2\u01bb\2\164\60\0\1\150\7\0\1\166"+ - "\13\0\1\u01bc\3\0\2\u01bc\2\164\60\0\1\150\7\0"+ - "\1\166\13\0\1\u01bd\3\0\2\u01bd\2\164\60\0\1\150"+ - "\7\0\1\166\13\0\1\u01be\3\0\2\u01be\2\164\47\0"; + private static final String ZZ_ROWMAP_PACKED_0 + = "\0\0\0\114\0\230\0\344\0\u0130\0\u017c\0\u01c8\0\u0214" + + "\0\u0260\0\u02ac\0\u02f8\0\u0344\0\u0390\0\u0344\0\u03dc\0\u0428" + + "\0\u0474\0\u04c0\0\u050c\0\u0558\0\u05a4\0\u05f0\0\u063c\0\u0688" + + "\0\u06d4\0\u0344\0\u0344\0\u0344\0\u0720\0\u0344\0\u0344\0\u076c" + + "\0\u07b8\0\u0804\0\u0850\0\u0344\0\u089c\0\u08e8\0\u0934\0\u0980" + + "\0\u09cc\0\u0a18\0\u0a64\0\u0ab0\0\u0afc\0\u0b48\0\u0b94\0\u0be0" + + "\0\u0c2c\0\u0c78\0\u0cc4\0\u0d10\0\u0d5c\0\u0344\0\u0344\0\u0344" + + "\0\u0344\0\u0344\0\u0344\0\u0344\0\u0da8\0\u0df4\0\u0e40\0\u0e8c" + + "\0\u0344\0\u0ed8\0\u0f24\0\u0344\0\u0344\0\u0f70\0\u0fbc\0\u1008" + + "\0\u0344\0\u1054\0\u0344\0\u10a0\0\u10ec\0\u1138\0\u0344\0\u0344" + + "\0\u1184\0\u0344\0\u11d0\0\u121c\0\u0344\0\u1268\0\u0344\0\u0344" + + "\0\u12b4\0\u1300\0\u0344\0\u134c\0\u1398\0\u0344\0\u13e4\0\u1430" + + "\0\u0344\0\u147c\0\u14c8\0\u0344\0\u0344\0\u1514\0\u0344\0\u1560" + + "\0\u0344\0\u15ac\0\u15f8\0\u0344\0\u0344\0\u1644\0\u0344\0\u0344" + + "\0\u1690\0\u0344\0\u0344\0\u16dc\0\u1728\0\u1774\0\u17c0\0\u180c" + + "\0\u1858\0\u18a4\0\u18f0\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c" + + "\0\u1ab8\0\u0344\0\u0344\0\u1b04\0\u1b50\0\u04c0\0\u1b9c\0\u1be8" + + "\0\u1c34\0\u1c80\0\u1ccc\0\u1d18\0\u1d64\0\u1db0\0\u1dfc\0\u1e48" + + "\0\u1e94\0\u1ee0\0\u1f2c\0\u1f78\0\u04c0\0\u04c0\0\u1fc4\0\u2010" + + "\0\u205c\0\u20a8\0\u20f4\0\u04c0\0\u2140\0\u218c\0\u21d8\0\u2224" + + "\0\u2270\0\u22bc\0\u2308\0\u2354\0\u23a0\0\u23ec\0\u2438\0\u0344" + + "\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344" + + "\0\u2484\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u24d0" + + "\0\u0344\0\u1138\0\u0344\0\u1184\0\u0344\0\u11d0\0\u0344\0\u0344" + + "\0\u1268\0\u251c\0\u2568\0\u25b4\0\u2600\0\u264c\0\u2698\0\u26e4" + + "\0\u2730\0\u0344\0\u0344\0\u2484\0\u24d0\0\u277c\0\u27c8\0\u0344" + + "\0\u2814\0\u2860\0\u0344\0\u0344\0\u0344\0\u28ac\0\u0344\0\u28f8" + + "\0\u28f8\0\u0344\0\u2944\0\u180c\0\u2990\0\u29dc\0\u04c0\0\u2a28" + + "\0\u2a74\0\u2ac0\0\u2b0c\0\u2b58\0\u2ba4\0\u2bf0\0\u2c3c\0\u2c88" + + "\0\u2cd4\0\u2d20\0\u04c0\0\u2d6c\0\u2db8\0\u2e04\0\u2e50\0\u04c0" + + "\0\u2e9c\0\u2ee8\0\u2f34\0\u2f80\0\u04c0\0\u2fcc\0\u3018\0\u3064" + + "\0\u30b0\0\u30fc\0\u3148\0\u04c0\0\u3194\0\u31e0\0\u322c\0\u3278" + + "\0\u32c4\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u3440\0\u04c0\0\u348c" + + "\0\u04c0\0\u34d8\0\u04c0\0\u3524\0\u3570\0\u251c\0\u0344\0\u0344" + + "\0\u0344\0\u35bc\0\u0344\0\u3608\0\u3654\0\u36a0\0\u0344\0\u0344" + + "\0\u36ec\0\u0344\0\u3738\0\u3784\0\u37d0\0\u381c\0\u3868\0\u38b4" + + "\0\u04c0\0\u04c0\0\u3900\0\u394c\0\u04c0\0\u3998\0\u39e4\0\u3a30" + + "\0\u3a7c\0\u3ac8\0\u3b14\0\u3b60\0\u3bac\0\u3bf8\0\u3c44\0\u04c0" + + "\0\u04c0\0\u3c90\0\u04c0\0\u3cdc\0\u3d28\0\u3d74\0\u3dc0\0\u3e0c" + + "\0\u3e58\0\u3ea4\0\u3ef0\0\u3f3c\0\u04c0\0\u3f88\0\u3fd4\0\u4020" + + "\0\u406c\0\u40b8\0\u04c0\0\u4104\0\u0344\0\u2484\0\u4150\0\u0344" + + "\0\u0344\0\u419c\0\u41e8\0\u4234\0\u04c0\0\u4280\0\u42cc\0\u4318" + + "\0\u04c0\0\u4364\0\u04c0\0\u04c0\0\u43b0\0\u04c0\0\u43fc\0\u04c0" + + "\0\u4448\0\u4494\0\u44e0\0\u452c\0\u04c0\0\u4578\0\u45c4\0\u4610" + + "\0\u465c\0\u46a8\0\u46f4\0\u4740\0\u478c\0\u47d8\0\u04c0\0\u4824" + + "\0\u4870\0\u48bc\0\u4908\0\u4954\0\u49a0\0\u49ec\0\u4a38\0\u4a84" + + "\0\u4ad0\0\u4b1c\0\u04c0\0\u4b68\0\u04c0\0\u04c0\0\u4bb4\0\u04c0" + + "\0\u4c00\0\u04c0\0\u4c4c\0\u4c98\0\u4ce4\0\u04c0\0\u4d30\0\u4d7c" + + "\0\u4dc8\0\u04c0\0\u4e14\0\u4e60\0\u4eac\0\u4ef8\0\u04c0\0\u4f44" + + "\0\u4f90\0\u4fdc\0\u5028\0\u04c0\0\u5074\0\u04c0\0\u50c0\0\u510c" + + "\0\u5158\0\u51a4\0\u51f0\0\u523c\0\u5288\0\u52d4\0\u04c0\0\u04c0" + + "\0\u5320\0\u04c0\0\u04c0\0\u536c\0\u53b8\0\u5404\0\u5450\0\u04c0" + + "\0\u04c0\0\u04c0\0\u549c\0\u54e8\0\u5534\0\u04c0\0\u5580\0\u55cc" + + "\0\u5618\0\u04c0\0\u5664\0\u56b0\0\u56fc\0\u04c0\0\u5748\0\u04c0" + + "\0\u5794\0\u04c0\0\u04c0\0\u0344\0\u0344\0\u57e0\0\u04c0\0\u04c0" + + "\0\u582c\0\u5878\0\u58c4\0\u5910\0\u595c\0\u1774"; - private static int [] zzUnpackTrans() { - int [] result = new int[22952]; - 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); + private static int[] zzUnpackRowMap() { + int[] result = new int[446]; + int offset = 0; + offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); + return result; } - return j; - } + private static int zzUnpackRowMap(String packed, int offset, int[] result) { + int i = 0; /* index in packed string */ - /* 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; + int j = offset; /* index in unpacked array */ - /* 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 aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\13\0\1\11\1\1\1\11\13\1\3\11\1\1\2\11"+ - "\4\1\1\11\21\1\7\11\4\1\1\11\2\1\2\11"+ - "\3\1\1\11\1\1\1\11\3\1\2\11\1\1\1\11"+ - "\2\1\1\11\1\1\2\11\2\1\1\11\2\1\1\11"+ - "\2\1\1\11\1\1\1\0\2\11\1\1\1\11\1\1"+ - "\1\11\2\1\2\11\1\1\2\11\1\1\2\11\1\0"+ - "\3\1\1\0\11\1\2\11\44\1\11\11\1\1\6\11"+ - "\1\1\1\11\1\0\1\11\1\0\1\11\1\0\2\11"+ - "\1\0\1\1\4\0\1\1\2\0\2\11\4\1\1\11"+ - "\2\0\3\11\1\1\1\11\1\0\1\1\1\11\61\1"+ - "\3\0\3\11\1\0\1\11\2\0\1\1\2\11\1\0"+ - "\1\11\52\1\1\11\2\0\2\11\1\0\42\1\1\0"+ - "\33\1\1\0\23\1\1\0\15\1\1\0\10\1\2\11"+ - "\11\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[446]; - 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); + int l = packed.length(); + while (i < l) { + int high = packed.charAt(i++) << 16; + result[j++] = high | packed.charAt(i++); + } + return j; } - return j; - } - /** the input device */ - private java.io.Reader zzReader; + /** + * The transition table of the DFA + */ + private static final int[] ZZ_TRANS = zzUnpackTrans(); - /** the current state of the DFA */ - private int zzState; + private static final String ZZ_TRANS_PACKED_0 + = "\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\14" + + "\1\22\1\23\1\24\1\17\1\25\1\26\1\27\1\30" + + "\1\22\1\31\1\14\1\32\1\33\4\22\1\34\1\35" + + "\1\36\1\37\1\40\2\22\1\41\2\31\1\22\1\42" + + "\1\43\1\14\1\44\1\45\1\46\1\47\1\22\1\50" + + "\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\22" + + "\1\60\1\22\1\61\2\22\1\62\1\63\1\64\1\65" + + "\1\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75" + + "\1\76\1\77\1\100\1\101\1\22\1\14\1\102\1\103" + + "\1\104\30\102\1\105\12\102\1\106\45\102\1\107\1\110" + + "\1\111\31\107\1\105\11\107\1\106\45\107\1\14\1\112" + + "\1\113\1\114\1\115\3\14\1\116\2\14\1\114\2\14" + + "\1\117\2\116\4\14\4\116\5\14\3\116\2\14\2\116" + + "\3\14\26\116\2\14\1\120\46\14\1\121\44\14\1\122" + + "\14\14\1\112\1\113\1\114\4\14\1\123\2\14\1\114" + + "\3\14\2\123\2\14\1\124\1\14\4\123\5\14\3\123" + + "\2\14\2\123\3\14\26\123\2\14\1\125\46\14\1\126" + + "\44\14\1\127\13\14\1\130\1\112\1\113\26\130\1\131" + + "\63\130\1\132\1\133\12\130\1\134\77\130\1\112\1\113" + + "\7\130\1\135\65\130\1\136\13\130\1\137\1\110\1\111" + + "\43\137\1\140\1\141\44\137\116\0\1\16\114\0\1\17" + + "\7\0\1\17\104\0\1\142\1\143\24\0\1\144\113\0" + + "\1\145\67\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\26\22\14\0\1\22\12\0\1\146\1\147" + + "\6\0\1\150\13\0\1\150\3\0\2\150\33\0\1\151" + + "\25\0\1\152\1\0\1\153\4\0\2\152\4\0\4\152" + + "\1\0\1\154\3\0\3\152\2\0\2\152\3\0\26\152" + + "\2\0\1\155\45\0\1\156\76\0\1\157\14\0\1\160" + + "\77\0\1\161\13\0\1\162\100\0\1\163\105\0\1\150" + + "\7\0\1\31\13\0\1\31\3\0\2\31\2\164\101\0" + + "\1\165\72\0\1\150\7\0\1\166\13\0\1\167\2\170" + + "\1\0\1\171\1\172\2\164\55\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\2\22\1\173\3\22" + + "\1\174\2\22\1\175\1\176\13\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\1\22\1\177" + + "\6\22\3\0\2\22\1\200\11\22\1\201\11\22\14\0" + + "\1\22\33\0\1\202\12\0\1\203\54\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\1\22\1\204" + + "\24\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\7\22\1\205\3\0\26\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\5\22\1\206\20\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" + + "\1\207\3\22\1\210\5\22\1\211\11\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" + + "\1\212\3\0\10\22\1\213\1\22\1\214\2\22\1\215" + + "\10\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\22\22\1\216\3\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\7\22\1\217\3\0\2\22\1\220\7\22\1\221\13\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\1\22\1\222\14\22\1\223\1\22" + + "\1\224\5\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\3\22\1\225\4\22\3\0\5\22" + + "\1\226\1\22\1\227\11\22\1\230\4\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\5\22\1\231\1\22\1\232\16\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" + + "\1\233\3\0\6\22\1\234\11\22\1\235\5\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\11\22\1\236\4\22\1\237\7\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\1\22\1\240\1\241\7\22\1\242\13\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\2\22\1\243\3\22\1\244\17\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\7\22\1\245\3\0\26\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\7\22\1\246\16\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\2\22\1\247" + + "\23\22\14\0\1\22\33\0\1\250\52\0\1\251\40\0" + + "\1\252\53\0\1\253\37\0\1\254\113\0\1\255\61\0" + + "\1\102\2\0\30\102\1\0\12\102\1\0\45\102\2\0" + + "\1\104\111\0\1\256\3\0\27\256\1\257\1\260\1\256" + + "\1\261\1\256\1\262\5\256\1\263\1\256\1\264\1\265" + + "\5\256\1\266\1\267\1\256\1\270\30\256\1\0\1\107" + + "\2\0\31\107\1\0\11\107\1\0\45\107\2\0\1\111" + + "\113\0\1\113\114\0\1\114\7\0\1\114\116\0\1\271" + + "\105\0\2\272\3\0\1\272\1\0\4\272\2\0\4\272" + + "\1\0\1\273\2\0\10\272\3\0\26\272\16\0\1\274" + + "\2\0\30\274\1\275\60\274\10\0\2\276\3\0\1\276" + + "\1\0\4\276\2\0\4\276\1\0\1\277\2\0\10\276" + + "\3\0\26\276\34\0\1\300\75\0\1\301\2\0\30\301" + + "\1\302\1\303\57\301\31\0\1\304\64\0\1\133\126\0" + + "\1\305\102\0\1\306\3\0\1\307\3\0\1\310\2\0" + + "\2\307\2\0\1\311\1\0\4\307\5\0\3\307\2\0" + + "\2\307\3\0\26\307\2\0\1\312\13\0\1\137\2\0" + + "\43\137\2\0\44\137\1\313\3\0\32\313\1\314\1\313" + + "\1\262\5\313\1\263\1\313\1\264\1\265\5\313\1\266" + + "\1\267\1\313\1\315\27\313\1\316\1\0\1\142\1\317" + + "\1\320\111\142\5\321\1\322\106\321\11\0\1\323\123\0" + + "\1\150\13\0\1\150\3\0\2\150\2\164\57\0\2\152" + + "\3\0\1\152\1\0\4\152\2\0\4\152\4\0\10\152" + + "\3\0\26\152\50\0\1\324\113\0\1\325\77\0\1\326" + + "\13\0\1\327\76\0\1\330\3\0\1\331\13\0\1\331" + + "\3\0\2\331\2\0\1\330\100\0\1\332\72\0\1\150" + + "\7\0\1\166\13\0\1\166\3\0\2\166\2\164\60\0" + + "\1\150\7\0\1\166\13\0\1\167\3\0\1\171\1\172" + + "\2\164\67\0\2\333\3\0\3\333\5\0\1\334\2\0" + + "\5\333\3\0\1\333\1\0\1\333\1\0\1\333\6\0" + + "\1\333\41\0\1\150\7\0\1\166\13\0\1\172\3\0" + + "\2\172\2\164\60\0\1\150\7\0\1\166\13\0\1\335" + + "\3\0\2\335\2\164\55\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\14\22\1\336\11\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\1\22\1\337\24\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\7\22\1\340\16\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\7\22\1\341" + + "\16\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\10\22\1\342\15\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\4\22\1\343\21\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\5\22\1\344\20\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\7\22\1\345\3\0\26\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\10\22\1\346\15\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\5\22\1\347\2\22\1\350\15\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\7\22\1\351\16\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" + + "\1\352\23\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\10\22\1\353\15\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\2\22\1\354\23\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\17\22\1\355\6\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\11\22" + + "\1\356\14\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\7\22\1\357\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\15\22\1\360\10\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\10\22\1\361\10\22\1\362\4\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\14\22\1\363\11\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\12\22\1\364" + + "\5\22\1\365\5\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\1\22\1\366" + + "\7\22\1\367\14\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\17\22\1\370" + + "\6\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\5\22\1\371\2\22\1\372" + + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\17\22\1\373\6\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\7\22\1\374\3\0\26\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\13\22" + + "\1\375\12\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\3\22\1\376\4\22\3\0\14\22" + + "\1\377\11\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\7\22\1\u0100\16\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\10\22\1\u0101\15\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\11\22\1\u0102\14\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\6\22" + + "\1\u0103\2\22\1\u0104\14\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\4\22" + + "\1\u0105\21\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\1\u0106\25\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\1\22\1\u0107\24\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\11\22\1\u0108\14\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u0109" + + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\3\22\1\u010a\4\22\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\25\22\1\u010b\14\0\1\22\21\0\2\u010c" + + "\3\0\3\u010c\5\0\1\u010c\2\0\5\u010c\3\0\1\u010c" + + "\1\0\1\u010c\1\0\1\u010c\6\0\1\u010c\50\0\2\u010d" + + "\3\0\3\u010d\5\0\1\u010d\2\0\5\u010d\3\0\1\u010d" + + "\1\0\1\u010d\1\0\1\u010d\6\0\1\u010d\30\0\1\u010e" + + "\2\0\30\u010e\1\302\1\0\57\u010e\1\303\2\0\30\303" + + "\1\u010f\60\303\16\0\1\u0110\113\0\1\u0111\105\0\1\u0112" + + "\6\0\2\u0112\4\0\4\u0112\5\0\3\u0112\2\0\2\u0112" + + "\3\0\26\u0112\2\0\1\u0113\23\0\2\307\3\0\1\307" + + "\1\0\4\307\2\0\4\307\4\0\10\307\3\0\26\307" + + "\33\0\1\u0114\6\0\1\u0115\77\0\1\u0116\6\0\2\u0116" + + "\4\0\4\u0116\5\0\3\u0116\2\0\2\u0116\3\0\26\u0116" + + "\2\0\1\u0117\62\0\1\u0118\46\0\1\320\111\0\5\321" + + "\1\u0119\106\321\4\0\1\320\1\322\140\0\1\u011a\102\0" + + "\1\331\13\0\1\331\3\0\2\331\71\0\2\u011b\3\0" + + "\3\u011b\5\0\1\u011b\2\0\5\u011b\3\0\1\u011b\1\0" + + "\1\u011b\1\0\1\u011b\6\0\1\u011b\41\0\1\150\7\0" + + "\1\166\13\0\1\u011c\3\0\2\u011c\2\164\55\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\5\22" + + "\1\u011d\20\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\2\22\1\u011e\23\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\4\22\1\u011f\21\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" + + "\1\u0120\3\0\26\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\16\22\1\u0121" + + "\7\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\7\22\1\u0122\3\0\26\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\2\22\1\u0123\23\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\12\22" + + "\1\u0124\13\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\7\22\1\u0125\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\4\22\1\u0126\21\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\5\22\1\u0127\2\22\1\u0128\15\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\5\22\1\u0129\20\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u012a" + + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\7\22\1\u012b\3\0\26\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\10\22\1\u012c\15\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\1\22" + + "\1\u012d\24\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\11\22\1\u012e\14\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\7\22\1\u012f\3\0\26\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\14\22\1\u0130\11\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\7\22\1\u0131\3\0\26\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\6\22\1\u0132\17\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\5\22\1\u0133\20\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0134\3\0" + + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\10\22\1\u0135\15\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\7\22\1\u0136\3\0\26\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\6\22" + + "\1\u0137\5\22\1\u0138\11\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0139\3\0" + + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\2\22\1\u013a\23\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\7\22\1\u013b\3\0\26\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" + + "\1\u013c\23\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\16\22\1\u013d\7\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\14\22\1\u013e\11\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\10\22\1\u013f\15\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\22\22" + + "\1\u0140\3\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\3\22\1\u0141\22\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\14\22\1\u0142\11\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\13\22\1\u0143\12\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\11\22" + + "\1\u0144\14\22\14\0\1\22\21\0\2\u0145\3\0\3\u0145" + + "\5\0\1\u0145\2\0\5\u0145\3\0\1\u0145\1\0\1\u0145" + + "\1\0\1\u0145\6\0\1\u0145\50\0\2\u0146\3\0\3\u0146" + + "\5\0\1\u0146\2\0\5\u0146\3\0\1\u0146\1\0\1\u0146" + + "\1\0\1\u0146\6\0\1\u0146\31\0\2\u0147\5\0\2\u0112" + + "\1\0\1\u0147\1\0\1\u0112\1\u0148\4\u0112\2\0\4\u0112" + + "\4\0\10\u0112\3\0\26\u0112\33\0\1\u0149\123\0\1\u014a" + + "\76\0\2\u0116\3\0\1\u0116\1\0\4\u0116\2\0\4\u0116" + + "\4\0\10\u0116\3\0\26\u0116\16\0\4\321\1\320\1\u0119" + + "\106\321\20\0\2\u014b\3\0\3\u014b\5\0\1\u014b\2\0" + + "\5\u014b\3\0\1\u014b\1\0\1\u014b\1\0\1\u014b\6\0" + + "\1\u014b\41\0\1\150\7\0\1\166\13\0\1\u014c\3\0" + + "\2\u014c\2\164\55\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\7\22\1\u014d\3\0\26\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\14\22\1\u014e\11\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u014f" + + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\7\22\1\u0150\16\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\3\22\1\u0151\22\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\1\22\1\u0152\24\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\16\22\1\u0153" + + "\7\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\10\22\1\u0154\15\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\11\22\1\u0155\14\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\5\22\1\u0156\20\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\11\22\1\u0157" + + "\14\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\1\22\1\u0158\24\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\4\22\1\u0159\21\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\1\22\1\u015a\24\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\22\22\1\u015b" + + "\3\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\5\22\1\u015c\20\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\15\22\1\u015d\10\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\6\22\1\u015e\17\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\2\22\1\u015f" + + "\23\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\1\22\1\u0160\24\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\1\22\1\u0161\24\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\u0162" + + "\3\0\26\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\3\22\1\u0163\4\22\3\0\26\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\12\22\1\u0164\13\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\10\22\1\u0165\15\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\21\22" + + "\1\u0166\4\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\7\22\1\u0167\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\7\22\1\u0168\3\0\26\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" + + "\1\u0169\23\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\2\22\1\u016a\23\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\11\22\1\u016b\14\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\7\22\1\u016c\16\22\14\0\1\22\2\0\2\u0147" + + "\10\0\1\u0147\2\0\1\u0148\123\0\1\u016d\105\0\2\u016e" + + "\3\0\3\u016e\5\0\1\u016e\2\0\5\u016e\3\0\1\u016e" + + "\1\0\1\u016e\1\0\1\u016e\6\0\1\u016e\41\0\1\150" + + "\7\0\1\166\13\0\1\u016f\3\0\2\u016f\2\164\55\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\14\22\1\u0170\11\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\11\22\1\u0171" + + "\14\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\13\22\1\u0172\12\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\7\22\1\u0173\16\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\7\22\1\u0174\16\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\4\22\1\u0175" + + "\21\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\16\22\1\u0176\7\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\11\22\1\u0177\14\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\u0178" + + "\3\0\26\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\17\22\1\u0179\6\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\3\22\1\u017a\4\22\3\0\26\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\7\22\1\u017b\16\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\3\22\1\u017c\4\22" + + "\3\0\7\22\1\u017d\16\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\10\22" + + "\1\u017e\15\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\21\22\1\u017f\4\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\11\22\1\u0180\14\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\14\22\1\u0181\11\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0182\3\0" + + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\11\22\1\u0183\14\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\4\22\1\u0184\21\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\10\22\1\u0185\15\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\23\22\1\u0186" + + "\2\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\4\22\1\u0187\21\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\11\22\1\u0188\14\22\14\0\1\22\30\0" + + "\1\u0189\104\0\2\u018a\3\0\3\u018a\5\0\1\u018a\2\0" + + "\5\u018a\3\0\1\u018a\1\0\1\u018a\1\0\1\u018a\6\0" + + "\1\u018a\41\0\1\150\7\0\1\166\13\0\1\u018b\3\0" + + "\2\u018b\2\164\55\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\20\22\1\u018c\5\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\6\22\1\u018d\17\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\5\22" + + "\1\u018e\20\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\12\22\1\u018f\13\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\13\22\1\u0190\12\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\2\22\1\u0191\23\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\4\22" + + "\1\u0192\21\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\2\22\1\u0193\23\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\2\22\1\u0194\23\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" + + "\1\u0195\3\0\26\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u0196" + + "\16\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\10\22\1\u0197\15\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\4\22\1\u0198\21\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\10\22\1\u0199\15\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\7\22\1\u019a\3\0\26\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\7\22\1\u019b\3\0\26\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\10\22\1\u019c\15\22\14\0\1\22\31\0\1\u019d\103\0" + + "\2\u019e\3\0\3\u019e\5\0\1\u019e\2\0\5\u019e\3\0" + + "\1\u019e\1\0\1\u019e\1\0\1\u019e\6\0\1\u019e\41\0" + + "\1\150\7\0\1\166\13\0\1\u019f\3\0\2\u019f\2\164" + + "\55\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\7\22\1\u01a0\16\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u01a1\3\0" + + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\7\22\1\u01a2\3\0\26\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\4\22\1\u01a3\21\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u01a4\3\0" + + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\4\22\1\u01a5\21\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\14\22\1\u01a6\11\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\7\22\1\u01a7\16\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\7\22\1\u01a8\3\0\26\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\7\22\1\u01a9\3\0\26\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\20\22\1\u01aa\5\22\14\0\1\22\30\0\1\u01ab\104\0" + + "\2\u01ac\3\0\3\u01ac\5\0\1\u01ac\2\0\5\u01ac\3\0" + + "\1\u01ac\1\0\1\u01ac\1\0\1\u01ac\6\0\1\u01ac\41\0" + + "\1\150\7\0\1\166\13\0\1\u01ad\3\0\2\u01ad\2\164" + + "\55\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" + + "\1\u01ae\3\0\26\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\6\22\1\u01af" + + "\17\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\7\22\1\u01b0\3\0\26\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\10\22\1\u01b1\15\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\13\22" + + "\1\u01b2\12\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\13\22\1\u01b3\12\22" + + "\14\0\1\22\25\0\1\u01b4\107\0\2\u01b5\3\0\3\u01b5" + + "\5\0\1\u01b5\2\0\5\u01b5\3\0\1\u01b5\1\0\1\u01b5" + + "\1\0\1\u01b5\6\0\1\u01b5\41\0\1\150\7\0\1\166" + + "\13\0\1\u01b6\3\0\2\u01b6\2\164\55\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\3\22\1\u01b7\4\22\3\0" + + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\5\22\1\u01b8\20\22\14\0" + + "\1\22\12\0\1\150\7\0\1\166\13\0\1\u01b9\3\0" + + "\2\u01b9\2\164\60\0\1\150\7\0\1\166\13\0\1\u01ba" + + "\3\0\2\u01ba\2\164\60\0\1\150\7\0\1\166\13\0" + + "\1\u01bb\3\0\2\u01bb\2\164\60\0\1\150\7\0\1\166" + + "\13\0\1\u01bc\3\0\2\u01bc\2\164\60\0\1\150\7\0" + + "\1\166\13\0\1\u01bd\3\0\2\u01bd\2\164\60\0\1\150" + + "\7\0\1\166\13\0\1\u01be\3\0\2\u01be\2\164\47\0"; - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; + private static int[] zzUnpackTrans() { + int[] result = new int[22952]; + int offset = 0; + offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); + return result; + } - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; + private static int zzUnpackTrans(String packed, int offset, int[] result) { + int i = 0; /* index in packed string */ - /** the textposition at the last accepting state */ - private int zzMarkedPos; + int j = offset; /* index in unpacked array */ - /** the current text position in the buffer */ - private int zzCurrentPos; + 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; + } - /** 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; + /* error codes */ + private static final int ZZ_UNKNOWN_ERROR = 0; - /** number of newlines encountered up to the start of the matched text */ - private int yyline; + private static final int ZZ_NO_MATCH = 1; - /** the number of characters up to the start of the matched text */ - private int yychar; + private static final int ZZ_PUSHBACK_2BIG = 2; - /** - * the number of characters from the last newline up to the start of the - * matched text - */ - private int yycolumn; + /* 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" + }; - /** - * zzAtBOL == true <=> the scanner is currently at the beginning of a line - */ - private boolean zzAtBOL = true; + /** + * ZZ_ATTRIBUTE[aState] contains the attributes of state aState + */ + private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute(); - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; + private static final String ZZ_ATTRIBUTE_PACKED_0 + = "\13\0\1\11\1\1\1\11\13\1\3\11\1\1\2\11" + + "\4\1\1\11\21\1\7\11\4\1\1\11\2\1\2\11" + + "\3\1\1\11\1\1\1\11\3\1\2\11\1\1\1\11" + + "\2\1\1\11\1\1\2\11\2\1\1\11\2\1\1\11" + + "\2\1\1\11\1\1\1\0\2\11\1\1\1\11\1\1" + + "\1\11\2\1\2\11\1\1\2\11\1\1\2\11\1\0" + + "\3\1\1\0\11\1\2\11\44\1\11\11\1\1\6\11" + + "\1\1\1\11\1\0\1\11\1\0\1\11\1\0\2\11" + + "\1\0\1\1\4\0\1\1\2\0\2\11\4\1\1\11" + + "\2\0\3\11\1\1\1\11\1\0\1\1\1\11\61\1" + + "\3\0\3\11\1\0\1\11\2\0\1\1\2\11\1\0" + + "\1\11\52\1\1\11\2\0\2\11\1\0\42\1\1\0" + + "\33\1\1\0\23\1\1\0\15\1\1\0\10\1\2\11" + + "\11\1"; - /** denotes if the user-EOF-code has already been executed */ - private boolean zzEOFDone; - - /** - * The number of occupied positions in zzBuffer beyond zzEndRead. - * When a lead/high surrogate has been read from the input stream - * into the final zzBuffer position, this will have a value of 1; - * otherwise, it will have a value of 0. - */ - private int zzFinalHighSurrogate = 0; + private static int[] zzUnpackAttribute() { + int[] result = new int[446]; + int offset = 0; + offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); + return result; + } - /* user code: */ + 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 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; + + /** + * The number of occupied positions in zzBuffer beyond zzEndRead. + * When a lead/high surrogate has been read from the input stream + * into the final zzBuffer position, this will have a value of 1; + * otherwise, it will have a value of 0. + */ + private int zzFinalHighSurrogate = 0; + + /* user code: */ private String sourceCode; - public ActionScriptLexer(String sourceCode){ + public ActionScriptLexer(String sourceCode) { this(new StringReader(sourceCode)); - this.sourceCode = sourceCode; + this.sourceCode = sourceCode; } - public void yypushbackstr(String s, int state) - { + public void yypushbackstr(String s, int state) { sourceCode = s + sourceCode.substring(yychar + yylength()); yyreset(new StringReader(sourceCode)); yybegin(state); } - public void yypushbackstr(String s) - { + public void yypushbackstr(String s) { yypushbackstr(s, YYINITIAL); } @@ -992,24 +1045,24 @@ public final class ActionScriptLexer { return yyline + 1; } - private List listeners=new ArrayList<>(); + private List listeners = new ArrayList<>(); - public void addListener(LexListener listener){ + public void addListener(LexListener listener) { listeners.add(listener); } - public void removeListener(LexListener listener){ + public void removeListener(LexListener listener) { listeners.remove(listener); } - public void informListenersLex(ParsedSymbol s){ - for(LexListener l:listeners){ + public void informListenersLex(ParsedSymbol s) { + for (LexListener l : listeners) { l.onLex(s); } } - public void informListenersPushBack(ParsedSymbol s){ - for(LexListener l:listeners){ + public void informListenersPushBack(ParsedSymbol s) { + for (LexListener l : listeners) { l.onPushBack(s); } } @@ -1021,9 +1074,10 @@ public final class ActionScriptLexer { } ParsedSymbol last; - public ParsedSymbol lex() throws java.io.IOException, AVM2ParseException{ + + public ParsedSymbol lex() throws java.io.IOException, AVM2ParseException { ParsedSymbol ret = null; - if (!pushedBack.isEmpty()){ + if (!pushedBack.isEmpty()) { ret = last = pushedBack.pop(); } else { ret = last = yylex(); @@ -1032,1090 +1086,1259 @@ public final class ActionScriptLexer { return ret; } - - - /** - * Creates a new scanner - * - * @param in the java.io.Reader to read input from. - */ - public ActionScriptLexer(java.io.Reader in) { - this.zzReader = 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[0x110000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 3140) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Refills the input buffer. - * - * @return false, 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) { - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; - System.arraycopy(zzBuffer, zzStartRead, - zzBuffer, 0, - zzEndRead-zzStartRead); - - /* translate stored positions */ - zzEndRead-= zzStartRead; - zzCurrentPos-= zzStartRead; - zzMarkedPos-= zzStartRead; - zzStartRead = 0; + /** + * Creates a new scanner + * + * @param in the java.io.Reader to read input from. + */ + public ActionScriptLexer(java.io.Reader in) { + this.zzReader = in; } - /* is the buffer big enough? */ - if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { - /* if not: blow it up */ - char newBuffer[] = new char[zzBuffer.length*2]; - System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); - zzBuffer = newBuffer; - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; - } + /** + * 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[0x110000]; + int i = 0; /* index in packed string */ - /* fill the buffer with new input */ - int requested = zzBuffer.length - zzEndRead; - int totalRead = 0; - while (totalRead < requested) { - int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); - if (numRead == -1) { - break; - } - totalRead += numRead; - } + int j = 0; /* index in unpacked array */ - if (totalRead > 0) { - zzEndRead += totalRead; - if (totalRead == requested) { /* possibly more input available */ - if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { - --zzEndRead; - zzFinalHighSurrogate = 1; + while (i < 3140) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do { + map[j++] = value; + } while (--count > 0); } - } - return false; + return map; } - // totalRead = 0: End of stream - return true; - } + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ + /* first: make room (if you can) */ + if (zzStartRead > 0) { + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead - zzStartRead); - if (zzReader != null) - zzReader.close(); - } + /* translate stored positions */ + zzEndRead -= zzStartRead; + zzCurrentPos -= zzStartRead; + zzMarkedPos -= zzStartRead; + zzStartRead = 0; + } + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { + /* if not: blow it up */ + char newBuffer[] = new char[zzBuffer.length * 2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + } - /** - * 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 - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to ZZ_INITIAL. - * - * Internal scan buffer is resized down to its initial length, if it has grown. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - zzEOFDone = false; - zzEndRead = zzStartRead = 0; - zzCurrentPos = zzMarkedPos = 0; - zzFinalHighSurrogate = 0; - yyline = yychar = yycolumn = 0; - zzLexicalState = YYINITIAL; - if (zzBuffer.length > ZZ_BUFFERSIZE) - zzBuffer = new char[ZZ_BUFFERSIZE]; - } + /* fill the buffer with new input */ + int requested = zzBuffer.length - zzEndRead; + int totalRead = 0; + while (totalRead < requested) { + int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); + if (numRead == -1) { + break; + } + totalRead += numRead; + } + if (totalRead > 0) { + zzEndRead += totalRead; + if (totalRead == requested) { /* possibly more input available */ - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + --zzEndRead; + zzFinalHighSurrogate = 1; + } + } + return false; + } - - /** - * 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 pos 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]; + // totalRead = 0: End of stream + return true; } - throw new Error(message); - } + /** + * Closes the input stream. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; /* indicate end of file */ + zzEndRead = zzStartRead; /* invalidate buffer */ - /** - * 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); + if (zzReader != null) { + zzReader.close(); + } + } - zzMarkedPos -= number; - } + /** + * 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 + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. + * + * Internal scan buffer is resized down to its initial length, if it has + * grown. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + zzFinalHighSurrogate = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + if (zzBuffer.length > ZZ_BUFFERSIZE) { + zzBuffer = new char[ZZ_BUFFERSIZE]; + } + } + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } - /** - * 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 ParsedSymbol yylex() throws java.io.IOException, AVM2ParseException { - int zzInput; - int zzAction; + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + public final void yybegin(int newState) { + zzLexicalState = newState; + } - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; + /** + * Returns the text matched by the current regular expression. + */ + public final String yytext() { + return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead); + } - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; + /** + * Returns the character at position pos 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]; + } - while (true) { - zzMarkedPosL = zzMarkedPos; + /** + * Returns the length of the matched text region. + */ + public final int yylength() { + return zzMarkedPos - zzStartRead; + } - yychar+= zzMarkedPosL-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]; + } - zzAction = -1; + throw new Error(message); + } - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = ZZ_LEXSTATE[zzLexicalState]; + /** + * 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); + } - // set up zzAction for empty match case: - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - } + zzMarkedPos -= number; + } + /** + * 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 ParsedSymbol yylex() throws java.io.IOException, AVM2ParseException { + 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; - zzForAction: { while (true) { - - if (zzCurrentPosL < zzEndReadL) { - zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } - 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 = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; + zzMarkedPosL = zzMarkedPos; - zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } + yychar += zzMarkedPosL - zzStartRead; + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + zzState = ZZ_LEXSTATE[zzLexicalState]; + + // set up zzAction for empty match case: + int zzAttributes = zzAttrL[zzState]; + if ((zzAttributes & 1) == 1) { + zzAction = zzState; + } + + zzForAction: + { + while (true) { + + if (zzCurrentPosL < zzEndReadL) { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); + } 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 = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); + } + } + int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]]; + if (zzNext == -1) { + break zzForAction; + } + zzState = zzNext; + + 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 1: { + } + case 164: + break; + case 2: { + yyline++; + } + case 165: + break; + case 3: { /*ignore*/ + + } + case 166: + break; + case 4: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); + } + case 167: + break; + case 5: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); + } + case 168: + break; + case 6: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } + case 169: + break; + case 7: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); + } + case 170: + break; + case 8: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); + } + case 171: + break; + case 9: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); + } + case 172: + break; + case 10: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); + } + case 173: + break; + case 11: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); + } + case 174: + break; + case 12: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); + } + case 175: + break; + case 13: { + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); + } + case 176: + break; + case 14: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); + } + case 177: + break; + case 15: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); + } + case 178: + break; + case 16: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); + } + case 179: + break; + case 17: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); + } + case 180: + break; + case 18: { + string.setLength(0); + yybegin(STRING); + } + case 181: + break; + case 19: { + string.setLength(0); + yybegin(CHARLITERAL); + } + case 182: + break; + case 20: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); + } + case 183: + break; + case 21: { + string.setLength(0); + yybegin(OIDENTIFIER); + } + case 184: + break; + case 22: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); + } + case 185: + break; + case 23: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); + } + case 186: + break; + case 24: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); + } + case 187: + break; + case 25: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); + } + case 188: + break; + case 26: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); + } + case 189: + break; + case 27: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); + } + case 190: + break; + case 28: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); + } + case 191: + break; + case 29: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); + } + case 192: + break; + case 30: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); + } + case 193: + break; + case 31: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); + } + case 194: + break; + case 32: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); + } + case 195: + break; + case 33: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); + } + case 196: + break; + case 34: { + string.append(yytext()); + } + case 197: + break; + case 35: { + yybegin(YYINITIAL); + yyline++; + } + case 198: + break; + case 36: { + yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); + } + case 199: + break; + case 37: { + yybegin(YYINITIAL); + yyline++; + } + case 200: + break; + case 38: { + string.append(yytext()); + yyline++; + } + case 201: + break; + case 39: { + yybegin(XML); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_END, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 202: + break; + case 40: { + yybegin(YYINITIAL); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRNAMEVAR_BEGIN, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 203: + break; + case 41: { + yybegin(YYINITIAL); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext()); + } + case 204: + break; + case 42: { + yybegin(YYINITIAL); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRNAMEVAR_BEGIN, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 205: + break; + case 43: { + yybegin(YYINITIAL); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRVALVAR_BEGIN, yytext()); + } + case 206: + break; + case 44: { + string.append(yytext()); + yyline++; + } + case 207: + break; + case 45: { + yybegin(YYINITIAL); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_VAR_BEGIN, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 208: + break; + case 46: { + yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); + } + case 209: + break; + case 47: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); + } + case 210: + break; + case 48: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); + } + case 211: + break; + case 49: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext()); + } + case 212: + break; + case 50: { + return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext()); + } + case 213: + break; + case 51: { + return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); + } + case 214: + break; + case 52: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FILTER, yytext()); + } + case 215: + break; + case 53: { + yybegin(XMLOPENTAG); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()); + } + case 216: + break; + case 54: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); + } + case 217: + break; + case 55: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); + } + case 218: + break; + case 56: { + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()); + } + case 219: + break; + case 57: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); + } + case 220: + break; + case 58: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); + } + case 221: + break; + case 59: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); + } + case 222: + break; + case 60: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); + } + case 223: + break; + case 61: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); + } + case 224: + break; + case 62: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); + } + case 225: + break; + case 63: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); + } + case 226: + break; + case 64: { + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); + } + case 227: + break; + case 65: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); + } + case 228: + break; + case 66: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); + } + case 229: + break; + case 67: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); + } + case 230: + break; + case 68: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); + } + case 231: + break; + case 69: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); + } + case 232: + break; + case 70: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); + } + case 233: + break; + case 71: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); + } + case 234: + break; + case 72: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); + } + case 235: + break; + case 73: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); + } + case 236: + break; + case 74: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); + } + case 237: + break; + case 75: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); + } + case 238: + break; + case 76: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); + } + case 239: + break; + case 77: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); + } + case 240: + break; + case 78: { /* ignore illegal character escape */ + + } + case 241: + break; + case 79: { + string.append('\"'); + } + case 242: + break; + case 80: { + string.append('\''); + } + case 243: + break; + case 81: { + string.append('\f'); + } + case 244: + break; + case 82: { + string.append('\\'); + } + case 245: + break; + case 83: { + string.append('\b'); + } + case 246: + break; + case 84: { + string.append('\r'); + } + case 247: + break; + case 85: { + string.append('\n'); + } + case 248: + break; + case 86: { + string.append('\t'); + } + case 249: + break; + case 87: { + yybegin(XML); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTFINISHTAG_END, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 250: + break; + case 88: { + yybegin(XMLOPENTAGATTRIB); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 251: + break; + case 89: { + yybegin(XMLOPENTAG); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); + } + case 252: + break; + case 90: { + yybegin(XMLINSTRATTRIB); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 253: + break; + case 91: { + yybegin(XML); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_END, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 254: + break; + case 92: { + yybegin(XMLINSTROPENTAG); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); + } + case 255: + break; + case 93: { + yybegin(XMLOPENTAG); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 256: + break; + case 94: { + yybegin(YYINITIAL); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 257: + break; + case 95: { + throw new AVM2ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); + } + case 258: + break; + case 96: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); + } + case 259: + break; + case 97: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); + } + case 260: + break; + case 98: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); + } + case 261: + break; + case 99: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); + } + case 262: + break; + case 100: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); + } + case 263: + break; + case 101: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); + } + case 264: + break; + case 102: { + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); + } + case 265: + break; + case 103: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); + } + case 266: + break; + case 104: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.SET, yytext()); + } + case 267: + break; + case 105: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); + } + case 268: + break; + case 106: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); + } + case 269: + break; + case 107: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); + } + case 270: + break; + case 108: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); + } + case 271: + break; + case 109: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.GET, yytext()); + } + case 272: + break; + case 110: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); + } + case 273: + break; + case 111: { + string.append(yytext()); + yybegin(XML); + String ret = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); + } + case 274: + break; + case 112: { + string.append(yytext()); + yybegin(XML); + String ret = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); + } + case 275: + break; + case 113: { + yybegin(YYINITIAL); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHVARTAG_BEGIN, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 276: + break; + case 114: { + yybegin(XMLINSTROPENTAG); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_BEGIN, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 277: + break; + case 115: { + yybegin(YYINITIAL); + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRVARTAG_BEGIN, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 278: + break; + case 116: { + string.append('\u00A7'); + } + case 279: + break; + case 117: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); + } + case 280: + break; + case 118: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); + } + case 281: + break; + case 119: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); + } + case 282: + break; + case 120: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); + } + case 283: + break; + case 121: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); + } + case 284: + break; + case 122: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); + } + case 285: + break; + case 123: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); + } + case 286: + break; + case 124: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); + } + case 287: + break; + case 125: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); + } + case 288: + break; + case 126: { + char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); + } + case 289: + break; + case 127: { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext())); + if (string.length() > 0) { + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + case 290: + break; + case 128: { + String ret = string.toString(); + string.setLength(0); + string.append(yytext()); + yybegin(XMLCOMMENT); + if (!ret.isEmpty()) { + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); + } + } + case 291: + break; + case 129: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); + } + case 292: + break; + case 130: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext()); + } + case 293: + break; + case 131: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); + } + case 294: + break; + case 132: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); + } + case 295: + break; + case 133: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); + } + case 296: + break; + case 134: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); + } + case 297: + break; + case 135: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); + } + case 298: + break; + case 136: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); + } + case 299: + break; + case 137: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); + } + case 300: + break; + case 138: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); + } + case 301: + break; + case 139: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext()); + } + case 302: + break; + case 140: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); + } + case 303: + break; + case 141: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext()); + } + case 304: + break; + case 142: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); + } + case 305: + break; + case 143: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); + } + case 306: + break; + case 144: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); + } + case 307: + break; + case 145: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); + } + case 308: + break; + case 146: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); + } + case 309: + break; + case 147: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); + } + case 310: + break; + case 148: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); + } + case 311: + break; + case 149: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext()); + } + case 312: + break; + case 150: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); + } + case 313: + break; + case 151: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); + } + case 314: + break; + case 152: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); + } + case 315: + break; + case 153: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); + } + case 316: + break; + case 154: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext()); + } + case 317: + break; + case 155: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); + } + case 318: + break; + case 156: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); + } + case 319: + break; + case 157: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext()); + } + case 320: + break; + case 158: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); + } + case 321: + break; + case 159: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); + } + case 322: + break; + case 160: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); + } + case 323: + break; + case 161: { + String ret = string.toString(); + string.setLength(0); + string.append(yytext()); + yybegin(XMLCDATA); + if (!ret.isEmpty()) { + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); + } + } + case 324: + break; + case 162: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); + } + case 325: + break; + case 163: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); + } + case 326: + break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return new ParsedSymbol(SymbolGroup.EOF, SymbolType.EOF, null); + } + } else { + zzScanError(ZZ_NO_MATCH); + } + } } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: - { - } - case 164: break; - case 2: - { yyline++; - } - case 165: break; - case 3: - { /*ignore*/ - } - case 166: break; - case 4: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); - } - case 167: break; - case 5: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); - } - case 168: break; - case 6: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - case 169: break; - case 7: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); - } - case 170: break; - case 8: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); - } - case 171: break; - case 9: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); - } - case 172: break; - case 10: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); - } - case 173: break; - case 11: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); - } - case 174: break; - case 12: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); - } - case 175: break; - case 13: - { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); - } - case 176: break; - case 14: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); - } - case 177: break; - case 15: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); - } - case 178: break; - case 16: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); - } - case 179: break; - case 17: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); - } - case 180: break; - case 18: - { string.setLength(0); - yybegin(STRING); - } - case 181: break; - case 19: - { string.setLength(0); - yybegin(CHARLITERAL); - } - case 182: break; - case 20: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); - } - case 183: break; - case 21: - { string.setLength(0); - yybegin(OIDENTIFIER); - } - case 184: break; - case 22: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); - } - case 185: break; - case 23: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); - } - case 186: break; - case 24: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); - } - case 187: break; - case 25: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); - } - case 188: break; - case 26: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); - } - case 189: break; - case 27: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); - } - case 190: break; - case 28: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); - } - case 191: break; - case 29: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); - } - case 192: break; - case 30: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); - } - case 193: break; - case 31: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); - } - case 194: break; - case 32: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); - } - case 195: break; - case 33: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); - } - case 196: break; - case 34: - { string.append(yytext()); - } - case 197: break; - case 35: - { yybegin(YYINITIAL); yyline++; - } - case 198: break; - case 36: - { yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); - } - case 199: break; - case 37: - { yybegin(YYINITIAL); yyline++; - } - case 200: break; - case 38: - { string.append(yytext()); yyline++; - } - case 201: break; - case 39: - { yybegin(XML); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_END, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 202: break; - case 40: - { yybegin(YYINITIAL); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRNAMEVAR_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 203: break; - case 41: - { yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext()); - } - case 204: break; - case 42: - { yybegin(YYINITIAL); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRNAMEVAR_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 205: break; - case 43: - { yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRVALVAR_BEGIN, yytext()); - } - case 206: break; - case 44: - { string.append(yytext()); yyline++; - } - case 207: break; - case 45: - { yybegin(YYINITIAL); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_VAR_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 208: break; - case 46: - { yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); - } - case 209: break; - case 47: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); - } - case 210: break; - case 48: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); - } - case 211: break; - case 49: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext()); - } - case 212: break; - case 50: - { return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext()); - } - case 213: break; - case 51: - { return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); - } - case 214: break; - case 52: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FILTER, yytext()); - } - case 215: break; - case 53: - { yybegin(XMLOPENTAG); - string.setLength(0); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()); - } - case 216: break; - case 54: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); - } - case 217: break; - case 55: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); - } - case 218: break; - case 56: - { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()); - } - case 219: break; - case 57: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); - } - case 220: break; - case 58: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); - } - case 221: break; - case 59: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); - } - case 222: break; - case 60: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); - } - case 223: break; - case 61: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); - } - case 224: break; - case 62: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); - } - case 225: break; - case 63: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); - } - case 226: break; - case 64: - { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); - } - case 227: break; - case 65: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); - } - case 228: break; - case 66: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); - } - case 229: break; - case 67: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); - } - case 230: break; - case 68: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); - } - case 231: break; - case 69: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); - } - case 232: break; - case 70: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); - } - case 233: break; - case 71: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); - } - case 234: break; - case 72: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); - } - case 235: break; - case 73: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); - } - case 236: break; - case 74: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); - } - case 237: break; - case 75: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); - } - case 238: break; - case 76: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); - } - case 239: break; - case 77: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); - } - case 240: break; - case 78: - { /* ignore illegal character escape */ - } - case 241: break; - case 79: - { string.append('\"'); - } - case 242: break; - case 80: - { string.append('\''); - } - case 243: break; - case 81: - { string.append('\f'); - } - case 244: break; - case 82: - { string.append('\\'); - } - case 245: break; - case 83: - { string.append('\b'); - } - case 246: break; - case 84: - { string.append('\r'); - } - case 247: break; - case 85: - { string.append('\n'); - } - case 248: break; - case 86: - { string.append('\t'); - } - case 249: break; - case 87: - { yybegin(XML); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTFINISHTAG_END, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 250: break; - case 88: - { yybegin(XMLOPENTAGATTRIB); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 251: break; - case 89: - { yybegin(XMLOPENTAG); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); - } - case 252: break; - case 90: - { yybegin(XMLINSTRATTRIB); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 253: break; - case 91: - { yybegin(XML); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_END, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 254: break; - case 92: - { yybegin(XMLINSTROPENTAG); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); - } - case 255: break; - case 93: - { yybegin(XMLOPENTAG); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 256: break; - case 94: - { yybegin(YYINITIAL); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 257: break; - case 95: - { throw new AVM2ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 258: break; - case 96: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); - } - case 259: break; - case 97: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); - } - case 260: break; - case 98: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); - } - case 261: break; - case 99: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); - } - case 262: break; - case 100: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); - } - case 263: break; - case 101: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); - } - case 264: break; - case 102: - { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); - } - case 265: break; - case 103: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); - } - case 266: break; - case 104: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.SET, yytext()); - } - case 267: break; - case 105: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); - } - case 268: break; - case 106: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); - } - case 269: break; - case 107: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); - } - case 270: break; - case 108: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); - } - case 271: break; - case 109: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.GET, yytext()); - } - case 272: break; - case 110: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); - } - case 273: break; - case 111: - { string.append(yytext()); - yybegin(XML); - String ret = string.toString(); - string.setLength(0); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); - } - case 274: break; - case 112: - { string.append(yytext()); - yybegin(XML); - String ret = string.toString(); - string.setLength(0); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); - } - case 275: break; - case 113: - { yybegin(YYINITIAL); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHVARTAG_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 276: break; - case 114: - { yybegin(XMLINSTROPENTAG); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 277: break; - case 115: - { yybegin(YYINITIAL); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRVARTAG_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 278: break; - case 116: - { string.append('\u00A7'); - } - case 279: break; - case 117: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); - } - case 280: break; - case 118: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); - } - case 281: break; - case 119: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); - } - case 282: break; - case 120: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); - } - case 283: break; - case 121: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); - } - case 284: break; - case 122: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); - } - case 285: break; - case 123: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); - } - case 286: break; - case 124: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); - } - case 287: break; - case 125: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); - } - case 288: break; - case 126: - { char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); - } - case 289: break; - case 127: - { pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 290: break; - case 128: - { String ret = string.toString(); string.setLength(0); string.append(yytext()); yybegin(XMLCOMMENT); - if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); - } - case 291: break; - case 129: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); - } - case 292: break; - case 130: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext()); - } - case 293: break; - case 131: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); - } - case 294: break; - case 132: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); - } - case 295: break; - case 133: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); - } - case 296: break; - case 134: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); - } - case 297: break; - case 135: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); - } - case 298: break; - case 136: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); - } - case 299: break; - case 137: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); - } - case 300: break; - case 138: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); - } - case 301: break; - case 139: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext()); - } - case 302: break; - case 140: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); - } - case 303: break; - case 141: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext()); - } - case 304: break; - case 142: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); - } - case 305: break; - case 143: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); - } - case 306: break; - case 144: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); - } - case 307: break; - case 145: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); - } - case 308: break; - case 146: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); - } - case 309: break; - case 147: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); - } - case 310: break; - case 148: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); - } - case 311: break; - case 149: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext()); - } - case 312: break; - case 150: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); - } - case 313: break; - case 151: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); - } - case 314: break; - case 152: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); - } - case 315: break; - case 153: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); - } - case 316: break; - case 154: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext()); - } - case 317: break; - case 155: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); - } - case 318: break; - case 156: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); - } - case 319: break; - case 157: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext()); - } - case 320: break; - case 158: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); - } - case 321: break; - case 159: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); - } - case 322: break; - case 160: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); - } - case 323: break; - case 161: - { String ret = string.toString(); string.setLength(0); string.append(yytext() ); yybegin(XMLCDATA); - if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); - } - case 324: break; - case 162: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); - } - case 325: break; - case 163: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); - } - case 326: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - { - return new ParsedSymbol(SymbolGroup.EOF, SymbolType.EOF, null); - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } } - } - - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/ClassInfo.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/ClassInfo.java index 3ebf6c249..b9ceae26f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/ClassInfo.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/ClassInfo.java @@ -33,11 +33,11 @@ public class ClassInfo { public ClassInfo() { static_traits = new Traits(); } - + public ClassInfo(Traits traits) { static_traits = traits; } - + @Override public String toString() { return "method_index=" + cinit_index + "\r\n" + static_traits.toString(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/InstanceInfo.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/InstanceInfo.java index 6a649305e..b34f44f09 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/InstanceInfo.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/InstanceInfo.java @@ -56,11 +56,11 @@ public class InstanceInfo { public InstanceInfo() { instance_traits = new Traits(); } - + public InstanceInfo(Traits traits) { instance_traits = traits; } - + @Override public String toString() { return "name_index=" + name_index + " super_index=" + super_index + " flags=" + flags + " protectedNS=" + protectedNS + " interfaces=" + Helper.intArrToString(interfaces) + " method_index=" + iinit_index + "\r\n" + instance_traits.toString(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java index 5eb228fa6..ffb82d8cc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/MethodBody.java @@ -85,13 +85,13 @@ public final class MethodBody implements Cloneable { this.codeBytes = new byte[0]; this.exceptions = new ABCException[0]; } - + public MethodBody(Traits traits, byte[] codeBytes, ABCException[] exceptions) { this.traits = traits; this.codeBytes = codeBytes; this.exceptions = exceptions; } - + public synchronized void setCodeBytes(byte codeBytes[]) { this.codeBytes = codeBytes; this.code = null; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/ScriptInfo.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/ScriptInfo.java index 3586fc22f..a45d52f02 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/ScriptInfo.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/ScriptInfo.java @@ -70,7 +70,7 @@ public class ScriptInfo { traitIndices.addAll(otherTraits); otherTraits.clear(); } - + if (packagePrefix == null || packageName.startsWith(packagePrefix)) { ClassPath cp = new ClassPath(packageName, objectName); ret.add(new ScriptPack(cp, abc, scriptIndex, traitIndices)); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java index b23070422..3a46e6aab 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Trait.java @@ -32,7 +32,7 @@ import java.util.List; public abstract class Trait implements Serializable { private static final int[] EMPTY_METADATA_ARRAY = new int[0]; - + public int name_index; public int kindType; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Traits.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Traits.java index 2919ab28a..e3034968c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Traits.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Traits.java @@ -39,11 +39,11 @@ public class Traits implements Serializable { public Traits() { traits = new ArrayList<>(); } - + public Traits(int initialCapacity) { traits = new ArrayList<>(initialCapacity); } - + public void delete(ABC abc, boolean d) { for (Trait t : traits) { t.delete(abc, d); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java index a2e97c860..f59b40f6e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FontExporter.java @@ -149,7 +149,7 @@ public class FontExporter { f.getEngine().setCopyrightYear(cop == null ? "" : cop); f.setAuthor(ApplicationInfo.shortApplicationVerName); f.setVersion("1.0"); - + SWF swf = t.getSwf(); if (swf != null && swf.swfList != null && swf.swfList.sourceInfo != null) { String fileName = swf.swfList.sourceInfo.getFile(); @@ -278,7 +278,7 @@ public class FontExporter { WritableFontData woffData = w.convert(font); woffData.copyTo(fos); } - + ttfFile.delete(); } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java index 66a2f2447..3dd5cec7f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java @@ -308,13 +308,13 @@ public class FrameExporter { if (evl != null) { evl.handleExportingEvent("frame", pos + 1, fframes.size(), tim.parentTag == null ? "" : tim.parentTag.getName()); } - + BufferedImage result = SWF.frameToImageGet(ftim, fframes.get(pos++), 0, null, 0, ftim.displayRect, new Matrix(), new ColorTransform(), fbackgroundColor, false, settings.zoom).getBufferedImage(); if (evl != null) { evl.handleExportedEvent("frame", pos + 1, fframes.size(), tim.parentTag == null ? "" : tim.parentTag.getName()); } - + return result; } }; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/swf/SwfXmlExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/swf/SwfXmlExporter.java index b51bc6739..6d95728ac 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/swf/SwfXmlExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/swf/SwfXmlExporter.java @@ -99,11 +99,11 @@ public class SwfXmlExporter { StringBuilder sb = new StringBuilder(data.length * 2); for (int i = 0; i < data.length; i++) { sb.append(String.format("%02x", data[i])); - } - + } + return sb.toString(); } - + private static void generateXml(Document doc, Node node, String name, Object obj, boolean isListItem, int level) { Class cls = obj != null ? obj.getClass() : null; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java index 97740366d..675dd0cad 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java @@ -114,7 +114,7 @@ public class DefineTextTag extends TextTag { ret += "\r\n"; }*/ } - + if (fnt == null) { ret.add(AppResources.translate("fontNotFound").replace("%fontId%", Integer.toString(rec.fontId))); } else { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/AS2Package.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/AS2Package.java index a314b42f3..e4154d635 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/AS2Package.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/AS2Package.java @@ -57,7 +57,7 @@ public class AS2Package implements TreeItem { result.addAll(scripts.values()); return result; } - + public TreeItem getChild(int index) { if (index < subPackages.size()) { for (AS2Package subPackage : subPackages.values()) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java index 2b93b130e..648aa2abb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java @@ -1299,16 +1299,16 @@ public class Graph { currentLoop.phase = 0; } switch (part.stopPartType) { - case AND_OR: - part.setAndOrStack(stack); //Save stack for later use - break; + case AND_OR: + part.setAndOrStack(stack); //Save stack for later use + break; - case COMMONPART: - part.setCommonPartStack(stack); //Save stack for later use - break; + case COMMONPART: + part.setCommonPartStack(stack); //Save stack for later use + break; - case NONE: - break; + case NONE: + break; } return ret; } @@ -1603,7 +1603,7 @@ public class Graph { List stopPart2 = new ArrayList<>(stopPart); GraphPart.CommonPartStack commonPartStack = null; if ((!isEmpty) && (next != null)) { - commonPartStack=next.new CommonPartStack(); + commonPartStack = next.new CommonPartStack(); if (next.commonPartStacks == null) { next.commonPartStacks = new ArrayList<>(); } @@ -1613,8 +1613,8 @@ public class Graph { if (!isEmpty) { if (next != null) { next.commonPartStacks.add(commonPartStack); - commonPartStack.isTrueStack=true; //stopPart must know it needs to store trueStack - } + commonPartStack.isTrueStack = true; //stopPart must know it needs to store trueStack + } onTrue = printGraph(visited, prepareBranchLocalData(localData), trueStack, allParts, part, nps.get(1), stopPart2, loops, null, staticOperation, path, recursionLevel + 1); } List onFalse = new ArrayList<>(); @@ -1626,16 +1626,16 @@ public class Graph { onFalse = printGraph(visited, prepareBranchLocalData(localData), falseStack, allParts, part, nps.get(0), stopPart2, loops, null, staticOperation, path, recursionLevel + 1); } - /* if there is a stopPart (next), then Graph will be further analyzed starting from the stopPart: + /* if there is a stopPart (next), then Graph will be further analyzed starting from the stopPart: * trueStack and falseStack must be set equal to corresponding stack that was built upon reaching stopPart. */ if ((!isEmpty) && (next != null)) { - if ((commonPartStack.trueStack != null) && (commonPartStack.falseStack != null)) { - trueStack = commonPartStack.trueStack; - falseStack = commonPartStack.falseStack; + if ((commonPartStack.trueStack != null) && (commonPartStack.falseStack != null)) { + trueStack = commonPartStack.trueStack; + falseStack = commonPartStack.falseStack; } - next.commonPartStacks.remove(next.commonPartStacks.size()-1); + next.commonPartStacks.remove(next.commonPartStacks.size() - 1); if (next.commonPartStacks.isEmpty()) { - next.stopPartType = GraphPart.StopPartType.NONE; /* reset StopPartType */ + next.stopPartType = GraphPart.StopPartType.NONE; // reset StopPartType } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphPart.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphPart.java index de4e0c930..58a49e708 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphPart.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/GraphPart.java @@ -58,6 +58,7 @@ public class GraphPart implements Serializable { public List throwParts = new ArrayList<>(); public enum StopPartType { + NONE, AND_OR, COMMONPART } @@ -66,24 +67,27 @@ public class GraphPart implements Serializable { public TranslateStack andOrStack; // Stores stack when AND_OR stopPart has been reached public class CommonPartStack { // Stores stack when COMMONPART stopPart has been reached - boolean isTrueStack; - TranslateStack trueStack; - TranslateStack falseStack; + + boolean isTrueStack; + + TranslateStack trueStack; + + TranslateStack falseStack; } public ArrayList commonPartStacks; - + public void setAndOrStack(TranslateStack stack) { - andOrStack = stack; + andOrStack = stack; } public void setCommonPartStack(TranslateStack stack) { - CommonPartStack currentStack = commonPartStacks.get(commonPartStacks.size()-1); - if (currentStack.isTrueStack) { - currentStack.trueStack = stack; - } else { - currentStack.falseStack = stack; - } + CommonPartStack currentStack = commonPartStacks.get(commonPartStacks.size() - 1); + if (currentStack.isTrueStack) { + currentStack.trueStack = stack; + } else { + currentStack.falseStack = stack; + } } public int setTime(int time, List ordered, List visited) { diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index 30a42e620..eb75188b2 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -1377,7 +1377,7 @@ public class Main { for (int i = handlers.length - 1; i >= 0; i--) { logger.removeHandler(handlers[i]); } - + ConsoleHandler conHan = new ConsoleHandler(); conHan.setLevel(debug ? Level.CONFIG : Level.WARNING); SimpleFormatter formatterTxt = new SimpleFormatter(); diff --git a/src/com/jpexs/decompiler/flash/gui/debugger/DebuggerTools.java b/src/com/jpexs/decompiler/flash/gui/debugger/DebuggerTools.java index 0bf9c798d..15db7a50f 100644 --- a/src/com/jpexs/decompiler/flash/gui/debugger/DebuggerTools.java +++ b/src/com/jpexs/decompiler/flash/gui/debugger/DebuggerTools.java @@ -64,18 +64,18 @@ public class DebuggerTools { if (tested == null) { return false; } - + // fast check, because dynamic regex compile and match is expensive if (!tested.startsWith(DEBUGGER_PACKAGE)) { return false; } - + if (cls == null) { cls = ""; } else { cls = "\\." + Pattern.quote(cls); } - + return tested.matches(Pattern.quote(DEBUGGER_PACKAGE) + "(\\.pkg[a-f0-9]+)?" + cls); }