diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SourceGeneratorLocalData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SourceGeneratorLocalData.java index 75064bb10..75d13f0ad 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SourceGeneratorLocalData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SourceGeneratorLocalData.java @@ -53,6 +53,7 @@ public class SourceGeneratorLocalData implements Serializable { public String currentClass; public String superClass = null; + public DottedChain superPkg = null; public int activationReg = 0; @@ -72,6 +73,7 @@ public class SourceGeneratorLocalData implements Serializable { public boolean subMethod = false; public int privateNs = 0; + public int protectedNs = 0; public boolean isStatic = false; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java index 0f8e13ed0..82f49e210 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java @@ -735,5 +735,4 @@ public class AVM2Graph extends Graph { protected List filter(List list) { return avm2code.clearTemporaryRegisters(list); } - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/RegExpAvm2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/RegExpAvm2Item.java index a1bb423b9..03f2c6d99 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/RegExpAvm2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/RegExpAvm2Item.java @@ -4,7 +4,6 @@ import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.abc.ABC; import com.jpexs.decompiler.flash.abc.avm2.AVM2ConstantPool; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instructions; -import com.jpexs.decompiler.flash.abc.avm2.instructions.other.GetLexIns; import com.jpexs.decompiler.flash.abc.avm2.parser.script.AVM2SourceGenerator; import com.jpexs.decompiler.flash.abc.types.Namespace; import com.jpexs.decompiler.flash.configuration.Configuration; @@ -25,6 +24,7 @@ import java.util.List; public class RegExpAvm2Item extends AVM2Item { public String pattern; + public String modifier; public RegExpAvm2Item(String pattern, String modifier, GraphSourceItem instruction, GraphSourceItem lineStartIns) { @@ -101,5 +101,4 @@ public class RegExpAvm2Item extends AVM2Item { ins(AVM2Instructions.Construct, hasModifier ? 2 : 1) ); } - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetTypeAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetTypeAVM2Item.java index 7e2b87bb3..472c8ca17 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetTypeAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/SetTypeAVM2Item.java @@ -1,22 +1,23 @@ /* * Copyright (C) 2010-2016 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.model; import com.jpexs.decompiler.graph.GraphTargetItem; + /** * * @author JPEXS 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 6165351b7..6edf3e8a3 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 @@ -17,941 +17,994 @@ * 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 D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript3_script.flex + * from the specification file + * C:/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\34"+ - "\1\0\1\6\1\111\1\106\1\35\1\77\1\100\1\5\1\46\1\104"+ - "\1\15\1\11\1\4\1\36\3\42\4\43\2\22\1\17\1\103\1\12"+ - "\1\33\1\16\1\24\1\112\1\30\1\20\1\26\1\27\1\44\1\20"+ - "\2\10\1\75\4\10\1\76\5\10\1\31\3\10\1\40\2\10\1\25"+ - "\1\47\1\32\1\110\1\10\1\0\1\53\1\51\1\55\1\64\1\45"+ - "\1\41\1\74\1\67\1\62\1\21\1\54\1\65\1\72\1\60\1\57"+ - "\1\70\1\21\1\52\1\56\1\61\1\63\1\73\1\66\1\37\1\71"+ - "\1\21\1\101\1\107\1\102\1\105\6\0\1\113\41\0\1\50\2\0"+ - "\1\6\12\0\1\6\1\0\1\23\2\0\1\6\5\0\27\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\0\1\3\1\0"+ - "\1\57\1\0\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\1\0\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\2\137\1\140\1\137\1\141\2\3"+ - "\2\0\1\141\2\0\1\141\1\142\1\143\1\144\1\145"+ - "\1\146\1\0\1\63\1\147\2\150\1\100\1\6\1\151"+ - "\5\6\1\152\6\6\1\153\4\6\1\154\4\6\1\155"+ - "\6\6\1\156\12\6\1\157\1\6\1\160\1\6\1\161"+ - "\3\0\1\134\1\162\1\163\1\0\1\164\2\0\1\165"+ - "\1\166\2\0\1\3\1\141\1\167\1\150\1\100\4\6"+ - "\1\170\1\171\2\6\1\172\12\6\1\173\1\174\1\6"+ - "\1\175\11\6\1\176\5\6\1\177\1\6\1\200\2\0"+ - "\1\201\1\202\1\0\1\150\1\100\1\203\1\204\2\6"+ - "\1\205\1\6\1\206\1\207\1\6\1\210\1\6\1\211"+ - "\4\6\1\212\11\6\1\213\5\6\1\0\1\150\1\100"+ - "\3\6\1\214\1\6\1\215\1\216\1\6\1\217\1\6"+ - "\1\220\3\6\1\221\3\6\1\222\4\6\1\223\1\6"+ - "\1\0\1\150\1\100\1\224\1\6\1\225\10\6\1\226"+ - "\1\227\1\6\1\230\1\231\1\6\1\0\1\150\1\100"+ - "\1\232\1\233\1\234\3\6\1\235\3\6\1\236\1\0"+ - "\1\150\1\100\1\237\1\6\1\240\1\6\1\241\1\242"+ - "\1\243\1\150\1\100\1\244\1\245\6\100"; + public static final int XMLINSTROPENTAG = 10; - private static int [] zzUnpackAction() { - int [] result = new int[457]; - 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\34" + + "\1\0\1\6\1\111\1\106\1\35\1\77\1\100\1\5\1\46\1\104" + + "\1\15\1\11\1\4\1\36\3\42\4\43\2\22\1\17\1\103\1\12" + + "\1\33\1\16\1\24\1\112\1\30\1\20\1\26\1\27\1\44\1\20" + + "\2\10\1\75\4\10\1\76\5\10\1\31\3\10\1\40\2\10\1\25" + + "\1\47\1\32\1\110\1\10\1\0\1\53\1\51\1\55\1\64\1\45" + + "\1\41\1\74\1\67\1\62\1\21\1\54\1\65\1\72\1\60\1\57" + + "\1\70\1\21\1\52\1\56\1\61\1\63\1\73\1\66\1\37\1\71" + + "\1\21\1\101\1\107\1\102\1\105\6\0\1\113\41\0\1\50\2\0" + + "\1\6\12\0\1\6\1\0\1\23\2\0\1\6\5\0\27\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\0\1\3\1\0" + + "\1\57\1\0\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\1\0\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\2\137\1\140\1\137\1\141\2\3" + + "\2\0\1\141\2\0\1\141\1\142\1\143\1\144\1\145" + + "\1\146\1\0\1\63\1\147\2\150\1\100\1\6\1\151" + + "\5\6\1\152\6\6\1\153\4\6\1\154\4\6\1\155" + + "\6\6\1\156\12\6\1\157\1\6\1\160\1\6\1\161" + + "\3\0\1\134\1\162\1\163\1\0\1\164\2\0\1\165" + + "\1\166\2\0\1\3\1\141\1\167\1\150\1\100\4\6" + + "\1\170\1\171\2\6\1\172\12\6\1\173\1\174\1\6" + + "\1\175\11\6\1\176\5\6\1\177\1\6\1\200\2\0" + + "\1\201\1\202\1\0\1\150\1\100\1\203\1\204\2\6" + + "\1\205\1\6\1\206\1\207\1\6\1\210\1\6\1\211" + + "\4\6\1\212\11\6\1\213\5\6\1\0\1\150\1\100" + + "\3\6\1\214\1\6\1\215\1\216\1\6\1\217\1\6" + + "\1\220\3\6\1\221\3\6\1\222\4\6\1\223\1\6" + + "\1\0\1\150\1\100\1\224\1\6\1\225\10\6\1\226" + + "\1\227\1\6\1\230\1\231\1\6\1\0\1\150\1\100" + + "\1\232\1\233\1\234\3\6\1\235\3\6\1\236\1\0" + + "\1\150\1\100\1\237\1\6\1\240\1\6\1\241\1\242" + + "\1\243\1\150\1\100\1\244\1\245\6\100"; + + private static int[] zzUnpackAction() { + int[] result = new int[457]; + 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\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\u0da8\0\u0344\0\u0344\0\u0344"+ - "\0\u0344\0\u0344\0\u0344\0\u0344\0\u0df4\0\u0e40\0\u0e8c\0\u0ed8"+ - "\0\u0344\0\u0f24\0\u0f70\0\u0344\0\u0344\0\u0fbc\0\u1008\0\u1054"+ - "\0\u0344\0\u10a0\0\u0344\0\u10ec\0\u1138\0\u1184\0\u0344\0\u0344"+ - "\0\u11d0\0\u0344\0\u121c\0\u1268\0\u0344\0\u12b4\0\u0344\0\u0344"+ - "\0\u1300\0\u134c\0\u0344\0\u1398\0\u13e4\0\u0344\0\u1430\0\u147c"+ - "\0\u0344\0\u14c8\0\u1514\0\u1560\0\u14c8\0\u15ac\0\u0344\0\u15f8"+ - "\0\u0344\0\u1644\0\u0344\0\u1690\0\u16dc\0\u0344\0\u0344\0\u1728"+ - "\0\u0344\0\u0344\0\u1774\0\u0344\0\u0344\0\u17c0\0\u180c\0\u1858"+ - "\0\u18a4\0\u18f0\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c\0\u1ab8"+ - "\0\u1b04\0\u1b50\0\u1b9c\0\u0344\0\u0344\0\u1be8\0\u1c34\0\u1c80"+ - "\0\u04c0\0\u1ccc\0\u1d18\0\u1d64\0\u1db0\0\u1dfc\0\u1e48\0\u1e94"+ - "\0\u1ee0\0\u1f2c\0\u1f78\0\u1fc4\0\u2010\0\u205c\0\u20a8\0\u04c0"+ - "\0\u04c0\0\u20f4\0\u2140\0\u218c\0\u21d8\0\u2224\0\u04c0\0\u2270"+ - "\0\u22bc\0\u2308\0\u2354\0\u23a0\0\u23ec\0\u2438\0\u2484\0\u24d0"+ - "\0\u251c\0\u2568\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344"+ - "\0\u0344\0\u0344\0\u0344\0\u25b4\0\u0344\0\u0344\0\u0344\0\u0344"+ - "\0\u0344\0\u0344\0\u2600\0\u0344\0\u1184\0\u0344\0\u11d0\0\u0344"+ - "\0\u121c\0\u0344\0\u0344\0\u12b4\0\u264c\0\u2698\0\u26e4\0\u2730"+ - "\0\u277c\0\u27c8\0\u2814\0\u2860\0\u0344\0\u0344\0\u25b4\0\u0344"+ - "\0\u2600\0\u28ac\0\u28f8\0\u0344\0\u2944\0\u2990\0\u29dc\0\u2a28"+ - "\0\u2a74\0\u2ac0\0\u0344\0\u0344\0\u0344\0\u2b0c\0\u0344\0\u2b58"+ - "\0\u2b58\0\u0344\0\u2ba4\0\u18f0\0\u2bf0\0\u2c3c\0\u04c0\0\u2c88"+ - "\0\u2cd4\0\u2d20\0\u2d6c\0\u2db8\0\u2e04\0\u2e50\0\u2e9c\0\u2ee8"+ - "\0\u2f34\0\u2f80\0\u2fcc\0\u04c0\0\u3018\0\u3064\0\u30b0\0\u30fc"+ - "\0\u04c0\0\u3148\0\u3194\0\u31e0\0\u322c\0\u04c0\0\u3278\0\u32c4"+ - "\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u04c0\0\u3440\0\u348c\0\u34d8"+ - "\0\u3524\0\u3570\0\u35bc\0\u3608\0\u3654\0\u36a0\0\u36ec\0\u04c0"+ - "\0\u3738\0\u04c0\0\u3784\0\u04c0\0\u37d0\0\u381c\0\u264c\0\u0344"+ - "\0\u0344\0\u0344\0\u3868\0\u0344\0\u38b4\0\u3900\0\u394c\0\u0344"+ - "\0\u3998\0\u39e4\0\u28ac\0\u3a30\0\u0344\0\u3a7c\0\u3ac8\0\u3b14"+ - "\0\u3b60\0\u3bac\0\u3bf8\0\u04c0\0\u04c0\0\u3c44\0\u3c90\0\u04c0"+ - "\0\u3cdc\0\u3d28\0\u3d74\0\u3dc0\0\u3e0c\0\u3e58\0\u3ea4\0\u3ef0"+ - "\0\u3f3c\0\u3f88\0\u04c0\0\u04c0\0\u3fd4\0\u04c0\0\u4020\0\u406c"+ - "\0\u40b8\0\u4104\0\u4150\0\u419c\0\u41e8\0\u4234\0\u4280\0\u04c0"+ - "\0\u42cc\0\u4318\0\u4364\0\u43b0\0\u43fc\0\u04c0\0\u4448\0\u0344"+ - "\0\u25b4\0\u4494\0\u0344\0\u0344\0\u44e0\0\u452c\0\u4578\0\u04c0"+ - "\0\u45c4\0\u4610\0\u465c\0\u04c0\0\u46a8\0\u04c0\0\u04c0\0\u46f4"+ - "\0\u04c0\0\u4740\0\u04c0\0\u478c\0\u47d8\0\u4824\0\u4870\0\u04c0"+ - "\0\u48bc\0\u4908\0\u4954\0\u49a0\0\u49ec\0\u4a38\0\u4a84\0\u4ad0"+ - "\0\u4b1c\0\u04c0\0\u4b68\0\u4bb4\0\u4c00\0\u4c4c\0\u4c98\0\u4ce4"+ - "\0\u4d30\0\u4d7c\0\u4dc8\0\u4e14\0\u4e60\0\u04c0\0\u4eac\0\u04c0"+ - "\0\u04c0\0\u4ef8\0\u04c0\0\u4f44\0\u04c0\0\u4f90\0\u4fdc\0\u5028"+ - "\0\u04c0\0\u5074\0\u50c0\0\u510c\0\u04c0\0\u5158\0\u51a4\0\u51f0"+ - "\0\u523c\0\u04c0\0\u5288\0\u52d4\0\u5320\0\u536c\0\u04c0\0\u53b8"+ - "\0\u04c0\0\u5404\0\u5450\0\u549c\0\u54e8\0\u5534\0\u5580\0\u55cc"+ - "\0\u5618\0\u04c0\0\u04c0\0\u5664\0\u04c0\0\u04c0\0\u56b0\0\u56fc"+ - "\0\u5748\0\u5794\0\u04c0\0\u04c0\0\u04c0\0\u57e0\0\u582c\0\u5878"+ - "\0\u04c0\0\u58c4\0\u5910\0\u595c\0\u04c0\0\u59a8\0\u59f4\0\u5a40"+ - "\0\u04c0\0\u5a8c\0\u04c0\0\u5ad8\0\u04c0\0\u04c0\0\u0344\0\u0344"+ - "\0\u5b24\0\u04c0\0\u04c0\0\u5b70\0\u5bbc\0\u5c08\0\u5c54\0\u5ca0"+ - "\0\u1858"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[457]; - 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"+ - "\2\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\14\1\102\1\103\1\104"+ - "\31\102\1\105\12\102\1\106\44\102\1\107\1\110\1\111"+ - "\32\107\1\105\11\107\1\106\44\107\1\14\1\112\1\113"+ - "\1\114\1\115\3\14\1\116\2\14\1\114\2\14\1\117"+ - "\3\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\13\14"+ - "\1\112\1\113\1\114\4\14\1\123\2\14\1\114\3\14"+ - "\3\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\12\14\1\130\1\112\1\113\27\130\1\131\62\130"+ - "\1\132\1\133\12\130\1\134\77\130\1\112\1\113\7\130"+ - "\1\135\66\130\1\136\12\130\1\137\1\110\1\111\44\137"+ - "\1\140\1\141\43\137\116\0\1\16\114\0\1\17\7\0"+ - "\1\17\100\0\1\142\2\0\1\142\1\143\1\144\25\142"+ - "\1\145\13\142\1\146\44\142\33\0\1\147\66\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\26\22"+ - "\26\0\1\150\1\151\7\0\1\152\13\0\1\152\3\0"+ - "\2\152\33\0\1\153\24\0\1\154\1\0\1\155\4\0"+ - "\3\154\4\0\4\154\1\0\1\156\3\0\3\154\2\0"+ - "\2\154\3\0\26\154\2\0\1\157\45\0\1\160\75\0"+ - "\1\161\15\0\1\162\76\0\1\163\14\0\1\164\77\0"+ - "\1\165\105\0\1\152\10\0\1\31\13\0\1\31\3\0"+ - "\2\31\2\166\101\0\1\167\71\0\1\152\10\0\1\170"+ - "\13\0\1\171\2\172\1\0\1\173\1\174\2\166\54\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\2\22\1\175\3\22\1\176\2\22\1\177\1\200\13\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\1\22"+ - "\1\201\6\22\3\0\2\22\1\202\11\22\1\203\11\22"+ - "\50\0\1\204\12\0\1\205\115\0\1\206\51\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22"+ - "\1\207\24\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\7\22\1\210\3\0\26\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\5\22\1\211"+ - "\20\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\2\22\1\212\3\22\1\213\5\22\1\214"+ - "\11\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\215\3\0\10\22\1\216\1\22\1\217\2\22"+ - "\1\220\10\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\22\22\1\221\3\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\222\3\0"+ - "\2\22\1\223\7\22\1\224\13\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\1\22\1\225"+ - "\14\22\1\226\1\22\1\227\5\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\3\22\1\230\4\22\3\0"+ - "\5\22\1\231\1\22\1\232\11\22\1\233\4\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\5\22\1\234\1\22\1\235\16\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\7\22\1\236\3\0\6\22"+ - "\1\237\11\22\1\240\5\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\3\0\11\22\1\241\4\22"+ - "\1\242\7\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\1\22\1\243\1\244\7\22\1\245"+ - "\13\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\2\22\1\246\3\22\1\247\17\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\250"+ - "\3\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\7\22\1\251\16\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\2\22"+ - "\1\252\23\22\50\0\1\253\52\0\1\254\40\0\1\255"+ - "\53\0\1\256\37\0\1\257\113\0\1\260\60\0\1\102"+ - "\2\0\31\102\1\0\12\102\1\0\44\102\2\0\1\104"+ - "\111\0\1\261\3\0\30\261\1\262\1\263\1\261\1\264"+ - "\1\261\1\265\5\261\1\266\1\261\1\267\1\270\5\261"+ - "\1\271\1\272\1\261\1\273\27\261\1\0\1\107\2\0"+ - "\32\107\1\0\11\107\1\0\44\107\2\0\1\111\113\0"+ - "\1\113\114\0\1\114\7\0\1\114\116\0\1\274\105\0"+ - "\2\275\3\0\1\275\1\0\5\275\2\0\4\275\1\0"+ - "\1\276\2\0\10\275\3\0\26\275\15\0\1\277\2\0"+ - "\31\277\1\300\57\277\10\0\2\301\3\0\1\301\1\0"+ - "\5\301\2\0\4\301\1\0\1\302\2\0\10\301\3\0"+ - "\26\301\33\0\1\303\75\0\1\304\2\0\31\304\1\305"+ - "\1\306\56\304\32\0\1\307\63\0\1\133\126\0\1\310"+ - "\102\0\1\311\3\0\1\312\3\0\1\313\2\0\3\312"+ - "\2\0\1\314\1\0\4\312\5\0\3\312\2\0\2\312"+ - "\3\0\26\312\2\0\1\315\12\0\1\137\2\0\44\137"+ - "\2\0\43\137\1\316\3\0\33\316\1\317\1\316\1\265"+ - "\5\316\1\266\1\320\1\267\1\270\5\316\1\271\1\272"+ - "\1\316\1\321\27\316\1\0\1\142\2\0\1\142\1\322"+ - "\42\142\1\146\44\142\1\143\1\323\1\324\111\143\1\325"+ - "\2\326\1\325\1\327\1\330\41\325\1\331\44\325\1\142"+ - "\2\0\1\142\1\332\42\142\1\146\44\142\11\0\1\333"+ - "\124\0\1\152\13\0\1\152\3\0\2\152\2\166\56\0"+ - "\2\154\3\0\1\154\1\0\5\154\2\0\4\154\4\0"+ - "\10\154\3\0\26\154\50\0\1\334\113\0\1\335\76\0"+ - "\1\336\14\0\1\337\75\0\1\340\4\0\1\341\13\0"+ - "\1\341\3\0\2\341\2\0\1\340\100\0\1\342\71\0"+ - "\1\152\10\0\1\170\13\0\1\170\3\0\2\170\2\166"+ - "\57\0\1\152\10\0\1\170\13\0\1\171\3\0\1\173"+ - "\1\174\2\166\66\0\1\343\1\0\1\343\3\0\3\343"+ - "\5\0\1\344\2\0\5\343\3\0\1\343\1\0\1\343"+ - "\1\0\1\343\6\0\1\343\40\0\1\152\10\0\1\170"+ - "\13\0\1\174\3\0\2\174\2\166\57\0\1\152\10\0"+ - "\1\170\13\0\1\345\3\0\2\345\2\166\54\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\14\22"+ - "\1\346\11\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\1\22\1\347\24\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22"+ - "\1\350\16\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\7\22\1\351\16\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\10\22"+ - "\1\352\15\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\4\22\1\353\21\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22"+ - "\1\354\20\22\23\0\1\355\1\0\1\355\7\0\2\355"+ - "\4\0\4\355\5\0\3\355\2\0\2\355\3\0\26\355"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\7\22"+ - "\1\356\3\0\26\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\10\22\1\357\15\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\5\22\1\360\2\22\1\361\15\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\7\22\1\362"+ - "\16\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\2\22\1\363\23\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\10\22\1\364"+ - "\15\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\2\22\1\365\23\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\17\22\1\366"+ - "\6\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\11\22\1\367\14\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\7\22\1\370\3\0\26\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\3\0\15\22\1\371\10\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\3\0\10\22\1\372\10\22"+ - "\1\373\4\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\14\22\1\374\11\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\12\22"+ - "\1\375\5\22\1\376\5\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\3\0\1\22\1\377\7\22"+ - "\1\u0100\14\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\17\22\1\u0101\6\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22"+ - "\1\u0102\2\22\1\u0103\15\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\3\0\17\22\1\u0104\6\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\7\22"+ - "\1\u0105\3\0\26\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\13\22\1\u0106\12\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\3\22\1\u0107"+ - "\4\22\3\0\14\22\1\u0108\11\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u0109"+ - "\16\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\10\22\1\u010a\15\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\11\22\1\u010b"+ - "\14\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\6\22\1\u010c\2\22\1\u010d\14\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\4\22\1\u010e\21\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\1\u010f\25\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22"+ - "\1\u0110\24\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\11\22\1\u0111\14\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\10\22"+ - "\1\u0112\15\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\3\22\1\u0113\4\22\3\0\26\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\25\22"+ - "\1\u0114\35\0\1\u0115\1\0\1\u0115\3\0\3\u0115\5\0"+ - "\1\u0115\2\0\5\u0115\3\0\1\u0115\1\0\1\u0115\1\0"+ - "\1\u0115\6\0\1\u0115\47\0\1\u0116\1\0\1\u0116\3\0"+ - "\3\u0116\5\0\1\u0116\2\0\5\u0116\3\0\1\u0116\1\0"+ - "\1\u0116\1\0\1\u0116\6\0\1\u0116\27\0\1\u0117\2\0"+ - "\31\u0117\1\305\1\0\56\u0117\1\306\2\0\31\306\1\u0118"+ - "\57\306\16\0\1\u0119\113\0\1\u011a\105\0\1\u011b\6\0"+ - "\3\u011b\4\0\4\u011b\5\0\3\u011b\2\0\2\u011b\3\0"+ - "\26\u011b\2\0\1\u011c\22\0\2\312\3\0\1\312\1\0"+ - "\5\312\2\0\4\312\4\0\10\312\3\0\26\312\32\0"+ - "\1\u011d\7\0\1\u011e\76\0\1\u011f\6\0\3\u011f\4\0"+ - "\4\u011f\5\0\3\u011f\2\0\2\u011f\3\0\26\u011f\2\0"+ - "\1\u0120\33\0\1\322\15\0\1\322\1\0\1\322\3\0"+ - "\1\322\3\0\24\322\21\0\1\324\111\0\1\325\2\326"+ - "\1\325\1\327\1\u0121\41\325\1\331\44\325\5\326\1\u0122"+ - "\113\326\1\u0122\13\326\1\327\15\326\1\327\1\326\1\327"+ - "\3\326\1\327\3\326\24\327\17\326\1\142\2\0\1\142"+ - "\1\u0123\1\330\41\142\1\146\44\142\1\325\2\326\1\325"+ - "\1\u0124\1\u0121\41\325\1\331\44\325\1\142\2\0\1\142"+ - "\1\322\14\142\1\332\15\142\1\332\1\142\1\332\3\142"+ - "\1\332\1\142\1\146\1\142\24\332\17\142\33\0\1\u0125"+ - "\102\0\1\341\13\0\1\341\3\0\2\341\70\0\1\u0126"+ - "\1\0\1\u0126\3\0\3\u0126\5\0\1\u0126\2\0\5\u0126"+ - "\3\0\1\u0126\1\0\1\u0126\1\0\1\u0126\6\0\1\u0126"+ - "\40\0\1\152\10\0\1\170\13\0\1\u0127\3\0\2\u0127"+ - "\2\166\54\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\5\22\1\u0128\20\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\2\22\1\u0129"+ - "\23\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\4\22\1\u012a\21\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\7\22\1\u012b\3\0\26\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\3\0\16\22\1\u012c\7\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\u012d\3\0\26\22\23\0"+ - "\3\355\7\0\3\355\3\0\4\355\4\0\10\355\3\0"+ - "\26\355\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\2\22\1\u012e\23\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\12\22\1\u012f"+ - "\13\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\u0130\3\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\3\0\4\22\1\u0131\21\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\3\0\5\22\1\u0132\2\22\1\u0133\15\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22"+ - "\1\u0134\20\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\10\22\1\u0135\15\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\u0136\3\0"+ - "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\10\22\1\u0137\15\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\1\22\1\u0138"+ - "\24\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\11\22\1\u0139\14\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\7\22\1\u013a\3\0\26\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\3\0\14\22\1\u013b\11\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\u013c\3\0\26\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\6\22\1\u013d\17\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\5\22\1\u013e\20\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u013f"+ - "\3\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\10\22\1\u0140\15\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\u0141\3\0"+ - "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\6\22\1\u0142\5\22\1\u0143\11\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u0144"+ - "\3\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\2\22\1\u0145\23\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\u0146\3\0"+ - "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\2\22\1\u0147\23\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\16\22\1\u0148"+ - "\7\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\14\22\1\u0149\11\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u014a"+ - "\15\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\22\22\1\u014b\3\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\3\22\1\u014c"+ - "\22\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\14\22\1\u014d\11\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\13\22\1\u014e"+ - "\12\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\11\22\1\u014f\14\22\35\0\1\u0150\1\0"+ - "\1\u0150\3\0\3\u0150\5\0\1\u0150\2\0\5\u0150\3\0"+ - "\1\u0150\1\0\1\u0150\1\0\1\u0150\6\0\1\u0150\47\0"+ - "\1\u0151\1\0\1\u0151\3\0\3\u0151\5\0\1\u0151\2\0"+ - "\5\u0151\3\0\1\u0151\1\0\1\u0151\1\0\1\u0151\6\0"+ - "\1\u0151\30\0\2\u0152\5\0\2\u011b\1\0\1\u0152\1\0"+ - "\1\u011b\1\u0153\5\u011b\2\0\4\u011b\4\0\10\u011b\3\0"+ - "\26\u011b\32\0\1\u0154\124\0\1\u0155\75\0\2\u011f\3\0"+ - "\1\u011f\1\0\5\u011f\2\0\4\u011f\4\0\10\u011f\3\0"+ - "\26\u011f\15\0\1\325\2\326\1\325\1\u0123\1\u0121\41\325"+ - "\1\331\44\325\4\326\1\324\1\u0122\106\326\1\325\2\326"+ - "\1\325\1\327\1\u0121\13\325\1\u0124\15\325\1\u0124\1\325"+ - "\1\u0124\3\325\1\u0124\1\325\1\331\1\325\24\u0124\17\325"+ - "\20\0\1\u0156\1\0\1\u0156\3\0\3\u0156\5\0\1\u0156"+ - "\2\0\5\u0156\3\0\1\u0156\1\0\1\u0156\1\0\1\u0156"+ - "\6\0\1\u0156\40\0\1\152\10\0\1\170\13\0\1\u0157"+ - "\3\0\2\u0157\2\166\54\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\7\22\1\u0158\3\0\26\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\14\22"+ - "\1\u0159\11\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\10\22\1\u015a\15\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22"+ - "\1\u015b\16\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\3\22\1\u015c\22\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22"+ - "\1\u015d\24\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\16\22\1\u015e\7\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\10\22"+ - "\1\u015f\15\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\11\22\1\u0160\14\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22"+ - "\1\u0161\20\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\11\22\1\u0162\14\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22"+ - "\1\u0163\24\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\4\22\1\u0164\21\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22"+ - "\1\u0165\24\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\22\22\1\u0166\3\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22"+ - "\1\u0167\20\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\15\22\1\u0168\10\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\6\22"+ - "\1\u0169\17\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\2\22\1\u016a\23\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22"+ - "\1\u016b\24\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\1\22\1\u016c\24\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\u016d\3\0"+ - "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\3\22\1\u016e\4\22\3\0\26\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\12\22\1\u016f"+ - "\13\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\3\0\10\22\1\u0170\15\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\21\22\1\u0171"+ - "\4\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\u0172\3\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\u0173\3\0\26\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\2\22\1\u0174\23\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\2\22\1\u0175\23\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\11\22\1\u0176\14\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\7\22\1\u0177\16\22\16\0"+ - "\2\u0152\10\0\1\u0152\2\0\1\u0153\124\0\1\u0178\104\0"+ - "\1\u0179\1\0\1\u0179\3\0\3\u0179\5\0\1\u0179\2\0"+ - "\5\u0179\3\0\1\u0179\1\0\1\u0179\1\0\1\u0179\6\0"+ - "\1\u0179\40\0\1\152\10\0\1\170\13\0\1\u017a\3\0"+ - "\2\u017a\2\166\54\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\14\22\1\u017b\11\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\11\22"+ - "\1\u017c\14\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\13\22\1\u017d\12\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22"+ - "\1\u017e\16\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\7\22\1\u017f\16\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\4\22"+ - "\1\u0180\21\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\16\22\1\u0181\7\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\11\22"+ - "\1\u0182\14\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\7\22\1\u0183\3\0\26\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\17\22\1\u0184"+ - "\6\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\3\22\1\u0185\4\22\3\0\26\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u0186"+ - "\16\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\3\22\1\u0187\4\22\3\0\7\22\1\u0188\16\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\10\22\1\u0189\15\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\21\22\1\u018a\4\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\11\22\1\u018b\14\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\14\22\1\u018c\11\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u018d"+ - "\3\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\11\22\1\u018e\14\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\4\22"+ - "\1\u018f\21\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\10\22\1\u0190\15\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\23\22"+ - "\1\u0191\2\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\4\22\1\u0192\21\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\11\22"+ - "\1\u0193\14\22\45\0\1\u0194\103\0\1\u0195\1\0\1\u0195"+ - "\3\0\3\u0195\5\0\1\u0195\2\0\5\u0195\3\0\1\u0195"+ - "\1\0\1\u0195\1\0\1\u0195\6\0\1\u0195\40\0\1\152"+ - "\10\0\1\170\13\0\1\u0196\3\0\2\u0196\2\166\54\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\20\22\1\u0197\5\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\6\22\1\u0198\17\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\5\22\1\u0199\20\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\12\22\1\u019a\13\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\13\22\1\u019b\12\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\2\22\1\u019c\23\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\4\22\1\u019d\21\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\2\22\1\u019e\23\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\2\22\1\u019f\23\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\7\22\1\u01a0\3\0\26\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22"+ - "\1\u01a1\16\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\10\22\1\u01a2\15\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\4\22"+ - "\1\u01a3\21\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\10\22\1\u01a4\15\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\u01a5\3\0"+ - "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\u01a6\3\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\3\0\10\22\1\u01a7\15\22"+ - "\46\0\1\u01a8\102\0\1\u01a9\1\0\1\u01a9\3\0\3\u01a9"+ - "\5\0\1\u01a9\2\0\5\u01a9\3\0\1\u01a9\1\0\1\u01a9"+ - "\1\0\1\u01a9\6\0\1\u01a9\40\0\1\152\10\0\1\170"+ - "\13\0\1\u01aa\3\0\2\u01aa\2\166\54\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u01ab"+ - "\16\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\u01ac\3\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\u01ad\3\0\26\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\4\22\1\u01ae\21\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\7\22\1\u01af\3\0\26\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\4\22"+ - "\1\u01b0\21\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\3\0\14\22\1\u01b1\11\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22"+ - "\1\u01b2\16\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\7\22\1\u01b3\3\0\26\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\7\22\1\u01b4\3\0\26\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\3\0\20\22\1\u01b5\5\22\45\0\1\u01b6\103\0\1\u01b7"+ - "\1\0\1\u01b7\3\0\3\u01b7\5\0\1\u01b7\2\0\5\u01b7"+ - "\3\0\1\u01b7\1\0\1\u01b7\1\0\1\u01b7\6\0\1\u01b7"+ - "\40\0\1\152\10\0\1\170\13\0\1\u01b8\3\0\2\u01b8"+ - "\2\166\54\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\u01b9\3\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\3\0\6\22\1\u01ba\17\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\7\22"+ - "\1\u01bb\3\0\26\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\10\22\1\u01bc\15\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0"+ - "\13\22\1\u01bd\12\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\3\0\13\22\1\u01be\12\22\42\0"+ - "\1\u01bf\106\0\1\u01c0\1\0\1\u01c0\3\0\3\u01c0\5\0"+ - "\1\u01c0\2\0\5\u01c0\3\0\1\u01c0\1\0\1\u01c0\1\0"+ - "\1\u01c0\6\0\1\u01c0\40\0\1\152\10\0\1\170\13\0"+ - "\1\u01c1\3\0\2\u01c1\2\166\54\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\3\22\1\u01c2\4\22\3\0\26\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\3\0\5\22\1\u01c3\20\22\26\0\1\152\10\0\1\170"+ - "\13\0\1\u01c4\3\0\2\u01c4\2\166\57\0\1\152\10\0"+ - "\1\170\13\0\1\u01c5\3\0\2\u01c5\2\166\57\0\1\152"+ - "\10\0\1\170\13\0\1\u01c6\3\0\2\u01c6\2\166\57\0"+ - "\1\152\10\0\1\170\13\0\1\u01c7\3\0\2\u01c7\2\166"+ - "\57\0\1\152\10\0\1\170\13\0\1\u01c8\3\0\2\u01c8"+ - "\2\166\57\0\1\152\10\0\1\170\13\0\1\u01c9\3\0"+ - "\2\u01c9\2\166\46\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\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\u0da8\0\u0344\0\u0344\0\u0344" + + "\0\u0344\0\u0344\0\u0344\0\u0344\0\u0df4\0\u0e40\0\u0e8c\0\u0ed8" + + "\0\u0344\0\u0f24\0\u0f70\0\u0344\0\u0344\0\u0fbc\0\u1008\0\u1054" + + "\0\u0344\0\u10a0\0\u0344\0\u10ec\0\u1138\0\u1184\0\u0344\0\u0344" + + "\0\u11d0\0\u0344\0\u121c\0\u1268\0\u0344\0\u12b4\0\u0344\0\u0344" + + "\0\u1300\0\u134c\0\u0344\0\u1398\0\u13e4\0\u0344\0\u1430\0\u147c" + + "\0\u0344\0\u14c8\0\u1514\0\u1560\0\u14c8\0\u15ac\0\u0344\0\u15f8" + + "\0\u0344\0\u1644\0\u0344\0\u1690\0\u16dc\0\u0344\0\u0344\0\u1728" + + "\0\u0344\0\u0344\0\u1774\0\u0344\0\u0344\0\u17c0\0\u180c\0\u1858" + + "\0\u18a4\0\u18f0\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c\0\u1ab8" + + "\0\u1b04\0\u1b50\0\u1b9c\0\u0344\0\u0344\0\u1be8\0\u1c34\0\u1c80" + + "\0\u04c0\0\u1ccc\0\u1d18\0\u1d64\0\u1db0\0\u1dfc\0\u1e48\0\u1e94" + + "\0\u1ee0\0\u1f2c\0\u1f78\0\u1fc4\0\u2010\0\u205c\0\u20a8\0\u04c0" + + "\0\u04c0\0\u20f4\0\u2140\0\u218c\0\u21d8\0\u2224\0\u04c0\0\u2270" + + "\0\u22bc\0\u2308\0\u2354\0\u23a0\0\u23ec\0\u2438\0\u2484\0\u24d0" + + "\0\u251c\0\u2568\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344" + + "\0\u0344\0\u0344\0\u0344\0\u25b4\0\u0344\0\u0344\0\u0344\0\u0344" + + "\0\u0344\0\u0344\0\u2600\0\u0344\0\u1184\0\u0344\0\u11d0\0\u0344" + + "\0\u121c\0\u0344\0\u0344\0\u12b4\0\u264c\0\u2698\0\u26e4\0\u2730" + + "\0\u277c\0\u27c8\0\u2814\0\u2860\0\u0344\0\u0344\0\u25b4\0\u0344" + + "\0\u2600\0\u28ac\0\u28f8\0\u0344\0\u2944\0\u2990\0\u29dc\0\u2a28" + + "\0\u2a74\0\u2ac0\0\u0344\0\u0344\0\u0344\0\u2b0c\0\u0344\0\u2b58" + + "\0\u2b58\0\u0344\0\u2ba4\0\u18f0\0\u2bf0\0\u2c3c\0\u04c0\0\u2c88" + + "\0\u2cd4\0\u2d20\0\u2d6c\0\u2db8\0\u2e04\0\u2e50\0\u2e9c\0\u2ee8" + + "\0\u2f34\0\u2f80\0\u2fcc\0\u04c0\0\u3018\0\u3064\0\u30b0\0\u30fc" + + "\0\u04c0\0\u3148\0\u3194\0\u31e0\0\u322c\0\u04c0\0\u3278\0\u32c4" + + "\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u04c0\0\u3440\0\u348c\0\u34d8" + + "\0\u3524\0\u3570\0\u35bc\0\u3608\0\u3654\0\u36a0\0\u36ec\0\u04c0" + + "\0\u3738\0\u04c0\0\u3784\0\u04c0\0\u37d0\0\u381c\0\u264c\0\u0344" + + "\0\u0344\0\u0344\0\u3868\0\u0344\0\u38b4\0\u3900\0\u394c\0\u0344" + + "\0\u3998\0\u39e4\0\u28ac\0\u3a30\0\u0344\0\u3a7c\0\u3ac8\0\u3b14" + + "\0\u3b60\0\u3bac\0\u3bf8\0\u04c0\0\u04c0\0\u3c44\0\u3c90\0\u04c0" + + "\0\u3cdc\0\u3d28\0\u3d74\0\u3dc0\0\u3e0c\0\u3e58\0\u3ea4\0\u3ef0" + + "\0\u3f3c\0\u3f88\0\u04c0\0\u04c0\0\u3fd4\0\u04c0\0\u4020\0\u406c" + + "\0\u40b8\0\u4104\0\u4150\0\u419c\0\u41e8\0\u4234\0\u4280\0\u04c0" + + "\0\u42cc\0\u4318\0\u4364\0\u43b0\0\u43fc\0\u04c0\0\u4448\0\u0344" + + "\0\u25b4\0\u4494\0\u0344\0\u0344\0\u44e0\0\u452c\0\u4578\0\u04c0" + + "\0\u45c4\0\u4610\0\u465c\0\u04c0\0\u46a8\0\u04c0\0\u04c0\0\u46f4" + + "\0\u04c0\0\u4740\0\u04c0\0\u478c\0\u47d8\0\u4824\0\u4870\0\u04c0" + + "\0\u48bc\0\u4908\0\u4954\0\u49a0\0\u49ec\0\u4a38\0\u4a84\0\u4ad0" + + "\0\u4b1c\0\u04c0\0\u4b68\0\u4bb4\0\u4c00\0\u4c4c\0\u4c98\0\u4ce4" + + "\0\u4d30\0\u4d7c\0\u4dc8\0\u4e14\0\u4e60\0\u04c0\0\u4eac\0\u04c0" + + "\0\u04c0\0\u4ef8\0\u04c0\0\u4f44\0\u04c0\0\u4f90\0\u4fdc\0\u5028" + + "\0\u04c0\0\u5074\0\u50c0\0\u510c\0\u04c0\0\u5158\0\u51a4\0\u51f0" + + "\0\u523c\0\u04c0\0\u5288\0\u52d4\0\u5320\0\u536c\0\u04c0\0\u53b8" + + "\0\u04c0\0\u5404\0\u5450\0\u549c\0\u54e8\0\u5534\0\u5580\0\u55cc" + + "\0\u5618\0\u04c0\0\u04c0\0\u5664\0\u04c0\0\u04c0\0\u56b0\0\u56fc" + + "\0\u5748\0\u5794\0\u04c0\0\u04c0\0\u04c0\0\u57e0\0\u582c\0\u5878" + + "\0\u04c0\0\u58c4\0\u5910\0\u595c\0\u04c0\0\u59a8\0\u59f4\0\u5a40" + + "\0\u04c0\0\u5a8c\0\u04c0\0\u5ad8\0\u04c0\0\u04c0\0\u0344\0\u0344" + + "\0\u5b24\0\u04c0\0\u04c0\0\u5b70\0\u5bbc\0\u5c08\0\u5c54\0\u5ca0" + + "\0\u1858"; - private static int [] zzUnpackTrans() { - int [] result = new int[23788]; - 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[457]; + 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"+ - "\26\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\0\1\1\1\0\1\1\1\0\1\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\1\0\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"+ - "\1\1\1\11\3\1\1\11\2\0\1\1\2\0\1\1"+ - "\3\11\1\1\1\11\1\0\1\1\1\11\62\1\3\0"+ - "\3\11\1\0\1\11\2\0\1\1\1\11\2\0\2\1"+ - "\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[457]; - 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" + + "\2\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\14\1\102\1\103\1\104" + + "\31\102\1\105\12\102\1\106\44\102\1\107\1\110\1\111" + + "\32\107\1\105\11\107\1\106\44\107\1\14\1\112\1\113" + + "\1\114\1\115\3\14\1\116\2\14\1\114\2\14\1\117" + + "\3\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\13\14" + + "\1\112\1\113\1\114\4\14\1\123\2\14\1\114\3\14" + + "\3\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\12\14\1\130\1\112\1\113\27\130\1\131\62\130" + + "\1\132\1\133\12\130\1\134\77\130\1\112\1\113\7\130" + + "\1\135\66\130\1\136\12\130\1\137\1\110\1\111\44\137" + + "\1\140\1\141\43\137\116\0\1\16\114\0\1\17\7\0" + + "\1\17\100\0\1\142\2\0\1\142\1\143\1\144\25\142" + + "\1\145\13\142\1\146\44\142\33\0\1\147\66\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\26\22" + + "\26\0\1\150\1\151\7\0\1\152\13\0\1\152\3\0" + + "\2\152\33\0\1\153\24\0\1\154\1\0\1\155\4\0" + + "\3\154\4\0\4\154\1\0\1\156\3\0\3\154\2\0" + + "\2\154\3\0\26\154\2\0\1\157\45\0\1\160\75\0" + + "\1\161\15\0\1\162\76\0\1\163\14\0\1\164\77\0" + + "\1\165\105\0\1\152\10\0\1\31\13\0\1\31\3\0" + + "\2\31\2\166\101\0\1\167\71\0\1\152\10\0\1\170" + + "\13\0\1\171\2\172\1\0\1\173\1\174\2\166\54\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\2\22\1\175\3\22\1\176\2\22\1\177\1\200\13\22" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\1\22" + + "\1\201\6\22\3\0\2\22\1\202\11\22\1\203\11\22" + + "\50\0\1\204\12\0\1\205\115\0\1\206\51\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22" + + "\1\207\24\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\7\22\1\210\3\0\26\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\5\22\1\211" + + "\20\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\2\22\1\212\3\22\1\213\5\22\1\214" + + "\11\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\7\22\1\215\3\0\10\22\1\216\1\22\1\217\2\22" + + "\1\220\10\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\22\22\1\221\3\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\7\22\1\222\3\0" + + "\2\22\1\223\7\22\1\224\13\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\1\22\1\225" + + "\14\22\1\226\1\22\1\227\5\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\3\22\1\230\4\22\3\0" + + "\5\22\1\231\1\22\1\232\11\22\1\233\4\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\5\22\1\234\1\22\1\235\16\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\7\22\1\236\3\0\6\22" + + "\1\237\11\22\1\240\5\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\10\22\3\0\11\22\1\241\4\22" + + "\1\242\7\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\1\22\1\243\1\244\7\22\1\245" + + "\13\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\2\22\1\246\3\22\1\247\17\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\250" + + "\3\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\7\22\1\251\16\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\2\22" + + "\1\252\23\22\50\0\1\253\52\0\1\254\40\0\1\255" + + "\53\0\1\256\37\0\1\257\113\0\1\260\60\0\1\102" + + "\2\0\31\102\1\0\12\102\1\0\44\102\2\0\1\104" + + "\111\0\1\261\3\0\30\261\1\262\1\263\1\261\1\264" + + "\1\261\1\265\5\261\1\266\1\261\1\267\1\270\5\261" + + "\1\271\1\272\1\261\1\273\27\261\1\0\1\107\2\0" + + "\32\107\1\0\11\107\1\0\44\107\2\0\1\111\113\0" + + "\1\113\114\0\1\114\7\0\1\114\116\0\1\274\105\0" + + "\2\275\3\0\1\275\1\0\5\275\2\0\4\275\1\0" + + "\1\276\2\0\10\275\3\0\26\275\15\0\1\277\2\0" + + "\31\277\1\300\57\277\10\0\2\301\3\0\1\301\1\0" + + "\5\301\2\0\4\301\1\0\1\302\2\0\10\301\3\0" + + "\26\301\33\0\1\303\75\0\1\304\2\0\31\304\1\305" + + "\1\306\56\304\32\0\1\307\63\0\1\133\126\0\1\310" + + "\102\0\1\311\3\0\1\312\3\0\1\313\2\0\3\312" + + "\2\0\1\314\1\0\4\312\5\0\3\312\2\0\2\312" + + "\3\0\26\312\2\0\1\315\12\0\1\137\2\0\44\137" + + "\2\0\43\137\1\316\3\0\33\316\1\317\1\316\1\265" + + "\5\316\1\266\1\320\1\267\1\270\5\316\1\271\1\272" + + "\1\316\1\321\27\316\1\0\1\142\2\0\1\142\1\322" + + "\42\142\1\146\44\142\1\143\1\323\1\324\111\143\1\325" + + "\2\326\1\325\1\327\1\330\41\325\1\331\44\325\1\142" + + "\2\0\1\142\1\332\42\142\1\146\44\142\11\0\1\333" + + "\124\0\1\152\13\0\1\152\3\0\2\152\2\166\56\0" + + "\2\154\3\0\1\154\1\0\5\154\2\0\4\154\4\0" + + "\10\154\3\0\26\154\50\0\1\334\113\0\1\335\76\0" + + "\1\336\14\0\1\337\75\0\1\340\4\0\1\341\13\0" + + "\1\341\3\0\2\341\2\0\1\340\100\0\1\342\71\0" + + "\1\152\10\0\1\170\13\0\1\170\3\0\2\170\2\166" + + "\57\0\1\152\10\0\1\170\13\0\1\171\3\0\1\173" + + "\1\174\2\166\66\0\1\343\1\0\1\343\3\0\3\343" + + "\5\0\1\344\2\0\5\343\3\0\1\343\1\0\1\343" + + "\1\0\1\343\6\0\1\343\40\0\1\152\10\0\1\170" + + "\13\0\1\174\3\0\2\174\2\166\57\0\1\152\10\0" + + "\1\170\13\0\1\345\3\0\2\345\2\166\54\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\14\22" + + "\1\346\11\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\1\22\1\347\24\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22" + + "\1\350\16\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\7\22\1\351\16\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\10\22" + + "\1\352\15\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\4\22\1\353\21\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22" + + "\1\354\20\22\23\0\1\355\1\0\1\355\7\0\2\355" + + "\4\0\4\355\5\0\3\355\2\0\2\355\3\0\26\355" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\7\22" + + "\1\356\3\0\26\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\10\22\1\357\15\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\5\22\1\360\2\22\1\361\15\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\7\22\1\362" + + "\16\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\2\22\1\363\23\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\10\22\1\364" + + "\15\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\2\22\1\365\23\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\17\22\1\366" + + "\6\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\11\22\1\367\14\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\7\22\1\370\3\0\26\22" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22" + + "\3\0\15\22\1\371\10\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\10\22\3\0\10\22\1\372\10\22" + + "\1\373\4\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\14\22\1\374\11\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\12\22" + + "\1\375\5\22\1\376\5\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\10\22\3\0\1\22\1\377\7\22" + + "\1\u0100\14\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\17\22\1\u0101\6\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22" + + "\1\u0102\2\22\1\u0103\15\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\10\22\3\0\17\22\1\u0104\6\22" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\7\22" + + "\1\u0105\3\0\26\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\13\22\1\u0106\12\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\3\22\1\u0107" + + "\4\22\3\0\14\22\1\u0108\11\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u0109" + + "\16\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\10\22\1\u010a\15\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\11\22\1\u010b" + + "\14\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\6\22\1\u010c\2\22\1\u010d\14\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\4\22\1\u010e\21\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\1\u010f\25\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22" + + "\1\u0110\24\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\11\22\1\u0111\14\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\10\22" + + "\1\u0112\15\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\3\22\1\u0113\4\22\3\0\26\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\25\22" + + "\1\u0114\35\0\1\u0115\1\0\1\u0115\3\0\3\u0115\5\0" + + "\1\u0115\2\0\5\u0115\3\0\1\u0115\1\0\1\u0115\1\0" + + "\1\u0115\6\0\1\u0115\47\0\1\u0116\1\0\1\u0116\3\0" + + "\3\u0116\5\0\1\u0116\2\0\5\u0116\3\0\1\u0116\1\0" + + "\1\u0116\1\0\1\u0116\6\0\1\u0116\27\0\1\u0117\2\0" + + "\31\u0117\1\305\1\0\56\u0117\1\306\2\0\31\306\1\u0118" + + "\57\306\16\0\1\u0119\113\0\1\u011a\105\0\1\u011b\6\0" + + "\3\u011b\4\0\4\u011b\5\0\3\u011b\2\0\2\u011b\3\0" + + "\26\u011b\2\0\1\u011c\22\0\2\312\3\0\1\312\1\0" + + "\5\312\2\0\4\312\4\0\10\312\3\0\26\312\32\0" + + "\1\u011d\7\0\1\u011e\76\0\1\u011f\6\0\3\u011f\4\0" + + "\4\u011f\5\0\3\u011f\2\0\2\u011f\3\0\26\u011f\2\0" + + "\1\u0120\33\0\1\322\15\0\1\322\1\0\1\322\3\0" + + "\1\322\3\0\24\322\21\0\1\324\111\0\1\325\2\326" + + "\1\325\1\327\1\u0121\41\325\1\331\44\325\5\326\1\u0122" + + "\113\326\1\u0122\13\326\1\327\15\326\1\327\1\326\1\327" + + "\3\326\1\327\3\326\24\327\17\326\1\142\2\0\1\142" + + "\1\u0123\1\330\41\142\1\146\44\142\1\325\2\326\1\325" + + "\1\u0124\1\u0121\41\325\1\331\44\325\1\142\2\0\1\142" + + "\1\322\14\142\1\332\15\142\1\332\1\142\1\332\3\142" + + "\1\332\1\142\1\146\1\142\24\332\17\142\33\0\1\u0125" + + "\102\0\1\341\13\0\1\341\3\0\2\341\70\0\1\u0126" + + "\1\0\1\u0126\3\0\3\u0126\5\0\1\u0126\2\0\5\u0126" + + "\3\0\1\u0126\1\0\1\u0126\1\0\1\u0126\6\0\1\u0126" + + "\40\0\1\152\10\0\1\170\13\0\1\u0127\3\0\2\u0127" + + "\2\166\54\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\5\22\1\u0128\20\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\2\22\1\u0129" + + "\23\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\4\22\1\u012a\21\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\7\22\1\u012b\3\0\26\22" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22" + + "\3\0\16\22\1\u012c\7\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\7\22\1\u012d\3\0\26\22\23\0" + + "\3\355\7\0\3\355\3\0\4\355\4\0\10\355\3\0" + + "\26\355\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\2\22\1\u012e\23\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\12\22\1\u012f" + + "\13\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\7\22\1\u0130\3\0\26\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\10\22\3\0\4\22\1\u0131\21\22" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22" + + "\3\0\5\22\1\u0132\2\22\1\u0133\15\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22" + + "\1\u0134\20\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\10\22\1\u0135\15\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\7\22\1\u0136\3\0" + + "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\10\22\1\u0137\15\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\1\22\1\u0138" + + "\24\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\11\22\1\u0139\14\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\7\22\1\u013a\3\0\26\22" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22" + + "\3\0\14\22\1\u013b\11\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\7\22\1\u013c\3\0\26\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\6\22\1\u013d\17\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\5\22\1\u013e\20\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u013f" + + "\3\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\10\22\1\u0140\15\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\7\22\1\u0141\3\0" + + "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\6\22\1\u0142\5\22\1\u0143\11\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u0144" + + "\3\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\2\22\1\u0145\23\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\7\22\1\u0146\3\0" + + "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\2\22\1\u0147\23\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\16\22\1\u0148" + + "\7\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\14\22\1\u0149\11\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u014a" + + "\15\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\22\22\1\u014b\3\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\3\22\1\u014c" + + "\22\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\14\22\1\u014d\11\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\13\22\1\u014e" + + "\12\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\11\22\1\u014f\14\22\35\0\1\u0150\1\0" + + "\1\u0150\3\0\3\u0150\5\0\1\u0150\2\0\5\u0150\3\0" + + "\1\u0150\1\0\1\u0150\1\0\1\u0150\6\0\1\u0150\47\0" + + "\1\u0151\1\0\1\u0151\3\0\3\u0151\5\0\1\u0151\2\0" + + "\5\u0151\3\0\1\u0151\1\0\1\u0151\1\0\1\u0151\6\0" + + "\1\u0151\30\0\2\u0152\5\0\2\u011b\1\0\1\u0152\1\0" + + "\1\u011b\1\u0153\5\u011b\2\0\4\u011b\4\0\10\u011b\3\0" + + "\26\u011b\32\0\1\u0154\124\0\1\u0155\75\0\2\u011f\3\0" + + "\1\u011f\1\0\5\u011f\2\0\4\u011f\4\0\10\u011f\3\0" + + "\26\u011f\15\0\1\325\2\326\1\325\1\u0123\1\u0121\41\325" + + "\1\331\44\325\4\326\1\324\1\u0122\106\326\1\325\2\326" + + "\1\325\1\327\1\u0121\13\325\1\u0124\15\325\1\u0124\1\325" + + "\1\u0124\3\325\1\u0124\1\325\1\331\1\325\24\u0124\17\325" + + "\20\0\1\u0156\1\0\1\u0156\3\0\3\u0156\5\0\1\u0156" + + "\2\0\5\u0156\3\0\1\u0156\1\0\1\u0156\1\0\1\u0156" + + "\6\0\1\u0156\40\0\1\152\10\0\1\170\13\0\1\u0157" + + "\3\0\2\u0157\2\166\54\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\7\22\1\u0158\3\0\26\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\14\22" + + "\1\u0159\11\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\10\22\1\u015a\15\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22" + + "\1\u015b\16\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\3\22\1\u015c\22\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22" + + "\1\u015d\24\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\16\22\1\u015e\7\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\10\22" + + "\1\u015f\15\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\11\22\1\u0160\14\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22" + + "\1\u0161\20\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\11\22\1\u0162\14\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22" + + "\1\u0163\24\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\4\22\1\u0164\21\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22" + + "\1\u0165\24\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\22\22\1\u0166\3\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\5\22" + + "\1\u0167\20\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\15\22\1\u0168\10\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\6\22" + + "\1\u0169\17\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\2\22\1\u016a\23\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\1\22" + + "\1\u016b\24\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\1\22\1\u016c\24\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\7\22\1\u016d\3\0" + + "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\3\22\1\u016e\4\22\3\0\26\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\12\22\1\u016f" + + "\13\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\10\22\3\0\10\22\1\u0170\15\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\21\22\1\u0171" + + "\4\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\7\22\1\u0172\3\0\26\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\7\22\1\u0173\3\0\26\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\2\22\1\u0174\23\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\2\22\1\u0175\23\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\11\22\1\u0176\14\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\7\22\1\u0177\16\22\16\0" + + "\2\u0152\10\0\1\u0152\2\0\1\u0153\124\0\1\u0178\104\0" + + "\1\u0179\1\0\1\u0179\3\0\3\u0179\5\0\1\u0179\2\0" + + "\5\u0179\3\0\1\u0179\1\0\1\u0179\1\0\1\u0179\6\0" + + "\1\u0179\40\0\1\152\10\0\1\170\13\0\1\u017a\3\0" + + "\2\u017a\2\166\54\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\14\22\1\u017b\11\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\11\22" + + "\1\u017c\14\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\13\22\1\u017d\12\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22" + + "\1\u017e\16\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\7\22\1\u017f\16\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\4\22" + + "\1\u0180\21\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\16\22\1\u0181\7\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\11\22" + + "\1\u0182\14\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\7\22\1\u0183\3\0\26\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\17\22\1\u0184" + + "\6\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\3\22\1\u0185\4\22\3\0\26\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u0186" + + "\16\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\3\22\1\u0187\4\22\3\0\7\22\1\u0188\16\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\10\22\1\u0189\15\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\21\22\1\u018a\4\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\11\22\1\u018b\14\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\14\22\1\u018c\11\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u018d" + + "\3\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\11\22\1\u018e\14\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\4\22" + + "\1\u018f\21\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\10\22\1\u0190\15\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\23\22" + + "\1\u0191\2\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\4\22\1\u0192\21\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\11\22" + + "\1\u0193\14\22\45\0\1\u0194\103\0\1\u0195\1\0\1\u0195" + + "\3\0\3\u0195\5\0\1\u0195\2\0\5\u0195\3\0\1\u0195" + + "\1\0\1\u0195\1\0\1\u0195\6\0\1\u0195\40\0\1\152" + + "\10\0\1\170\13\0\1\u0196\3\0\2\u0196\2\166\54\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\20\22\1\u0197\5\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\6\22\1\u0198\17\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\5\22\1\u0199\20\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\12\22\1\u019a\13\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\13\22\1\u019b\12\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\2\22\1\u019c\23\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\4\22\1\u019d\21\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\2\22\1\u019e\23\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\2\22\1\u019f\23\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\7\22\1\u01a0\3\0\26\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22" + + "\1\u01a1\16\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\10\22\1\u01a2\15\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\4\22" + + "\1\u01a3\21\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\10\22\1\u01a4\15\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\7\22\1\u01a5\3\0" + + "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\7\22\1\u01a6\3\0\26\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\10\22\3\0\10\22\1\u01a7\15\22" + + "\46\0\1\u01a8\102\0\1\u01a9\1\0\1\u01a9\3\0\3\u01a9" + + "\5\0\1\u01a9\2\0\5\u01a9\3\0\1\u01a9\1\0\1\u01a9" + + "\1\0\1\u01a9\6\0\1\u01a9\40\0\1\152\10\0\1\170" + + "\13\0\1\u01aa\3\0\2\u01aa\2\166\54\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u01ab" + + "\16\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\7\22\1\u01ac\3\0\26\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\7\22\1\u01ad\3\0\26\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\4\22\1\u01ae\21\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\7\22\1\u01af\3\0\26\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\4\22" + + "\1\u01b0\21\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\10\22\3\0\14\22\1\u01b1\11\22\23\0\3\22" + + "\7\0\3\22\3\0\4\22\4\0\10\22\3\0\7\22" + + "\1\u01b2\16\22\23\0\3\22\7\0\3\22\3\0\4\22" + + "\4\0\7\22\1\u01b3\3\0\26\22\23\0\3\22\7\0" + + "\3\22\3\0\4\22\4\0\7\22\1\u01b4\3\0\26\22" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22" + + "\3\0\20\22\1\u01b5\5\22\45\0\1\u01b6\103\0\1\u01b7" + + "\1\0\1\u01b7\3\0\3\u01b7\5\0\1\u01b7\2\0\5\u01b7" + + "\3\0\1\u01b7\1\0\1\u01b7\1\0\1\u01b7\6\0\1\u01b7" + + "\40\0\1\152\10\0\1\170\13\0\1\u01b8\3\0\2\u01b8" + + "\2\166\54\0\3\22\7\0\3\22\3\0\4\22\4\0" + + "\7\22\1\u01b9\3\0\26\22\23\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\10\22\3\0\6\22\1\u01ba\17\22" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\7\22" + + "\1\u01bb\3\0\26\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\10\22\1\u01bc\15\22\23\0" + + "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\3\0" + + "\13\22\1\u01bd\12\22\23\0\3\22\7\0\3\22\3\0" + + "\4\22\4\0\10\22\3\0\13\22\1\u01be\12\22\42\0" + + "\1\u01bf\106\0\1\u01c0\1\0\1\u01c0\3\0\3\u01c0\5\0" + + "\1\u01c0\2\0\5\u01c0\3\0\1\u01c0\1\0\1\u01c0\1\0" + + "\1\u01c0\6\0\1\u01c0\40\0\1\152\10\0\1\170\13\0" + + "\1\u01c1\3\0\2\u01c1\2\166\54\0\3\22\7\0\3\22" + + "\3\0\4\22\4\0\3\22\1\u01c2\4\22\3\0\26\22" + + "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22" + + "\3\0\5\22\1\u01c3\20\22\26\0\1\152\10\0\1\170" + + "\13\0\1\u01c4\3\0\2\u01c4\2\166\57\0\1\152\10\0" + + "\1\170\13\0\1\u01c5\3\0\2\u01c5\2\166\57\0\1\152" + + "\10\0\1\170\13\0\1\u01c6\3\0\2\u01c6\2\166\57\0" + + "\1\152\10\0\1\170\13\0\1\u01c7\3\0\2\u01c7\2\166" + + "\57\0\1\152\10\0\1\170\13\0\1\u01c8\3\0\2\u01c8" + + "\2\166\57\0\1\152\10\0\1\170\13\0\1\u01c9\3\0" + + "\2\u01c9\2\166\46\0"; - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; + private static int[] zzUnpackTrans() { + int[] result = new int[23788]; + 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" + + "\26\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\0\1\1\1\0\1\1\1\0\1\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\1\0\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" + + "\1\1\1\11\3\1\1\11\2\0\1\1\2\0\1\1" + + "\3\11\1\1\1\11\1\0\1\1\1\11\62\1\3\0" + + "\3\11\1\0\1\11\2\0\1\1\1\11\2\0\2\1" + + "\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[457]; + 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; } - 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); } @@ -969,24 +1022,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); } } @@ -998,9 +1051,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(); @@ -1009,1098 +1063,1269 @@ 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 < 3136) { - 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 < 3136) { + 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 166: + break; + case 2: { + yyline++; + } + case 167: + break; + case 3: { /*ignore*/ + + } + case 168: + break; + case 4: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); + } + case 169: + break; + case 5: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); + } + case 170: + break; + case 6: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } + case 171: + break; + case 7: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); + } + case 172: + break; + case 8: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); + } + case 173: + break; + case 9: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); + } + case 174: + break; + case 10: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); + } + case 175: + break; + case 11: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); + } + case 176: + break; + case 12: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); + } + case 177: + break; + case 13: { + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); + } + case 178: + break; + case 14: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); + } + case 179: + break; + case 15: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); + } + case 180: + break; + case 16: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); + } + case 181: + break; + case 17: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); + } + case 182: + break; + case 18: { + string.setLength(0); + yybegin(STRING); + } + case 183: + break; + case 19: { + string.setLength(0); + yybegin(CHARLITERAL); + } + case 184: + break; + case 20: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); + } + case 185: + break; + case 21: { + string.setLength(0); + yybegin(OIDENTIFIER); + } + case 186: + break; + case 22: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); + } + case 187: + break; + case 23: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); + } + case 188: + break; + case 24: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); + } + case 189: + break; + case 25: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); + } + case 190: + break; + case 26: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); + } + case 191: + break; + case 27: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); + } + case 192: + break; + case 28: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); + } + case 193: + break; + case 29: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); + } + case 194: + break; + case 30: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); + } + case 195: + break; + case 31: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); + } + case 196: + break; + case 32: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); + } + case 197: + break; + case 33: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); + } + case 198: + break; + case 34: { + string.append(yytext()); + } + case 199: + break; + case 35: { + yybegin(YYINITIAL); + yyline++; + } + case 200: + break; + case 36: { + yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); + } + case 201: + break; + case 37: { + yybegin(YYINITIAL); + yyline++; + } + case 202: + break; + case 38: { + string.append(yytext()); + yyline++; + } + case 203: + 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 204: + 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 205: + break; + case 41: { + yybegin(YYINITIAL); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext()); + } + case 206: + 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 207: + break; + case 43: { + yybegin(YYINITIAL); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRVALVAR_BEGIN, yytext()); + } + case 208: + break; + case 44: { + string.append(yytext()); + yyline++; + } + case 209: + 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 210: + break; + case 46: { + yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); + } + case 211: + break; + case 47: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); + } + case 212: + break; + case 48: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); + } + case 213: + break; + case 49: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext()); + } + case 214: + break; + case 50: { + return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext()); + } + case 215: + break; + case 51: { + return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); + } + case 216: + break; + case 52: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FILTER, yytext()); + } + case 217: + break; + case 53: { + yybegin(XMLOPENTAG); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()); + } + case 218: + break; + case 54: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); + } + case 219: + break; + case 55: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); + } + case 220: + break; + case 56: { + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()); + } + case 221: + break; + case 57: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); + } + case 222: + break; + case 58: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); + } + case 223: + break; + case 59: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); + } + case 224: + break; + case 60: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); + } + case 225: + break; + case 61: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); + } + case 226: + break; + case 62: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); + } + case 227: + break; + case 63: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); + } + case 228: + break; + case 64: { + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); + } + case 229: + break; + case 65: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); + } + case 230: + break; + case 66: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); + } + case 231: + break; + case 67: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); + } + case 232: + break; + case 68: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); + } + case 233: + break; + case 69: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); + } + case 234: + break; + case 70: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); + } + case 235: + break; + case 71: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); + } + case 236: + break; + case 72: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); + } + case 237: + break; + case 73: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); + } + case 238: + break; + case 74: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); + } + case 239: + break; + case 75: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); + } + case 240: + break; + case 76: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); + } + case 241: + break; + case 77: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); + } + case 242: + break; + case 78: { /* ignore illegal character escape */ + + } + case 243: + break; + case 79: { + string.append('\"'); + } + case 244: + break; + case 80: { + string.append('\''); + } + case 245: + break; + case 81: { + string.append('\f'); + } + case 246: + break; + case 82: { + string.append('\\'); + } + case 247: + break; + case 83: { + string.append('\b'); + } + case 248: + break; + case 84: { + string.append('\r'); + } + case 249: + break; + case 85: { + string.append('\n'); + } + case 250: + break; + case 86: { + string.append('\t'); + } + case 251: + 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 252: + 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 253: + break; + case 89: { + yybegin(XMLOPENTAG); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); + } + case 254: + 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 255: + 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 256: + break; + case 92: { + yybegin(XMLINSTROPENTAG); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); + } + case 257: + 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 258: + 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 259: + break; + case 95: { + throw new AVM2ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); + } + case 260: + break; + case 96: { + string.append('\u00A7'); + } + case 261: + break; + case 97: { + return new ParsedSymbol(SymbolGroup.REGEXP, SymbolType.REGEXP, yytext()); + } + case 262: + break; + case 98: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); + } + case 263: + break; + case 99: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); + } + case 264: + break; + case 100: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); + } + case 265: + break; + case 101: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); + } + case 266: + break; + case 102: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); + } + case 267: + break; + case 103: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); + } + case 268: + break; + case 104: { + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); + } + case 269: + break; + case 105: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); + } + case 270: + break; + case 106: { + return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2)); + } + case 271: + break; + case 107: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.SET, yytext()); + } + case 272: + break; + case 108: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); + } + case 273: + break; + case 109: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); + } + case 274: + break; + case 110: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); + } + case 275: + break; + case 111: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); + } + case 276: + break; + case 112: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.GET, yytext()); + } + case 277: + break; + case 113: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); + } + case 278: + break; + case 114: { + string.append(yytext()); + yybegin(XML); + String ret = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); + } + case 279: + break; + case 115: { + string.append(yytext()); + yybegin(XML); + String ret = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); + } + case 280: + break; + case 116: { + 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 281: + break; + case 117: { + 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 282: + break; + case 118: { + 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 283: + break; + case 119: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); + } + case 284: + break; + case 120: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); + } + case 285: + break; + case 121: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); + } + case 286: + break; + case 122: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); + } + case 287: + break; + case 123: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); + } + case 288: + break; + case 124: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); + } + case 289: + break; + case 125: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); + } + case 290: + break; + case 126: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); + } + case 291: + break; + case 127: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); + } + case 292: + break; + case 128: { + char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); + } + case 293: + break; + case 129: { + 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 294: + break; + case 130: { + 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 295: + break; + case 131: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); + } + case 296: + break; + case 132: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext()); + } + case 297: + break; + case 133: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); + } + case 298: + break; + case 134: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); + } + case 299: + break; + case 135: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); + } + case 300: + break; + case 136: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); + } + case 301: + break; + case 137: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); + } + case 302: + break; + case 138: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); + } + case 303: + break; + case 139: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); + } + case 304: + break; + case 140: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); + } + case 305: + break; + case 141: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext()); + } + case 306: + break; + case 142: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); + } + case 307: + break; + case 143: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext()); + } + case 308: + break; + case 144: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); + } + case 309: + break; + case 145: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); + } + case 310: + break; + case 146: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); + } + case 311: + break; + case 147: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); + } + case 312: + break; + case 148: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); + } + case 313: + break; + case 149: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); + } + case 314: + break; + case 150: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); + } + case 315: + break; + case 151: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext()); + } + case 316: + break; + case 152: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); + } + case 317: + break; + case 153: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); + } + case 318: + break; + case 154: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); + } + case 319: + break; + case 155: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); + } + case 320: + break; + case 156: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext()); + } + case 321: + break; + case 157: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); + } + case 322: + break; + case 158: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); + } + case 323: + break; + case 159: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext()); + } + case 324: + break; + case 160: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); + } + case 325: + break; + case 161: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); + } + case 326: + break; + case 162: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); + } + case 327: + break; + case 163: { + 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 328: + break; + case 164: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); + } + case 329: + break; + case 165: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); + } + case 330: + 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 166: break; - case 2: - { yyline++; - } - case 167: break; - case 3: - { /*ignore*/ - } - case 168: break; - case 4: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); - } - case 169: break; - case 5: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); - } - case 170: break; - case 6: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - case 171: break; - case 7: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); - } - case 172: break; - case 8: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); - } - case 173: break; - case 9: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); - } - case 174: break; - case 10: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); - } - case 175: break; - case 11: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); - } - case 176: break; - case 12: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); - } - case 177: break; - case 13: - { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); - } - case 178: break; - case 14: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); - } - case 179: break; - case 15: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); - } - case 180: break; - case 16: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); - } - case 181: break; - case 17: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); - } - case 182: break; - case 18: - { string.setLength(0); - yybegin(STRING); - } - case 183: break; - case 19: - { string.setLength(0); - yybegin(CHARLITERAL); - } - case 184: break; - case 20: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); - } - case 185: break; - case 21: - { string.setLength(0); - yybegin(OIDENTIFIER); - } - case 186: break; - case 22: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); - } - case 187: break; - case 23: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); - } - case 188: break; - case 24: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); - } - case 189: break; - case 25: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); - } - case 190: break; - case 26: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); - } - case 191: break; - case 27: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); - } - case 192: break; - case 28: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); - } - case 193: break; - case 29: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); - } - case 194: break; - case 30: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); - } - case 195: break; - case 31: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); - } - case 196: break; - case 32: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); - } - case 197: break; - case 33: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); - } - case 198: break; - case 34: - { string.append(yytext()); - } - case 199: break; - case 35: - { yybegin(YYINITIAL); yyline++; - } - case 200: break; - case 36: - { yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); - } - case 201: break; - case 37: - { yybegin(YYINITIAL); yyline++; - } - case 202: break; - case 38: - { string.append(yytext()); yyline++; - } - case 203: 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 204: 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 205: break; - case 41: - { yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext()); - } - case 206: 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 207: break; - case 43: - { yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRVALVAR_BEGIN, yytext()); - } - case 208: break; - case 44: - { string.append(yytext()); yyline++; - } - case 209: 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 210: break; - case 46: - { yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); - } - case 211: break; - case 47: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); - } - case 212: break; - case 48: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); - } - case 213: break; - case 49: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext()); - } - case 214: break; - case 50: - { return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext()); - } - case 215: break; - case 51: - { return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); - } - case 216: break; - case 52: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FILTER, yytext()); - } - case 217: break; - case 53: - { yybegin(XMLOPENTAG); - string.setLength(0); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()); - } - case 218: break; - case 54: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); - } - case 219: break; - case 55: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); - } - case 220: break; - case 56: - { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()); - } - case 221: break; - case 57: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); - } - case 222: break; - case 58: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); - } - case 223: break; - case 59: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); - } - case 224: break; - case 60: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); - } - case 225: break; - case 61: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); - } - case 226: break; - case 62: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); - } - case 227: break; - case 63: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); - } - case 228: break; - case 64: - { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); - } - case 229: break; - case 65: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); - } - case 230: break; - case 66: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); - } - case 231: break; - case 67: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); - } - case 232: break; - case 68: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); - } - case 233: break; - case 69: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); - } - case 234: break; - case 70: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); - } - case 235: break; - case 71: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); - } - case 236: break; - case 72: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); - } - case 237: break; - case 73: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); - } - case 238: break; - case 74: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); - } - case 239: break; - case 75: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); - } - case 240: break; - case 76: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); - } - case 241: break; - case 77: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); - } - case 242: break; - case 78: - { /* ignore illegal character escape */ - } - case 243: break; - case 79: - { string.append('\"'); - } - case 244: break; - case 80: - { string.append('\''); - } - case 245: break; - case 81: - { string.append('\f'); - } - case 246: break; - case 82: - { string.append('\\'); - } - case 247: break; - case 83: - { string.append('\b'); - } - case 248: break; - case 84: - { string.append('\r'); - } - case 249: break; - case 85: - { string.append('\n'); - } - case 250: break; - case 86: - { string.append('\t'); - } - case 251: 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 252: 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 253: break; - case 89: - { yybegin(XMLOPENTAG); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); - } - case 254: 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 255: 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 256: break; - case 92: - { yybegin(XMLINSTROPENTAG); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); - } - case 257: 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 258: 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 259: break; - case 95: - { throw new AVM2ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 260: break; - case 96: - { string.append('\u00A7'); - } - case 261: break; - case 97: - { return new ParsedSymbol(SymbolGroup.REGEXP, SymbolType.REGEXP, yytext()); - } - case 262: break; - case 98: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); - } - case 263: break; - case 99: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); - } - case 264: break; - case 100: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); - } - case 265: break; - case 101: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); - } - case 266: break; - case 102: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); - } - case 267: break; - case 103: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); - } - case 268: break; - case 104: - { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); - } - case 269: break; - case 105: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); - } - case 270: break; - case 106: - { return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2)); - } - case 271: break; - case 107: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.SET, yytext()); - } - case 272: break; - case 108: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); - } - case 273: break; - case 109: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); - } - case 274: break; - case 110: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); - } - case 275: break; - case 111: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); - } - case 276: break; - case 112: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.GET, yytext()); - } - case 277: break; - case 113: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); - } - case 278: break; - case 114: - { string.append(yytext()); - yybegin(XML); - String ret = string.toString(); - string.setLength(0); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); - } - case 279: break; - case 115: - { string.append(yytext()); - yybegin(XML); - String ret = string.toString(); - string.setLength(0); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); - } - case 280: break; - case 116: - { 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 281: break; - case 117: - { 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 282: break; - case 118: - { 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 283: break; - case 119: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); - } - case 284: break; - case 120: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); - } - case 285: break; - case 121: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); - } - case 286: break; - case 122: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); - } - case 287: break; - case 123: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); - } - case 288: break; - case 124: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); - } - case 289: break; - case 125: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); - } - case 290: break; - case 126: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); - } - case 291: break; - case 127: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); - } - case 292: break; - case 128: - { char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); - } - case 293: break; - case 129: - { 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 294: break; - case 130: - { 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 295: break; - case 131: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); - } - case 296: break; - case 132: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext()); - } - case 297: break; - case 133: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); - } - case 298: break; - case 134: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); - } - case 299: break; - case 135: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); - } - case 300: break; - case 136: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); - } - case 301: break; - case 137: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); - } - case 302: break; - case 138: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); - } - case 303: break; - case 139: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); - } - case 304: break; - case 140: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); - } - case 305: break; - case 141: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext()); - } - case 306: break; - case 142: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); - } - case 307: break; - case 143: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext()); - } - case 308: break; - case 144: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); - } - case 309: break; - case 145: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); - } - case 310: break; - case 146: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); - } - case 311: break; - case 147: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); - } - case 312: break; - case 148: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); - } - case 313: break; - case 149: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); - } - case 314: break; - case 150: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); - } - case 315: break; - case 151: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext()); - } - case 316: break; - case 152: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); - } - case 317: break; - case 153: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); - } - case 318: break; - case 154: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); - } - case 319: break; - case 155: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); - } - case 320: break; - case 156: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext()); - } - case 321: break; - case 157: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); - } - case 322: break; - case 158: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); - } - case 323: break; - case 159: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext()); - } - case 324: break; - case 160: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); - } - case 325: break; - case 161: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); - } - case 326: break; - case 162: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); - } - case 327: break; - case 163: - { 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 328: break; - case 164: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); - } - case 329: break; - case 165: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); - } - case 330: 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/avm2/parser/script/CallAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java index 2ac297f22..b9c215802 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java @@ -45,6 +45,7 @@ public class CallAVM2Item extends AVM2Item { public List arguments; public int line; + public List openedNamespaces; public CallAVM2Item(List openedNamespaces, int line, GraphTargetItem name, List arguments) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NamespaceItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NamespaceItem.java index 0d9d5f06e..67f19c014 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NamespaceItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NamespaceItem.java @@ -34,7 +34,9 @@ import java.util.Objects; public class NamespaceItem { public DottedChain name; + public int kind; + private int nsIndex = -1; public void forceResolve(AbcIndexing abcIndex) { @@ -148,5 +150,4 @@ public class NamespaceItem { return abcIndex.getSelectedAbc().constants.getNamespaceSetId(nssa, true); } - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Action.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Action.java index 3518a5392..31abda42b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Action.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Action.java @@ -713,10 +713,9 @@ public abstract class Action implements GraphSourceItem { public abstract boolean execute(LocalDataArea lda); /* { - //throw new UnsupportedOperationException("Action " + toString() + " not implemented"); - return false; - }*/ - + //throw new UnsupportedOperationException("Action " + toString() + " not implemented"); + return false; + }*/ /** * Translates this function to stack and output. * @@ -1063,7 +1062,7 @@ public abstract class Action implements GraphSourceItem { } /*ActionJump && ActionIf removed*/ - /*if ((action instanceof ActionEnumerate2) || (action instanceof ActionEnumerate)) { + /*if ((action instanceof ActionEnumerate2) || (action instanceof ActionEnumerate)) { loopStart = ip + 1; isForIn = true; ip += 4; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptFunction.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptFunction.java index d5771b5de..7c94138e1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptFunction.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptFunction.java @@ -10,9 +10,13 @@ import java.util.Map; public class ActionScriptFunction extends ActionScriptObject { protected long functionOffset; + protected long functionLength; + protected String functionName; + protected List paramNames; + protected Map funcRegNames; public String getFunctionName() { @@ -38,5 +42,4 @@ public class ActionScriptFunction extends ActionScriptObject { public long getFunctionOffset() { return functionOffset; } - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptObject.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptObject.java index 6206c38b6..7f3436edc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptObject.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptObject.java @@ -13,9 +13,11 @@ import java.util.Map; public class ActionScriptObject implements Cloneable { protected Map properties = new HashMap<>(); + protected Map members = new HashMap<>(); protected Object extendsObj; + protected List implementsObjs = new ArrayList<>(); public void clearMembers() { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptWith.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptWith.java index 0a2ea3230..f6bedeeff 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptWith.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionScriptWith.java @@ -7,7 +7,9 @@ package com.jpexs.decompiler.flash.action; public class ActionScriptWith { protected ActionScriptObject obj; + protected long startAddr; + protected long length; public ActionScriptWith(ActionScriptObject obj, long startAddr, long length) { @@ -15,5 +17,4 @@ public class ActionScriptWith { this.startAddr = startAddr; this.length = length; } - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/CachedScript.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/CachedScript.java index f6c55880b..9655aecf5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/CachedScript.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/CachedScript.java @@ -29,8 +29,11 @@ public class CachedScript implements Serializable { public String text; public List hilights; + public List methodHilights; + public List classHilights; + public List specialHilights; public CachedScript(String text, List hilights, List methodHilights, List classHilights, List specialHilights) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/DepthStateObjectAdapter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/DepthStateObjectAdapter.java index f3d02c45b..1b067eace 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/DepthStateObjectAdapter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/DepthStateObjectAdapter.java @@ -13,6 +13,5 @@ public class DepthStateObjectAdapter extends ActionScriptObject { public DepthStateObjectAdapter(DepthState ds) { this.ds = ds; } - //TODO } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/DisplayObject.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/DisplayObject.java index a9cf49c27..0f9dca58a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/DisplayObject.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/DisplayObject.java @@ -14,8 +14,11 @@ public class DisplayObject extends ActionScriptObject { protected Map displayList = new HashMap<>(); protected int totalFrames = 1; + protected int currentFrame = 1; + protected boolean paused = false; + protected boolean dragging = false; public void startDrag() { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Stage.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Stage.java index 4e14ae84c..ff1bd2123 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Stage.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/Stage.java @@ -14,8 +14,11 @@ import java.util.List; public class Stage extends DisplayObject { protected long startTime; + protected Timelined timelined; + protected Timeline timeline; + protected Frame frame; public Stage(Timelined timelined) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/flashlite/ActionFSCommand2.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/flashlite/ActionFSCommand2.java index e788da252..8cf550e50 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/flashlite/ActionFSCommand2.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/flashlite/ActionFSCommand2.java @@ -72,5 +72,4 @@ public class ActionFSCommand2 extends Action { public boolean execute(LocalDataArea lda) { return true; //TODO? } - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/EvalActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/EvalActionItem.java index c019f3356..b8e0fd62e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/EvalActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/EvalActionItem.java @@ -33,7 +33,7 @@ import java.util.List; public class EvalActionItem extends ActionItem { public EvalActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem value) { - super(instruction, lineStartIns, PRECEDENCE_PRIMARY, value); + super(instruction, lineStartIns, PRECEDENCE_PRIMARY, value); } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java index c8c619cc2..62e1d4ff7 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadMovieActionItem.java @@ -48,7 +48,7 @@ public class LoadMovieActionItem extends ActionItem { } public LoadMovieActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem urlString, GraphTargetItem targetString, int method) { - super(instruction, lineStartIns, PRECEDENCE_PRIMARY); + super(instruction, lineStartIns, PRECEDENCE_PRIMARY); this.urlString = urlString; this.targetString = targetString; this.method = method; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java index 7ef4a4f6c..07c427cf2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/LoadVariablesActionItem.java @@ -48,7 +48,7 @@ public class LoadVariablesActionItem extends ActionItem { } public LoadVariablesActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem urlString, GraphTargetItem targetString, int method) { - super(instruction, lineStartIns, PRECEDENCE_PRIMARY); + super(instruction, lineStartIns, PRECEDENCE_PRIMARY); this.urlString = urlString; this.targetString = targetString; this.method = method; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java index 30f3a4370..f3ea2ef8d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/UnLoadMovieActionItem.java @@ -1,18 +1,19 @@ /* * Copyright (C) 2010-2016 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. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; @@ -43,7 +44,7 @@ public class UnLoadMovieActionItem extends ActionItem { } public UnLoadMovieActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem targetString) { - super(instruction, lineStartIns, PRECEDENCE_PRIMARY); + super(instruction, lineStartIns, PRECEDENCE_PRIMARY); this.targetString = targetString; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java index 46d168106..b9e8ba77d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java @@ -2,17 +2,17 @@ /* * Copyright (C) 2010-2016 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. */ @@ -25,542 +25,588 @@ import com.jpexs.decompiler.flash.action.swf4.RegisterNumber; import com.jpexs.decompiler.flash.ecma.Null; import com.jpexs.decompiler.flash.ecma.Undefined; - /** - * This class is a scanner generated by + * This class is a scanner generated by * JFlex 1.6.0 - * from the specification file C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_pcode.flex + * from the specification file + * C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_pcode.flex */ public final class FlasmLexer { - /** 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 PARAMETERS = 4; + /** + * 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 - }; + public static final int STRING = 2; - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\6\1\4\1\2\1\51\1\52\1\1\16\6\4\0\1\4\1\0"+ - "\1\45\1\0\1\5\2\0\1\47\3\0\1\37\1\0\1\30\1\35"+ - "\1\0\1\33\11\11\1\12\1\3\5\0\4\40\1\36\1\40\2\7"+ - "\1\31\4\7\1\34\14\7\1\0\1\41\2\0\1\10\1\0\1\22"+ - "\1\46\1\43\1\26\1\20\1\21\1\42\1\7\1\27\2\7\1\23"+ - "\1\7\1\25\1\44\2\7\1\16\1\24\1\15\1\17\2\7\1\50"+ - "\1\32\1\7\1\13\1\0\1\14\1\0\6\6\1\53\32\6\2\0"+ - "\4\5\4\0\1\5\2\0\1\6\7\0\1\5\4\0\1\5\5\0"+ - "\27\5\1\0\37\5\1\0\u01ca\5\4\0\14\5\16\0\5\5\7\0"+ - "\1\5\1\0\1\5\21\0\160\6\5\5\1\0\2\5\2\0\4\5"+ - "\10\0\1\5\1\0\3\5\1\0\1\5\1\0\24\5\1\0\123\5"+ - "\1\0\213\5\1\0\5\6\2\0\236\5\11\0\46\5\2\0\1\5"+ - "\7\0\47\5\7\0\1\5\1\0\55\6\1\0\1\6\1\0\2\6"+ - "\1\0\2\6\1\0\1\6\10\0\33\5\5\0\3\5\15\0\5\6"+ - "\6\0\1\5\4\0\13\6\5\0\53\5\37\6\4\0\2\5\1\6"+ - "\143\5\1\0\1\5\10\6\1\0\6\6\2\5\2\6\1\0\4\6"+ - "\2\5\12\6\3\5\2\0\1\5\17\0\1\6\1\5\1\6\36\5"+ - "\33\6\2\0\131\5\13\6\1\5\16\0\12\6\41\5\11\6\2\5"+ - "\4\0\1\5\5\0\26\5\4\6\1\5\11\6\1\5\3\6\1\5"+ - "\5\6\22\0\31\5\3\6\104\0\1\5\1\0\13\5\67\0\33\6"+ - "\1\0\4\6\66\5\3\6\1\5\22\6\1\5\7\6\12\5\2\6"+ - "\2\0\12\6\1\0\7\5\1\0\7\5\1\0\3\6\1\0\10\5"+ - "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\1\5\3\0\4\5"+ - "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\1\5\10\0"+ - "\1\6\4\0\2\5\1\0\3\5\2\6\2\0\12\6\4\5\7\0"+ - "\1\5\5\0\3\6\1\0\6\5\4\0\2\5\2\0\26\5\1\0"+ - "\7\5\1\0\2\5\1\0\2\5\1\0\2\5\2\0\1\6\1\0"+ - "\5\6\4\0\2\6\2\0\3\6\3\0\1\6\7\0\4\5\1\0"+ - "\1\5\7\0\14\6\3\5\1\6\13\0\3\6\1\0\11\5\1\0"+ - "\3\5\1\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5\2\0"+ - "\1\6\1\5\10\6\1\0\3\6\1\0\3\6\2\0\1\5\17\0"+ - "\2\5\2\6\2\0\12\6\1\0\1\5\17\0\3\6\1\0\10\5"+ - "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5"+ - "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\10\0\2\6"+ - "\4\0\2\5\1\0\3\5\2\6\2\0\12\6\1\0\1\5\20\0"+ - "\1\6\1\5\1\0\6\5\3\0\3\5\1\0\4\5\3\0\2\5"+ - "\1\0\1\5\1\0\2\5\3\0\2\5\3\0\3\5\3\0\14\5"+ - "\4\0\5\6\3\0\3\6\1\0\4\6\2\0\1\5\6\0\1\6"+ - "\16\0\12\6\11\0\1\5\7\0\3\6\1\0\10\5\1\0\3\5"+ - "\1\0\27\5\1\0\12\5\1\0\5\5\3\0\1\5\7\6\1\0"+ - "\3\6\1\0\4\6\7\0\2\6\1\0\2\5\6\0\2\5\2\6"+ - "\2\0\12\6\22\0\2\6\1\0\10\5\1\0\3\5\1\0\27\5"+ - "\1\0\12\5\1\0\5\5\2\0\1\6\1\5\7\6\1\0\3\6"+ - "\1\0\4\6\7\0\2\6\7\0\1\5\1\0\2\5\2\6\2\0"+ - "\12\6\1\0\2\5\17\0\2\6\1\0\10\5\1\0\3\5\1\0"+ - "\51\5\2\0\1\5\7\6\1\0\3\6\1\0\4\6\1\5\10\0"+ - "\1\6\10\0\2\5\2\6\2\0\12\6\12\0\6\5\2\0\2\6"+ - "\1\0\22\5\3\0\30\5\1\0\11\5\1\0\1\5\2\0\7\5"+ - "\3\0\1\6\4\0\6\6\1\0\1\6\1\0\10\6\22\0\2\6"+ - "\15\0\60\5\1\6\2\5\7\6\4\0\10\5\10\6\1\0\12\6"+ - "\47\0\2\5\1\0\1\5\2\0\2\5\1\0\1\5\2\0\1\5"+ - "\6\0\4\5\1\0\7\5\1\0\3\5\1\0\1\5\1\0\1\5"+ - "\2\0\2\5\1\0\4\5\1\6\2\5\6\6\1\0\2\6\1\5"+ - "\2\0\5\5\1\0\1\5\1\0\6\6\2\0\12\6\2\0\4\5"+ - "\40\0\1\5\27\0\2\6\6\0\12\6\13\0\1\6\1\0\1\6"+ - "\1\0\1\6\4\0\2\6\10\5\1\0\44\5\4\0\24\6\1\0"+ - "\2\6\5\5\13\6\1\0\44\6\11\0\1\6\71\0\53\5\24\6"+ - "\1\5\12\6\6\0\6\5\4\6\4\5\3\6\1\5\3\6\2\5"+ - "\7\6\3\5\4\6\15\5\14\6\1\5\17\6\2\0\46\5\1\0"+ - "\1\5\5\0\1\5\2\0\53\5\1\0\u014d\5\1\0\4\5\2\0"+ - "\7\5\1\0\1\5\1\0\4\5\2\0\51\5\1\0\4\5\2\0"+ - "\41\5\1\0\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0"+ - "\17\5\1\0\71\5\1\0\4\5\2\0\103\5\2\0\3\6\40\0"+ - "\20\5\20\0\125\5\14\0\u026c\5\2\0\21\5\1\0\32\5\5\0"+ - "\113\5\3\0\3\5\17\0\15\5\1\0\4\5\3\6\13\0\22\5"+ - "\3\6\13\0\22\5\2\6\14\0\15\5\1\0\3\5\1\0\2\6"+ - "\14\0\64\5\40\6\3\0\1\5\3\0\2\5\1\6\2\0\12\6"+ - "\41\0\3\6\2\0\12\6\6\0\130\5\10\0\51\5\1\6\1\5"+ - "\5\0\106\5\12\0\35\5\3\0\14\6\4\0\14\6\12\0\12\6"+ - "\36\5\2\0\5\5\13\0\54\5\4\0\21\6\7\5\2\6\6\0"+ - "\12\6\46\0\27\5\5\6\4\0\65\5\12\6\1\0\35\6\2\0"+ - "\13\6\6\0\12\6\15\0\1\5\130\0\5\6\57\5\21\6\7\5"+ - "\4\0\12\6\21\0\11\6\14\0\3\6\36\5\15\6\2\5\12\6"+ - "\54\5\16\6\14\0\44\5\24\6\10\0\12\6\3\0\3\5\12\6"+ - "\44\5\122\0\3\6\1\0\25\6\4\5\1\6\4\5\3\6\2\5"+ - "\11\0\300\5\47\6\25\0\4\6\u0116\5\2\0\6\5\2\0\46\5"+ - "\2\0\6\5\2\0\10\5\1\0\1\5\1\0\1\5\1\0\1\5"+ - "\1\0\37\5\2\0\65\5\1\0\7\5\1\0\1\5\3\0\3\5"+ - "\1\0\7\5\3\0\4\5\2\0\6\5\4\0\15\5\5\0\3\5"+ - "\1\0\7\5\16\0\5\6\30\0\1\51\1\51\5\6\20\0\2\5"+ - "\23\0\1\5\13\0\5\6\5\0\6\6\1\0\1\5\15\0\1\5"+ - "\20\0\15\5\3\0\33\5\25\0\15\6\4\0\1\6\3\0\14\6"+ - "\21\0\1\5\4\0\1\5\2\0\12\5\1\0\1\5\3\0\5\5"+ - "\6\0\1\5\1\0\1\5\1\0\1\5\1\0\4\5\1\0\13\5"+ - "\2\0\4\5\5\0\5\5\4\0\1\5\21\0\51\5\u0a77\0\57\5"+ - "\1\0\57\5\1\0\205\5\6\0\4\5\3\6\2\5\14\0\46\5"+ - "\1\0\1\5\5\0\1\5\2\0\70\5\7\0\1\5\17\0\1\6"+ - "\27\5\11\0\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0"+ - "\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0\40\6\57\0"+ - "\1\5\u01d5\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5"+ - "\4\0\126\5\2\0\2\6\2\0\3\5\1\0\132\5\1\0\4\5"+ - "\5\0\51\5\3\0\136\5\21\0\33\5\65\0\20\5\u0200\0\u19b6\5"+ - "\112\0\u51cd\5\63\0\u048d\5\103\0\56\5\2\0\u010d\5\3\0\20\5"+ - "\12\6\2\5\24\0\57\5\1\6\4\0\12\6\1\0\31\5\7\0"+ - "\1\6\120\5\2\6\45\0\11\5\2\0\147\5\2\0\4\5\1\0"+ - "\4\5\14\0\13\5\115\0\12\5\1\6\3\5\1\6\4\5\1\6"+ - "\27\5\5\6\20\0\1\5\7\0\64\5\14\0\2\6\62\5\21\6"+ - "\13\0\12\6\6\0\22\6\6\5\3\0\1\5\4\0\12\6\34\5"+ - "\10\6\2\0\27\5\15\6\14\0\35\5\3\0\4\6\57\5\16\6"+ - "\16\0\1\5\12\6\46\0\51\5\16\6\11\0\3\5\1\6\10\5"+ - "\2\6\2\0\12\6\6\0\27\5\3\0\1\5\1\6\4\0\60\5"+ - "\1\6\1\5\3\6\2\5\2\6\5\5\2\6\1\5\1\6\1\5"+ - "\30\0\3\5\2\0\13\5\5\6\2\0\3\5\2\6\12\0\6\5"+ - "\2\0\6\5\2\0\6\5\11\0\7\5\1\0\7\5\221\0\43\5"+ - "\10\6\1\0\2\6\2\0\12\6\6\0\u2ba4\5\14\0\27\5\4\0"+ - "\61\5\u2104\0\u016e\5\2\0\152\5\46\0\7\5\14\0\5\5\5\0"+ - "\1\5\1\6\12\5\1\0\15\5\1\0\5\5\1\0\1\5\1\0"+ - "\2\5\1\0\2\5\1\0\154\5\41\0\u016b\5\22\0\100\5\2\0"+ - "\66\5\50\0\15\5\3\0\20\6\20\0\7\6\14\0\2\5\30\0"+ - "\3\5\31\0\1\5\6\0\5\5\1\0\207\5\2\0\1\6\4\0"+ - "\1\5\13\0\12\6\7\0\32\5\4\0\1\5\1\0\32\5\13\0"+ - "\131\5\3\0\6\5\2\0\6\5\2\0\6\5\2\0\3\5\3\0"+ - "\2\5\3\0\2\5\22\0\3\6\4\0\14\5\1\0\32\5\1\0"+ - "\23\5\1\0\2\5\1\0\17\5\2\0\16\5\42\0\173\5\105\0"+ - "\65\5\210\0\1\6\202\0\35\5\3\0\61\5\57\0\37\5\21\0"+ - "\33\5\65\0\36\5\2\0\44\5\4\0\10\5\1\0\5\5\52\0"+ - "\236\5\2\0\12\6\u0356\0\6\5\2\0\1\5\1\0\54\5\1\0"+ - "\2\5\3\0\1\5\2\0\27\5\252\0\26\5\12\0\32\5\106\0"+ - "\70\5\6\0\2\5\100\0\1\5\3\6\1\0\2\6\5\0\4\6"+ - "\4\5\1\0\3\5\1\0\33\5\4\0\3\6\4\0\1\6\40\0"+ - "\35\5\203\0\66\5\12\0\26\5\12\0\23\5\215\0\111\5\u03b7\0"+ - "\3\6\65\5\17\6\37\0\12\6\20\0\3\6\55\5\13\6\2\0"+ - "\1\6\22\0\31\5\7\0\12\6\6\0\3\6\44\5\16\6\1\0"+ - "\12\6\100\0\3\6\60\5\16\6\4\5\13\0\12\6\u04a6\0\53\5"+ - "\15\6\10\0\12\6\u0936\0\u036f\5\221\0\143\5\u0b9d\0\u042f\5\u33d1\0"+ - "\u0239\5\u04c7\0\105\5\13\0\1\5\56\6\20\0\4\6\15\5\u4060\0"+ - "\2\5\u2163\0\5\6\3\0\26\6\2\0\7\6\36\0\4\6\224\0"+ - "\3\6\u01bb\0\125\5\1\0\107\5\1\0\2\5\2\0\1\5\2\0"+ - "\2\5\2\0\4\5\1\0\14\5\1\0\1\5\1\0\7\5\1\0"+ - "\101\5\1\0\4\5\2\0\10\5\1\0\7\5\1\0\34\5\1\0"+ - "\4\5\1\0\5\5\1\0\1\5\3\0\7\5\1\0\u0154\5\2\0"+ - "\31\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0"+ - "\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0"+ - "\10\5\2\0\62\6\u1600\0\4\5\1\0\33\5\1\0\2\5\1\0"+ - "\1\5\2\0\1\5\1\0\12\5\1\0\4\5\1\0\1\5\1\0"+ - "\1\5\6\0\1\5\4\0\1\5\1\0\1\5\1\0\1\5\1\0"+ - "\3\5\1\0\2\5\1\0\1\5\2\0\1\5\1\0\1\5\1\0"+ - "\1\5\1\0\1\5\1\0\1\5\1\0\2\5\1\0\1\5\2\0"+ - "\4\5\1\0\7\5\1\0\4\5\1\0\4\5\1\0\1\5\1\0"+ - "\12\5\1\0\21\5\5\0\3\5\1\0\5\5\1\0\21\5\u1144\0"+ - "\ua6d7\5\51\0\u1035\5\13\0\336\5\u3fe2\0\u021e\5\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05ee\0"+ - "\1\6\36\0\140\6\200\0\360\6\uffff\0\uffff\0\ufe12\0"; + public static final int PARAMETERS = 4; - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); + /** + * 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 + }; - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED + = "\11\6\1\4\1\2\1\51\1\52\1\1\16\6\4\0\1\4\1\0" + + "\1\45\1\0\1\5\2\0\1\47\3\0\1\37\1\0\1\30\1\35" + + "\1\0\1\33\11\11\1\12\1\3\5\0\4\40\1\36\1\40\2\7" + + "\1\31\4\7\1\34\14\7\1\0\1\41\2\0\1\10\1\0\1\22" + + "\1\46\1\43\1\26\1\20\1\21\1\42\1\7\1\27\2\7\1\23" + + "\1\7\1\25\1\44\2\7\1\16\1\24\1\15\1\17\2\7\1\50" + + "\1\32\1\7\1\13\1\0\1\14\1\0\6\6\1\53\32\6\2\0" + + "\4\5\4\0\1\5\2\0\1\6\7\0\1\5\4\0\1\5\5\0" + + "\27\5\1\0\37\5\1\0\u01ca\5\4\0\14\5\16\0\5\5\7\0" + + "\1\5\1\0\1\5\21\0\160\6\5\5\1\0\2\5\2\0\4\5" + + "\10\0\1\5\1\0\3\5\1\0\1\5\1\0\24\5\1\0\123\5" + + "\1\0\213\5\1\0\5\6\2\0\236\5\11\0\46\5\2\0\1\5" + + "\7\0\47\5\7\0\1\5\1\0\55\6\1\0\1\6\1\0\2\6" + + "\1\0\2\6\1\0\1\6\10\0\33\5\5\0\3\5\15\0\5\6" + + "\6\0\1\5\4\0\13\6\5\0\53\5\37\6\4\0\2\5\1\6" + + "\143\5\1\0\1\5\10\6\1\0\6\6\2\5\2\6\1\0\4\6" + + "\2\5\12\6\3\5\2\0\1\5\17\0\1\6\1\5\1\6\36\5" + + "\33\6\2\0\131\5\13\6\1\5\16\0\12\6\41\5\11\6\2\5" + + "\4\0\1\5\5\0\26\5\4\6\1\5\11\6\1\5\3\6\1\5" + + "\5\6\22\0\31\5\3\6\104\0\1\5\1\0\13\5\67\0\33\6" + + "\1\0\4\6\66\5\3\6\1\5\22\6\1\5\7\6\12\5\2\6" + + "\2\0\12\6\1\0\7\5\1\0\7\5\1\0\3\6\1\0\10\5" + + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\1\5\3\0\4\5" + + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\1\5\10\0" + + "\1\6\4\0\2\5\1\0\3\5\2\6\2\0\12\6\4\5\7\0" + + "\1\5\5\0\3\6\1\0\6\5\4\0\2\5\2\0\26\5\1\0" + + "\7\5\1\0\2\5\1\0\2\5\1\0\2\5\2\0\1\6\1\0" + + "\5\6\4\0\2\6\2\0\3\6\3\0\1\6\7\0\4\5\1\0" + + "\1\5\7\0\14\6\3\5\1\6\13\0\3\6\1\0\11\5\1\0" + + "\3\5\1\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5\2\0" + + "\1\6\1\5\10\6\1\0\3\6\1\0\3\6\2\0\1\5\17\0" + + "\2\5\2\6\2\0\12\6\1\0\1\5\17\0\3\6\1\0\10\5" + + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5" + + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\10\0\2\6" + + "\4\0\2\5\1\0\3\5\2\6\2\0\12\6\1\0\1\5\20\0" + + "\1\6\1\5\1\0\6\5\3\0\3\5\1\0\4\5\3\0\2\5" + + "\1\0\1\5\1\0\2\5\3\0\2\5\3\0\3\5\3\0\14\5" + + "\4\0\5\6\3\0\3\6\1\0\4\6\2\0\1\5\6\0\1\6" + + "\16\0\12\6\11\0\1\5\7\0\3\6\1\0\10\5\1\0\3\5" + + "\1\0\27\5\1\0\12\5\1\0\5\5\3\0\1\5\7\6\1\0" + + "\3\6\1\0\4\6\7\0\2\6\1\0\2\5\6\0\2\5\2\6" + + "\2\0\12\6\22\0\2\6\1\0\10\5\1\0\3\5\1\0\27\5" + + "\1\0\12\5\1\0\5\5\2\0\1\6\1\5\7\6\1\0\3\6" + + "\1\0\4\6\7\0\2\6\7\0\1\5\1\0\2\5\2\6\2\0" + + "\12\6\1\0\2\5\17\0\2\6\1\0\10\5\1\0\3\5\1\0" + + "\51\5\2\0\1\5\7\6\1\0\3\6\1\0\4\6\1\5\10\0" + + "\1\6\10\0\2\5\2\6\2\0\12\6\12\0\6\5\2\0\2\6" + + "\1\0\22\5\3\0\30\5\1\0\11\5\1\0\1\5\2\0\7\5" + + "\3\0\1\6\4\0\6\6\1\0\1\6\1\0\10\6\22\0\2\6" + + "\15\0\60\5\1\6\2\5\7\6\4\0\10\5\10\6\1\0\12\6" + + "\47\0\2\5\1\0\1\5\2\0\2\5\1\0\1\5\2\0\1\5" + + "\6\0\4\5\1\0\7\5\1\0\3\5\1\0\1\5\1\0\1\5" + + "\2\0\2\5\1\0\4\5\1\6\2\5\6\6\1\0\2\6\1\5" + + "\2\0\5\5\1\0\1\5\1\0\6\6\2\0\12\6\2\0\4\5" + + "\40\0\1\5\27\0\2\6\6\0\12\6\13\0\1\6\1\0\1\6" + + "\1\0\1\6\4\0\2\6\10\5\1\0\44\5\4\0\24\6\1\0" + + "\2\6\5\5\13\6\1\0\44\6\11\0\1\6\71\0\53\5\24\6" + + "\1\5\12\6\6\0\6\5\4\6\4\5\3\6\1\5\3\6\2\5" + + "\7\6\3\5\4\6\15\5\14\6\1\5\17\6\2\0\46\5\1\0" + + "\1\5\5\0\1\5\2\0\53\5\1\0\u014d\5\1\0\4\5\2\0" + + "\7\5\1\0\1\5\1\0\4\5\2\0\51\5\1\0\4\5\2\0" + + "\41\5\1\0\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0" + + "\17\5\1\0\71\5\1\0\4\5\2\0\103\5\2\0\3\6\40\0" + + "\20\5\20\0\125\5\14\0\u026c\5\2\0\21\5\1\0\32\5\5\0" + + "\113\5\3\0\3\5\17\0\15\5\1\0\4\5\3\6\13\0\22\5" + + "\3\6\13\0\22\5\2\6\14\0\15\5\1\0\3\5\1\0\2\6" + + "\14\0\64\5\40\6\3\0\1\5\3\0\2\5\1\6\2\0\12\6" + + "\41\0\3\6\2\0\12\6\6\0\130\5\10\0\51\5\1\6\1\5" + + "\5\0\106\5\12\0\35\5\3\0\14\6\4\0\14\6\12\0\12\6" + + "\36\5\2\0\5\5\13\0\54\5\4\0\21\6\7\5\2\6\6\0" + + "\12\6\46\0\27\5\5\6\4\0\65\5\12\6\1\0\35\6\2\0" + + "\13\6\6\0\12\6\15\0\1\5\130\0\5\6\57\5\21\6\7\5" + + "\4\0\12\6\21\0\11\6\14\0\3\6\36\5\15\6\2\5\12\6" + + "\54\5\16\6\14\0\44\5\24\6\10\0\12\6\3\0\3\5\12\6" + + "\44\5\122\0\3\6\1\0\25\6\4\5\1\6\4\5\3\6\2\5" + + "\11\0\300\5\47\6\25\0\4\6\u0116\5\2\0\6\5\2\0\46\5" + + "\2\0\6\5\2\0\10\5\1\0\1\5\1\0\1\5\1\0\1\5" + + "\1\0\37\5\2\0\65\5\1\0\7\5\1\0\1\5\3\0\3\5" + + "\1\0\7\5\3\0\4\5\2\0\6\5\4\0\15\5\5\0\3\5" + + "\1\0\7\5\16\0\5\6\30\0\1\51\1\51\5\6\20\0\2\5" + + "\23\0\1\5\13\0\5\6\5\0\6\6\1\0\1\5\15\0\1\5" + + "\20\0\15\5\3\0\33\5\25\0\15\6\4\0\1\6\3\0\14\6" + + "\21\0\1\5\4\0\1\5\2\0\12\5\1\0\1\5\3\0\5\5" + + "\6\0\1\5\1\0\1\5\1\0\1\5\1\0\4\5\1\0\13\5" + + "\2\0\4\5\5\0\5\5\4\0\1\5\21\0\51\5\u0a77\0\57\5" + + "\1\0\57\5\1\0\205\5\6\0\4\5\3\6\2\5\14\0\46\5" + + "\1\0\1\5\5\0\1\5\2\0\70\5\7\0\1\5\17\0\1\6" + + "\27\5\11\0\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0" + + "\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0\40\6\57\0" + + "\1\5\u01d5\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5" + + "\4\0\126\5\2\0\2\6\2\0\3\5\1\0\132\5\1\0\4\5" + + "\5\0\51\5\3\0\136\5\21\0\33\5\65\0\20\5\u0200\0\u19b6\5" + + "\112\0\u51cd\5\63\0\u048d\5\103\0\56\5\2\0\u010d\5\3\0\20\5" + + "\12\6\2\5\24\0\57\5\1\6\4\0\12\6\1\0\31\5\7\0" + + "\1\6\120\5\2\6\45\0\11\5\2\0\147\5\2\0\4\5\1\0" + + "\4\5\14\0\13\5\115\0\12\5\1\6\3\5\1\6\4\5\1\6" + + "\27\5\5\6\20\0\1\5\7\0\64\5\14\0\2\6\62\5\21\6" + + "\13\0\12\6\6\0\22\6\6\5\3\0\1\5\4\0\12\6\34\5" + + "\10\6\2\0\27\5\15\6\14\0\35\5\3\0\4\6\57\5\16\6" + + "\16\0\1\5\12\6\46\0\51\5\16\6\11\0\3\5\1\6\10\5" + + "\2\6\2\0\12\6\6\0\27\5\3\0\1\5\1\6\4\0\60\5" + + "\1\6\1\5\3\6\2\5\2\6\5\5\2\6\1\5\1\6\1\5" + + "\30\0\3\5\2\0\13\5\5\6\2\0\3\5\2\6\12\0\6\5" + + "\2\0\6\5\2\0\6\5\11\0\7\5\1\0\7\5\221\0\43\5" + + "\10\6\1\0\2\6\2\0\12\6\6\0\u2ba4\5\14\0\27\5\4\0" + + "\61\5\u2104\0\u016e\5\2\0\152\5\46\0\7\5\14\0\5\5\5\0" + + "\1\5\1\6\12\5\1\0\15\5\1\0\5\5\1\0\1\5\1\0" + + "\2\5\1\0\2\5\1\0\154\5\41\0\u016b\5\22\0\100\5\2\0" + + "\66\5\50\0\15\5\3\0\20\6\20\0\7\6\14\0\2\5\30\0" + + "\3\5\31\0\1\5\6\0\5\5\1\0\207\5\2\0\1\6\4\0" + + "\1\5\13\0\12\6\7\0\32\5\4\0\1\5\1\0\32\5\13\0" + + "\131\5\3\0\6\5\2\0\6\5\2\0\6\5\2\0\3\5\3\0" + + "\2\5\3\0\2\5\22\0\3\6\4\0\14\5\1\0\32\5\1\0" + + "\23\5\1\0\2\5\1\0\17\5\2\0\16\5\42\0\173\5\105\0" + + "\65\5\210\0\1\6\202\0\35\5\3\0\61\5\57\0\37\5\21\0" + + "\33\5\65\0\36\5\2\0\44\5\4\0\10\5\1\0\5\5\52\0" + + "\236\5\2\0\12\6\u0356\0\6\5\2\0\1\5\1\0\54\5\1\0" + + "\2\5\3\0\1\5\2\0\27\5\252\0\26\5\12\0\32\5\106\0" + + "\70\5\6\0\2\5\100\0\1\5\3\6\1\0\2\6\5\0\4\6" + + "\4\5\1\0\3\5\1\0\33\5\4\0\3\6\4\0\1\6\40\0" + + "\35\5\203\0\66\5\12\0\26\5\12\0\23\5\215\0\111\5\u03b7\0" + + "\3\6\65\5\17\6\37\0\12\6\20\0\3\6\55\5\13\6\2\0" + + "\1\6\22\0\31\5\7\0\12\6\6\0\3\6\44\5\16\6\1\0" + + "\12\6\100\0\3\6\60\5\16\6\4\5\13\0\12\6\u04a6\0\53\5" + + "\15\6\10\0\12\6\u0936\0\u036f\5\221\0\143\5\u0b9d\0\u042f\5\u33d1\0" + + "\u0239\5\u04c7\0\105\5\13\0\1\5\56\6\20\0\4\6\15\5\u4060\0" + + "\2\5\u2163\0\5\6\3\0\26\6\2\0\7\6\36\0\4\6\224\0" + + "\3\6\u01bb\0\125\5\1\0\107\5\1\0\2\5\2\0\1\5\2\0" + + "\2\5\2\0\4\5\1\0\14\5\1\0\1\5\1\0\7\5\1\0" + + "\101\5\1\0\4\5\2\0\10\5\1\0\7\5\1\0\34\5\1\0" + + "\4\5\1\0\5\5\1\0\1\5\3\0\7\5\1\0\u0154\5\2\0" + + "\31\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0" + + "\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0" + + "\10\5\2\0\62\6\u1600\0\4\5\1\0\33\5\1\0\2\5\1\0" + + "\1\5\2\0\1\5\1\0\12\5\1\0\4\5\1\0\1\5\1\0" + + "\1\5\6\0\1\5\4\0\1\5\1\0\1\5\1\0\1\5\1\0" + + "\3\5\1\0\2\5\1\0\1\5\2\0\1\5\1\0\1\5\1\0" + + "\1\5\1\0\1\5\1\0\1\5\1\0\2\5\1\0\1\5\2\0" + + "\4\5\1\0\7\5\1\0\4\5\1\0\4\5\1\0\1\5\1\0" + + "\12\5\1\0\21\5\5\0\3\5\1\0\5\5\1\0\21\5\u1144\0" + + "\ua6d7\5\51\0\u1035\5\13\0\336\5\u3fe2\0\u021e\5\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05ee\0" + + "\1\6\36\0\140\6\200\0\360\6\uffff\0\uffff\0\ufe12\0"; - private static final String ZZ_ACTION_PACKED_0 = - "\3\0\3\1\1\2\1\3\1\4\2\5\1\1\1\6"+ - "\2\7\1\10\1\11\1\12\1\13\5\11\1\1\1\11"+ - "\1\12\1\11\1\1\1\11\1\14\1\0\1\15\1\16"+ - "\1\17\1\20\1\16\1\21\1\22\1\23\1\24\1\25"+ - "\1\26\1\16\1\0\1\27\5\11\2\0\1\11\1\27"+ - "\2\11\2\0\1\27\1\0\5\11\1\0\1\11\1\27"+ - "\1\11\1\0\1\30\1\31\3\11\1\32\1\0\4\11"+ - "\1\33\1\0\4\11\1\0\4\11\1\0\4\11\1\0"+ - "\1\11\2\34\1\35\1\27\2\36"; + /** + * Translates characters to character classes + */ + private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - private static int [] zzUnpackAction() { - int [] result = new int[106]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } + /** + * Translates DFA states to action switch labels. + */ + private static final int[] ZZ_ACTION = zzUnpackAction(); - 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); + private static final String ZZ_ACTION_PACKED_0 + = "\3\0\3\1\1\2\1\3\1\4\2\5\1\1\1\6" + + "\2\7\1\10\1\11\1\12\1\13\5\11\1\1\1\11" + + "\1\12\1\11\1\1\1\11\1\14\1\0\1\15\1\16" + + "\1\17\1\20\1\16\1\21\1\22\1\23\1\24\1\25" + + "\1\26\1\16\1\0\1\27\5\11\2\0\1\11\1\27" + + "\2\11\2\0\1\27\1\0\5\11\1\0\1\11\1\27" + + "\1\11\1\0\1\30\1\31\3\11\1\32\1\0\4\11" + + "\1\33\1\0\4\11\1\0\4\11\1\0\4\11\1\0" + + "\1\11\2\34\1\35\1\27\2\36"; + + private static int[] zzUnpackAction() { + int[] result = new int[106]; + 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\54\0\130\0\204\0\260\0\334\0\u0108\0\204"+ - "\0\u0134\0\u0160\0\204\0\u018c\0\204\0\u01b8\0\204\0\u01e4"+ - "\0\u0210\0\u023c\0\204\0\u0268\0\u0294\0\u02c0\0\u02ec\0\u0318"+ - "\0\u0344\0\u0370\0\u039c\0\u03c8\0\u03f4\0\u0420\0\204\0\334"+ - "\0\204\0\204\0\204\0\204\0\u044c\0\204\0\204\0\204"+ - "\0\204\0\204\0\204\0\u0478\0\u04a4\0\u04d0\0\u04fc\0\u0528"+ - "\0\u0554\0\u0580\0\u05ac\0\u05d8\0\u03f4\0\u0604\0\u039c\0\u0630"+ - "\0\u065c\0\u0688\0\u06b4\0\u06e0\0\u06e0\0\u070c\0\u0738\0\u0764"+ - "\0\u0790\0\u07bc\0\u07e8\0\u0814\0\u0210\0\u0840\0\u0478\0\204"+ - "\0\u0210\0\u086c\0\u0898\0\u08c4\0\u0210\0\u08f0\0\u091c\0\u0948"+ - "\0\u0974\0\u09a0\0\u0210\0\u09cc\0\u09f8\0\u0a24\0\u0a50\0\u0a7c"+ - "\0\u0aa8\0\u0ad4\0\u0b00\0\u0b2c\0\u0b58\0\u0b84\0\u0bb0\0\u0bdc"+ - "\0\u0c08\0\u0c34\0\u0c60\0\u0c8c\0\u0cb8\0\u0210\0\u0210\0\204"+ - "\0\u0ce4\0\u0210"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[106]; - 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 = - "\4\4\1\5\1\6\1\4\1\7\1\6\3\4\1\10"+ - "\13\7\1\4\2\7\1\4\1\7\1\4\1\7\1\4"+ - "\1\7\1\4\3\7\1\4\1\7\1\4\1\7\1\4"+ - "\1\5\1\4\1\11\1\12\1\13\36\11\1\14\3\11"+ - "\1\15\6\11\1\4\1\16\1\17\1\20\1\4\1\21"+ - "\1\4\2\21\1\22\1\4\1\23\1\4\1\24\1\25"+ - "\1\26\1\21\1\27\3\21\1\30\2\21\1\31\1\32"+ - "\1\21\1\33\1\34\1\35\1\21\1\4\1\21\1\4"+ - "\1\21\1\36\1\21\1\37\1\21\1\4\1\21\3\4"+ - "\60\0\1\5\45\0\1\5\6\0\5\40\1\41\2\0"+ - "\13\40\1\0\4\40\1\0\1\40\1\0\1\40\1\0"+ - "\3\40\1\0\1\40\1\0\1\40\2\0\1\40\5\0"+ - "\2\40\3\7\1\41\2\0\13\7\1\0\4\7\1\0"+ - "\1\7\1\0\1\7\1\0\3\7\1\0\1\7\1\0"+ - "\1\7\2\0\1\40\1\11\2\0\36\11\1\0\3\11"+ - "\1\0\6\11\2\0\1\13\51\0\1\42\2\0\12\42"+ - "\1\43\1\44\1\45\1\42\1\46\3\42\1\47\13\42"+ - "\1\50\3\42\1\51\1\52\1\53\1\54\5\0\1\17"+ - "\51\0\1\20\2\0\51\20\5\0\5\21\3\0\13\21"+ - "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ - "\1\0\1\21\1\0\1\21\2\0\1\21\11\0\1\22"+ - "\6\0\1\55\12\0\1\22\1\0\1\56\1\55\22\0"+ - "\5\21\3\0\1\21\1\57\11\21\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\60"+ - "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ - "\5\21\3\0\10\21\1\61\2\21\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\62"+ - "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ - "\5\21\3\0\2\21\1\63\10\21\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\11\0\1\22\17\0\1\64\1\0"+ - "\1\33\1\0\1\65\23\0\5\21\3\0\10\21\1\66"+ - "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\11\0"+ - "\1\67\6\0\1\55\12\0\1\67\1\0\1\56\1\55"+ - "\22\0\5\21\3\0\5\21\1\70\5\21\1\0\4\21"+ - "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21"+ - "\1\0\1\21\2\0\1\21\11\0\1\56\21\0\1\56"+ - "\25\0\5\21\3\0\13\21\1\0\4\21\1\0\1\21"+ - "\1\0\1\21\1\0\2\21\1\71\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\11\0\1\72\6\0\3\72\3\0"+ - "\1\72\4\0\1\72\2\0\1\72\1\0\1\72\2\0"+ - "\1\72\2\0\1\72\16\0\1\73\6\0\3\73\3\0"+ - "\1\73\4\0\1\73\2\0\1\73\1\0\1\73\2\0"+ - "\1\73\2\0\1\73\16\0\1\74\16\0\1\75\2\0"+ - "\1\74\3\0\1\75\25\0\1\56\6\0\1\55\12\0"+ - "\1\56\2\0\1\55\22\0\5\21\3\0\2\21\1\76"+ - "\10\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ - "\5\21\3\0\13\21\1\0\4\21\1\0\1\21\1\0"+ - "\1\21\1\0\1\77\2\21\1\0\1\21\1\0\1\21"+ - "\2\0\1\21\5\0\5\21\3\0\11\21\1\100\1\21"+ - "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ - "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ - "\3\0\6\21\1\101\4\21\1\0\4\21\1\0\1\21"+ - "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21"+ - "\2\0\1\21\5\0\5\21\3\0\6\21\1\102\4\21"+ - "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ - "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\103"+ - "\33\0\5\21\3\0\4\21\1\104\6\21\1\0\4\21"+ - "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21"+ - "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\13\21"+ - "\1\0\3\21\1\105\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ - "\5\21\3\0\10\21\1\106\2\21\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\11\0\1\107\6\0\3\107\3\0"+ - "\1\107\4\0\1\107\2\0\1\107\1\0\1\107\2\0"+ - "\1\107\2\0\1\107\16\0\1\110\6\0\3\110\3\0"+ - "\1\110\4\0\1\110\2\0\1\110\1\0\1\110\2\0"+ - "\1\110\2\0\1\110\16\0\1\74\21\0\1\74\25\0"+ - "\5\21\3\0\3\21\1\111\7\21\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\112"+ - "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ - "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ - "\3\0\3\21\1\113\7\21\1\0\4\21\1\0\1\21"+ - "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21"+ - "\2\0\1\21\5\0\5\21\3\0\7\21\1\114\3\21"+ - "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ - "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ - "\3\0\6\21\1\115\4\21\1\0\4\21\1\0\1\21"+ - "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21"+ - "\2\0\1\21\21\0\1\116\37\0\5\21\3\0\12\21"+ - "\1\117\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ - "\5\21\3\0\7\21\1\120\3\21\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\5\0\5\21\3\0\7\21\1\121"+ - "\3\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ - "\5\21\3\0\4\21\1\122\6\21\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\123"+ - "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0"+ - "\1\124\31\0\5\21\3\0\10\21\1\125\2\21\1\0"+ - "\4\21\1\0\1\21\1\0\1\21\1\0\3\21\1\0"+ - "\1\21\1\0\1\21\2\0\1\21\5\0\5\21\3\0"+ - "\1\126\12\21\1\0\4\21\1\0\1\21\1\0\1\21"+ - "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21"+ - "\5\0\5\21\3\0\1\127\12\21\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\130"+ - "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ - "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\131"+ - "\33\0\5\21\3\0\12\21\1\132\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\133"+ - "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ - "\5\21\3\0\3\21\1\134\7\21\1\0\4\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21\5\0\5\21\3\0\10\21\1\135"+ - "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ - "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0"+ - "\1\136\31\0\5\21\3\0\1\137\12\21\1\0\4\21"+ - "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21"+ - "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\10\21"+ - "\1\140\2\21\1\0\4\21\1\0\1\21\1\0\1\21"+ - "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21"+ - "\5\0\5\21\3\0\1\21\1\141\11\21\1\0\4\21"+ - "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21"+ - "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\3\21"+ - "\1\142\7\21\1\0\4\21\1\0\1\21\1\0\1\21"+ - "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21"+ - "\15\0\1\143\43\0\5\21\3\0\13\21\1\0\1\21"+ - "\1\105\2\21\1\0\1\21\1\0\1\21\1\0\3\21"+ - "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ - "\3\0\1\144\12\21\1\0\4\21\1\0\1\21\1\0"+ - "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0"+ - "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21"+ - "\1\146\1\21\1\0\1\21\1\0\1\21\1\0\3\21"+ - "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ - "\3\0\11\21\1\147\1\21\1\0\4\21\1\0\1\21"+ - "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21"+ - "\2\0\1\21\32\0\1\150\26\0\4\21\1\151\3\0"+ - "\13\21\1\0\2\21\1\152\1\21\1\0\1\21\1\0"+ - "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0"+ - "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21"+ - "\1\145\1\21\1\0\1\21\1\0\1\21\1\0\3\21"+ - "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\4\21"+ - "\1\151\3\0\13\21\1\0\2\21\1\151\1\21\1\0"+ - "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ - "\1\21\2\0\1\21"; + private static final String ZZ_ROWMAP_PACKED_0 + = "\0\0\0\54\0\130\0\204\0\260\0\334\0\u0108\0\204" + + "\0\u0134\0\u0160\0\204\0\u018c\0\204\0\u01b8\0\204\0\u01e4" + + "\0\u0210\0\u023c\0\204\0\u0268\0\u0294\0\u02c0\0\u02ec\0\u0318" + + "\0\u0344\0\u0370\0\u039c\0\u03c8\0\u03f4\0\u0420\0\204\0\334" + + "\0\204\0\204\0\204\0\204\0\u044c\0\204\0\204\0\204" + + "\0\204\0\204\0\204\0\u0478\0\u04a4\0\u04d0\0\u04fc\0\u0528" + + "\0\u0554\0\u0580\0\u05ac\0\u05d8\0\u03f4\0\u0604\0\u039c\0\u0630" + + "\0\u065c\0\u0688\0\u06b4\0\u06e0\0\u06e0\0\u070c\0\u0738\0\u0764" + + "\0\u0790\0\u07bc\0\u07e8\0\u0814\0\u0210\0\u0840\0\u0478\0\204" + + "\0\u0210\0\u086c\0\u0898\0\u08c4\0\u0210\0\u08f0\0\u091c\0\u0948" + + "\0\u0974\0\u09a0\0\u0210\0\u09cc\0\u09f8\0\u0a24\0\u0a50\0\u0a7c" + + "\0\u0aa8\0\u0ad4\0\u0b00\0\u0b2c\0\u0b58\0\u0b84\0\u0bb0\0\u0bdc" + + "\0\u0c08\0\u0c34\0\u0c60\0\u0c8c\0\u0cb8\0\u0210\0\u0210\0\204" + + "\0\u0ce4\0\u0210"; - private static int [] zzUnpackTrans() { - int [] result = new int[3344]; - 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[106]; + 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 = - "\3\0\1\11\3\1\1\11\2\1\1\11\1\1\1\11"+ - "\1\1\1\11\3\1\1\11\13\1\1\11\1\0\4\11"+ - "\1\1\6\11\1\1\1\0\6\1\2\0\4\1\2\0"+ - "\1\1\1\0\5\1\1\0\3\1\1\0\1\11\5\1"+ - "\1\0\5\1\1\0\4\1\1\0\4\1\1\0\4\1"+ - "\1\0\4\1\1\11\2\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[106]; - 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 + = "\4\4\1\5\1\6\1\4\1\7\1\6\3\4\1\10" + + "\13\7\1\4\2\7\1\4\1\7\1\4\1\7\1\4" + + "\1\7\1\4\3\7\1\4\1\7\1\4\1\7\1\4" + + "\1\5\1\4\1\11\1\12\1\13\36\11\1\14\3\11" + + "\1\15\6\11\1\4\1\16\1\17\1\20\1\4\1\21" + + "\1\4\2\21\1\22\1\4\1\23\1\4\1\24\1\25" + + "\1\26\1\21\1\27\3\21\1\30\2\21\1\31\1\32" + + "\1\21\1\33\1\34\1\35\1\21\1\4\1\21\1\4" + + "\1\21\1\36\1\21\1\37\1\21\1\4\1\21\3\4" + + "\60\0\1\5\45\0\1\5\6\0\5\40\1\41\2\0" + + "\13\40\1\0\4\40\1\0\1\40\1\0\1\40\1\0" + + "\3\40\1\0\1\40\1\0\1\40\2\0\1\40\5\0" + + "\2\40\3\7\1\41\2\0\13\7\1\0\4\7\1\0" + + "\1\7\1\0\1\7\1\0\3\7\1\0\1\7\1\0" + + "\1\7\2\0\1\40\1\11\2\0\36\11\1\0\3\11" + + "\1\0\6\11\2\0\1\13\51\0\1\42\2\0\12\42" + + "\1\43\1\44\1\45\1\42\1\46\3\42\1\47\13\42" + + "\1\50\3\42\1\51\1\52\1\53\1\54\5\0\1\17" + + "\51\0\1\20\2\0\51\20\5\0\5\21\3\0\13\21" + + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" + + "\1\0\1\21\1\0\1\21\2\0\1\21\11\0\1\22" + + "\6\0\1\55\12\0\1\22\1\0\1\56\1\55\22\0" + + "\5\21\3\0\1\21\1\57\11\21\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\60" + + "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" + + "\5\21\3\0\10\21\1\61\2\21\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\62" + + "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" + + "\5\21\3\0\2\21\1\63\10\21\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\11\0\1\22\17\0\1\64\1\0" + + "\1\33\1\0\1\65\23\0\5\21\3\0\10\21\1\66" + + "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\11\0" + + "\1\67\6\0\1\55\12\0\1\67\1\0\1\56\1\55" + + "\22\0\5\21\3\0\5\21\1\70\5\21\1\0\4\21" + + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" + + "\1\0\1\21\2\0\1\21\11\0\1\56\21\0\1\56" + + "\25\0\5\21\3\0\13\21\1\0\4\21\1\0\1\21" + + "\1\0\1\21\1\0\2\21\1\71\1\0\1\21\1\0" + + "\1\21\2\0\1\21\11\0\1\72\6\0\3\72\3\0" + + "\1\72\4\0\1\72\2\0\1\72\1\0\1\72\2\0" + + "\1\72\2\0\1\72\16\0\1\73\6\0\3\73\3\0" + + "\1\73\4\0\1\73\2\0\1\73\1\0\1\73\2\0" + + "\1\73\2\0\1\73\16\0\1\74\16\0\1\75\2\0" + + "\1\74\3\0\1\75\25\0\1\56\6\0\1\55\12\0" + + "\1\56\2\0\1\55\22\0\5\21\3\0\2\21\1\76" + + "\10\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" + + "\5\21\3\0\13\21\1\0\4\21\1\0\1\21\1\0" + + "\1\21\1\0\1\77\2\21\1\0\1\21\1\0\1\21" + + "\2\0\1\21\5\0\5\21\3\0\11\21\1\100\1\21" + + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" + + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" + + "\3\0\6\21\1\101\4\21\1\0\4\21\1\0\1\21" + + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" + + "\2\0\1\21\5\0\5\21\3\0\6\21\1\102\4\21" + + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" + + "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\103" + + "\33\0\5\21\3\0\4\21\1\104\6\21\1\0\4\21" + + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" + + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\13\21" + + "\1\0\3\21\1\105\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" + + "\5\21\3\0\10\21\1\106\2\21\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\11\0\1\107\6\0\3\107\3\0" + + "\1\107\4\0\1\107\2\0\1\107\1\0\1\107\2\0" + + "\1\107\2\0\1\107\16\0\1\110\6\0\3\110\3\0" + + "\1\110\4\0\1\110\2\0\1\110\1\0\1\110\2\0" + + "\1\110\2\0\1\110\16\0\1\74\21\0\1\74\25\0" + + "\5\21\3\0\3\21\1\111\7\21\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\112" + + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" + + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" + + "\3\0\3\21\1\113\7\21\1\0\4\21\1\0\1\21" + + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" + + "\2\0\1\21\5\0\5\21\3\0\7\21\1\114\3\21" + + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" + + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" + + "\3\0\6\21\1\115\4\21\1\0\4\21\1\0\1\21" + + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" + + "\2\0\1\21\21\0\1\116\37\0\5\21\3\0\12\21" + + "\1\117\1\0\4\21\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" + + "\5\21\3\0\7\21\1\120\3\21\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\5\0\5\21\3\0\7\21\1\121" + + "\3\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" + + "\5\21\3\0\4\21\1\122\6\21\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\123" + + "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0" + + "\1\124\31\0\5\21\3\0\10\21\1\125\2\21\1\0" + + "\4\21\1\0\1\21\1\0\1\21\1\0\3\21\1\0" + + "\1\21\1\0\1\21\2\0\1\21\5\0\5\21\3\0" + + "\1\126\12\21\1\0\4\21\1\0\1\21\1\0\1\21" + + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21" + + "\5\0\5\21\3\0\1\127\12\21\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\130" + + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" + + "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\131" + + "\33\0\5\21\3\0\12\21\1\132\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\133" + + "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" + + "\5\21\3\0\3\21\1\134\7\21\1\0\4\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21\5\0\5\21\3\0\10\21\1\135" + + "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" + + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0" + + "\1\136\31\0\5\21\3\0\1\137\12\21\1\0\4\21" + + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" + + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\10\21" + + "\1\140\2\21\1\0\4\21\1\0\1\21\1\0\1\21" + + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21" + + "\5\0\5\21\3\0\1\21\1\141\11\21\1\0\4\21" + + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" + + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\3\21" + + "\1\142\7\21\1\0\4\21\1\0\1\21\1\0\1\21" + + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21" + + "\15\0\1\143\43\0\5\21\3\0\13\21\1\0\1\21" + + "\1\105\2\21\1\0\1\21\1\0\1\21\1\0\3\21" + + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" + + "\3\0\1\144\12\21\1\0\4\21\1\0\1\21\1\0" + + "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0" + + "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21" + + "\1\146\1\21\1\0\1\21\1\0\1\21\1\0\3\21" + + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" + + "\3\0\11\21\1\147\1\21\1\0\4\21\1\0\1\21" + + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" + + "\2\0\1\21\32\0\1\150\26\0\4\21\1\151\3\0" + + "\13\21\1\0\2\21\1\152\1\21\1\0\1\21\1\0" + + "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0" + + "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21" + + "\1\145\1\21\1\0\1\21\1\0\1\21\1\0\3\21" + + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\4\21" + + "\1\151\3\0\13\21\1\0\2\21\1\151\1\21\1\0" + + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" + + "\1\21\2\0\1\21"; - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; + private static int[] zzUnpackTrans() { + int[] result = new int[3344]; + 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 + = "\3\0\1\11\3\1\1\11\2\1\1\11\1\1\1\11" + + "\1\1\1\11\3\1\1\11\13\1\1\11\1\0\4\11" + + "\1\1\6\11\1\1\1\0\6\1\2\0\4\1\2\0" + + "\1\1\1\0\5\1\1\0\3\1\1\0\1\11\5\1" + + "\1\0\5\1\1\0\4\1\1\0\4\1\1\0\4\1" + + "\1\0\4\1\1\11\2\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[106]; + 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: */ StringBuilder string = new StringBuilder(); /** @@ -579,513 +625,540 @@ public final class FlasmLexer { return yyline + 1; } - - - /** - * Creates a new scanner - * - * @param in the java.io.Reader to read input from. - */ - public FlasmLexer(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 < 2854) { - 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 FlasmLexer(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 < 2854) { + 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(); - } - - - /** - * 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; - } - - - /** - * 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]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * 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 ASMParsedSymbol yylex() throws java.io.IOException, ActionParseException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - yychar+= zzMarkedPosL-zzStartRead; - - boolean zzR = false; - int zzCh; - int zzCharCount; - for (zzCurrentPosL = zzStartRead ; - zzCurrentPosL < zzMarkedPosL ; - zzCurrentPosL += zzCharCount ) { - zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); - zzCharCount = Character.charCount(zzCh); - switch (zzCh) { - case '\u000B': - case '\u000C': - case '\u0085': - case '\u2028': - case '\u2029': - yyline++; - yycolumn = 0; - zzR = false; - break; - case '\r': - yyline++; - yycolumn = 0; - zzR = true; - break; - case '\n': - if (zzR) - zzR = false; - else { - yyline++; - yycolumn = 0; - } - break; - default: - zzR = false; - yycolumn += zzCharCount; + /* translate stored positions */ + zzEndRead -= zzStartRead; + zzCurrentPos -= zzStartRead; + zzMarkedPos -= zzStartRead; + zzStartRead = 0; } - } - if (zzR) { - // peek one character ahead if it is \n (if we have counted one line too much) - boolean zzPeek; - if (zzMarkedPosL < zzEndReadL) - zzPeek = zzBufferL[zzMarkedPosL] == '\n'; - else if (zzAtEOF) - zzPeek = false; - else { - boolean eof = zzRefill(); - zzEndReadL = zzEndRead; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - if (eof) - zzPeek = false; - else - zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + /* 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; } - if (zzPeek) yyline--; - } - zzAction = -1; - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = ZZ_LEXSTATE[zzLexicalState]; + /* 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; + } - // set up zzAction for empty match case: - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - } + if (totalRead > 0) { + zzEndRead += totalRead; + if (totalRead == requested) { /* possibly more input available */ + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + --zzEndRead; + zzFinalHighSurrogate = 1; + } + } + return false; + } + + // totalRead = 0: End of stream + return true; + } + + /** + * Closes the input stream. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; /* indicate end of file */ + + zzEndRead = zzStartRead; /* invalidate buffer */ + + if (zzReader != null) { + zzReader.close(); + } + } + + /** + * Resets the scanner to read from a new input stream. + * Does not close the old reader. + * + * All internal variables are reset, the old input stream + * 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; + } + + /** + * 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]; + } + + throw new Error(message); + } + + /** + * Pushes the specified amount of characters back into the input stream. + * + * They will be read again by then next call of the scanning method + * + * @param number the number of characters to be read again. + * This number must not be greater than yylength()! + */ + public void yypushback(int number) { + if (number > yylength()) { + zzScanError(ZZ_PUSHBACK_2BIG); + } + + zzMarkedPos -= number; + } + + /** + * 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 ASMParsedSymbol yylex() throws java.io.IOException, ActionParseException { + 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; + boolean zzR = false; + int zzCh; + int zzCharCount; + for (zzCurrentPosL = zzStartRead; + zzCurrentPosL < zzMarkedPosL; + zzCurrentPosL += zzCharCount) { + zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); + zzCharCount = Character.charCount(zzCh); + switch (zzCh) { + case '\u000B': + case '\u000C': + case '\u0085': + case '\u2028': + case '\u2029': + yyline++; + yycolumn = 0; + zzR = false; + break; + case '\r': + yyline++; + yycolumn = 0; + zzR = true; + break; + case '\n': + if (zzR) { + zzR = false; + } else { + yyline++; + yycolumn = 0; + } + break; + default: + zzR = false; + yycolumn += zzCharCount; + } + } + + if (zzR) { + // peek one character ahead if it is \n (if we have counted one line too much) + boolean zzPeek; + if (zzMarkedPosL < zzEndReadL) { + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + } else if (zzAtEOF) { + zzPeek = false; + } else { + boolean eof = zzRefill(); + zzEndReadL = zzEndRead; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + if (eof) { + zzPeek = false; + } else { + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + } + } + if (zzPeek) { + yyline--; + } + } + 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 31: + break; + case 2: { + yybegin(PARAMETERS); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); + } + case 32: + break; + case 3: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END); + } + case 33: + break; + case 4: { + string.append(yytext()); + } + case 34: + break; + case 5: { + throw new ActionParseException("Unterminated string at end of line", yyline + 1); + } + case 35: + break; + case 6: { + yybegin(PARAMETERS); + // length also includes the trailing quote + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString()); + } + case 36: + break; + case 7: { + yybegin(YYINITIAL); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL); + } + case 37: + break; + case 8: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1)); + } + case 38: + break; + case 9: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext()); + } + case 39: + break; + case 10: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext()))); + } + case 40: + break; + case 11: { + yybegin(YYINITIAL); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START); + } + case 41: + break; + case 12: { + yybegin(STRING); + string.setLength(0); + } + case 42: + break; + case 13: { + String s = yytext(); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); + } + case 43: + break; + case 14: { + throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); + } + case 44: + break; + case 15: { + string.append('\t'); + } + case 45: + break; + case 16: { + string.append('\r'); + } + case 46: + break; + case 17: { + string.append('\f'); + } + case 47: + break; + case 18: { + string.append('\n'); + } + case 48: + break; + case 19: { + string.append('\\'); + } + case 49: + break; + case 20: { + string.append('\"'); + } + case 50: + break; + case 21: { + string.append('\b'); + } + case 51: + break; + case 22: { + string.append('\''); + } + case 52: + break; + case 23: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); + } + case 53: + break; + case 24: { + char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); + } + case 54: + break; + case 25: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN, Boolean.TRUE); + } + case 55: + break; + case 26: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, Null.INSTANCE); + } + case 56: + break; + case 27: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN, Boolean.FALSE); + } + case 57: + break; + case 28: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8)))); + } + case 58: + break; + case 29: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, Undefined.INSTANCE); + } + case 59: + break; + case 30: { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8)))); + } + case 60: + break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF); + } + } else { + zzScanError(ZZ_NO_MATCH); + } + } } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: - { - } - case 31: break; - case 2: - { yybegin(PARAMETERS); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); - } - case 32: break; - case 3: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END); - } - case 33: break; - case 4: - { string.append(yytext()); - } - case 34: break; - case 5: - { throw new ActionParseException("Unterminated string at end of line", yyline + 1); - } - case 35: break; - case 6: - { yybegin(PARAMETERS); - // length also includes the trailing quote - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString()); - } - case 36: break; - case 7: - { yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL); - } - case 37: break; - case 8: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1)); - } - case 38: break; - case 9: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext()); - } - case 39: break; - case 10: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext()))); - } - case 40: break; - case 11: - { yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START); - } - case 41: break; - case 12: - { yybegin(STRING); - string.setLength(0); - } - case 42: break; - case 13: - { String s=yytext(); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); - } - case 43: break; - case 14: - { throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 44: break; - case 15: - { string.append('\t'); - } - case 45: break; - case 16: - { string.append('\r'); - } - case 46: break; - case 17: - { string.append('\f'); - } - case 47: break; - case 18: - { string.append('\n'); - } - case 48: break; - case 19: - { string.append('\\'); - } - case 49: break; - case 20: - { string.append('\"'); - } - case 50: break; - case 21: - { string.append('\b'); - } - case 51: break; - case 22: - { string.append('\''); - } - case 52: break; - case 23: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); - } - case 53: break; - case 24: - { char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); - } - case 54: break; - case 25: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.TRUE); - } - case 55: break; - case 26: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, Null.INSTANCE); - } - case 56: break; - case 27: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.FALSE); - } - case 57: break; - case 28: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8)))); - } - case 58: break; - case 29: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, Undefined.INSTANCE); - } - case 59: break; - case 30: - { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8)))); - } - case 60: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF); - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } } - } - - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java index 9a49d98ba..29d96d52e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java @@ -17,1193 +17,1243 @@ * License along with this library. */ package com.jpexs.decompiler.flash.action.parser.script; + import com.jpexs.decompiler.flash.action.parser.ActionParseException; 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 D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_script.flex + * from the specification file + * D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_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 XMLSTARTTAG = 6; - public static final int XML = 8; - public static final int OIDENTIFIER = 10; + /** + * 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 - }; + public static final int STRING = 2; - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\7\1\3\1\2\1\121\1\122\1\1\16\7\4\0\1\14\1\110"+ - "\1\16\1\0\1\6\1\117\1\113\1\30\1\100\1\101\1\5\1\115"+ - "\1\107\1\26\1\11\1\4\1\17\3\23\4\24\2\20\1\10\1\106"+ - "\1\12\1\15\1\13\1\112\1\120\1\62\1\22\1\72\1\73\1\25"+ - "\1\64\1\6\1\66\1\77\2\6\1\70\1\71\1\76\1\6\1\75"+ - "\1\67\1\6\1\63\1\65\1\61\1\74\1\6\1\21\2\6\1\104"+ - "\1\27\1\105\1\116\1\6\1\0\1\35\1\32\1\37\1\46\1\34"+ - "\1\47\1\60\1\52\1\44\1\6\1\36\1\50\1\55\1\42\1\41"+ - "\1\53\1\6\1\33\1\40\1\43\1\45\1\56\1\51\1\57\1\54"+ - "\1\6\1\102\1\114\1\103\1\111\6\7\1\123\32\7\2\0\4\6"+ - "\1\0\1\31\2\0\1\6\2\0\1\7\7\0\1\6\4\0\1\6"+ - "\5\0\27\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\10\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\236\6\11\0\46\6\2\0"+ - "\1\6\7\0\47\6\7\0\1\6\1\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\15\0"+ - "\5\7\6\0\1\6\4\0\13\7\5\0\53\6\37\7\4\0\2\6"+ - "\1\7\143\6\1\0\1\6\10\7\1\0\6\7\2\6\2\7\1\0"+ - "\4\7\2\6\12\7\3\6\2\0\1\6\17\0\1\7\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\1\6\1\0\13\6\67\0"+ - "\33\7\1\0\4\7\66\6\3\7\1\6\22\7\1\6\7\7\12\6"+ - "\2\7\2\0\12\7\1\0\7\6\1\0\7\6\1\0\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\4\6"+ - "\7\0\1\6\5\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\1\0\1\6\17\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\11\0\1\6\7\0\3\7\1\0\10\6\1\0"+ - "\3\6\1\0\27\6\1\0\12\6\1\0\5\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\22\0\2\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\17\0\2\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\22\0"+ - "\2\7\15\0\60\6\1\7\2\6\7\7\4\0\10\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\6\17\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\3\0\2\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\35\6\3\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\130\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\11\0\300\6\47\7\25\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\16\0\5\7\30\0\1\121\1\121\5\7\20\0"+ - "\2\6\23\0\1\6\13\0\5\7\5\0\6\7\1\0\1\6\15\0"+ - "\1\6\20\0\15\6\3\0\33\6\25\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\51\6\u0a77\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\u01d5\0\3\6\31\0\11\6\6\7\1\0\5\6\2\0"+ - "\5\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\31\6"+ - "\7\0\1\7\120\6\2\7\45\0\11\6\2\0\147\6\2\0\4\6"+ - "\1\0\4\6\14\0\13\6\115\0\12\6\1\7\3\6\1\7\4\6"+ - "\1\7\27\6\5\7\20\0\1\6\7\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\46\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\1\7\4\0"+ - "\60\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\221\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\u2104\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\50\0\15\6\3\0\20\7\20\0\7\7\14\0\2\6"+ - "\30\0\3\6\31\0\1\6\6\0\5\6\1\0\207\6\2\0\1\7"+ - "\4\0\1\6\13\0\12\7\7\0\32\6\4\0\1\6\1\0\32\6"+ - "\13\0\131\6\3\0\6\6\2\0\6\6\2\0\6\6\2\0\3\6"+ - "\3\0\2\6\3\0\2\6\22\0\3\7\4\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\6\210\0\1\7\202\0\35\6\3\0\61\6\57\0\37\6"+ - "\21\0\33\6\65\0\36\6\2\0\44\6\4\0\10\6\1\0\5\6"+ - "\52\0\236\6\2\0\12\7\u0356\0\6\6\2\0\1\6\1\0\54\6"+ - "\1\0\2\6\3\0\1\6\2\0\27\6\252\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\203\0\66\6\12\0\26\6\12\0\23\6\215\0\111\6"+ - "\u03b7\0\3\7\65\6\17\7\37\0\12\7\20\0\3\7\55\6\13\7"+ - "\2\0\1\7\22\0\31\6\7\0\12\7\6\0\3\7\44\6\16\7"+ - "\1\0\12\7\100\0\3\7\60\6\16\7\4\6\13\0\12\7\u04a6\0"+ - "\53\6\15\7\10\0\12\7\u0936\0\u036f\6\221\0\143\6\u0b9d\0\u042f\6"+ - "\u33d1\0\u0239\6\u04c7\0\105\6\13\0\1\6\56\7\20\0\4\7\15\6"+ - "\u4060\0\2\6\u2163\0\5\7\3\0\26\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\u1600\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\u05ee\0"+ - "\1\7\36\0\140\7\200\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 XMLSTARTTAG = 6; - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); + public static final int XML = 8; - private static final String ZZ_ACTION_PACKED_0 = - "\6\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\2\15\1\16\1\17"+ - "\1\20\26\6\1\21\1\22\1\23\1\24\1\25\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"+ - "\1\1\2\45\1\42\1\1\1\46\2\42\2\47\2\42"+ - "\1\1\1\50\1\3\1\0\1\51\1\52\1\53\2\0"+ - "\1\54\1\0\1\55\1\56\1\57\1\60\1\61\1\62"+ - "\1\63\1\54\1\0\2\63\1\0\1\64\1\65\1\0"+ - "\7\6\1\66\11\6\1\67\11\6\1\70\1\71\1\72"+ - "\3\6\1\73\30\6\1\56\1\74\1\75\1\76\1\77"+ - "\1\100\1\101\1\102\1\103\1\104\1\105\1\104\1\106"+ - "\1\107\1\110\1\111\1\112\1\113\1\104\1\114\1\104"+ - "\6\0\1\115\1\116\2\115\2\3\2\0\1\117\3\0"+ - "\1\120\1\0\1\121\1\122\1\123\1\124\2\125\1\63"+ - "\1\54\1\0\1\126\10\6\1\127\5\6\1\130\1\131"+ - "\5\6\1\132\1\133\5\6\1\134\7\6\1\135\12\6"+ - "\1\136\20\6\1\137\1\6\1\140\2\6\1\141\2\6"+ - "\1\142\12\0\1\143\5\0\1\144\1\125\1\63\4\6"+ - "\1\145\1\146\1\147\1\6\1\150\1\6\1\151\5\6"+ - "\1\152\6\6\1\153\1\6\1\154\4\6\1\155\22\6"+ - "\1\156\7\6\1\157\4\6\1\160\7\6\1\161\1\0"+ - "\1\162\1\42\1\0\1\163\12\0\1\125\1\63\1\164"+ - "\4\6\1\165\1\166\1\6\1\167\5\6\1\170\4\6"+ - "\1\171\3\6\1\172\14\6\1\173\6\6\1\174\2\6"+ - "\1\175\3\6\1\176\1\6\1\177\10\6\10\0\1\125"+ - "\1\63\1\200\1\6\1\201\3\6\1\202\2\6\1\203"+ - "\1\204\6\6\1\205\3\6\1\206\4\6\1\207\5\6"+ - "\1\210\10\6\1\211\2\6\1\212\3\6\1\213\1\214"+ - "\1\6\2\0\1\120\1\125\1\63\1\6\1\215\4\6"+ - "\1\216\13\6\1\217\1\6\1\220\1\6\1\221\7\6"+ - "\1\222\1\223\6\6\1\42\1\125\1\63\1\6\1\224"+ - "\2\6\1\225\15\6\1\226\5\6\1\227\1\6\1\230"+ - "\1\231\3\6\1\232\1\125\1\63\1\6\1\233\1\6"+ - "\1\234\1\235\4\6\1\236\2\6\1\237\2\6\1\240"+ - "\1\241\1\6\1\242\1\243\5\6\1\125\1\63\2\6"+ - "\1\244\1\245\1\6\1\246\1\6\1\247\6\6\1\250"+ - "\2\6\1\63\4\6\1\251\4\6\1\252\1\253\1\254"+ - "\1\63\6\6\1\255\2\6\1\63\1\6\1\256\1\6"+ - "\1\257\2\6\1\260\1\261\1\63\2\6\1\262\3\6"+ - "\1\63\1\263\4\6\1\63\2\6\1\264\1\265\1\266"+ - "\1\6\1\267"; + public static final int OIDENTIFIER = 10; - private static int [] zzUnpackAction() { - int [] result = new int[695]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } + /** + * 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 + }; - 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); + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED + = "\11\7\1\3\1\2\1\121\1\122\1\1\16\7\4\0\1\14\1\110" + + "\1\16\1\0\1\6\1\117\1\113\1\30\1\100\1\101\1\5\1\115" + + "\1\107\1\26\1\11\1\4\1\17\3\23\4\24\2\20\1\10\1\106" + + "\1\12\1\15\1\13\1\112\1\120\1\62\1\22\1\72\1\73\1\25" + + "\1\64\1\6\1\66\1\77\2\6\1\70\1\71\1\76\1\6\1\75" + + "\1\67\1\6\1\63\1\65\1\61\1\74\1\6\1\21\2\6\1\104" + + "\1\27\1\105\1\116\1\6\1\0\1\35\1\32\1\37\1\46\1\34" + + "\1\47\1\60\1\52\1\44\1\6\1\36\1\50\1\55\1\42\1\41" + + "\1\53\1\6\1\33\1\40\1\43\1\45\1\56\1\51\1\57\1\54" + + "\1\6\1\102\1\114\1\103\1\111\6\7\1\123\32\7\2\0\4\6" + + "\1\0\1\31\2\0\1\6\2\0\1\7\7\0\1\6\4\0\1\6" + + "\5\0\27\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\10\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\236\6\11\0\46\6\2\0" + + "\1\6\7\0\47\6\7\0\1\6\1\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\15\0" + + "\5\7\6\0\1\6\4\0\13\7\5\0\53\6\37\7\4\0\2\6" + + "\1\7\143\6\1\0\1\6\10\7\1\0\6\7\2\6\2\7\1\0" + + "\4\7\2\6\12\7\3\6\2\0\1\6\17\0\1\7\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\1\6\1\0\13\6\67\0" + + "\33\7\1\0\4\7\66\6\3\7\1\6\22\7\1\6\7\7\12\6" + + "\2\7\2\0\12\7\1\0\7\6\1\0\7\6\1\0\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\4\6" + + "\7\0\1\6\5\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\1\0\1\6\17\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\11\0\1\6\7\0\3\7\1\0\10\6\1\0" + + "\3\6\1\0\27\6\1\0\12\6\1\0\5\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\22\0\2\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\17\0\2\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\22\0" + + "\2\7\15\0\60\6\1\7\2\6\7\7\4\0\10\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\6\17\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\3\0\2\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\35\6\3\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\130\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\11\0\300\6\47\7\25\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\16\0\5\7\30\0\1\121\1\121\5\7\20\0" + + "\2\6\23\0\1\6\13\0\5\7\5\0\6\7\1\0\1\6\15\0" + + "\1\6\20\0\15\6\3\0\33\6\25\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\51\6\u0a77\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\u01d5\0\3\6\31\0\11\6\6\7\1\0\5\6\2\0" + + "\5\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\31\6" + + "\7\0\1\7\120\6\2\7\45\0\11\6\2\0\147\6\2\0\4\6" + + "\1\0\4\6\14\0\13\6\115\0\12\6\1\7\3\6\1\7\4\6" + + "\1\7\27\6\5\7\20\0\1\6\7\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\46\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\1\7\4\0" + + "\60\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\221\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\u2104\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\50\0\15\6\3\0\20\7\20\0\7\7\14\0\2\6" + + "\30\0\3\6\31\0\1\6\6\0\5\6\1\0\207\6\2\0\1\7" + + "\4\0\1\6\13\0\12\7\7\0\32\6\4\0\1\6\1\0\32\6" + + "\13\0\131\6\3\0\6\6\2\0\6\6\2\0\6\6\2\0\3\6" + + "\3\0\2\6\3\0\2\6\22\0\3\7\4\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\6\210\0\1\7\202\0\35\6\3\0\61\6\57\0\37\6" + + "\21\0\33\6\65\0\36\6\2\0\44\6\4\0\10\6\1\0\5\6" + + "\52\0\236\6\2\0\12\7\u0356\0\6\6\2\0\1\6\1\0\54\6" + + "\1\0\2\6\3\0\1\6\2\0\27\6\252\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\203\0\66\6\12\0\26\6\12\0\23\6\215\0\111\6" + + "\u03b7\0\3\7\65\6\17\7\37\0\12\7\20\0\3\7\55\6\13\7" + + "\2\0\1\7\22\0\31\6\7\0\12\7\6\0\3\7\44\6\16\7" + + "\1\0\12\7\100\0\3\7\60\6\16\7\4\6\13\0\12\7\u04a6\0" + + "\53\6\15\7\10\0\12\7\u0936\0\u036f\6\221\0\143\6\u0b9d\0\u042f\6" + + "\u33d1\0\u0239\6\u04c7\0\105\6\13\0\1\6\56\7\20\0\4\7\15\6" + + "\u4060\0\2\6\u2163\0\5\7\3\0\26\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\u1600\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\u05ee\0" + + "\1\7\36\0\140\7\200\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 + = "\6\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\2\15\1\16\1\17" + + "\1\20\26\6\1\21\1\22\1\23\1\24\1\25\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" + + "\1\1\2\45\1\42\1\1\1\46\2\42\2\47\2\42" + + "\1\1\1\50\1\3\1\0\1\51\1\52\1\53\2\0" + + "\1\54\1\0\1\55\1\56\1\57\1\60\1\61\1\62" + + "\1\63\1\54\1\0\2\63\1\0\1\64\1\65\1\0" + + "\7\6\1\66\11\6\1\67\11\6\1\70\1\71\1\72" + + "\3\6\1\73\30\6\1\56\1\74\1\75\1\76\1\77" + + "\1\100\1\101\1\102\1\103\1\104\1\105\1\104\1\106" + + "\1\107\1\110\1\111\1\112\1\113\1\104\1\114\1\104" + + "\6\0\1\115\1\116\2\115\2\3\2\0\1\117\3\0" + + "\1\120\1\0\1\121\1\122\1\123\1\124\2\125\1\63" + + "\1\54\1\0\1\126\10\6\1\127\5\6\1\130\1\131" + + "\5\6\1\132\1\133\5\6\1\134\7\6\1\135\12\6" + + "\1\136\20\6\1\137\1\6\1\140\2\6\1\141\2\6" + + "\1\142\12\0\1\143\5\0\1\144\1\125\1\63\4\6" + + "\1\145\1\146\1\147\1\6\1\150\1\6\1\151\5\6" + + "\1\152\6\6\1\153\1\6\1\154\4\6\1\155\22\6" + + "\1\156\7\6\1\157\4\6\1\160\7\6\1\161\1\0" + + "\1\162\1\42\1\0\1\163\12\0\1\125\1\63\1\164" + + "\4\6\1\165\1\166\1\6\1\167\5\6\1\170\4\6" + + "\1\171\3\6\1\172\14\6\1\173\6\6\1\174\2\6" + + "\1\175\3\6\1\176\1\6\1\177\10\6\10\0\1\125" + + "\1\63\1\200\1\6\1\201\3\6\1\202\2\6\1\203" + + "\1\204\6\6\1\205\3\6\1\206\4\6\1\207\5\6" + + "\1\210\10\6\1\211\2\6\1\212\3\6\1\213\1\214" + + "\1\6\2\0\1\120\1\125\1\63\1\6\1\215\4\6" + + "\1\216\13\6\1\217\1\6\1\220\1\6\1\221\7\6" + + "\1\222\1\223\6\6\1\42\1\125\1\63\1\6\1\224" + + "\2\6\1\225\15\6\1\226\5\6\1\227\1\6\1\230" + + "\1\231\3\6\1\232\1\125\1\63\1\6\1\233\1\6" + + "\1\234\1\235\4\6\1\236\2\6\1\237\2\6\1\240" + + "\1\241\1\6\1\242\1\243\5\6\1\125\1\63\2\6" + + "\1\244\1\245\1\6\1\246\1\6\1\247\6\6\1\250" + + "\2\6\1\63\4\6\1\251\4\6\1\252\1\253\1\254" + + "\1\63\6\6\1\255\2\6\1\63\1\6\1\256\1\6" + + "\1\257\2\6\1\260\1\261\1\63\2\6\1\262\3\6" + + "\1\63\1\263\4\6\1\63\2\6\1\264\1\265\1\266" + + "\1\6\1\267"; + + private static int[] zzUnpackAction() { + int[] result = new int[695]; + 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\124\0\250\0\374\0\u0150\0\u01a4\0\u01f8\0\u024c"+ - "\0\u01f8\0\u02a0\0\u02f4\0\u0348\0\u039c\0\u03f0\0\u0444\0\u0498"+ - "\0\u04ec\0\u0540\0\u01f8\0\u0594\0\u05e8\0\u063c\0\u01f8\0\u0690"+ - "\0\u06e4\0\u0738\0\u078c\0\u07e0\0\u0834\0\u0888\0\u08dc\0\u0930"+ - "\0\u0984\0\u09d8\0\u0a2c\0\u0a80\0\u0ad4\0\u0b28\0\u0b7c\0\u0bd0"+ - "\0\u0c24\0\u0c78\0\u0ccc\0\u0d20\0\u0d74\0\u0dc8\0\u01f8\0\u01f8"+ - "\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u0e1c\0\u01f8"+ - "\0\u01f8\0\u0e70\0\u0ec4\0\u0f18\0\u0f6c\0\u0fc0\0\u01f8\0\u1014"+ - "\0\u1068\0\u01f8\0\u01f8\0\u10bc\0\u1110\0\u1164\0\u11b8\0\u01f8"+ - "\0\u120c\0\u1260\0\u01f8\0\u12b4\0\u01f8\0\u1308\0\u01f8\0\u135c"+ - "\0\u13b0\0\u1404\0\u01f8\0\u1458\0\u14ac\0\u01f8\0\u01f8\0\u01f8"+ - "\0\u1500\0\u1554\0\u15a8\0\u15fc\0\u1650\0\u01f8\0\u01f8\0\u16a4"+ - "\0\u01f8\0\u16f8\0\u174c\0\u17a0\0\u17f4\0\u1848\0\u189c\0\u18f0"+ - "\0\u01f8\0\u01f8\0\u1944\0\u1998\0\u19ec\0\u1a40\0\u1a94\0\u1ae8"+ - "\0\u1b3c\0\u1b90\0\u039c\0\u1be4\0\u1c38\0\u1c8c\0\u1ce0\0\u1d34"+ - "\0\u1d88\0\u1ddc\0\u1e30\0\u1e84\0\u1ed8\0\u1f2c\0\u1f80\0\u1fd4"+ - "\0\u2028\0\u207c\0\u20d0\0\u2124\0\u2178\0\u21cc\0\u039c\0\u2220"+ - "\0\u2274\0\u22c8\0\u231c\0\u2370\0\u039c\0\u23c4\0\u2418\0\u246c"+ - "\0\u24c0\0\u2514\0\u2568\0\u25bc\0\u2610\0\u2664\0\u26b8\0\u270c"+ - "\0\u2760\0\u27b4\0\u2808\0\u285c\0\u28b0\0\u2904\0\u2958\0\u29ac"+ - "\0\u2a00\0\u2a54\0\u2aa8\0\u2afc\0\u2b50\0\u2ba4\0\u01f8\0\u01f8"+ - "\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8"+ - "\0\u2bf8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u2c4c"+ - "\0\u01f8\0\u2ca0\0\u1260\0\u2cf4\0\u2d48\0\u2d9c\0\u2df0\0\u2e44"+ - "\0\u01f8\0\u01f8\0\u2c4c\0\u2ca0\0\u2e98\0\u01f8\0\u2eec\0\u2f40"+ - "\0\u01f8\0\u2f94\0\u2fe8\0\u303c\0\u01f8\0\u3090\0\u01f8\0\u30e4"+ - "\0\u01f8\0\u01f8\0\u17f4\0\u3138\0\u318c\0\u31e0\0\u31e0\0\u3234"+ - "\0\u3288\0\u32dc\0\u3330\0\u3384\0\u33d8\0\u342c\0\u3480\0\u34d4"+ - "\0\u039c\0\u3528\0\u357c\0\u35d0\0\u3624\0\u3678\0\u039c\0\u039c"+ - "\0\u36cc\0\u3720\0\u3774\0\u37c8\0\u381c\0\u039c\0\u3870\0\u38c4"+ - "\0\u3918\0\u396c\0\u39c0\0\u3a14\0\u039c\0\u3a68\0\u3abc\0\u3b10"+ - "\0\u3b64\0\u3bb8\0\u3c0c\0\u3c60\0\u3cb4\0\u3d08\0\u3d5c\0\u3db0"+ - "\0\u3e04\0\u3e58\0\u3eac\0\u3f00\0\u3f54\0\u3fa8\0\u3ffc\0\u039c"+ - "\0\u4050\0\u40a4\0\u40f8\0\u414c\0\u41a0\0\u41f4\0\u4248\0\u429c"+ - "\0\u42f0\0\u4344\0\u4398\0\u43ec\0\u4440\0\u4494\0\u44e8\0\u453c"+ - "\0\u039c\0\u4590\0\u45e4\0\u4638\0\u468c\0\u039c\0\u46e0\0\u4734"+ - "\0\u01f8\0\u4788\0\u47dc\0\u4830\0\u4884\0\u48d8\0\u492c\0\u4980"+ - "\0\u49d4\0\u4a28\0\u4a7c\0\u01f8\0\u4ad0\0\u4b24\0\u4b78\0\u4bcc"+ - "\0\u4c20\0\u01f8\0\u4c74\0\u4cc8\0\u4d1c\0\u4d70\0\u4dc4\0\u4e18"+ - "\0\u039c\0\u039c\0\u039c\0\u4e6c\0\u039c\0\u4ec0\0\u039c\0\u4f14"+ - "\0\u4f68\0\u4fbc\0\u5010\0\u5064\0\u50b8\0\u510c\0\u5160\0\u51b4"+ - "\0\u5208\0\u525c\0\u52b0\0\u039c\0\u5304\0\u039c\0\u5358\0\u53ac"+ - "\0\u5400\0\u5454\0\u039c\0\u54a8\0\u54fc\0\u5550\0\u55a4\0\u55f8"+ - "\0\u564c\0\u56a0\0\u56f4\0\u5748\0\u579c\0\u57f0\0\u5844\0\u5898"+ - "\0\u58ec\0\u5940\0\u5994\0\u59e8\0\u5a3c\0\u039c\0\u5a90\0\u5ae4"+ - "\0\u5b38\0\u5b8c\0\u5be0\0\u5c34\0\u5c88\0\u039c\0\u5cdc\0\u5d30"+ - "\0\u5d84\0\u5dd8\0\u039c\0\u5e2c\0\u5e80\0\u5ed4\0\u5f28\0\u5f7c"+ - "\0\u5fd0\0\u6024\0\u01f8\0\u2ca0\0\u01f8\0\u6078\0\u60cc\0\u01f8"+ - "\0\u6120\0\u6174\0\u61c8\0\u621c\0\u6270\0\u62c4\0\u6318\0\u636c"+ - "\0\u63c0\0\u6414\0\u6468\0\u64bc\0\u039c\0\u6510\0\u6564\0\u65b8"+ - "\0\u660c\0\u039c\0\u039c\0\u6660\0\u039c\0\u66b4\0\u6708\0\u675c"+ - "\0\u67b0\0\u6804\0\u039c\0\u6858\0\u68ac\0\u6900\0\u6954\0\u039c"+ - "\0\u69a8\0\u69fc\0\u6a50\0\u039c\0\u6aa4\0\u6af8\0\u6b4c\0\u6ba0"+ - "\0\u6bf4\0\u6c48\0\u6c9c\0\u6cf0\0\u6d44\0\u6d98\0\u6dec\0\u6e40"+ - "\0\u039c\0\u6e94\0\u6ee8\0\u6f3c\0\u6f90\0\u6fe4\0\u7038\0\u039c"+ - "\0\u708c\0\u70e0\0\u7134\0\u7188\0\u71dc\0\u7230\0\u039c\0\u7284"+ - "\0\u039c\0\u72d8\0\u732c\0\u7380\0\u73d4\0\u7428\0\u747c\0\u74d0"+ - "\0\u7524\0\u7578\0\u75cc\0\u7620\0\u7674\0\u76c8\0\u771c\0\u7770"+ - "\0\u77c4\0\u7818\0\u786c\0\u039c\0\u78c0\0\u039c\0\u7914\0\u7968"+ - "\0\u79bc\0\u039c\0\u7a10\0\u7a64\0\u039c\0\u039c\0\u7ab8\0\u7b0c"+ - "\0\u7b60\0\u7bb4\0\u7c08\0\u7c5c\0\u039c\0\u7cb0\0\u7d04\0\u7d58"+ - "\0\u039c\0\u7dac\0\u7e00\0\u7e54\0\u7ea8\0\u039c\0\u7efc\0\u7f50"+ - "\0\u7fa4\0\u7ff8\0\u804c\0\u039c\0\u80a0\0\u80f4\0\u8148\0\u819c"+ - "\0\u81f0\0\u8244\0\u8298\0\u82ec\0\u039c\0\u8340\0\u8394\0\u039c"+ - "\0\u83e8\0\u843c\0\u8490\0\u039c\0\u039c\0\u84e4\0\u8538\0\u858c"+ - "\0\u6318\0\u85e0\0\u8634\0\u8688\0\u039c\0\u86dc\0\u8730\0\u8784"+ - "\0\u87d8\0\u039c\0\u882c\0\u8880\0\u88d4\0\u8928\0\u897c\0\u89d0"+ - "\0\u8a24\0\u8a78\0\u8acc\0\u8b20\0\u8b74\0\u039c\0\u8bc8\0\u039c"+ - "\0\u8c1c\0\u039c\0\u8c70\0\u8cc4\0\u8d18\0\u8d6c\0\u8dc0\0\u8e14"+ - "\0\u8e68\0\u039c\0\u039c\0\u8ebc\0\u8f10\0\u8f64\0\u8fb8\0\u900c"+ - "\0\u9060\0\u7620\0\u90b4\0\u9108\0\u915c\0\u039c\0\u91b0\0\u9204"+ - "\0\u039c\0\u9258\0\u92ac\0\u9300\0\u9354\0\u93a8\0\u93fc\0\u9450"+ - "\0\u94a4\0\u94f8\0\u954c\0\u95a0\0\u95f4\0\u9648\0\u039c\0\u969c"+ - "\0\u96f0\0\u9744\0\u9798\0\u97ec\0\u039c\0\u9840\0\u039c\0\u039c"+ - "\0\u9894\0\u98e8\0\u993c\0\u039c\0\u9990\0\u99e4\0\u9a38\0\u039c"+ - "\0\u9a8c\0\u039c\0\u039c\0\u9ae0\0\u9b34\0\u9b88\0\u9bdc\0\u039c"+ - "\0\u9c30\0\u9c84\0\u039c\0\u9cd8\0\u9d2c\0\u039c\0\u9d80\0\u9dd4"+ - "\0\u039c\0\u039c\0\u9e28\0\u9e7c\0\u9ed0\0\u9f24\0\u9f78\0\u01f8"+ - "\0\u9fcc\0\ua020\0\ua074\0\u039c\0\u039c\0\ua0c8\0\u039c\0\ua11c"+ - "\0\u039c\0\ua170\0\ua1c4\0\ua218\0\ua26c\0\ua2c0\0\ua314\0\u039c"+ - "\0\ua368\0\ua3bc\0\ua410\0\ua464\0\ua4b8\0\ua50c\0\ua560\0\ua5b4"+ - "\0\ua608\0\ua65c\0\ua6b0\0\ua704\0\u039c\0\u039c\0\u039c\0\ua758"+ - "\0\ua7ac\0\ua800\0\ua854\0\ua8a8\0\ua8fc\0\ua950\0\u039c\0\ua9a4"+ - "\0\ua9f8\0\uaa4c\0\uaaa0\0\u039c\0\uaaf4\0\u039c\0\uab48\0\uab9c"+ - "\0\uabf0\0\uac44\0\uac98\0\uacec\0\uad40\0\u039c\0\uad94\0\uade8"+ - "\0\uae3c\0\uae90\0\u039c\0\uaee4\0\uaf38\0\uaf8c\0\uafe0\0\u17a0"+ - "\0\ub034\0\ub088\0\u039c\0\u039c\0\u039c\0\ub0dc\0\u039c"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[695]; - 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\7\1\10\1\11\1\12\1\13\1\14\1\15\1\7"+ - "\1\16\1\17\1\20\1\21\1\12\1\22\1\23\1\24"+ - "\1\25\2\15\2\25\1\15\1\26\1\7\1\27\1\30"+ - "\1\31\1\32\1\33\1\34\1\15\1\35\1\36\1\37"+ - "\1\40\1\41\1\42\1\43\1\44\1\45\1\46\1\47"+ - "\1\15\1\50\1\15\1\51\1\52\1\15\1\53\2\15"+ - "\1\54\12\15\1\55\1\56\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\77\1\7\1\12\1\7"+ - "\1\100\1\101\1\102\13\100\1\103\10\100\1\104\74\100"+ - "\1\105\1\101\1\102\24\105\1\106\1\103\73\105\1\7"+ - "\1\107\1\110\1\111\2\7\1\112\4\7\1\113\1\114"+ - "\4\7\2\112\2\7\1\112\4\7\46\112\22\7\1\111"+ - "\1\7\1\115\1\116\1\117\7\115\1\120\111\115\1\121"+ - "\1\101\1\102\24\121\1\122\1\121\1\123\72\121\126\0"+ - "\1\11\124\0\1\12\10\0\1\12\105\0\1\12\5\0"+ - "\1\124\1\125\7\0\1\126\123\0\1\127\114\0\2\15"+ - "\7\0\7\15\4\0\46\15\23\0\1\15\10\0\1\130"+ - "\124\0\1\131\1\132\4\0\2\133\2\0\2\133\105\0"+ - "\1\134\3\0\1\135\1\136\1\0\1\137\3\0\2\134"+ - "\2\0\1\134\4\0\46\134\37\0\1\140\1\0\1\141"+ - "\123\0\1\142\117\0\1\133\5\0\1\143\1\144\1\145"+ - "\1\0\1\146\1\147\1\150\6\0\1\150\22\0\1\145"+ - "\55\0\1\133\5\0\2\25\2\0\2\25\1\150\6\0"+ - "\1\150\104\0\1\151\10\0\1\152\126\0\1\153\100\0"+ - "\2\15\7\0\7\15\4\0\1\15\1\154\44\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\155"+ - "\1\156\42\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\3\15\1\157\12\15\1\160\5\15\1\161\1\162"+ - "\20\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\6\15\1\163\1\15\1\164\35\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\3\15\1\165\3\15\1\166"+ - "\6\15\1\167\1\15\1\170\25\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\171\6\15\1\172"+ - "\1\15\1\173\3\15\1\174\26\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\1\15\1\175\44\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\176"+ - "\1\177\7\15\1\200\32\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\1\15\1\201\1\202\1\203\3\15"+ - "\1\204\10\15\1\205\1\15\1\206\23\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\6\15\1\207\1\15"+ - "\1\210\4\15\1\211\5\15\1\212\22\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\10\15\1\213\35\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15"+ - "\1\214\4\15\1\215\3\15\1\216\6\15\1\217\23\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\3\15"+ - "\1\220\2\15\1\221\1\222\2\15\1\223\1\224\32\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15"+ - "\1\225\4\15\1\226\36\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\12\15\1\227\5\15\1\230\25\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15"+ - "\1\231\1\15\1\232\7\15\1\233\2\15\1\234\27\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\235"+ - "\45\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\3\15\1\236\3\15\1\237\36\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\240\4\15\1\241"+ - "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\11\15\1\242\34\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\3\15\1\243\7\15\1\244\32\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\10\15\1\245"+ - "\35\15\23\0\1\15\15\0\1\246\123\0\1\247\75\0"+ - "\1\250\25\0\1\251\76\0\1\252\24\0\1\253\77\0"+ - "\1\254\23\0\1\255\123\0\1\256\106\0\1\100\2\0"+ - "\13\100\1\0\10\100\1\0\74\100\2\0\1\102\121\0"+ - "\1\257\2\0\13\257\1\260\1\261\3\257\2\261\2\257"+ - "\1\262\1\263\1\257\1\264\1\265\6\257\1\266\1\267"+ - "\1\257\1\270\1\257\1\271\7\257\1\272\41\257\3\0"+ - "\1\105\2\0\24\105\2\0\73\105\1\257\2\0\13\257"+ - "\1\260\10\257\1\262\1\263\1\257\1\264\1\265\6\257"+ - "\1\266\1\267\1\257\1\270\1\257\1\271\7\257\1\272"+ - "\41\257\5\0\1\110\124\0\1\111\10\0\1\111\105\0"+ - "\1\111\7\0\2\273\1\274\3\0\1\275\1\276\1\0"+ - "\7\273\4\0\46\273\23\0\1\273\3\0\1\111\2\0"+ - "\1\273\5\0\1\114\4\0\2\273\2\0\1\273\4\0"+ - "\46\273\22\0\1\111\3\0\1\117\125\0\1\277\1\0"+ - "\1\300\12\0\2\300\2\0\1\300\4\0\46\300\24\0"+ - "\1\121\2\0\24\121\1\0\1\121\1\0\72\121\1\301"+ - "\2\0\24\301\1\262\1\301\1\302\1\264\1\265\6\301"+ - "\1\266\1\267\1\301\1\303\1\301\1\271\7\301\1\304"+ - "\41\301\3\0\1\124\1\305\1\306\121\124\5\307\1\310"+ - "\116\307\11\0\1\311\120\0\1\312\12\0\2\312\2\0"+ - "\1\312\4\0\46\312\43\0\2\133\2\0\2\133\1\150"+ - "\6\0\1\150\75\0\1\313\1\134\1\314\2\0\1\315"+ - "\1\316\2\0\2\134\2\313\2\134\1\313\4\0\46\313"+ - "\23\0\1\134\15\0\1\317\121\0\1\320\1\0\1\321"+ - "\123\0\1\322\117\0\1\133\5\0\1\143\1\144\2\0"+ - "\1\146\1\147\1\150\6\0\1\150\100\0\1\133\5\0"+ - "\2\144\2\0\2\144\1\150\6\0\1\150\106\0\1\323"+ - "\1\324\1\0\4\324\4\0\1\324\1\0\2\324\1\0"+ - "\1\324\6\0\2\324\12\0\1\324\1\0\1\324\5\0"+ - "\2\324\41\0\1\133\5\0\1\147\1\144\2\0\2\147"+ - "\1\150\6\0\1\150\100\0\1\133\5\0\1\325\1\144"+ - "\2\0\2\325\1\150\6\0\1\150\106\0\2\326\2\0"+ - "\2\326\1\0\1\327\66\0\1\327\14\0\1\330\12\0"+ - "\2\330\2\0\1\330\4\0\46\330\32\0\2\15\7\0"+ - "\7\15\4\0\2\15\1\331\43\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\11\15\1\332\11\15\1\333"+ - "\22\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\10\15\1\334\35\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\5\15\1\335\40\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\6\15\1\336\37\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\337"+ - "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\11\15\1\340\34\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\14\15\1\341\31\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\6\15\1\342\2\15\1\343"+ - "\4\15\1\344\27\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\10\15\1\345\35\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\3\15\1\346\42\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\347"+ - "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\11\15\1\350\34\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\3\15\1\351\3\15\1\352\36\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\1\353\20\15"+ - "\1\354\24\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\12\15\1\355\33\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\14\15\1\356\31\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\17\15\1\357\5\15"+ - "\1\360\20\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\23\15\1\361\22\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\16\15\1\362\27\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\3\15\1\363\7\15"+ - "\1\364\6\15\1\365\23\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\16\15\1\366\27\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\1\15\1\367\44\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\26\15"+ - "\1\370\17\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\1\15\1\371\10\15\1\372\33\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\21\15\1\373\24\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\6\15"+ - "\1\374\2\15\1\375\34\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\32\15\1\376\13\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\21\15\1\377\24\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\14\15"+ - "\1\u0100\1\15\1\u0101\27\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\15\15\1\u0102\1\u0103\27\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\21\15\1\u0104"+ - "\24\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\10\15\1\u0105\35\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\16\15\1\u0106\27\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\5\15\1\u0107\40\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u0108"+ - "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\10\15\1\u0109\35\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\10\15\1\u010a\35\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\10\15\1\u010b\35\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u010c"+ - "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\11\15\1\u010d\34\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\12\15\1\u010e\33\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\u010f\4\15\1\u0110"+ - "\2\15\1\u0111\33\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\5\15\1\u0112\40\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\1\u0113\45\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\3\15\1\u0114\42\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\5\15"+ - "\1\u0115\1\u0116\1\u0117\6\15\1\u0118\27\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\1\15\1\u0119\44\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15"+ - "\1\u011a\33\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\11\15\1\u011b\34\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\11\15\1\u011c\34\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\1\15\1\u011d\44\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\44\15"+ - "\1\u011e\1\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\23\15\1\u011f\22\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\15\15\1\u0120\30\15\23\0\1\15"+ - "\15\0\1\u0121\125\0\1\u0122\3\0\2\u0122\116\0\2\u0123"+ - "\1\0\4\u0123\4\0\1\u0123\1\0\2\u0123\1\0\1\u0123"+ - "\6\0\2\u0123\12\0\1\u0123\1\0\1\u0123\5\0\2\u0123"+ - "\47\0\2\u0124\1\0\4\u0124\4\0\1\u0124\1\0\2\u0124"+ - "\1\0\1\u0124\6\0\2\u0124\12\0\1\u0124\1\0\1\u0124"+ - "\5\0\2\u0124\36\0\1\u0125\12\0\2\u0125\2\0\1\u0125"+ - "\4\0\46\u0125\40\0\1\275\1\276\122\0\1\276\1\0"+ - "\1\u0126\113\0\1\u0127\12\0\2\u0127\2\0\1\u0127\4\0"+ - "\46\u0127\32\0\1\u0128\1\300\1\u0129\2\0\1\115\1\u012a"+ - "\2\0\2\300\2\u0128\2\300\1\u0128\4\0\46\u0128\23\0"+ - "\1\300\2\0\1\306\121\0\5\307\1\u012b\116\307\4\0"+ - "\1\306\1\310\124\0\2\312\3\0\1\u012c\3\0\7\312"+ - "\4\0\46\312\23\0\1\312\6\0\2\313\1\u012d\2\0"+ - "\1\315\1\u012e\1\u012f\1\0\7\313\4\0\46\313\23\0"+ - "\1\313\6\0\1\u0130\12\0\2\u0130\2\0\1\u0130\4\0"+ - "\46\u0130\32\0\1\u0131\5\0\1\316\4\0\2\u0131\2\0"+ - "\1\u0131\4\0\46\u0131\41\0\1\u0132\125\0\2\u0133\1\0"+ - "\4\u0133\4\0\1\u0133\1\0\2\u0133\1\0\1\u0133\6\0"+ - "\2\u0133\12\0\1\u0133\1\0\1\u0133\5\0\2\u0133\41\0"+ - "\1\133\5\0\1\u0134\1\144\2\0\2\u0134\1\150\6\0"+ - "\1\150\106\0\2\326\2\0\2\326\105\0\2\330\7\0"+ - "\7\330\4\0\46\330\23\0\1\330\6\0\2\15\7\0"+ - "\7\15\4\0\3\15\1\u0135\42\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\13\15\1\u0136\32\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\7\15\1\u0137"+ - "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\14\15\1\u0138\31\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\20\15\1\u0139\25\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\u013a\43\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u013b"+ - "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\2\15\1\u013c\43\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\2\15\1\u013d\43\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\5\15\1\u013e\40\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u013f"+ - "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\6\15\1\u0140\2\15\1\u0141\34\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\6\15\1\u0142\37\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u0143"+ - "\7\15\1\u0144\34\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\21\15\1\u0145\24\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\6\15\1\u0146\37\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u0147"+ - "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\11\15\1\u0148\34\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\16\15\1\u0149\27\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\11\15\1\u014a\34\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u014b"+ - "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\16\15\1\u014c\27\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\5\15\1\u014d\40\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\u014e\43\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u014f"+ - "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\26\15\1\u0150\17\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\26\15\1\u0151\17\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\7\15\1\u0152\36\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\6\15\1\u0153"+ - "\37\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\2\15\1\u0154\43\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\11\15\1\u0155\34\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\u0156\43\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u0157"+ - "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\7\15\1\u0158\6\15\1\u0159\27\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\u015a\43\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\7\15\1\u015b"+ - "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\3\15\1\u015c\42\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\2\15\1\u015d\43\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\16\15\1\u015e\27\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u015f"+ - "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\6\15\1\u0160\37\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\7\15\1\u0161\36\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\3\15\1\u0162\42\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\5\15\1\u0163"+ - "\40\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\26\15\1\u0164\17\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\14\15\1\u0165\31\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\20\15\1\u0166\25\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u0167"+ - "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\24\15\1\u0168\21\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\11\15\1\u0169\34\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\10\15\1\u016a\13\15\1\u016b"+ - "\21\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\4\15\1\u016c\41\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\16\15\1\u016d\27\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\22\15\1\u016e\23\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\20\15\1\u016f"+ - "\25\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\13\15\1\u0170\32\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\1\15\1\u0171\44\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\u0172\43\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\14\15\1\u0173"+ - "\31\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\27\15\1\u0174\3\15\1\u0175\6\15\1\u0176\3\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\7\15\1\u0177"+ - "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\12\15\1\u0178\33\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\1\u0179\45\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\12\15\1\u017a\33\15\23\0\1\15"+ - "\17\0\1\u017b\3\0\2\u017b\116\0\2\u017c\1\0\4\u017c"+ - "\4\0\1\u017c\1\0\2\u017c\1\0\1\u017c\6\0\2\u017c"+ - "\12\0\1\u017c\1\0\1\u017c\5\0\2\u017c\47\0\2\u017d"+ - "\1\0\4\u017d\4\0\1\u017d\1\0\2\u017d\1\0\1\u017d"+ - "\6\0\2\u017d\12\0\1\u017d\1\0\1\u017d\5\0\2\u017d"+ - "\36\0\2\u0125\4\0\1\275\1\276\1\0\7\u0125\4\0"+ - "\46\u0125\23\0\1\u0125\1\u0126\2\0\13\u0126\1\u017e\105\u0126"+ - "\6\0\2\u0127\1\u017f\2\0\1\u0180\3\0\7\u0127\4\0"+ - "\46\u0127\23\0\1\u0127\6\0\2\u0128\1\u0181\2\0\1\115"+ - "\1\u0182\1\u0183\1\0\7\u0128\4\0\46\u0128\23\0\1\u0128"+ - "\6\0\1\u0184\12\0\2\u0184\2\0\1\u0184\4\0\46\u0184"+ - "\32\0\1\u0185\5\0\1\u012a\4\0\2\u0185\2\0\1\u0185"+ - "\4\0\46\u0185\24\0\4\307\1\306\1\u012b\116\307\6\0"+ - "\1\u0186\12\0\2\u0186\2\0\1\u0186\4\0\46\u0186\32\0"+ - "\1\u0131\5\0\1\u012e\1\u012f\3\0\2\u0131\2\0\1\u0131"+ - "\4\0\46\u0131\40\0\1\u012f\1\0\1\u0187\113\0\1\u0188"+ - "\1\u0130\3\0\1\315\1\316\2\0\2\u0130\2\u0188\2\u0130"+ - "\1\u0188\4\0\46\u0188\23\0\1\u0130\6\0\2\u0131\1\u0189"+ - "\3\0\1\u018a\1\u012f\1\0\7\u0131\4\0\46\u0131\23\0"+ - "\1\u0131\17\0\2\u018b\1\0\4\u018b\4\0\1\u018b\1\0"+ - "\2\u018b\1\0\1\u018b\6\0\2\u018b\12\0\1\u018b\1\0"+ - "\1\u018b\5\0\2\u018b\41\0\1\133\5\0\1\u018c\1\144"+ - "\2\0\2\u018c\1\150\6\0\1\150\75\0\2\15\7\0"+ - "\7\15\4\0\4\15\1\u018d\41\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\1\15\1\u018e\44\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\24\15\1\u018f"+ - "\21\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\7\15\1\u0190\36\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\10\15\1\u0191\35\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\20\15\1\u0192\25\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u0193"+ - "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\12\15\1\u0194\33\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\6\15\1\u0195\37\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\11\15\1\u0196\34\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\12\15\1\u0197"+ - "\33\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\30\15\1\u0198\10\15\1\u0199\4\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\11\15\1\u019a\34\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u019b"+ - "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\5\15\1\u019c\40\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\12\15\1\u019d\33\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\32\15\1\u019e\13\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\6\15\1\u019f"+ - "\37\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\2\15\1\u01a0\43\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\33\15\1\u01a1\12\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\u01a2\43\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u01a3"+ - "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\17\15\1\u01a4\26\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\7\15\1\u01a5\36\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\3\15\1\u01a6\42\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u01a7"+ - "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\3\15\1\u01a8\42\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\1\15\1\u01a9\44\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\u01aa\43\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\15\15\1\u01ab"+ - "\30\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\3\15\1\u01ac\42\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\13\15\1\u01ad\32\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\11\15\1\u01ae\34\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\12\15\1\u01af"+ - "\33\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\23\15\1\u01b0\22\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\2\15\1\u01b1\43\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\23\15\1\u01b2\22\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u01b3"+ - "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\11\15\1\u01b4\34\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\11\15\1\u01b5\34\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\37\15\1\u01b6\2\15\1\u01b7"+ - "\3\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\2\15\1\u01b8\43\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\32\15\1\u01b9\13\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\2\15\1\u01ba\43\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u01bb"+ - "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\3\15\1\u01bc\42\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\3\15\1\u01bd\42\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\12\15\1\u01be\33\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u01bf"+ - "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\1\u01c0\45\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\14\15\1\u01c1\31\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\10\15\1\u01c2\35\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\1\15\1\u01c3\44\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15"+ - "\1\u01c4\33\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\2\15\1\u01c5\43\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\30\15\1\u01c6\15\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\10\15\1\u01c7\35\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15"+ - "\1\u01c8\43\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\10\15\1\u01c9\35\15\23\0\1\15\1\u0126\2\0"+ - "\11\u0126\1\u017e\1\u0126\1\u017e\105\u0126\6\0\1\u01ca\12\0"+ - "\2\u01ca\2\0\1\u01ca\4\0\46\u01ca\32\0\1\u01cb\12\0"+ - "\2\u01cb\2\0\1\u01cb\4\0\46\u01cb\32\0\1\u0185\5\0"+ - "\1\u0182\1\u0183\3\0\2\u0185\2\0\1\u0185\4\0\46\u0185"+ - "\40\0\1\u0183\1\0\1\u01cc\113\0\1\u01cd\1\u0184\3\0"+ - "\1\115\1\u012a\2\0\2\u0184\2\u01cd\2\u0184\1\u01cd\4\0"+ - "\46\u01cd\23\0\1\u0184\6\0\2\u0185\1\u01ce\3\0\1\u01cf"+ - "\1\u0183\1\0\7\u0185\4\0\46\u0185\23\0\1\u0185\6\0"+ - "\1\u0188\1\u0186\3\0\1\315\1\u012e\1\u012f\1\0\2\u0186"+ - "\2\u0188\2\u0186\1\u0188\4\0\46\u0188\23\0\1\u0186\1\u0187"+ - "\2\0\13\u0187\1\u01d0\105\u0187\6\0\2\u0188\1\u0189\2\0"+ - "\1\315\1\u012e\1\u012f\1\0\7\u0188\4\0\46\u0188\23\0"+ - "\1\u0188\6\0\1\u01d1\12\0\2\u01d1\2\0\1\u01d1\4\0"+ - "\46\u01d1\40\0\1\u018a\1\u012f\125\0\2\u01d2\1\0\4\u01d2"+ - "\4\0\1\u01d2\1\0\2\u01d2\1\0\1\u01d2\6\0\2\u01d2"+ - "\12\0\1\u01d2\1\0\1\u01d2\5\0\2\u01d2\41\0\1\133"+ - "\5\0\1\u01d3\1\144\2\0\2\u01d3\1\150\6\0\1\150"+ - "\75\0\2\15\7\0\7\15\4\0\10\15\1\u01d4\35\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15"+ - "\1\u01d5\43\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\23\15\1\u01d6\22\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\14\15\1\u01d7\31\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\10\15\1\u01d8\35\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\41\15"+ - "\1\u01d9\4\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\5\15\1\u01da\40\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\16\15\1\u01db\27\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\1\15\1\u01dc\44\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15"+ - "\1\u01dd\44\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\20\15\1\u01de\25\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\10\15\1\u01df\35\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\1\15\1\u01e0\44\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\21\15"+ - "\1\u01e1\24\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\3\15\1\u01e2\42\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\11\15\1\u01e3\34\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\2\15\1\u01e4\43\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\15\15"+ - "\1\u01e5\30\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\10\15\1\u01e6\35\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\15\15\1\u01e7\30\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\23\15\1\u01e8\22\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\11\15"+ - "\1\u01e9\34\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\23\15\1\u01ea\22\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\12\15\1\u01eb\33\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\14\15\1\u01ec\31\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\16\15"+ - "\1\u01ed\27\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\2\15\1\u01ee\43\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\5\15\1\u01ef\40\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\12\15\1\u01f0\33\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15"+ - "\1\u01f1\22\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\16\15\1\u01f2\27\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\12\15\1\u01f3\33\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\20\15\1\u01f4\25\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\7\15"+ - "\1\u01f5\36\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\3\15\1\u01f6\42\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\1\15\1\u01f7\44\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\5\15\1\u01f8\40\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\30\15"+ - "\1\u01f9\13\15\1\u01fa\1\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\11\15\1\u01fb\34\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\26\15\1\u01fc\17\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\5\15"+ - "\1\u01fd\40\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\6\15\1\u01fe\37\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\26\15\1\u01ff\17\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\16\15\1\u0200\27\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15"+ - "\1\u0201\22\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\1\15\1\u0202\44\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\10\15\1\u0203\35\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\26\15\1\u0204\17\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15"+ - "\1\u0205\44\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\12\15\1\u0206\33\15\23\0\1\15\6\0\2\u01ca"+ - "\3\0\1\u0180\3\0\7\u01ca\4\0\46\u01ca\23\0\1\u01ca"+ - "\6\0\1\u01cd\1\u01cb\3\0\1\115\1\u0182\1\u0183\1\0"+ - "\2\u01cb\2\u01cd\2\u01cb\1\u01cd\4\0\46\u01cd\23\0\1\u01cb"+ - "\1\u01cc\2\0\13\u01cc\1\u0207\105\u01cc\6\0\2\u01cd\1\u01ce"+ - "\2\0\1\115\1\u0182\1\u0183\1\0\7\u01cd\4\0\46\u01cd"+ - "\23\0\1\u01cd\6\0\1\u0208\12\0\2\u0208\2\0\1\u0208"+ - "\4\0\46\u0208\40\0\1\u01cf\1\u0183\106\0\1\u0187\2\0"+ - "\10\u0187\1\u0209\1\u01d0\1\u0187\1\u01d0\105\u0187\6\0\2\u01d1"+ - "\4\0\1\u018a\1\u012f\1\0\7\u01d1\4\0\46\u01d1\23\0"+ - "\1\u01d1\17\0\2\u020a\1\0\4\u020a\4\0\1\u020a\1\0"+ - "\2\u020a\1\0\1\u020a\6\0\2\u020a\12\0\1\u020a\1\0"+ - "\1\u020a\5\0\2\u020a\41\0\1\133\5\0\1\u020b\1\144"+ - "\2\0\2\u020b\1\150\6\0\1\150\75\0\2\15\7\0"+ - "\7\15\4\0\37\15\1\u020c\6\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\6\15\1\u020d\37\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\13\15\1\u020e"+ - "\32\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\1\15\1\u020f\44\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\16\15\1\u0210\27\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\3\15\1\u0211\42\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u0212"+ - "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\3\15\1\u0213\42\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\3\15\1\u0214\42\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\1\15\1\u0215\44\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\43\15\1\u0216"+ - "\2\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\34\15\1\u0217\11\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\5\15\1\u0218\40\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\3\15\1\u0219\42\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u021a"+ - "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\2\15\1\u021b\43\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\10\15\1\u021c\35\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\37\15\1\u021d\6\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u021e"+ - "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\3\15\1\u021f\42\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\5\15\1\u0220\40\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\3\15\1\u0221\42\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\22\15\1\u0222"+ - "\23\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\7\15\1\u0223\36\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\24\15\1\u0224\21\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\1\15\1\u0225\44\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u0226"+ - "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\11\15\1\u0227\34\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\6\15\1\u0228\37\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\13\15\1\u0229\32\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u022a"+ - "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\2\15\1\u022b\43\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\11\15\1\u022c\34\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\11\15\1\u022d\34\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u022e"+ - "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\6\15\1\u022f\37\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\14\15\1\u0230\31\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\11\15\1\u0231\34\15\23\0"+ - "\1\15\1\u01cc\2\0\10\u01cc\1\u0232\1\u0207\1\u01cc\1\u0207"+ - "\105\u01cc\6\0\2\u0208\4\0\1\u01cf\1\u0183\1\0\7\u0208"+ - "\4\0\46\u0208\23\0\1\u0208\17\0\2\u0233\1\0\4\u0233"+ - "\4\0\1\u0233\1\0\2\u0233\1\0\1\u0233\6\0\2\u0233"+ - "\12\0\1\u0233\1\0\1\u0233\5\0\2\u0233\41\0\1\133"+ - "\5\0\1\u0234\1\144\2\0\2\u0234\1\150\6\0\1\150"+ - "\75\0\2\15\7\0\7\15\4\0\7\15\1\u0235\36\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15"+ - "\1\u0236\43\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\3\15\1\u0237\42\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\31\15\1\u0238\14\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\26\15\1\u0239\17\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15"+ - "\1\u023a\22\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\5\15\1\u023b\40\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\26\15\1\u023c\17\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\3\15\1\u023d\42\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15"+ - "\1\u023e\33\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\2\15\1\u023f\43\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\5\15\1\u0240\40\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\36\15\1\u0241\7\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\10\15"+ - "\1\u0242\35\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\2\15\1\u0243\43\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\7\15\1\u0244\36\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\11\15\1\u0245\34\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\10\15"+ - "\1\u0246\35\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\10\15\1\u0247\35\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\12\15\1\u0248\33\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\12\15\1\u0249\33\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15"+ - "\1\u024a\22\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\2\15\1\u024b\43\15\23\0\1\15\6\0\2\15"+ - "\7\0\3\15\1\u024c\3\15\4\0\46\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\23\15\1\u024d\22\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15"+ - "\1\u024e\44\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\20\15\1\u024f\25\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\1\15\1\u0250\44\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\12\15\1\u0251\33\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\31\15"+ - "\1\u0252\11\15\1\u0253\2\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\22\15\1\u0254\23\15\23\0\1\15"+ - "\17\0\2\u0255\1\0\4\u0255\4\0\1\u0255\1\0\2\u0255"+ - "\1\0\1\u0255\6\0\2\u0255\12\0\1\u0255\1\0\1\u0255"+ - "\5\0\2\u0255\41\0\1\133\5\0\1\u0256\1\144\2\0"+ - "\2\u0256\1\150\6\0\1\150\75\0\2\15\7\0\7\15"+ - "\4\0\24\15\1\u0257\21\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\26\15\1\u0258\17\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\7\15\1\u0259\36\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15"+ - "\1\u025a\43\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\2\15\1\u025b\43\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\2\15\1\u025c\43\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\11\15\1\u025d\34\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\26\15"+ - "\1\u025e\17\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\7\15\1\u025f\36\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\2\15\1\u0260\43\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\7\15\1\u0261\36\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\11\15"+ - "\1\u0262\34\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\14\15\1\u0263\31\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\24\15\1\u0264\21\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\2\15\1\u0265\43\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\14\15"+ - "\1\u0266\31\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\2\15\1\u0267\43\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\3\15\1\u0268\42\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\2\15\1\u0269\43\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\14\15"+ - "\1\u026a\31\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\12\15\1\u026b\33\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\12\15\1\u026c\33\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\7\15\1\u026d\36\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\11\15"+ - "\1\u026e\34\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\16\15\1\u026f\27\15\23\0\1\15\17\0\2\u0270"+ - "\1\0\4\u0270\4\0\1\u0270\1\0\2\u0270\1\0\1\u0270"+ - "\6\0\2\u0270\12\0\1\u0270\1\0\1\u0270\5\0\2\u0270"+ - "\41\0\1\133\5\0\1\u0271\1\144\2\0\2\u0271\1\150"+ - "\6\0\1\150\75\0\2\15\7\0\7\15\4\0\12\15"+ - "\1\u0272\33\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\13\15\1\u0273\32\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\11\15\1\u0274\34\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\20\15\1\u0275\25\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\20\15"+ - "\1\u0276\25\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\15\15\1\u0277\30\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\3\15\1\u0278\42\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\6\15\1\u0279\37\15"+ - "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15"+ - "\1\u027a\33\15\23\0\1\15\6\0\2\15\7\0\7\15"+ - "\4\0\37\15\1\u027b\6\15\23\0\1\15\6\0\2\15"+ - "\7\0\7\15\4\0\44\15\1\u027c\1\15\23\0\1\15"+ - "\6\0\2\15\7\0\7\15\4\0\1\u027d\45\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u027e"+ - "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\10\15\1\u027f\35\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\10\15\1\u0280\35\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\7\15\1\u0281\36\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u0282"+ - "\42\15\23\0\1\15\11\0\1\133\5\0\1\u0283\1\144"+ - "\2\0\2\u0283\1\150\6\0\1\150\75\0\2\15\7\0"+ - "\7\15\4\0\2\15\1\u0284\43\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\10\15\1\u0285\35\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\35\15\1\u0286"+ - "\10\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\14\15\1\u0287\31\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\2\15\1\u0288\43\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\7\15\1\u0289\36\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\13\15\1\u028a"+ - "\32\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\16\15\1\u028b\27\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\23\15\1\u028c\22\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\26\15\1\u028d\17\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\21\15\1\u028e"+ - "\24\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\22\15\1\u028f\23\15\23\0\1\15\11\0\1\133\5\0"+ - "\1\u0290\1\144\2\0\2\u0290\1\150\6\0\1\150\75\0"+ - "\2\15\7\0\7\15\4\0\40\15\1\u0291\5\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\14\15\1\u0292"+ - "\31\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\13\15\1\u0293\32\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\2\15\1\u0294\43\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\44\15\1\u0295\1\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\24\15\1\u0296"+ - "\21\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\23\15\1\u0297\22\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\2\15\1\u0298\43\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\3\15\1\u0299\42\15\23\0"+ - "\1\15\11\0\1\133\5\0\1\u029a\1\144\2\0\2\u029a"+ - "\1\150\6\0\1\150\75\0\2\15\7\0\7\15\4\0"+ - "\16\15\1\u029b\27\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\6\15\1\u029c\37\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\3\15\1\u029d\42\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\14\15\1\u029e"+ - "\31\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\13\15\1\u029f\32\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\12\15\1\u02a0\33\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\6\15\1\u02a1\37\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\21\15\1\u02a2"+ - "\24\15\23\0\1\15\11\0\1\133\5\0\1\u02a3\1\144"+ - "\2\0\2\u02a3\1\150\6\0\1\150\75\0\2\15\7\0"+ - "\7\15\4\0\12\15\1\u02a4\33\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\16\15\1\u02a5\27\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\23\15\1\u02a6"+ - "\22\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\2\15\1\u02a7\43\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\44\15\1\u02a8\1\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\44\15\1\u02a9\1\15\23\0"+ - "\1\15\11\0\1\133\5\0\1\u02aa\1\144\2\0\2\u02aa"+ - "\1\150\6\0\1\150\75\0\2\15\7\0\7\15\4\0"+ - "\21\15\1\u02ab\24\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\12\15\1\u02ac\33\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\40\15\1\u02ad\5\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\13\15\1\u02ae"+ - "\32\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\13\15\1\u02af\32\15\23\0\1\15\11\0\1\133\5\0"+ - "\1\u02b0\1\144\2\0\2\u02b0\1\150\6\0\1\150\75\0"+ - "\2\15\7\0\7\15\4\0\11\15\1\u02b1\34\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u02b2"+ - "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\23\15\1\u02b3\22\15\23\0\1\15\6\0\2\15\7\0"+ - "\7\15\4\0\23\15\1\u02b4\22\15\23\0\1\15\6\0"+ - "\2\15\7\0\7\15\4\0\22\15\1\u02b5\23\15\23\0"+ - "\1\15\6\0\2\15\7\0\7\15\4\0\12\15\1\u02b6"+ - "\33\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0"+ - "\21\15\1\u02b7\24\15\23\0\1\15"; + private static final String ZZ_ROWMAP_PACKED_0 + = "\0\0\0\124\0\250\0\374\0\u0150\0\u01a4\0\u01f8\0\u024c" + + "\0\u01f8\0\u02a0\0\u02f4\0\u0348\0\u039c\0\u03f0\0\u0444\0\u0498" + + "\0\u04ec\0\u0540\0\u01f8\0\u0594\0\u05e8\0\u063c\0\u01f8\0\u0690" + + "\0\u06e4\0\u0738\0\u078c\0\u07e0\0\u0834\0\u0888\0\u08dc\0\u0930" + + "\0\u0984\0\u09d8\0\u0a2c\0\u0a80\0\u0ad4\0\u0b28\0\u0b7c\0\u0bd0" + + "\0\u0c24\0\u0c78\0\u0ccc\0\u0d20\0\u0d74\0\u0dc8\0\u01f8\0\u01f8" + + "\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u0e1c\0\u01f8" + + "\0\u01f8\0\u0e70\0\u0ec4\0\u0f18\0\u0f6c\0\u0fc0\0\u01f8\0\u1014" + + "\0\u1068\0\u01f8\0\u01f8\0\u10bc\0\u1110\0\u1164\0\u11b8\0\u01f8" + + "\0\u120c\0\u1260\0\u01f8\0\u12b4\0\u01f8\0\u1308\0\u01f8\0\u135c" + + "\0\u13b0\0\u1404\0\u01f8\0\u1458\0\u14ac\0\u01f8\0\u01f8\0\u01f8" + + "\0\u1500\0\u1554\0\u15a8\0\u15fc\0\u1650\0\u01f8\0\u01f8\0\u16a4" + + "\0\u01f8\0\u16f8\0\u174c\0\u17a0\0\u17f4\0\u1848\0\u189c\0\u18f0" + + "\0\u01f8\0\u01f8\0\u1944\0\u1998\0\u19ec\0\u1a40\0\u1a94\0\u1ae8" + + "\0\u1b3c\0\u1b90\0\u039c\0\u1be4\0\u1c38\0\u1c8c\0\u1ce0\0\u1d34" + + "\0\u1d88\0\u1ddc\0\u1e30\0\u1e84\0\u1ed8\0\u1f2c\0\u1f80\0\u1fd4" + + "\0\u2028\0\u207c\0\u20d0\0\u2124\0\u2178\0\u21cc\0\u039c\0\u2220" + + "\0\u2274\0\u22c8\0\u231c\0\u2370\0\u039c\0\u23c4\0\u2418\0\u246c" + + "\0\u24c0\0\u2514\0\u2568\0\u25bc\0\u2610\0\u2664\0\u26b8\0\u270c" + + "\0\u2760\0\u27b4\0\u2808\0\u285c\0\u28b0\0\u2904\0\u2958\0\u29ac" + + "\0\u2a00\0\u2a54\0\u2aa8\0\u2afc\0\u2b50\0\u2ba4\0\u01f8\0\u01f8" + + "\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8" + + "\0\u2bf8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u2c4c" + + "\0\u01f8\0\u2ca0\0\u1260\0\u2cf4\0\u2d48\0\u2d9c\0\u2df0\0\u2e44" + + "\0\u01f8\0\u01f8\0\u2c4c\0\u2ca0\0\u2e98\0\u01f8\0\u2eec\0\u2f40" + + "\0\u01f8\0\u2f94\0\u2fe8\0\u303c\0\u01f8\0\u3090\0\u01f8\0\u30e4" + + "\0\u01f8\0\u01f8\0\u17f4\0\u3138\0\u318c\0\u31e0\0\u31e0\0\u3234" + + "\0\u3288\0\u32dc\0\u3330\0\u3384\0\u33d8\0\u342c\0\u3480\0\u34d4" + + "\0\u039c\0\u3528\0\u357c\0\u35d0\0\u3624\0\u3678\0\u039c\0\u039c" + + "\0\u36cc\0\u3720\0\u3774\0\u37c8\0\u381c\0\u039c\0\u3870\0\u38c4" + + "\0\u3918\0\u396c\0\u39c0\0\u3a14\0\u039c\0\u3a68\0\u3abc\0\u3b10" + + "\0\u3b64\0\u3bb8\0\u3c0c\0\u3c60\0\u3cb4\0\u3d08\0\u3d5c\0\u3db0" + + "\0\u3e04\0\u3e58\0\u3eac\0\u3f00\0\u3f54\0\u3fa8\0\u3ffc\0\u039c" + + "\0\u4050\0\u40a4\0\u40f8\0\u414c\0\u41a0\0\u41f4\0\u4248\0\u429c" + + "\0\u42f0\0\u4344\0\u4398\0\u43ec\0\u4440\0\u4494\0\u44e8\0\u453c" + + "\0\u039c\0\u4590\0\u45e4\0\u4638\0\u468c\0\u039c\0\u46e0\0\u4734" + + "\0\u01f8\0\u4788\0\u47dc\0\u4830\0\u4884\0\u48d8\0\u492c\0\u4980" + + "\0\u49d4\0\u4a28\0\u4a7c\0\u01f8\0\u4ad0\0\u4b24\0\u4b78\0\u4bcc" + + "\0\u4c20\0\u01f8\0\u4c74\0\u4cc8\0\u4d1c\0\u4d70\0\u4dc4\0\u4e18" + + "\0\u039c\0\u039c\0\u039c\0\u4e6c\0\u039c\0\u4ec0\0\u039c\0\u4f14" + + "\0\u4f68\0\u4fbc\0\u5010\0\u5064\0\u50b8\0\u510c\0\u5160\0\u51b4" + + "\0\u5208\0\u525c\0\u52b0\0\u039c\0\u5304\0\u039c\0\u5358\0\u53ac" + + "\0\u5400\0\u5454\0\u039c\0\u54a8\0\u54fc\0\u5550\0\u55a4\0\u55f8" + + "\0\u564c\0\u56a0\0\u56f4\0\u5748\0\u579c\0\u57f0\0\u5844\0\u5898" + + "\0\u58ec\0\u5940\0\u5994\0\u59e8\0\u5a3c\0\u039c\0\u5a90\0\u5ae4" + + "\0\u5b38\0\u5b8c\0\u5be0\0\u5c34\0\u5c88\0\u039c\0\u5cdc\0\u5d30" + + "\0\u5d84\0\u5dd8\0\u039c\0\u5e2c\0\u5e80\0\u5ed4\0\u5f28\0\u5f7c" + + "\0\u5fd0\0\u6024\0\u01f8\0\u2ca0\0\u01f8\0\u6078\0\u60cc\0\u01f8" + + "\0\u6120\0\u6174\0\u61c8\0\u621c\0\u6270\0\u62c4\0\u6318\0\u636c" + + "\0\u63c0\0\u6414\0\u6468\0\u64bc\0\u039c\0\u6510\0\u6564\0\u65b8" + + "\0\u660c\0\u039c\0\u039c\0\u6660\0\u039c\0\u66b4\0\u6708\0\u675c" + + "\0\u67b0\0\u6804\0\u039c\0\u6858\0\u68ac\0\u6900\0\u6954\0\u039c" + + "\0\u69a8\0\u69fc\0\u6a50\0\u039c\0\u6aa4\0\u6af8\0\u6b4c\0\u6ba0" + + "\0\u6bf4\0\u6c48\0\u6c9c\0\u6cf0\0\u6d44\0\u6d98\0\u6dec\0\u6e40" + + "\0\u039c\0\u6e94\0\u6ee8\0\u6f3c\0\u6f90\0\u6fe4\0\u7038\0\u039c" + + "\0\u708c\0\u70e0\0\u7134\0\u7188\0\u71dc\0\u7230\0\u039c\0\u7284" + + "\0\u039c\0\u72d8\0\u732c\0\u7380\0\u73d4\0\u7428\0\u747c\0\u74d0" + + "\0\u7524\0\u7578\0\u75cc\0\u7620\0\u7674\0\u76c8\0\u771c\0\u7770" + + "\0\u77c4\0\u7818\0\u786c\0\u039c\0\u78c0\0\u039c\0\u7914\0\u7968" + + "\0\u79bc\0\u039c\0\u7a10\0\u7a64\0\u039c\0\u039c\0\u7ab8\0\u7b0c" + + "\0\u7b60\0\u7bb4\0\u7c08\0\u7c5c\0\u039c\0\u7cb0\0\u7d04\0\u7d58" + + "\0\u039c\0\u7dac\0\u7e00\0\u7e54\0\u7ea8\0\u039c\0\u7efc\0\u7f50" + + "\0\u7fa4\0\u7ff8\0\u804c\0\u039c\0\u80a0\0\u80f4\0\u8148\0\u819c" + + "\0\u81f0\0\u8244\0\u8298\0\u82ec\0\u039c\0\u8340\0\u8394\0\u039c" + + "\0\u83e8\0\u843c\0\u8490\0\u039c\0\u039c\0\u84e4\0\u8538\0\u858c" + + "\0\u6318\0\u85e0\0\u8634\0\u8688\0\u039c\0\u86dc\0\u8730\0\u8784" + + "\0\u87d8\0\u039c\0\u882c\0\u8880\0\u88d4\0\u8928\0\u897c\0\u89d0" + + "\0\u8a24\0\u8a78\0\u8acc\0\u8b20\0\u8b74\0\u039c\0\u8bc8\0\u039c" + + "\0\u8c1c\0\u039c\0\u8c70\0\u8cc4\0\u8d18\0\u8d6c\0\u8dc0\0\u8e14" + + "\0\u8e68\0\u039c\0\u039c\0\u8ebc\0\u8f10\0\u8f64\0\u8fb8\0\u900c" + + "\0\u9060\0\u7620\0\u90b4\0\u9108\0\u915c\0\u039c\0\u91b0\0\u9204" + + "\0\u039c\0\u9258\0\u92ac\0\u9300\0\u9354\0\u93a8\0\u93fc\0\u9450" + + "\0\u94a4\0\u94f8\0\u954c\0\u95a0\0\u95f4\0\u9648\0\u039c\0\u969c" + + "\0\u96f0\0\u9744\0\u9798\0\u97ec\0\u039c\0\u9840\0\u039c\0\u039c" + + "\0\u9894\0\u98e8\0\u993c\0\u039c\0\u9990\0\u99e4\0\u9a38\0\u039c" + + "\0\u9a8c\0\u039c\0\u039c\0\u9ae0\0\u9b34\0\u9b88\0\u9bdc\0\u039c" + + "\0\u9c30\0\u9c84\0\u039c\0\u9cd8\0\u9d2c\0\u039c\0\u9d80\0\u9dd4" + + "\0\u039c\0\u039c\0\u9e28\0\u9e7c\0\u9ed0\0\u9f24\0\u9f78\0\u01f8" + + "\0\u9fcc\0\ua020\0\ua074\0\u039c\0\u039c\0\ua0c8\0\u039c\0\ua11c" + + "\0\u039c\0\ua170\0\ua1c4\0\ua218\0\ua26c\0\ua2c0\0\ua314\0\u039c" + + "\0\ua368\0\ua3bc\0\ua410\0\ua464\0\ua4b8\0\ua50c\0\ua560\0\ua5b4" + + "\0\ua608\0\ua65c\0\ua6b0\0\ua704\0\u039c\0\u039c\0\u039c\0\ua758" + + "\0\ua7ac\0\ua800\0\ua854\0\ua8a8\0\ua8fc\0\ua950\0\u039c\0\ua9a4" + + "\0\ua9f8\0\uaa4c\0\uaaa0\0\u039c\0\uaaf4\0\u039c\0\uab48\0\uab9c" + + "\0\uabf0\0\uac44\0\uac98\0\uacec\0\uad40\0\u039c\0\uad94\0\uade8" + + "\0\uae3c\0\uae90\0\u039c\0\uaee4\0\uaf38\0\uaf8c\0\uafe0\0\u17a0" + + "\0\ub034\0\ub088\0\u039c\0\u039c\0\u039c\0\ub0dc\0\u039c"; - private static int [] zzUnpackTrans() { - int [] result = new int[45360]; - 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[695]; + 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 = - "\6\0\1\11\1\1\1\11\11\1\1\11\3\1\1\11"+ - "\27\1\10\11\1\1\2\11\5\1\1\11\2\1\2\11"+ - "\4\1\1\11\2\1\1\11\1\1\1\11\1\1\1\11"+ - "\3\1\1\11\1\1\1\0\3\11\2\0\1\1\1\0"+ - "\1\1\2\11\1\1\1\11\3\1\1\0\2\1\1\0"+ - "\2\11\1\0\73\1\12\11\1\1\6\11\1\1\1\11"+ - "\1\1\6\0\2\11\3\1\1\11\2\0\1\11\3\0"+ - "\1\11\1\0\1\11\1\1\2\11\4\1\1\0\111\1"+ - "\1\11\12\0\1\11\5\0\1\11\110\1\1\11\1\0"+ - "\1\11\1\1\1\0\1\11\12\0\77\1\10\0\65\1"+ - "\2\0\147\1\1\11\107\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[695]; - 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\7\1\10\1\11\1\12\1\13\1\14\1\15\1\7" + + "\1\16\1\17\1\20\1\21\1\12\1\22\1\23\1\24" + + "\1\25\2\15\2\25\1\15\1\26\1\7\1\27\1\30" + + "\1\31\1\32\1\33\1\34\1\15\1\35\1\36\1\37" + + "\1\40\1\41\1\42\1\43\1\44\1\45\1\46\1\47" + + "\1\15\1\50\1\15\1\51\1\52\1\15\1\53\2\15" + + "\1\54\12\15\1\55\1\56\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\77\1\7\1\12\1\7" + + "\1\100\1\101\1\102\13\100\1\103\10\100\1\104\74\100" + + "\1\105\1\101\1\102\24\105\1\106\1\103\73\105\1\7" + + "\1\107\1\110\1\111\2\7\1\112\4\7\1\113\1\114" + + "\4\7\2\112\2\7\1\112\4\7\46\112\22\7\1\111" + + "\1\7\1\115\1\116\1\117\7\115\1\120\111\115\1\121" + + "\1\101\1\102\24\121\1\122\1\121\1\123\72\121\126\0" + + "\1\11\124\0\1\12\10\0\1\12\105\0\1\12\5\0" + + "\1\124\1\125\7\0\1\126\123\0\1\127\114\0\2\15" + + "\7\0\7\15\4\0\46\15\23\0\1\15\10\0\1\130" + + "\124\0\1\131\1\132\4\0\2\133\2\0\2\133\105\0" + + "\1\134\3\0\1\135\1\136\1\0\1\137\3\0\2\134" + + "\2\0\1\134\4\0\46\134\37\0\1\140\1\0\1\141" + + "\123\0\1\142\117\0\1\133\5\0\1\143\1\144\1\145" + + "\1\0\1\146\1\147\1\150\6\0\1\150\22\0\1\145" + + "\55\0\1\133\5\0\2\25\2\0\2\25\1\150\6\0" + + "\1\150\104\0\1\151\10\0\1\152\126\0\1\153\100\0" + + "\2\15\7\0\7\15\4\0\1\15\1\154\44\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\155" + + "\1\156\42\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\3\15\1\157\12\15\1\160\5\15\1\161\1\162" + + "\20\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\6\15\1\163\1\15\1\164\35\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\3\15\1\165\3\15\1\166" + + "\6\15\1\167\1\15\1\170\25\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\171\6\15\1\172" + + "\1\15\1\173\3\15\1\174\26\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\1\15\1\175\44\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\176" + + "\1\177\7\15\1\200\32\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\1\15\1\201\1\202\1\203\3\15" + + "\1\204\10\15\1\205\1\15\1\206\23\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\6\15\1\207\1\15" + + "\1\210\4\15\1\211\5\15\1\212\22\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\10\15\1\213\35\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" + + "\1\214\4\15\1\215\3\15\1\216\6\15\1\217\23\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\3\15" + + "\1\220\2\15\1\221\1\222\2\15\1\223\1\224\32\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" + + "\1\225\4\15\1\226\36\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\12\15\1\227\5\15\1\230\25\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15" + + "\1\231\1\15\1\232\7\15\1\233\2\15\1\234\27\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\235" + + "\45\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\3\15\1\236\3\15\1\237\36\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\240\4\15\1\241" + + "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\11\15\1\242\34\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\3\15\1\243\7\15\1\244\32\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\10\15\1\245" + + "\35\15\23\0\1\15\15\0\1\246\123\0\1\247\75\0" + + "\1\250\25\0\1\251\76\0\1\252\24\0\1\253\77\0" + + "\1\254\23\0\1\255\123\0\1\256\106\0\1\100\2\0" + + "\13\100\1\0\10\100\1\0\74\100\2\0\1\102\121\0" + + "\1\257\2\0\13\257\1\260\1\261\3\257\2\261\2\257" + + "\1\262\1\263\1\257\1\264\1\265\6\257\1\266\1\267" + + "\1\257\1\270\1\257\1\271\7\257\1\272\41\257\3\0" + + "\1\105\2\0\24\105\2\0\73\105\1\257\2\0\13\257" + + "\1\260\10\257\1\262\1\263\1\257\1\264\1\265\6\257" + + "\1\266\1\267\1\257\1\270\1\257\1\271\7\257\1\272" + + "\41\257\5\0\1\110\124\0\1\111\10\0\1\111\105\0" + + "\1\111\7\0\2\273\1\274\3\0\1\275\1\276\1\0" + + "\7\273\4\0\46\273\23\0\1\273\3\0\1\111\2\0" + + "\1\273\5\0\1\114\4\0\2\273\2\0\1\273\4\0" + + "\46\273\22\0\1\111\3\0\1\117\125\0\1\277\1\0" + + "\1\300\12\0\2\300\2\0\1\300\4\0\46\300\24\0" + + "\1\121\2\0\24\121\1\0\1\121\1\0\72\121\1\301" + + "\2\0\24\301\1\262\1\301\1\302\1\264\1\265\6\301" + + "\1\266\1\267\1\301\1\303\1\301\1\271\7\301\1\304" + + "\41\301\3\0\1\124\1\305\1\306\121\124\5\307\1\310" + + "\116\307\11\0\1\311\120\0\1\312\12\0\2\312\2\0" + + "\1\312\4\0\46\312\43\0\2\133\2\0\2\133\1\150" + + "\6\0\1\150\75\0\1\313\1\134\1\314\2\0\1\315" + + "\1\316\2\0\2\134\2\313\2\134\1\313\4\0\46\313" + + "\23\0\1\134\15\0\1\317\121\0\1\320\1\0\1\321" + + "\123\0\1\322\117\0\1\133\5\0\1\143\1\144\2\0" + + "\1\146\1\147\1\150\6\0\1\150\100\0\1\133\5\0" + + "\2\144\2\0\2\144\1\150\6\0\1\150\106\0\1\323" + + "\1\324\1\0\4\324\4\0\1\324\1\0\2\324\1\0" + + "\1\324\6\0\2\324\12\0\1\324\1\0\1\324\5\0" + + "\2\324\41\0\1\133\5\0\1\147\1\144\2\0\2\147" + + "\1\150\6\0\1\150\100\0\1\133\5\0\1\325\1\144" + + "\2\0\2\325\1\150\6\0\1\150\106\0\2\326\2\0" + + "\2\326\1\0\1\327\66\0\1\327\14\0\1\330\12\0" + + "\2\330\2\0\1\330\4\0\46\330\32\0\2\15\7\0" + + "\7\15\4\0\2\15\1\331\43\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\11\15\1\332\11\15\1\333" + + "\22\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\10\15\1\334\35\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\5\15\1\335\40\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\6\15\1\336\37\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\337" + + "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\11\15\1\340\34\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\14\15\1\341\31\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\6\15\1\342\2\15\1\343" + + "\4\15\1\344\27\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\10\15\1\345\35\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\3\15\1\346\42\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\347" + + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\11\15\1\350\34\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\3\15\1\351\3\15\1\352\36\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\1\353\20\15" + + "\1\354\24\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\12\15\1\355\33\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\14\15\1\356\31\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\17\15\1\357\5\15" + + "\1\360\20\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\23\15\1\361\22\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\16\15\1\362\27\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\3\15\1\363\7\15" + + "\1\364\6\15\1\365\23\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\16\15\1\366\27\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\1\15\1\367\44\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\26\15" + + "\1\370\17\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\1\15\1\371\10\15\1\372\33\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\21\15\1\373\24\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\6\15" + + "\1\374\2\15\1\375\34\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\32\15\1\376\13\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\21\15\1\377\24\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\14\15" + + "\1\u0100\1\15\1\u0101\27\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\15\15\1\u0102\1\u0103\27\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\21\15\1\u0104" + + "\24\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\10\15\1\u0105\35\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\16\15\1\u0106\27\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\5\15\1\u0107\40\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u0108" + + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\10\15\1\u0109\35\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\10\15\1\u010a\35\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\10\15\1\u010b\35\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u010c" + + "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\11\15\1\u010d\34\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\12\15\1\u010e\33\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\u010f\4\15\1\u0110" + + "\2\15\1\u0111\33\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\5\15\1\u0112\40\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\1\u0113\45\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\3\15\1\u0114\42\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\5\15" + + "\1\u0115\1\u0116\1\u0117\6\15\1\u0118\27\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u0119\44\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15" + + "\1\u011a\33\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\11\15\1\u011b\34\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\11\15\1\u011c\34\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u011d\44\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\44\15" + + "\1\u011e\1\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\23\15\1\u011f\22\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\15\15\1\u0120\30\15\23\0\1\15" + + "\15\0\1\u0121\125\0\1\u0122\3\0\2\u0122\116\0\2\u0123" + + "\1\0\4\u0123\4\0\1\u0123\1\0\2\u0123\1\0\1\u0123" + + "\6\0\2\u0123\12\0\1\u0123\1\0\1\u0123\5\0\2\u0123" + + "\47\0\2\u0124\1\0\4\u0124\4\0\1\u0124\1\0\2\u0124" + + "\1\0\1\u0124\6\0\2\u0124\12\0\1\u0124\1\0\1\u0124" + + "\5\0\2\u0124\36\0\1\u0125\12\0\2\u0125\2\0\1\u0125" + + "\4\0\46\u0125\40\0\1\275\1\276\122\0\1\276\1\0" + + "\1\u0126\113\0\1\u0127\12\0\2\u0127\2\0\1\u0127\4\0" + + "\46\u0127\32\0\1\u0128\1\300\1\u0129\2\0\1\115\1\u012a" + + "\2\0\2\300\2\u0128\2\300\1\u0128\4\0\46\u0128\23\0" + + "\1\300\2\0\1\306\121\0\5\307\1\u012b\116\307\4\0" + + "\1\306\1\310\124\0\2\312\3\0\1\u012c\3\0\7\312" + + "\4\0\46\312\23\0\1\312\6\0\2\313\1\u012d\2\0" + + "\1\315\1\u012e\1\u012f\1\0\7\313\4\0\46\313\23\0" + + "\1\313\6\0\1\u0130\12\0\2\u0130\2\0\1\u0130\4\0" + + "\46\u0130\32\0\1\u0131\5\0\1\316\4\0\2\u0131\2\0" + + "\1\u0131\4\0\46\u0131\41\0\1\u0132\125\0\2\u0133\1\0" + + "\4\u0133\4\0\1\u0133\1\0\2\u0133\1\0\1\u0133\6\0" + + "\2\u0133\12\0\1\u0133\1\0\1\u0133\5\0\2\u0133\41\0" + + "\1\133\5\0\1\u0134\1\144\2\0\2\u0134\1\150\6\0" + + "\1\150\106\0\2\326\2\0\2\326\105\0\2\330\7\0" + + "\7\330\4\0\46\330\23\0\1\330\6\0\2\15\7\0" + + "\7\15\4\0\3\15\1\u0135\42\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\13\15\1\u0136\32\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\7\15\1\u0137" + + "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\14\15\1\u0138\31\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\20\15\1\u0139\25\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\u013a\43\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u013b" + + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\2\15\1\u013c\43\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\2\15\1\u013d\43\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\5\15\1\u013e\40\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u013f" + + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\6\15\1\u0140\2\15\1\u0141\34\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\6\15\1\u0142\37\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u0143" + + "\7\15\1\u0144\34\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\21\15\1\u0145\24\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\6\15\1\u0146\37\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u0147" + + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\11\15\1\u0148\34\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\16\15\1\u0149\27\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\11\15\1\u014a\34\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u014b" + + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\16\15\1\u014c\27\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\5\15\1\u014d\40\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\u014e\43\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u014f" + + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\26\15\1\u0150\17\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\26\15\1\u0151\17\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\7\15\1\u0152\36\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\6\15\1\u0153" + + "\37\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\2\15\1\u0154\43\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\11\15\1\u0155\34\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\u0156\43\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u0157" + + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\7\15\1\u0158\6\15\1\u0159\27\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\u015a\43\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\7\15\1\u015b" + + "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\3\15\1\u015c\42\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\2\15\1\u015d\43\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\16\15\1\u015e\27\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u015f" + + "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\6\15\1\u0160\37\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\7\15\1\u0161\36\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\3\15\1\u0162\42\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\5\15\1\u0163" + + "\40\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\26\15\1\u0164\17\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\14\15\1\u0165\31\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\20\15\1\u0166\25\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u0167" + + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\24\15\1\u0168\21\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\11\15\1\u0169\34\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\10\15\1\u016a\13\15\1\u016b" + + "\21\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\4\15\1\u016c\41\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\16\15\1\u016d\27\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\22\15\1\u016e\23\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\20\15\1\u016f" + + "\25\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\13\15\1\u0170\32\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\1\15\1\u0171\44\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\u0172\43\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\14\15\1\u0173" + + "\31\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\27\15\1\u0174\3\15\1\u0175\6\15\1\u0176\3\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\7\15\1\u0177" + + "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\12\15\1\u0178\33\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\1\u0179\45\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\12\15\1\u017a\33\15\23\0\1\15" + + "\17\0\1\u017b\3\0\2\u017b\116\0\2\u017c\1\0\4\u017c" + + "\4\0\1\u017c\1\0\2\u017c\1\0\1\u017c\6\0\2\u017c" + + "\12\0\1\u017c\1\0\1\u017c\5\0\2\u017c\47\0\2\u017d" + + "\1\0\4\u017d\4\0\1\u017d\1\0\2\u017d\1\0\1\u017d" + + "\6\0\2\u017d\12\0\1\u017d\1\0\1\u017d\5\0\2\u017d" + + "\36\0\2\u0125\4\0\1\275\1\276\1\0\7\u0125\4\0" + + "\46\u0125\23\0\1\u0125\1\u0126\2\0\13\u0126\1\u017e\105\u0126" + + "\6\0\2\u0127\1\u017f\2\0\1\u0180\3\0\7\u0127\4\0" + + "\46\u0127\23\0\1\u0127\6\0\2\u0128\1\u0181\2\0\1\115" + + "\1\u0182\1\u0183\1\0\7\u0128\4\0\46\u0128\23\0\1\u0128" + + "\6\0\1\u0184\12\0\2\u0184\2\0\1\u0184\4\0\46\u0184" + + "\32\0\1\u0185\5\0\1\u012a\4\0\2\u0185\2\0\1\u0185" + + "\4\0\46\u0185\24\0\4\307\1\306\1\u012b\116\307\6\0" + + "\1\u0186\12\0\2\u0186\2\0\1\u0186\4\0\46\u0186\32\0" + + "\1\u0131\5\0\1\u012e\1\u012f\3\0\2\u0131\2\0\1\u0131" + + "\4\0\46\u0131\40\0\1\u012f\1\0\1\u0187\113\0\1\u0188" + + "\1\u0130\3\0\1\315\1\316\2\0\2\u0130\2\u0188\2\u0130" + + "\1\u0188\4\0\46\u0188\23\0\1\u0130\6\0\2\u0131\1\u0189" + + "\3\0\1\u018a\1\u012f\1\0\7\u0131\4\0\46\u0131\23\0" + + "\1\u0131\17\0\2\u018b\1\0\4\u018b\4\0\1\u018b\1\0" + + "\2\u018b\1\0\1\u018b\6\0\2\u018b\12\0\1\u018b\1\0" + + "\1\u018b\5\0\2\u018b\41\0\1\133\5\0\1\u018c\1\144" + + "\2\0\2\u018c\1\150\6\0\1\150\75\0\2\15\7\0" + + "\7\15\4\0\4\15\1\u018d\41\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\1\15\1\u018e\44\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\24\15\1\u018f" + + "\21\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\7\15\1\u0190\36\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\10\15\1\u0191\35\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\20\15\1\u0192\25\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u0193" + + "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\12\15\1\u0194\33\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\6\15\1\u0195\37\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\11\15\1\u0196\34\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\12\15\1\u0197" + + "\33\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\30\15\1\u0198\10\15\1\u0199\4\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\11\15\1\u019a\34\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u019b" + + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\5\15\1\u019c\40\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\12\15\1\u019d\33\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\32\15\1\u019e\13\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\6\15\1\u019f" + + "\37\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\2\15\1\u01a0\43\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\33\15\1\u01a1\12\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\u01a2\43\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u01a3" + + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\17\15\1\u01a4\26\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\7\15\1\u01a5\36\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\3\15\1\u01a6\42\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u01a7" + + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\3\15\1\u01a8\42\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\1\15\1\u01a9\44\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\u01aa\43\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\15\15\1\u01ab" + + "\30\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\3\15\1\u01ac\42\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\13\15\1\u01ad\32\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\11\15\1\u01ae\34\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\12\15\1\u01af" + + "\33\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\23\15\1\u01b0\22\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\2\15\1\u01b1\43\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\23\15\1\u01b2\22\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u01b3" + + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\11\15\1\u01b4\34\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\11\15\1\u01b5\34\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\37\15\1\u01b6\2\15\1\u01b7" + + "\3\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\2\15\1\u01b8\43\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\32\15\1\u01b9\13\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\2\15\1\u01ba\43\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u01bb" + + "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\3\15\1\u01bc\42\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\3\15\1\u01bd\42\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\12\15\1\u01be\33\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u01bf" + + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\1\u01c0\45\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\14\15\1\u01c1\31\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\10\15\1\u01c2\35\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u01c3\44\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15" + + "\1\u01c4\33\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\2\15\1\u01c5\43\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\30\15\1\u01c6\15\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\10\15\1\u01c7\35\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" + + "\1\u01c8\43\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\10\15\1\u01c9\35\15\23\0\1\15\1\u0126\2\0" + + "\11\u0126\1\u017e\1\u0126\1\u017e\105\u0126\6\0\1\u01ca\12\0" + + "\2\u01ca\2\0\1\u01ca\4\0\46\u01ca\32\0\1\u01cb\12\0" + + "\2\u01cb\2\0\1\u01cb\4\0\46\u01cb\32\0\1\u0185\5\0" + + "\1\u0182\1\u0183\3\0\2\u0185\2\0\1\u0185\4\0\46\u0185" + + "\40\0\1\u0183\1\0\1\u01cc\113\0\1\u01cd\1\u0184\3\0" + + "\1\115\1\u012a\2\0\2\u0184\2\u01cd\2\u0184\1\u01cd\4\0" + + "\46\u01cd\23\0\1\u0184\6\0\2\u0185\1\u01ce\3\0\1\u01cf" + + "\1\u0183\1\0\7\u0185\4\0\46\u0185\23\0\1\u0185\6\0" + + "\1\u0188\1\u0186\3\0\1\315\1\u012e\1\u012f\1\0\2\u0186" + + "\2\u0188\2\u0186\1\u0188\4\0\46\u0188\23\0\1\u0186\1\u0187" + + "\2\0\13\u0187\1\u01d0\105\u0187\6\0\2\u0188\1\u0189\2\0" + + "\1\315\1\u012e\1\u012f\1\0\7\u0188\4\0\46\u0188\23\0" + + "\1\u0188\6\0\1\u01d1\12\0\2\u01d1\2\0\1\u01d1\4\0" + + "\46\u01d1\40\0\1\u018a\1\u012f\125\0\2\u01d2\1\0\4\u01d2" + + "\4\0\1\u01d2\1\0\2\u01d2\1\0\1\u01d2\6\0\2\u01d2" + + "\12\0\1\u01d2\1\0\1\u01d2\5\0\2\u01d2\41\0\1\133" + + "\5\0\1\u01d3\1\144\2\0\2\u01d3\1\150\6\0\1\150" + + "\75\0\2\15\7\0\7\15\4\0\10\15\1\u01d4\35\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" + + "\1\u01d5\43\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\23\15\1\u01d6\22\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\14\15\1\u01d7\31\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\10\15\1\u01d8\35\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\41\15" + + "\1\u01d9\4\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\5\15\1\u01da\40\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\16\15\1\u01db\27\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u01dc\44\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15" + + "\1\u01dd\44\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\20\15\1\u01de\25\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\10\15\1\u01df\35\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u01e0\44\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\21\15" + + "\1\u01e1\24\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\3\15\1\u01e2\42\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\11\15\1\u01e3\34\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\2\15\1\u01e4\43\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\15\15" + + "\1\u01e5\30\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\10\15\1\u01e6\35\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\15\15\1\u01e7\30\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\23\15\1\u01e8\22\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\11\15" + + "\1\u01e9\34\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\23\15\1\u01ea\22\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\12\15\1\u01eb\33\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\14\15\1\u01ec\31\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\16\15" + + "\1\u01ed\27\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\2\15\1\u01ee\43\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\5\15\1\u01ef\40\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\12\15\1\u01f0\33\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15" + + "\1\u01f1\22\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\16\15\1\u01f2\27\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\12\15\1\u01f3\33\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\20\15\1\u01f4\25\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\7\15" + + "\1\u01f5\36\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\3\15\1\u01f6\42\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\1\15\1\u01f7\44\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\5\15\1\u01f8\40\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\30\15" + + "\1\u01f9\13\15\1\u01fa\1\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\11\15\1\u01fb\34\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\26\15\1\u01fc\17\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\5\15" + + "\1\u01fd\40\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\6\15\1\u01fe\37\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\26\15\1\u01ff\17\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\16\15\1\u0200\27\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15" + + "\1\u0201\22\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\1\15\1\u0202\44\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\10\15\1\u0203\35\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\26\15\1\u0204\17\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15" + + "\1\u0205\44\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\12\15\1\u0206\33\15\23\0\1\15\6\0\2\u01ca" + + "\3\0\1\u0180\3\0\7\u01ca\4\0\46\u01ca\23\0\1\u01ca" + + "\6\0\1\u01cd\1\u01cb\3\0\1\115\1\u0182\1\u0183\1\0" + + "\2\u01cb\2\u01cd\2\u01cb\1\u01cd\4\0\46\u01cd\23\0\1\u01cb" + + "\1\u01cc\2\0\13\u01cc\1\u0207\105\u01cc\6\0\2\u01cd\1\u01ce" + + "\2\0\1\115\1\u0182\1\u0183\1\0\7\u01cd\4\0\46\u01cd" + + "\23\0\1\u01cd\6\0\1\u0208\12\0\2\u0208\2\0\1\u0208" + + "\4\0\46\u0208\40\0\1\u01cf\1\u0183\106\0\1\u0187\2\0" + + "\10\u0187\1\u0209\1\u01d0\1\u0187\1\u01d0\105\u0187\6\0\2\u01d1" + + "\4\0\1\u018a\1\u012f\1\0\7\u01d1\4\0\46\u01d1\23\0" + + "\1\u01d1\17\0\2\u020a\1\0\4\u020a\4\0\1\u020a\1\0" + + "\2\u020a\1\0\1\u020a\6\0\2\u020a\12\0\1\u020a\1\0" + + "\1\u020a\5\0\2\u020a\41\0\1\133\5\0\1\u020b\1\144" + + "\2\0\2\u020b\1\150\6\0\1\150\75\0\2\15\7\0" + + "\7\15\4\0\37\15\1\u020c\6\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\6\15\1\u020d\37\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\13\15\1\u020e" + + "\32\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\1\15\1\u020f\44\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\16\15\1\u0210\27\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\3\15\1\u0211\42\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u0212" + + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\3\15\1\u0213\42\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\3\15\1\u0214\42\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\1\15\1\u0215\44\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\43\15\1\u0216" + + "\2\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\34\15\1\u0217\11\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\5\15\1\u0218\40\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\3\15\1\u0219\42\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u021a" + + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\2\15\1\u021b\43\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\10\15\1\u021c\35\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\37\15\1\u021d\6\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u021e" + + "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\3\15\1\u021f\42\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\5\15\1\u0220\40\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\3\15\1\u0221\42\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\22\15\1\u0222" + + "\23\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\7\15\1\u0223\36\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\24\15\1\u0224\21\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\1\15\1\u0225\44\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u0226" + + "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\11\15\1\u0227\34\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\6\15\1\u0228\37\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\13\15\1\u0229\32\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u022a" + + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\2\15\1\u022b\43\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\11\15\1\u022c\34\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\11\15\1\u022d\34\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u022e" + + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\6\15\1\u022f\37\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\14\15\1\u0230\31\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\11\15\1\u0231\34\15\23\0" + + "\1\15\1\u01cc\2\0\10\u01cc\1\u0232\1\u0207\1\u01cc\1\u0207" + + "\105\u01cc\6\0\2\u0208\4\0\1\u01cf\1\u0183\1\0\7\u0208" + + "\4\0\46\u0208\23\0\1\u0208\17\0\2\u0233\1\0\4\u0233" + + "\4\0\1\u0233\1\0\2\u0233\1\0\1\u0233\6\0\2\u0233" + + "\12\0\1\u0233\1\0\1\u0233\5\0\2\u0233\41\0\1\133" + + "\5\0\1\u0234\1\144\2\0\2\u0234\1\150\6\0\1\150" + + "\75\0\2\15\7\0\7\15\4\0\7\15\1\u0235\36\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" + + "\1\u0236\43\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\3\15\1\u0237\42\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\31\15\1\u0238\14\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\26\15\1\u0239\17\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15" + + "\1\u023a\22\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\5\15\1\u023b\40\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\26\15\1\u023c\17\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\3\15\1\u023d\42\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15" + + "\1\u023e\33\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\2\15\1\u023f\43\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\5\15\1\u0240\40\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\36\15\1\u0241\7\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\10\15" + + "\1\u0242\35\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\2\15\1\u0243\43\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\7\15\1\u0244\36\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\11\15\1\u0245\34\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\10\15" + + "\1\u0246\35\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\10\15\1\u0247\35\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\12\15\1\u0248\33\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\12\15\1\u0249\33\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15" + + "\1\u024a\22\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\2\15\1\u024b\43\15\23\0\1\15\6\0\2\15" + + "\7\0\3\15\1\u024c\3\15\4\0\46\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\23\15\1\u024d\22\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15" + + "\1\u024e\44\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\20\15\1\u024f\25\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\1\15\1\u0250\44\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\12\15\1\u0251\33\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\31\15" + + "\1\u0252\11\15\1\u0253\2\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\22\15\1\u0254\23\15\23\0\1\15" + + "\17\0\2\u0255\1\0\4\u0255\4\0\1\u0255\1\0\2\u0255" + + "\1\0\1\u0255\6\0\2\u0255\12\0\1\u0255\1\0\1\u0255" + + "\5\0\2\u0255\41\0\1\133\5\0\1\u0256\1\144\2\0" + + "\2\u0256\1\150\6\0\1\150\75\0\2\15\7\0\7\15" + + "\4\0\24\15\1\u0257\21\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\26\15\1\u0258\17\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\7\15\1\u0259\36\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" + + "\1\u025a\43\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\2\15\1\u025b\43\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\2\15\1\u025c\43\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\11\15\1\u025d\34\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\26\15" + + "\1\u025e\17\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\7\15\1\u025f\36\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\2\15\1\u0260\43\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\7\15\1\u0261\36\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\11\15" + + "\1\u0262\34\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\14\15\1\u0263\31\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\24\15\1\u0264\21\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\2\15\1\u0265\43\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\14\15" + + "\1\u0266\31\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\2\15\1\u0267\43\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\3\15\1\u0268\42\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\2\15\1\u0269\43\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\14\15" + + "\1\u026a\31\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\12\15\1\u026b\33\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\12\15\1\u026c\33\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\7\15\1\u026d\36\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\11\15" + + "\1\u026e\34\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\16\15\1\u026f\27\15\23\0\1\15\17\0\2\u0270" + + "\1\0\4\u0270\4\0\1\u0270\1\0\2\u0270\1\0\1\u0270" + + "\6\0\2\u0270\12\0\1\u0270\1\0\1\u0270\5\0\2\u0270" + + "\41\0\1\133\5\0\1\u0271\1\144\2\0\2\u0271\1\150" + + "\6\0\1\150\75\0\2\15\7\0\7\15\4\0\12\15" + + "\1\u0272\33\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\13\15\1\u0273\32\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\11\15\1\u0274\34\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\20\15\1\u0275\25\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\20\15" + + "\1\u0276\25\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\15\15\1\u0277\30\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\3\15\1\u0278\42\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\6\15\1\u0279\37\15" + + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15" + + "\1\u027a\33\15\23\0\1\15\6\0\2\15\7\0\7\15" + + "\4\0\37\15\1\u027b\6\15\23\0\1\15\6\0\2\15" + + "\7\0\7\15\4\0\44\15\1\u027c\1\15\23\0\1\15" + + "\6\0\2\15\7\0\7\15\4\0\1\u027d\45\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u027e" + + "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\10\15\1\u027f\35\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\10\15\1\u0280\35\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\7\15\1\u0281\36\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u0282" + + "\42\15\23\0\1\15\11\0\1\133\5\0\1\u0283\1\144" + + "\2\0\2\u0283\1\150\6\0\1\150\75\0\2\15\7\0" + + "\7\15\4\0\2\15\1\u0284\43\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\10\15\1\u0285\35\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\35\15\1\u0286" + + "\10\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\14\15\1\u0287\31\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\2\15\1\u0288\43\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\7\15\1\u0289\36\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\13\15\1\u028a" + + "\32\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\16\15\1\u028b\27\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\23\15\1\u028c\22\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\26\15\1\u028d\17\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\21\15\1\u028e" + + "\24\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\22\15\1\u028f\23\15\23\0\1\15\11\0\1\133\5\0" + + "\1\u0290\1\144\2\0\2\u0290\1\150\6\0\1\150\75\0" + + "\2\15\7\0\7\15\4\0\40\15\1\u0291\5\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\14\15\1\u0292" + + "\31\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\13\15\1\u0293\32\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\2\15\1\u0294\43\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\44\15\1\u0295\1\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\24\15\1\u0296" + + "\21\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\23\15\1\u0297\22\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\2\15\1\u0298\43\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\3\15\1\u0299\42\15\23\0" + + "\1\15\11\0\1\133\5\0\1\u029a\1\144\2\0\2\u029a" + + "\1\150\6\0\1\150\75\0\2\15\7\0\7\15\4\0" + + "\16\15\1\u029b\27\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\6\15\1\u029c\37\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\3\15\1\u029d\42\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\14\15\1\u029e" + + "\31\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\13\15\1\u029f\32\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\12\15\1\u02a0\33\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\6\15\1\u02a1\37\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\21\15\1\u02a2" + + "\24\15\23\0\1\15\11\0\1\133\5\0\1\u02a3\1\144" + + "\2\0\2\u02a3\1\150\6\0\1\150\75\0\2\15\7\0" + + "\7\15\4\0\12\15\1\u02a4\33\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\16\15\1\u02a5\27\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\23\15\1\u02a6" + + "\22\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\2\15\1\u02a7\43\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\44\15\1\u02a8\1\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\44\15\1\u02a9\1\15\23\0" + + "\1\15\11\0\1\133\5\0\1\u02aa\1\144\2\0\2\u02aa" + + "\1\150\6\0\1\150\75\0\2\15\7\0\7\15\4\0" + + "\21\15\1\u02ab\24\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\12\15\1\u02ac\33\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\40\15\1\u02ad\5\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\13\15\1\u02ae" + + "\32\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\13\15\1\u02af\32\15\23\0\1\15\11\0\1\133\5\0" + + "\1\u02b0\1\144\2\0\2\u02b0\1\150\6\0\1\150\75\0" + + "\2\15\7\0\7\15\4\0\11\15\1\u02b1\34\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u02b2" + + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\23\15\1\u02b3\22\15\23\0\1\15\6\0\2\15\7\0" + + "\7\15\4\0\23\15\1\u02b4\22\15\23\0\1\15\6\0" + + "\2\15\7\0\7\15\4\0\22\15\1\u02b5\23\15\23\0" + + "\1\15\6\0\2\15\7\0\7\15\4\0\12\15\1\u02b6" + + "\33\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" + + "\21\15\1\u02b7\24\15\23\0\1\15"; - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; + private static int[] zzUnpackTrans() { + int[] result = new int[45360]; + 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 + = "\6\0\1\11\1\1\1\11\11\1\1\11\3\1\1\11" + + "\27\1\10\11\1\1\2\11\5\1\1\11\2\1\2\11" + + "\4\1\1\11\2\1\1\11\1\1\1\11\1\1\1\11" + + "\3\1\1\11\1\1\1\0\3\11\2\0\1\1\1\0" + + "\1\1\2\11\1\1\1\11\3\1\1\0\2\1\1\0" + + "\2\11\1\0\73\1\12\11\1\1\6\11\1\1\1\11" + + "\1\1\6\0\2\11\3\1\1\11\2\0\1\11\3\0" + + "\1\11\1\0\1\11\1\1\2\11\4\1\1\0\111\1" + + "\1\11\12\0\1\11\5\0\1\11\110\1\1\11\1\0" + + "\1\11\1\1\1\0\1\11\12\0\77\1\10\0\65\1" + + "\2\0\147\1\1\11\107\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[695]; + 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: */ StringBuilder string = new StringBuilder(); private static String xmlTagName = ""; @@ -1220,22 +1270,22 @@ public final class ActionScriptLexer { private final 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); } } @@ -1247,9 +1297,10 @@ public final class ActionScriptLexer { } ParsedSymbol last; - public ParsedSymbol lex() throws java.io.IOException, ActionParseException{ + + public ParsedSymbol lex() throws java.io.IOException, ActionParseException { ParsedSymbol ret = null; - if (!pushedBack.isEmpty()){ + if (!pushedBack.isEmpty()) { ret = last = pushedBack.pop(); } else { ret = last = yylex(); @@ -1258,1086 +1309,1267 @@ 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 < 2916) { - 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 < 2916) { + 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, ActionParseException { - 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, ActionParseException { + 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 184: + break; + case 2: { + yyline++; + } + case 185: + break; + case 3: { /*ignore*/ + + } + case 186: + break; + case 4: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); + } + case 187: + break; + case 5: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); + } + case 188: + break; + case 6: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } + case 189: + break; + case 7: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); + } + case 190: + break; + case 8: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); + } + case 191: + break; + case 9: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); + } + case 192: + break; + case 10: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); + } + case 193: + break; + case 11: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); + } + case 194: + break; + case 12: { + string.setLength(0); + yybegin(STRING); + } + case 195: + break; + case 13: { + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); + } + case 196: + break; + case 14: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); + } + case 197: + break; + case 15: { + string.setLength(0); + yybegin(CHARLITERAL); + } + case 198: + break; + case 16: { + string.setLength(0); + yybegin(OIDENTIFIER); + } + case 199: + break; + case 17: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); + } + case 200: + break; + case 18: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); + } + case 201: + break; + case 19: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); + } + case 202: + break; + case 20: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); + } + case 203: + break; + case 21: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); + } + case 204: + break; + case 22: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); + } + case 205: + break; + case 23: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); + } + case 206: + break; + case 24: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); + } + case 207: + break; + case 25: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); + } + case 208: + break; + case 26: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); + } + case 209: + break; + case 27: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); + } + case 210: + break; + case 28: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); + } + case 211: + break; + case 29: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); + } + case 212: + break; + case 30: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); + } + case 213: + break; + case 31: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); + } + case 214: + break; + case 32: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); + } + case 215: + break; + case 33: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); + } + case 216: + break; + case 34: { + string.append(yytext()); + } + case 217: + break; + case 35: { + yybegin(YYINITIAL); + yyline++; + } + case 218: + break; + case 36: { + yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); + } + case 219: + break; + case 37: { + string.append(yytext()); + yyline++; + } + case 220: + break; + case 38: { + yybegin(XML); + string.append(yytext()); + } + case 221: + break; + case 39: { + string.append(yytext()); + yyline++; + } + case 222: + break; + case 40: { + yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); + } + case 223: + break; + case 41: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); + } + case 224: + break; + case 42: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); + } + case 225: + break; + case 43: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); + } + case 226: + break; + case 44: { + return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); + } + case 227: + break; + case 45: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); + } + case 228: + break; + case 46: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); + } + case 229: + break; + case 47: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); + } + case 230: + break; + case 48: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); + } + case 231: + break; + case 49: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); + } + case 232: + break; + case 50: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); + } + case 233: + break; + case 51: { + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); + } + case 234: + break; + case 52: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); + } + case 235: + break; + case 53: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); + } + case 236: + break; + case 54: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); + } + case 237: + break; + case 55: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLOR, yytext()); + } + case 238: + break; + case 56: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); + } + case 239: + break; + case 57: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); + } + case 240: + break; + case 58: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); + } + case 241: + break; + case 59: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); + } + case 242: + break; + case 60: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); + } + case 243: + break; + case 61: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); + } + case 244: + break; + case 62: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); + } + case 245: + break; + case 63: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); + } + case 246: + break; + case 64: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); + } + case 247: + break; + case 65: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); + } + case 248: + break; + case 66: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); + } + case 249: + break; + case 67: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); + } + case 250: + break; + case 68: { + string.append('\\'); /*illegal escape sequence*/ + + } + case 251: + break; + case 69: { + string.append('\"'); + } + case 252: + break; + case 70: { + string.append('\\'); + } + case 253: + break; + case 71: { + string.append('\''); + } + case 254: + break; + case 72: { + string.append('\b'); + } + case 255: + break; + case 73: { + string.append('\r'); + } + case 256: + break; + case 74: { + string.append('\n'); + } + case 257: + break; + case 75: { + string.append('\t'); + } + case 258: + break; + case 76: { + string.append('\f'); + } + case 259: + break; + case 77: { + throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); + } + case 260: + break; + case 78: { + string.append('\u00A7'); + } + case 261: + break; + case 79: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); + } + case 262: + break; + case 80: { + string.setLength(0); + yybegin(XML); + String s = yytext(); + s = s.substring(1, s.length() - 1); + if (s.contains(" ")) { + s = s.substring(0, s.indexOf(' ')); + } + xmlTagName = s; + string.append(yytext()); + } + case 263: + break; + case 81: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); + } + case 264: + break; + case 82: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); + } + case 265: + break; + case 83: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); + } + case 266: + break; + case 84: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); + } + case 267: + break; + case 85: { + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); + } + case 268: + break; + case 86: { + return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2)); + } + case 269: + break; + case 87: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLAND, yytext()); + } + case 270: + break; + case 88: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); + } + case 271: + break; + case 89: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SET, yytext()); + } + case 272: + break; + case 90: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); + } + case 273: + break; + case 91: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); + } + case 274: + break; + case 92: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); + } + case 275: + break; + case 93: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); + } + case 276: + break; + case 94: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); + } + case 277: + break; + case 95: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); + } + case 278: + break; + case 96: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.GET, yytext()); + } + case 279: + break; + case 97: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); + } + case 280: + break; + case 98: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); + } + case 281: + break; + case 99: { + String t = yytext(); + return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, t.substring(2, t.length() - 1)); + } + case 282: + break; + case 100: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); + } + case 283: + break; + case 101: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EACH, yytext()); + } + case 284: + break; + case 102: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); + } + case 285: + break; + case 103: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); + } + case 286: + break; + case 104: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); + } + case 287: + break; + case 105: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CALL, yytext()); + } + case 288: + break; + case 106: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); + } + case 289: + break; + case 107: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); + } + case 290: + break; + case 108: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); + } + case 291: + break; + case 109: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); + } + case 292: + break; + case 110: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); + } + case 293: + break; + case 111: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); + } + case 294: + break; + case 112: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); + } + case 295: + break; + case 113: { + char val = (char) Integer.parseInt(yytext().substring(1), 8); + string.append(val); + } + case 296: + break; + case 114: { + char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); + } + case 297: + break; + case 115: { + string.append(yytext()); + String endtagname = yytext(); + endtagname = endtagname.substring(2, endtagname.length() - 1); + if (endtagname.equals(xmlTagName)) { + yybegin(YYINITIAL); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML, string.toString()); + } + } + case 298: + break; + case 116: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); + } + case 299: + break; + case 117: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); + } + case 300: + break; + case 118: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); + } + case 301: + break; + case 119: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); + } + case 302: + break; + case 120: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); + } + case 303: + break; + case 121: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); + } + case 304: + break; + case 122: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); + } + case 305: + break; + case 123: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); + } + case 306: + break; + case 124: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); + } + case 307: + break; + case 125: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINT, yytext()); + } + case 308: + break; + case 126: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); + } + case 309: + break; + case 127: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); + } + case 310: + break; + case 128: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); + } + case 311: + break; + case 129: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); + } + case 312: + break; + case 130: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.STATIC, yytext()); + } + case 313: + break; + case 131: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); + } + case 314: + break; + case 132: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); + } + case 315: + break; + case 133: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); + } + case 316: + break; + case 134: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); + } + case 317: + break; + case 135: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); + } + case 318: + break; + case 136: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); + } + case 319: + break; + case 137: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); + } + case 320: + break; + case 138: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); + } + case 321: + break; + case 139: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); + } + case 322: + break; + case 140: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); + } + case 323: + break; + case 141: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); + } + case 324: + break; + case 142: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); + } + case 325: + break; + case 143: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); + } + case 326: + break; + case 144: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DYNAMIC, yytext()); + } + case 327: + break; + case 145: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); + } + case 328: + break; + case 146: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); + } + case 329: + break; + case 147: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); + } + case 330: + break; + case 148: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); + } + case 331: + break; + case 149: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); + } + case 332: + break; + case 150: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); + } + case 333: + break; + case 151: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTNUM, yytext()); + } + case 334: + break; + case 152: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); + } + case 335: + break; + case 153: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); + } + case 336: + break; + case 154: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); + } + case 337: + break; + case 155: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); + } + case 338: + break; + case 156: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); + } + case 339: + break; + case 157: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.NAMESPACE, yytext()); + } + case 340: + break; + case 158: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); + } + case 341: + break; + case 159: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); + } + case 342: + break; + case 160: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND, yytext()); + } + case 343: + break; + case 161: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); + } + case 344: + break; + case 162: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); + } + case 345: + break; + case 163: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); + } + case 346: + break; + case 164: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); + } + case 347: + break; + case 165: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); + } + case 348: + break; + case 166: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); + } + case 349: + break; + case 167: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); + } + case 350: + break; + case 168: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETVERSION, yytext()); + } + case 351: + break; + case 169: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIE, yytext()); + } + case 352: + break; + case 170: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); + } + case 353: + break; + case 171: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); + } + case 354: + break; + case 172: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); + } + case 355: + break; + case 173: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIENUM, yytext()); + } + case 356: + break; + case 174: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); + } + case 357: + break; + case 175: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IFFRAMELOADED, yytext()); + } + case 358: + break; + case 176: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); + } + case 359: + break; + case 177: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAP, yytext()); + } + case 360: + break; + case 178: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); + } + case 361: + break; + case 179: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); + } + case 362: + break; + case 180: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLESNUM, yytext()); + } + case 363: + break; + case 181: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAPNUM, yytext()); + } + case 364: + break; + case 182: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); + } + case 365: + break; + case 183: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); + } + case 366: + 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 184: break; - case 2: - { yyline++; - } - case 185: break; - case 3: - { /*ignore*/ - } - case 186: break; - case 4: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); - } - case 187: break; - case 5: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); - } - case 188: break; - case 6: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - case 189: break; - case 7: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); - } - case 190: break; - case 8: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); - } - case 191: break; - case 9: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); - } - case 192: break; - case 10: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); - } - case 193: break; - case 11: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); - } - case 194: break; - case 12: - { string.setLength(0); - yybegin(STRING); - } - case 195: break; - case 13: - { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); - } - case 196: break; - case 14: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); - } - case 197: break; - case 15: - { string.setLength(0); - yybegin(CHARLITERAL); - } - case 198: break; - case 16: - { string.setLength(0); - yybegin(OIDENTIFIER); - } - case 199: break; - case 17: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); - } - case 200: break; - case 18: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); - } - case 201: break; - case 19: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); - } - case 202: break; - case 20: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); - } - case 203: break; - case 21: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); - } - case 204: break; - case 22: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); - } - case 205: break; - case 23: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); - } - case 206: break; - case 24: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); - } - case 207: break; - case 25: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); - } - case 208: break; - case 26: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); - } - case 209: break; - case 27: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); - } - case 210: break; - case 28: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); - } - case 211: break; - case 29: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); - } - case 212: break; - case 30: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); - } - case 213: break; - case 31: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); - } - case 214: break; - case 32: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); - } - case 215: break; - case 33: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); - } - case 216: break; - case 34: - { string.append(yytext()); - } - case 217: break; - case 35: - { yybegin(YYINITIAL); yyline++; - } - case 218: break; - case 36: - { yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); - } - case 219: break; - case 37: - { string.append(yytext()); yyline++; - } - case 220: break; - case 38: - { yybegin(XML); string.append(yytext()); - } - case 221: break; - case 39: - { string.append(yytext()); yyline++; - } - case 222: break; - case 40: - { yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); - } - case 223: break; - case 41: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); - } - case 224: break; - case 42: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); - } - case 225: break; - case 43: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); - } - case 226: break; - case 44: - { return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); - } - case 227: break; - case 45: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); - } - case 228: break; - case 46: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); - } - case 229: break; - case 47: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); - } - case 230: break; - case 48: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); - } - case 231: break; - case 49: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); - } - case 232: break; - case 50: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); - } - case 233: break; - case 51: - { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); - } - case 234: break; - case 52: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); - } - case 235: break; - case 53: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); - } - case 236: break; - case 54: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); - } - case 237: break; - case 55: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLOR, yytext()); - } - case 238: break; - case 56: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); - } - case 239: break; - case 57: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); - } - case 240: break; - case 58: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); - } - case 241: break; - case 59: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); - } - case 242: break; - case 60: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); - } - case 243: break; - case 61: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); - } - case 244: break; - case 62: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); - } - case 245: break; - case 63: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); - } - case 246: break; - case 64: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); - } - case 247: break; - case 65: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); - } - case 248: break; - case 66: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); - } - case 249: break; - case 67: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); - } - case 250: break; - case 68: - { string.append('\\'); /*illegal escape sequence*/ - } - case 251: break; - case 69: - { string.append('\"'); - } - case 252: break; - case 70: - { string.append('\\'); - } - case 253: break; - case 71: - { string.append('\''); - } - case 254: break; - case 72: - { string.append('\b'); - } - case 255: break; - case 73: - { string.append('\r'); - } - case 256: break; - case 74: - { string.append('\n'); - } - case 257: break; - case 75: - { string.append('\t'); - } - case 258: break; - case 76: - { string.append('\f'); - } - case 259: break; - case 77: - { throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 260: break; - case 78: - { string.append('\u00A7'); - } - case 261: break; - case 79: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); - } - case 262: break; - case 80: - { string.setLength(0); - yybegin(XML); - String s = yytext(); - s = s.substring(1, s.length() - 1); - if (s.contains(" ")){ - s = s.substring(0, s.indexOf(' ')); - } - xmlTagName = s; - string.append(yytext()); - } - case 263: break; - case 81: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); - } - case 264: break; - case 82: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); - } - case 265: break; - case 83: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); - } - case 266: break; - case 84: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); - } - case 267: break; - case 85: - { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); - } - case 268: break; - case 86: - { return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2)); - } - case 269: break; - case 87: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLAND, yytext()); - } - case 270: break; - case 88: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); - } - case 271: break; - case 89: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SET, yytext()); - } - case 272: break; - case 90: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); - } - case 273: break; - case 91: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); - } - case 274: break; - case 92: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); - } - case 275: break; - case 93: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); - } - case 276: break; - case 94: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); - } - case 277: break; - case 95: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); - } - case 278: break; - case 96: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.GET, yytext()); - } - case 279: break; - case 97: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); - } - case 280: break; - case 98: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); - } - case 281: break; - case 99: - { String t = yytext(); return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, t.substring(2, t.length() - 1)); - } - case 282: break; - case 100: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); - } - case 283: break; - case 101: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EACH, yytext()); - } - case 284: break; - case 102: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); - } - case 285: break; - case 103: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); - } - case 286: break; - case 104: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); - } - case 287: break; - case 105: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CALL, yytext()); - } - case 288: break; - case 106: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); - } - case 289: break; - case 107: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); - } - case 290: break; - case 108: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); - } - case 291: break; - case 109: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); - } - case 292: break; - case 110: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); - } - case 293: break; - case 111: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); - } - case 294: break; - case 112: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); - } - case 295: break; - case 113: - { char val = (char) Integer.parseInt(yytext().substring(1), 8); - string.append(val); - } - case 296: break; - case 114: - { char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); - } - case 297: break; - case 115: - { string.append(yytext()); - String endtagname = yytext(); - endtagname = endtagname.substring(2, endtagname.length() - 1); - if (endtagname.equals(xmlTagName)){ - yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML, string.toString()); - } - } - case 298: break; - case 116: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); - } - case 299: break; - case 117: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); - } - case 300: break; - case 118: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); - } - case 301: break; - case 119: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); - } - case 302: break; - case 120: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); - } - case 303: break; - case 121: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); - } - case 304: break; - case 122: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); - } - case 305: break; - case 123: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); - } - case 306: break; - case 124: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); - } - case 307: break; - case 125: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINT, yytext()); - } - case 308: break; - case 126: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); - } - case 309: break; - case 127: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); - } - case 310: break; - case 128: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); - } - case 311: break; - case 129: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); - } - case 312: break; - case 130: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.STATIC, yytext()); - } - case 313: break; - case 131: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); - } - case 314: break; - case 132: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); - } - case 315: break; - case 133: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); - } - case 316: break; - case 134: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); - } - case 317: break; - case 135: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); - } - case 318: break; - case 136: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); - } - case 319: break; - case 137: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); - } - case 320: break; - case 138: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); - } - case 321: break; - case 139: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); - } - case 322: break; - case 140: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); - } - case 323: break; - case 141: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); - } - case 324: break; - case 142: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); - } - case 325: break; - case 143: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); - } - case 326: break; - case 144: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DYNAMIC, yytext()); - } - case 327: break; - case 145: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); - } - case 328: break; - case 146: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); - } - case 329: break; - case 147: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); - } - case 330: break; - case 148: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); - } - case 331: break; - case 149: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); - } - case 332: break; - case 150: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); - } - case 333: break; - case 151: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTNUM, yytext()); - } - case 334: break; - case 152: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); - } - case 335: break; - case 153: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); - } - case 336: break; - case 154: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); - } - case 337: break; - case 155: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); - } - case 338: break; - case 156: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); - } - case 339: break; - case 157: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.NAMESPACE, yytext()); - } - case 340: break; - case 158: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); - } - case 341: break; - case 159: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); - } - case 342: break; - case 160: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND, yytext()); - } - case 343: break; - case 161: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); - } - case 344: break; - case 162: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); - } - case 345: break; - case 163: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); - } - case 346: break; - case 164: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); - } - case 347: break; - case 165: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); - } - case 348: break; - case 166: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); - } - case 349: break; - case 167: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); - } - case 350: break; - case 168: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETVERSION, yytext()); - } - case 351: break; - case 169: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIE, yytext()); - } - case 352: break; - case 170: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); - } - case 353: break; - case 171: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); - } - case 354: break; - case 172: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); - } - case 355: break; - case 173: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIENUM, yytext()); - } - case 356: break; - case 174: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); - } - case 357: break; - case 175: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IFFRAMELOADED, yytext()); - } - case 358: break; - case 176: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); - } - case 359: break; - case 177: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAP, yytext()); - } - case 360: break; - case 178: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); - } - case 361: break; - case 179: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); - } - case 362: break; - case 180: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLESNUM, yytext()); - } - case 363: break; - case 181: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAPNUM, yytext()); - } - case 364: break; - case 182: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); - } - case 365: break; - case 183: - { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); - } - case 366: 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/configuration/ConfigurationDirectory.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/ConfigurationDirectory.java index b577125e2..33ce112cd 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/ConfigurationDirectory.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/ConfigurationDirectory.java @@ -28,5 +28,4 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface ConfigurationDirectory { - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/GraphTextWriter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/GraphTextWriter.java index 0da97330e..6ef3ec732 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/GraphTextWriter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/GraphTextWriter.java @@ -34,7 +34,9 @@ public abstract class GraphTextWriter { protected CodeFormatting formatting; public static final int TRAIT_INSTANCE_INITIALIZER = -1; + public static final int TRAIT_CLASS_INITIALIZER = -2; + public static final int TRAIT_SCRIPT_INITIALIZER = -3; public CodeFormatting getFormatting() { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/ProtectTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/ProtectTag.java index 2543a0ee4..462d7a305 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/ProtectTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/ProtectTag.java @@ -111,5 +111,4 @@ public class ProtectTag extends Tag implements PasswordTag { public boolean hasPassword(String password) { return this.passwordHash.equals(MD5Crypt.crypt(password, 2)); } - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/PasswordTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/PasswordTag.java index 7ee8ea651..51bc47c63 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/PasswordTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/base/PasswordTag.java @@ -25,5 +25,4 @@ public interface PasswordTag { public void setPassword(String password); public boolean hasPassword(String password); - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/enums/ImageFormat.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/enums/ImageFormat.java index d41aa0dc3..0ba76c26c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/enums/ImageFormat.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/enums/ImageFormat.java @@ -33,5 +33,4 @@ public enum ImageFormat { public String getExtension() { return extension; } - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java index 74b57ac42..7296f86d8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java @@ -2,265 +2,313 @@ /* * Copyright (C) 2010-2016 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.tags.text; - - /** - * This class is a scanner generated by + * This class is a scanner generated by * JFlex 1.6.0 - * from the specification file C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/text.flex + * from the specification file + * C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/text.flex */ public final class TextLexer { - /** 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 PARAMETER = 2; - public static final int VALUE = 4; + /** + * 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 - }; + public static final int PARAMETER = 2; - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\12\0\1\20\1\21\1\21\1\20\22\0\1\3\1\0\1\15\4\0"+ - "\1\16\10\0\12\5\7\0\6\4\24\0\1\6\1\7\1\2\1\0"+ - "\1\1\1\0\1\5\1\10\3\5\1\13\7\1\1\12\3\1\1\14"+ - "\1\1\1\11\3\1\1\17\2\1\12\0\1\21\u1fa2\0\1\21\1\21"+ - "\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\udfe6\0"; + public static final int VALUE = 4; - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); + /** + * 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 + }; - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED + = "\12\0\1\20\1\21\1\21\1\20\22\0\1\3\1\0\1\15\4\0" + + "\1\16\10\0\12\5\7\0\6\4\24\0\1\6\1\7\1\2\1\0" + + "\1\1\1\0\1\5\1\10\3\5\1\13\7\1\1\12\3\1\1\14" + + "\1\1\1\11\3\1\1\17\2\1\12\0\1\21\u1fa2\0\1\21\1\21" + + "\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\udfe6\0"; - private static final String ZZ_ACTION_PACKED_0 = - "\3\0\1\1\1\2\1\1\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\10\1\0\1\23"; + /** + * Translates characters to character classes + */ + private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - private static int [] zzUnpackAction() { - int [] result = new int[25]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } + /** + * Translates DFA states to action switch labels. + */ + private static final int[] ZZ_ACTION = zzUnpackAction(); - 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); + private static final String ZZ_ACTION_PACKED_0 + = "\3\0\1\1\1\2\1\1\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\10\1\0\1\23"; + + private static int[] zzUnpackAction() { + int[] result = new int[25]; + 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\22\0\44\0\66\0\66\0\110\0\66\0\132"+ - "\0\66\0\154\0\176\0\66\0\66\0\66\0\66\0\66"+ - "\0\66\0\66\0\66\0\66\0\66\0\66\0\220\0\242"+ - "\0\66"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[25]; - 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 = - "\6\4\1\5\1\6\10\4\3\7\1\10\1\11\1\12"+ - "\1\7\1\10\2\7\5\10\2\7\1\10\1\12\1\7"+ - "\2\13\1\11\1\12\14\13\1\12\1\13\22\0\2\14"+ - "\1\15\3\14\1\16\1\17\1\20\1\21\1\22\1\23"+ - "\1\24\1\25\1\26\1\27\3\0\1\10\3\0\1\10"+ - "\2\0\5\10\2\0\1\10\5\0\1\12\14\0\1\12"+ - "\1\0\2\13\2\0\14\13\1\0\1\13\4\0\2\30"+ - "\2\0\1\30\2\0\1\30\12\0\2\31\2\0\1\31"+ - "\2\0\1\31\6\0"; + private static final String ZZ_ROWMAP_PACKED_0 + = "\0\0\0\22\0\44\0\66\0\66\0\110\0\66\0\132" + + "\0\66\0\154\0\176\0\66\0\66\0\66\0\66\0\66" + + "\0\66\0\66\0\66\0\66\0\66\0\66\0\220\0\242" + + "\0\66"; - private static int [] zzUnpackTrans() { - int [] result = new int[180]; - 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[25]; + 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 = - "\3\0\2\11\1\1\1\11\1\1\1\11\2\1\13\11"+ - "\1\1\1\0\1\11"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[25]; - 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 + = "\6\4\1\5\1\6\10\4\3\7\1\10\1\11\1\12" + + "\1\7\1\10\2\7\5\10\2\7\1\10\1\12\1\7" + + "\2\13\1\11\1\12\14\13\1\12\1\13\22\0\2\14" + + "\1\15\3\14\1\16\1\17\1\20\1\21\1\22\1\23" + + "\1\24\1\25\1\26\1\27\3\0\1\10\3\0\1\10" + + "\2\0\5\10\2\0\1\10\5\0\1\12\14\0\1\12" + + "\1\0\2\13\2\0\14\13\1\0\1\13\4\0\2\30" + + "\2\0\1\30\2\0\1\30\12\0\2\31\2\0\1\31" + + "\2\0\1\31\6\0"; - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; + private static int[] zzUnpackTrans() { + int[] result = new int[180]; + 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 + = "\3\0\2\11\1\1\1\11\1\1\1\11\2\1\13\11" + + "\1\1\1\0\1\11"; - /** 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[25]; + 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: */ StringBuilder string = null; + boolean finish = false; + boolean parameter = false; + String parameterName = null; /** @@ -279,480 +327,537 @@ public final class TextLexer { return yyline + 1; } - - - /** - * Creates a new scanner - * - * @param in the java.io.Reader to read input from. - */ - public TextLexer(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 < 114) { - 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 TextLexer(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 < 114) { + 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(); - } - - - /** - * 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; - } - - - /** - * 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]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * 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, TextParseException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - yychar+= zzMarkedPosL-zzStartRead; - - boolean zzR = false; - int zzCh; - int zzCharCount; - for (zzCurrentPosL = zzStartRead ; - zzCurrentPosL < zzMarkedPosL ; - zzCurrentPosL += zzCharCount ) { - zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); - zzCharCount = Character.charCount(zzCh); - switch (zzCh) { - case '\u000B': - case '\u000C': - case '\u0085': - case '\u2028': - case '\u2029': - yyline++; - yycolumn = 0; - zzR = false; - break; - case '\r': - yyline++; - yycolumn = 0; - zzR = true; - break; - case '\n': - if (zzR) - zzR = false; - else { - yyline++; - yycolumn = 0; - } - break; - default: - zzR = false; - yycolumn += zzCharCount; + /* translate stored positions */ + zzEndRead -= zzStartRead; + zzCurrentPos -= zzStartRead; + zzMarkedPos -= zzStartRead; + zzStartRead = 0; } - } - if (zzR) { - // peek one character ahead if it is \n (if we have counted one line too much) - boolean zzPeek; - if (zzMarkedPosL < zzEndReadL) - zzPeek = zzBufferL[zzMarkedPosL] == '\n'; - else if (zzAtEOF) - zzPeek = false; - else { - boolean eof = zzRefill(); - zzEndReadL = zzEndRead; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - if (eof) - zzPeek = false; - else - zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + /* 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; } - if (zzPeek) yyline--; - } - zzAction = -1; - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = ZZ_LEXSTATE[zzLexicalState]; + /* 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; + } - // set up zzAction for empty match case: - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - } + if (totalRead > 0) { + zzEndRead += totalRead; + if (totalRead == requested) { /* possibly more input available */ + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + --zzEndRead; + zzFinalHighSurrogate = 1; + } + } + return false; + } + + // totalRead = 0: End of stream + return true; + } + + /** + * Closes the input stream. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; /* indicate end of file */ + + zzEndRead = zzStartRead; /* invalidate buffer */ + + if (zzReader != null) { + zzReader.close(); + } + } + + /** + * Resets the scanner to read from a new input stream. + * Does not close the old reader. + * + * All internal variables are reset, the old input stream + * 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; + } + + /** + * 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]; + } + + throw new Error(message); + } + + /** + * Pushes the specified amount of characters back into the input stream. + * + * They will be read again by then next call of the scanning method + * + * @param number the number of characters to be read again. + * This number must not be greater than yylength()! + */ + public void yypushback(int number) { + if (number > yylength()) { + zzScanError(ZZ_PUSHBACK_2BIG); + } + + zzMarkedPos -= number; + } + + /** + * 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, TextParseException { + 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; + boolean zzR = false; + int zzCh; + int zzCharCount; + for (zzCurrentPosL = zzStartRead; + zzCurrentPosL < zzMarkedPosL; + zzCurrentPosL += zzCharCount) { + zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); + zzCharCount = Character.charCount(zzCh); + switch (zzCh) { + case '\u000B': + case '\u000C': + case '\u0085': + case '\u2028': + case '\u2029': + yyline++; + yycolumn = 0; + zzR = false; + break; + case '\r': + yyline++; + yycolumn = 0; + zzR = true; + break; + case '\n': + if (zzR) { + zzR = false; + } else { + yyline++; + yycolumn = 0; + } + break; + default: + zzR = false; + yycolumn += zzCharCount; + } + } + + if (zzR) { + // peek one character ahead if it is \n (if we have counted one line too much) + boolean zzPeek; + if (zzMarkedPosL < zzEndReadL) { + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + } else if (zzAtEOF) { + zzPeek = false; + } else { + boolean eof = zzRefill(); + zzEndReadL = zzEndRead; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + if (eof) { + zzPeek = false; + } else { + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + } + } + if (zzPeek) { + yyline--; + } + } + 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: { + if (string == null) { + string = new StringBuilder(); + } + string.append(yytext()); + } + case 20: + break; + case 2: { + parameter = true; + yybegin(PARAMETER); + if (string != null) { + String ret = string.toString(); + string = null; + return new ParsedSymbol(SymbolType.TEXT, ret); + } + } + case 21: + break; + case 3: { + if (!parameter) { + if (string == null) { + string = new StringBuilder(); + } + string.append(yytext()); + } + } + case 22: + break; + case 4: { + parameterName = yytext(); + yybegin(VALUE); + } + case 23: + break; + case 5: { + yybegin(YYINITIAL); + parameter = false; + } + case 24: + break; + case 6: { + } + case 25: + break; + case 7: { + yybegin(PARAMETER); + return new ParsedSymbol(SymbolType.PARAMETER, new Object[]{parameterName, yytext()}); + } + case 26: + break; + case 8: { + throw new TextParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); + } + case 27: + break; + case 9: { + if (string == null) { + string = new StringBuilder(); + } + string.append(']'); + } + case 28: + break; + case 10: { + if (string == null) { + string = new StringBuilder(); + } + string.append('['); + } + case 29: + break; + case 11: { + if (string == null) { + string = new StringBuilder(); + } + string.append('\\'); + } + case 30: + break; + case 12: { + if (string == null) { + string = new StringBuilder(); + } + string.append('\b'); + } + case 31: + break; + case 13: { + if (string == null) { + string = new StringBuilder(); + } + string.append('\t'); + } + case 32: + break; + case 14: { + if (string == null) { + string = new StringBuilder(); + } + string.append('\n'); + } + case 33: + break; + case 15: { + if (string == null) { + string = new StringBuilder(); + } + string.append('\f'); + } + case 34: + break; + case 16: { + if (string == null) { + string = new StringBuilder(); + } + string.append('\r'); + } + case 35: + break; + case 17: { + if (string == null) { + string = new StringBuilder(); + } + string.append('\"'); + } + case 36: + break; + case 18: { + if (string == null) { + string = new StringBuilder(); + } + string.append('\''); + } + case 37: + break; + case 19: { + char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); + } + case 38: + break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + switch (zzLexicalState) { + case YYINITIAL: { + if (finish) { + return null; + } else { + finish = true; + return new ParsedSymbol(SymbolType.TEXT, string == null ? null : string.toString()); + } + } + case 26: + break; + default: { + return null; + } + } + } else { + zzScanError(ZZ_NO_MATCH); + } + } } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: - { if (string == null) string = new StringBuilder(); string.append(yytext()); - } - case 20: break; - case 2: - { parameter = true; - yybegin(PARAMETER); - if (string != null){ - String ret = string.toString(); - string = null; - return new ParsedSymbol(SymbolType.TEXT, ret); - } - } - case 21: break; - case 3: - { if (!parameter) { if (string == null) string = new StringBuilder(); string.append(yytext()); } - } - case 22: break; - case 4: - { parameterName = yytext(); - yybegin(VALUE); - } - case 23: break; - case 5: - { yybegin(YYINITIAL); - parameter = false; - } - case 24: break; - case 6: - { - } - case 25: break; - case 7: - { yybegin(PARAMETER); - return new ParsedSymbol(SymbolType.PARAMETER, new Object[] {parameterName, yytext()}); - } - case 26: break; - case 8: - { throw new TextParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 27: break; - case 9: - { if (string == null) string = new StringBuilder(); string.append(']'); - } - case 28: break; - case 10: - { if (string == null) string = new StringBuilder(); string.append('['); - } - case 29: break; - case 11: - { if (string == null) string = new StringBuilder(); string.append('\\'); - } - case 30: break; - case 12: - { if (string == null) string = new StringBuilder(); string.append('\b'); - } - case 31: break; - case 13: - { if (string == null) string = new StringBuilder(); string.append('\t'); - } - case 32: break; - case 14: - { if (string == null) string = new StringBuilder(); string.append('\n'); - } - case 33: break; - case 15: - { if (string == null) string = new StringBuilder(); string.append('\f'); - } - case 34: break; - case 16: - { if (string == null) string = new StringBuilder(); string.append('\r'); - } - case 35: break; - case 17: - { if (string == null) string = new StringBuilder(); string.append('\"'); - } - case 36: break; - case 18: - { if (string == null) string = new StringBuilder(); string.append('\''); - } - case 37: break; - case 19: - { char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); - } - case 38: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case YYINITIAL: { - if (finish) {return null;} else {finish=true; return new ParsedSymbol(SymbolType.TEXT, string == null ? null : string.toString());} - } - case 26: break; - default: - { - return null; - } - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } } - } - - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Frame.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Frame.java index 84d3ccb84..b209666cc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Frame.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Frame.java @@ -59,6 +59,7 @@ public class Frame implements TreeItem, Exportable { public boolean layersChanged; public String label = null; + public boolean namedAnchor = false; public Frame(Timeline timeline, int frame) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/annotations/SWFVersion.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/annotations/SWFVersion.java index 8cd44b6a3..5e51da556 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/annotations/SWFVersion.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/annotations/SWFVersion.java @@ -33,5 +33,4 @@ public @interface SWFVersion { int from() default 1; int to() default Integer.MAX_VALUE; - } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/DottedChain.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/DottedChain.java index 2bd29e676..b2f27a692 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/DottedChain.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/DottedChain.java @@ -67,6 +67,7 @@ public class DottedChain implements Serializable { private final int length; private final int hash; + private boolean isNull = false; public static final DottedChain parse(String name) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/helpers/MD5Crypt.java b/libsrc/ffdec_lib/src/com/jpexs/helpers/MD5Crypt.java index 6021501d1..f82ab118d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/helpers/MD5Crypt.java +++ b/libsrc/ffdec_lib/src/com/jpexs/helpers/MD5Crypt.java @@ -33,6 +33,7 @@ public class MD5Crypt { private static final String HASH64_CHARS = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; public static final String MAGIC = "$1$"; + public static final String MAGIC_APACHE = "$apr1$"; public static boolean checkPassword(String password, String hash) { @@ -124,11 +125,11 @@ public class MD5Crypt { a.update(constBytes); //Add the constant string $1$ to digest A a.update(saltBytes); //Add the salt to digest A - //For each block of 16 bytes in the password string, add digest B to digest A + //For each block of 16 bytes in the password string, add digest B to digest A for (int i = passwordBytes.length; i > 0; i -= 16) { if (i >= 16) { a.update(digest_b); - } else { //For the remaining N bytes of the password string, add the first N bytes of digest B to digest A + } else { //For the remaining N bytes of the password string, add the first N bytes of digest B to digest A a.update(digest_b, 0, i); } } @@ -242,5 +243,4 @@ public class MD5Crypt { } return magic + salt + "$" + result.toString(); } - } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java index a955081a7..08824f235 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3Test.java @@ -1144,5 +1144,4 @@ public class ActionScript3Test extends ActionScriptTestBase { + "var b1:* = /[0-9AB]+/;\r\n" + "var b2:* = /[0-9AB]+/;\r\n", false); } - } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/FileTestBase.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/FileTestBase.java index aecaf7328..a5711fb63 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/FileTestBase.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/FileTestBase.java @@ -31,6 +31,7 @@ public abstract class FileTestBase { protected abstract String[] getTestDataDirs(); protected static final String FREE_ACTIONSCRIPT_AS2 = "testdata/freeactionscript.com/as2"; + protected static final String FREE_ACTIONSCRIPT_AS3 = "testdata/freeactionscript.com/as3"; @DataProvider(name = "provideFiles") diff --git a/src/com/jpexs/decompiler/flash/gui/DebugPanel.java b/src/com/jpexs/decompiler/flash/gui/DebugPanel.java index 47985cf17..8660bf7f2 100644 --- a/src/com/jpexs/decompiler/flash/gui/DebugPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/DebugPanel.java @@ -128,8 +128,8 @@ public class DebugPanel extends JPanel { debug.watch.add.readwrite = Read+Write error.debug.watch.add = Cannot add watch to this variable. - - + + MouseAdapter watchHandler = new MouseAdapter() { @Override @@ -311,12 +311,12 @@ public class DebugPanel extends JPanel { safeSetTreeModel(debugScopeTable, new ABCPanel.VariablesTableModel(debugScopeTable, f.scopeChain, f.scopeChainFrameIds)); /*TableModelListener refreshListener = new TableModelListener() { - @Override - public void tableChanged(TableModelEvent e) { - Main.getDebugHandler().refreshFrame(); - refresh(); - } - };*/ + @Override + public void tableChanged(TableModelEvent e) { + Main.getDebugHandler().refreshFrame(); + refresh(); + } + };*/ TreeModelListener refreshListener = new TreeModelListener() { @Override public void treeNodesChanged(TreeModelEvent e) { diff --git a/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java b/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java index 69c23c8d7..85c498372 100644 --- a/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java +++ b/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java @@ -74,15 +74,19 @@ public class DebuggerHandler implements DebugConnectionListener { private DebuggerCommands commands = null; private List swfs = new ArrayList<>(); + private boolean paused = true; private Map modulePaths = new HashMap<>(); + private Map moduleToSwfIndex = new HashMap<>(); private Map scriptToModule = new HashMap<>(); private Map moduleToTraitIndex = new HashMap<>(); + private Map moduleToClassIndex = new HashMap<>(); + private Map moduleToMethodIndex = new HashMap<>(); private Map> toAddBPointMap = new HashMap<>(); @@ -294,6 +298,7 @@ public class DebuggerHandler implements DebugConnectionListener { } private InFrame frame; + private InConstantPool pool; private InBreakAtExt breakInfo; @@ -562,10 +567,10 @@ public class DebuggerHandler implements DebugConnectionListener { }); /*int numScript = con.getMessage(InNumScript.class).num; - for (int i = 0; i < numScript; i++) { - InScript sc = con.getMessage(InScript.class); - moduleNames.put(sc.module, sc.name); - }*/ + for (int i = 0; i < numScript; i++) { + InScript sc = con.getMessage(InScript.class); + moduleNames.put(sc.module, sc.name); + }*/ //Pattern patMainFrame = Pattern.compile("^Actions for Scene ([0-9]+): Frame ([0-9]+) of Layer Name .*$"); //Pattern patSymbol = Pattern.compile("^Actions for Symbol ([0-9]+): Frame ([0-9]+) of Layer Name .*$"); //Pattern patAS2 = Pattern.compile("^([^:]+): .*\\.as$"); diff --git a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java index efcafbb42..7780a197a 100644 --- a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java +++ b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java @@ -869,10 +869,10 @@ public final class ImagePanel extends JPanel implements MediaDisplay { a.setAddress(ip); a.execute(lda); /*System.err.print("" + a + ", stack: ["); - for (Object o : lda.stack) { - System.err.print("" + o + ","); - } - System.err.println("]");*/ + for (Object o : lda.stack) { + System.err.print("" + o + ","); + } + System.err.println("]");*/ if (lda.returnValue != null) { return lda.returnValue; }