diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ad6a8ca8..b99f736df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ All notable changes to this project will be documented in this file. - [#2324] AS3 direct editation - nested loop continue/break (with labels) - [#2325] AS3 direct editation - allow single quoted attributes in XML - [#2329] AS3 - imports for standalone functions +- [#2331] AS1/2 lite - support for fscommand2, `#strict` directive ## [21.1.0] - 2024-09-23 ### Added @@ -3594,6 +3595,7 @@ Major version of SWF to XML export changed to 2. [#2324]: https://www.free-decompiler.com/flash/issues/2324 [#2325]: https://www.free-decompiler.com/flash/issues/2325 [#2329]: https://www.free-decompiler.com/flash/issues/2329 +[#2331]: https://www.free-decompiler.com/flash/issues/2331 [#943]: https://www.free-decompiler.com/flash/issues/943 [#1812]: https://www.free-decompiler.com/flash/issues/1812 [#2287]: https://www.free-decompiler.com/flash/issues/2287 diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index 750babcbd..143874001 100644 Binary files a/lib/jsyntaxpane-0.9.5.jar and b/lib/jsyntaxpane-0.9.5.jar differ diff --git a/libsrc/ffdec_lib/lexers/actionscript_script.flex b/libsrc/ffdec_lib/lexers/actionscript_script.flex index a262f7410..5a9aac868 100644 --- a/libsrc/ffdec_lib/lexers/actionscript_script.flex +++ b/libsrc/ffdec_lib/lexers/actionscript_script.flex @@ -324,6 +324,9 @@ Preprocessor = \u00A7\u00A7 {Identifier} /* unloadMovieNum */ [uU][nN][lL][oO][aA][dD][mM][oO][vV][iI][eE][nN][uU][mM] { if (caseSensitiveIdentifiers && !"unloadMovieNum".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); } + /* fscommand2 */ + [fF][sS][cC][oO][mM][mM][aA][nN][dD] 2 { if (caseSensitiveIdentifiers && !"fscommand2".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND2, yytext()); } /* fscommand */ [fF][sS][cC][oO][mM][mM][aA][nN][dD] { if (caseSensitiveIdentifiers && !"fscommand".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND, yytext()); } @@ -389,6 +392,8 @@ Preprocessor = \u00A7\u00A7 {Identifier} "and" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLAND, yytext()); } "or" { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLOR, yytext()); } + "#" {Identifier} { return new ParsedSymbol(SymbolGroup.DIRECTIVE, SymbolType.DIRECTIVE, yytext().substring(1)); } + /* string literal */ \" { string.setLength(0); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFInputStream.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFInputStream.java index 715bba0eb..88ccf04ec 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFInputStream.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFInputStream.java @@ -17,6 +17,8 @@ package com.jpexs.decompiler.flash; import com.jpexs.decompiler.flash.action.Action; +import com.jpexs.decompiler.flash.action.flashlite.ActionFSCommand2; +import com.jpexs.decompiler.flash.action.flashlite.ActionStrictMode; import com.jpexs.decompiler.flash.action.special.ActionEnd; import com.jpexs.decompiler.flash.action.special.ActionUnknown; import com.jpexs.decompiler.flash.action.swf3.ActionGetURL; @@ -1935,6 +1937,11 @@ public class SWFInputStream implements AutoCloseable { actionLength = readUI16("actionLength"); } switch (actionCode) { + // Flash lite Actions: + case 0x2D: + return new ActionFSCommand2(getCharset()); + case 0x89: + return new ActionStrictMode(this); // SWF3 Actions case 0x81: return new ActionGotoFrame(actionLength, this); 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 794193465..753f484e0 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 @@ -17,13 +17,17 @@ package com.jpexs.decompiler.flash.action.flashlite; import com.jpexs.decompiler.flash.BaseLocalData; +import com.jpexs.decompiler.flash.SourceGeneratorLocalData; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.LocalDataArea; import com.jpexs.decompiler.flash.action.as2.Trait; import com.jpexs.decompiler.flash.action.model.FSCommand2ActionItem; +import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; +import static com.jpexs.decompiler.graph.GraphTargetItem.toSourceMerge; import com.jpexs.decompiler.graph.SecondPassData; +import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TranslateStack; import java.util.ArrayList; import java.util.HashMap; @@ -53,13 +57,12 @@ public class ActionFSCommand2 extends Action { @Override public void translate(Map> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartItem, TranslateStack stack, List output, HashMap regNames, HashMap variables, HashMap functions, int staticOperation, String path) { long numArgs = popLong(stack); - GraphTargetItem command = stack.pop(); List args = new ArrayList<>(); for (long l = 0; l < numArgs; l++) { args.add(stack.pop()); } - stack.push(new FSCommand2ActionItem(this, lineStartItem, command, args)); - } + stack.push(new FSCommand2ActionItem(this, lineStartItem, args)); + } @Override public int getStackPopCount(BaseLocalData localData, TranslateStack stack) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/flashlite/ActionStrictMode.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/flashlite/ActionStrictMode.java index c7073ebef..eb236a322 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/flashlite/ActionStrictMode.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/flashlite/ActionStrictMode.java @@ -28,6 +28,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SecondPassData; import com.jpexs.decompiler.graph.TranslateStack; +import com.jpexs.helpers.utf8.Utf8Helper; import java.io.IOException; import java.util.HashMap; import java.util.List; @@ -45,6 +46,15 @@ public class ActionStrictMode extends Action { */ public int mode; + /** + * Constructor + * @param mode Mode + */ + public ActionStrictMode(int mode) { + super(0x89, 1, Utf8Helper.charsetName); + this.mode = mode; + } + /** * Constructor * @param sis SWF input stream diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java index f14e4c3d3..b30499202 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommand2ActionItem.java @@ -44,15 +44,9 @@ public class FSCommand2ActionItem extends ActionItem { */ public List arguments; - /** - * Command - */ - public GraphTargetItem command; - @Override public void visit(GraphTargetVisitorInterface visitor) { visitor.visitAll(arguments); - visitor.visit(command); } /** @@ -63,20 +57,20 @@ public class FSCommand2ActionItem extends ActionItem { * @param command Command * @param arguments Arguments */ - public FSCommand2ActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem command, List arguments) { + public FSCommand2ActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, List arguments) { super(instruction, lineStartIns, PRECEDENCE_PRIMARY); - this.command = command; this.arguments = arguments; } @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { - writer.append("FSCommand2"); + writer.append("fscommand2"); writer.spaceBeforeCallParenthesies(arguments.size()); writer.append("("); - command.toString(writer, localData); for (int t = 0; t < arguments.size(); t++) { - writer.append(","); + if (t > 0) { + writer.append(","); + } arguments.get(t).toString(writer, localData); } return writer.append(")"); @@ -85,7 +79,6 @@ public class FSCommand2ActionItem extends ActionItem { @Override public List getNeededSources() { List ret = super.getNeededSources(); - ret.addAll(command.getNeededSources()); for (GraphTargetItem ti : arguments) { ret.addAll(ti.getNeededSources()); } @@ -102,7 +95,6 @@ public class FSCommand2ActionItem extends ActionItem { for (GraphTargetItem a : arguments) { ret.addAll(a.toSource(localData, generator)); } - ret.addAll(command.toSource(localData, generator)); ret.add(new ActionPush((Long) (long) arguments.size(), charset)); ret.add(new ActionFSCommand2(charset)); return ret; @@ -117,7 +109,6 @@ public class FSCommand2ActionItem extends ActionItem { public int hashCode() { int hash = 3; hash = 71 * hash + Objects.hashCode(this.arguments); - hash = 71 * hash + Objects.hashCode(this.command); return hash; } @@ -136,9 +127,6 @@ public class FSCommand2ActionItem extends ActionItem { if (!Objects.equals(this.arguments, other.arguments)) { return false; } - if (!Objects.equals(this.command, other.command)) { - return false; - } return true; } @@ -157,9 +145,7 @@ public class FSCommand2ActionItem extends ActionItem { if (!GraphTargetItem.objectsValueEquals(this.arguments, other.arguments)) { return false; } - if (!GraphTargetItem.objectsValueEquals(this.command, other.command)) { - return false; - } + return true; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java index 25dc3e0a1..a23720477 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/FSCommandActionItem.java @@ -44,16 +44,22 @@ public class FSCommandActionItem extends ActionItem { */ private final GraphTargetItem command; + /** + * Parameter + */ + private final GraphTargetItem parameter; /** * Constructor. * * @param instruction Instruction * @param lineStartIns Line start instruction * @param command Command + * @param parameter Parameter */ - public FSCommandActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem command) { + public FSCommandActionItem(GraphSourceItem instruction, GraphSourceItem lineStartIns, GraphTargetItem command, GraphTargetItem parameter) { super(instruction, lineStartIns, PRECEDENCE_PRIMARY); this.command = command; + this.parameter = parameter; } @Override @@ -62,6 +68,10 @@ public class FSCommandActionItem extends ActionItem { writer.spaceBeforeCallParenthesies(1); writer.append("("); command.appendTry(writer, localData); + if (parameter != null) { + writer.append(","); + parameter.appendTry(writer, localData); + } return writer.append(")"); } @@ -78,10 +88,13 @@ public class FSCommandActionItem extends ActionItem { private List toSource(SourceGeneratorLocalData localData, SourceGenerator generator, boolean needsReturn) throws CompilationException { ActionSourceGenerator asGenerator = (ActionSourceGenerator) generator; String charset = asGenerator.getCharset(); - if ((command instanceof DirectValueActionItem) && ((DirectValueActionItem) command).isString()) { - return toSourceMerge(localData, generator, new ActionGetURL("FSCommand:" + ((DirectValueActionItem) command).getAsString(), "", charset)); + if ((command instanceof DirectValueActionItem) + && ((DirectValueActionItem) command).isString() + && (parameter == null || + ((parameter instanceof DirectValueActionItem) && ((DirectValueActionItem) parameter).isString()))) { + return toSourceMerge(localData, generator, new ActionGetURL("FSCommand:" + ((DirectValueActionItem) command).getAsString(), parameter == null ? "" : ((DirectValueActionItem) parameter).getAsString(), charset)); } - return toSourceMerge(localData, generator, new AddActionItem(null, null, asGenerator.pushConstTargetItem("FSCommand:"), command, true), asGenerator.pushConstTargetItem(""), new ActionGetURL2(1/*GET*/, false, false, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); + return toSourceMerge(localData, generator, new AddActionItem(null, null, asGenerator.pushConstTargetItem("FSCommand:"), command, true), parameter == null ? asGenerator.pushConstTargetItem("") : parameter, new ActionGetURL2(1/*GET*/, false, false, charset), needsReturn ? new ActionPush(new Object[]{Undefined.INSTANCE, Undefined.INSTANCE}, charset) : null); } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StrictModeActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StrictModeActionItem.java index f3005e733..663439c69 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StrictModeActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/StrictModeActionItem.java @@ -16,9 +16,14 @@ */ package com.jpexs.decompiler.flash.action.model; +import com.jpexs.decompiler.flash.SourceGeneratorLocalData; +import com.jpexs.decompiler.flash.action.flashlite.ActionStrictMode; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; +import com.jpexs.decompiler.graph.CompilationException; import com.jpexs.decompiler.graph.GraphSourceItem; +import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.model.LocalData; +import java.util.List; /** * Strict mode. @@ -46,15 +51,24 @@ public class StrictModeActionItem extends ActionItem { @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) { - writer.append("StrictMode"); - writer.spaceBeforeCallParenthesies(0); - // I still don't know how AS source of Strict Mode instruction looks like, assuming this... - return writer.append("(").append(mode).append(");"); + if (mode == 1) { + writer.append("#strict"); + } else { + writer.append("§§strict"); + writer.spaceBeforeCallParenthesies(0); + writer.append("(").append(mode).append(")"); + } + return writer; } + @Override + public List toSource(SourceGeneratorLocalData localData, SourceGenerator generator) throws CompilationException { + return toSourceMerge(localData, generator, new ActionStrictMode(mode)); + } + @Override public boolean hasReturnValue() { - return false; //FIXME ? + return false; } @Override @@ -81,4 +95,9 @@ public class StrictModeActionItem extends ActionItem { public boolean hasSideEffect() { return true; } + + @Override + public boolean needsSemicolon() { + return false; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java index f9bef1727..eacabe4ad 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java @@ -32,6 +32,7 @@ import com.jpexs.decompiler.flash.action.model.DeleteActionItem; import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; import com.jpexs.decompiler.flash.action.model.EnumerateActionItem; import com.jpexs.decompiler.flash.action.model.EvalActionItem; +import com.jpexs.decompiler.flash.action.model.FSCommand2ActionItem; import com.jpexs.decompiler.flash.action.model.FSCommandActionItem; import com.jpexs.decompiler.flash.action.model.FunctionActionItem; import com.jpexs.decompiler.flash.action.model.GetMemberActionItem; @@ -72,6 +73,7 @@ import com.jpexs.decompiler.flash.action.model.StartDragActionItem; import com.jpexs.decompiler.flash.action.model.StopActionItem; import com.jpexs.decompiler.flash.action.model.StopAllSoundsActionItem; import com.jpexs.decompiler.flash.action.model.StopDragActionItem; +import com.jpexs.decompiler.flash.action.model.StrictModeActionItem; import com.jpexs.decompiler.flash.action.model.StringExtractActionItem; import com.jpexs.decompiler.flash.action.model.StringLengthActionItem; import com.jpexs.decompiler.flash.action.model.TargetPathActionItem; @@ -124,6 +126,7 @@ import com.jpexs.decompiler.flash.action.model.operations.StringNeActionItem; import com.jpexs.decompiler.flash.action.model.operations.SubtractActionItem; import com.jpexs.decompiler.flash.action.model.operations.URShiftActionItem; import com.jpexs.decompiler.flash.action.parser.ActionParseException; +import static com.jpexs.decompiler.flash.action.parser.script.SymbolType.FSCOMMAND; import com.jpexs.decompiler.flash.action.swf4.ActionIf; import com.jpexs.decompiler.flash.action.swf4.ActionPush; import com.jpexs.decompiler.flash.action.swf4.ConstantIndex; @@ -590,9 +593,30 @@ public class ActionScript2Parser { break; case FSCOMMAND: expectedType(SymbolType.PARENT_OPEN); - ret = new FSCommandActionItem(null, null, expression(inFunction, inMethod, inTellTarget, true, variables, functions, false, hasEval)); + GraphTargetItem command = expression(inFunction, inMethod, inTellTarget, true, variables, functions, false, hasEval); + s = lex(); + GraphTargetItem parameter = null; + if (s.isType(SymbolType.COMMA)) { + parameter = expression(inFunction, inMethod, inTellTarget, true, variables, functions, false, hasEval); + } else { + lexer.pushback(s); + } + ret = new FSCommandActionItem(null, null, command, parameter); expectedType(SymbolType.PARENT_CLOSE); break; + case FSCOMMAND2: + expectedType(SymbolType.PARENT_OPEN); + GraphTargetItem arg0 = expression(inFunction, inMethod, inTellTarget, true, variables, functions, false, hasEval); + List args = new ArrayList<>(); + args.add(arg0); + s = lex(); + while (s.isType(SymbolType.COMMA)) { + args.add(0, expression(inFunction, inMethod, inTellTarget, true, variables, functions, false, hasEval)); + s = lex(); + } + expected(s, lexer.yyline(), SymbolType.PARENT_CLOSE); + ret = new FSCommand2ActionItem(null, null, args); + break; case SET: expectedType(SymbolType.PARENT_OPEN); GraphTargetItem name1 = (expression(inFunction, inMethod, inTellTarget, true, variables, functions, false, hasEval)); @@ -1382,6 +1406,15 @@ public class ActionScript2Parser { System.out.println("/command"); } return new EmptyCommand(); + case DIRECTIVE: + switch((String)s.value) { + case "strict": + ret = new StrictModeActionItem(null, null, 1); + break; + default: + throw new ActionParseException("Unknown directive: #" + s.value, lexer.yyline()); + } + break; default: lexer.pushback(s); ret = expression(inFunction, inMethod, inTellTarget, true, variables, functions, true, hasEval); @@ -1770,6 +1803,11 @@ public class ActionScript2Parser { case "pop": ret = new PopItem(null, null); break; + case "strict": + s = lexer.lex(); + expected(s, lexer.yyline(), SymbolType.INTEGER); + ret = new StrictModeActionItem(null, null, (int) (long) (Long) s.value); + break; case "goto": //TODO throw new ActionParseException("Compiling §§" + s.value + " is not available, sorry", lexer.yyline()); default: 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 1b61e6ea1..75db8a6d9 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 @@ -1,5 +1,7 @@ +/* The following code was generated by JFlex 1.6.0 */ + /* - * Copyright (C) 2010-2024 JPEXS, All rights reserved. + * 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 @@ -15,1241 +17,1209 @@ * 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 - * JFlex 1.6.0 from the specification file - * C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_script.flex + * 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_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; + 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; - /** - * 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, 3, 3, 4, 4 - }; + /** + * 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, 3, 3, 4, 4 + }; - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED - = "\11\7\1\3\1\2\1\124\1\125\1\1\16\7\4\0\1\3\1\112" - + "\1\20\1\0\1\6\1\122\1\116\1\21\1\77\1\100\1\5\1\120" - + "\1\106\1\17\1\10\1\4\1\11\3\15\4\15\2\12\1\115\1\105" - + "\1\111\1\107\1\110\1\114\1\123\1\60\1\14\1\61\1\64\1\16" - + "\1\67\1\53\1\73\1\74\2\6\1\57\1\70\1\63\1\62\1\66" - + "\1\75\1\56\1\65\1\54\1\55\1\72\1\76\1\13\1\71\1\6" - + "\1\103\1\22\1\104\1\121\1\6\1\0\1\27\1\24\1\31\1\40" - + "\1\26\1\41\1\52\1\44\1\36\1\6\1\30\1\42\1\47\1\34" - + "\1\33\1\45\1\75\1\25\1\32\1\35\1\37\1\50\1\43\1\51" - + "\1\46\1\6\1\101\1\117\1\102\1\113\6\7\1\126\32\7\2\0" - + "\4\6\1\0\1\23\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\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\6\0\51\6\6\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" - + "\4\0\4\6\15\0\6\7\5\0\1\6\4\0\13\7\1\0\1\7" - + "\3\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\2\0\1\7" - + "\30\6\4\7\1\6\11\7\1\6\3\7\1\6\5\7\22\0\31\6" - + "\3\7\4\0\13\6\5\0\30\6\1\0\6\6\1\0\2\7\6\0" - + "\10\7\52\6\72\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\4\6\7\0\2\6\1\0" - + "\1\7\2\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\7\0\1\6\6\7\1\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\7\0\3\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\6\0\5\7\10\6" - + "\1\0\3\6\1\0\27\6\1\0\20\6\2\0\1\7\1\6\7\7" - + "\1\0\3\7\1\0\4\7\7\0\2\7\1\0\3\6\2\0\1\6" - + "\2\0\2\6\2\7\2\0\12\7\20\0\1\6\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\6\0\2\6" - + "\1\0\2\6\2\7\2\0\12\7\1\0\2\6\15\0\4\7\11\6" - + "\1\0\3\6\1\0\51\6\2\7\1\6\7\7\1\0\3\7\1\0" - + "\4\7\1\6\5\0\3\6\1\7\7\0\3\6\2\7\2\0\12\7" - + "\12\0\6\6\1\0\3\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\4\0\10\6\10\7\1\0\12\7\47\0\2\6\1\0\1\6" - + "\1\0\5\6\1\0\30\6\1\0\1\6\1\0\12\6\1\7\2\6" - + "\11\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\126\6\2\0\6\6\3\0\u026c\6\2\0" - + "\21\6\1\0\32\6\5\0\113\6\3\0\13\6\7\0\22\6\4\7" - + "\11\0\23\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\17\7\6\0\131\6\7\0\5\6\2\7\42\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\32\6\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\1\0\20\7\61\0" - + "\5\7\57\6\21\7\10\6\3\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\2\0\11\6\7\0\53\6\2\0" - + "\3\6\20\0\3\7\1\0\25\7\4\6\1\7\6\6\1\7\2\6" - + "\3\7\1\6\5\0\300\6\100\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\124\1\124\5\7\20\0\2\6" - + "\23\0\1\6\13\0\5\7\1\0\12\7\1\0\1\6\15\0\1\6" - + "\20\0\15\6\3\0\41\6\17\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\345\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\53\6\1\0\136\6" - + "\21\0\40\6\60\0\20\6\u0200\0\u19c0\6\100\0\u568d\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\2\7\120\6\2\7\45\0\11\6\2\0\147\6" - + "\2\0\100\6\5\0\2\6\1\0\1\6\1\0\5\6\30\0\20\6" - + "\1\7\3\6\1\7\4\6\1\7\27\6\5\7\4\0\1\7\13\0" - + "\1\6\7\0\64\6\14\0\2\7\62\6\22\7\12\0\12\7\6\0" - + "\22\7\6\6\3\0\1\6\1\0\2\6\13\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\16\6\6\0\163\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\20\7\3\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\17\0\1\7\37\0\40\6\15\0\36\6" - + "\5\0\46\6\5\7\5\0\36\6\2\0\44\6\4\0\10\6\1\0" - + "\5\6\52\0\236\6\2\0\12\7\6\0\44\6\4\0\44\6\4\0" - + "\50\6\10\0\64\6\14\0\13\6\1\0\17\6\1\0\7\6\1\0" - + "\2\6\1\0\13\6\1\0\17\6\1\0\7\6\1\0\2\6\103\0" - + "\u0137\6\11\0\26\6\12\0\10\6\30\0\6\6\1\0\52\6\1\0" - + "\11\6\105\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\101\0\23\6\1\0" - + "\2\6\12\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" - + "\35\6\2\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\67\0\63\6\15\0\63\6\15\0\44\6" - + "\4\7\10\0\12\7\u0146\0\52\6\1\0\2\7\3\0\2\6\116\0" - + "\35\6\12\0\1\6\10\0\26\6\13\7\37\0\22\6\4\7\52\0" - + "\25\6\33\0\27\6\11\0\3\7\65\6\17\7\37\0\13\7\2\6" - + "\2\7\1\6\11\0\4\7\55\6\13\7\2\0\1\7\4\0\1\7" - + "\12\0\1\7\2\0\31\6\7\0\12\7\6\0\3\7\44\6\16\7" - + "\1\0\12\7\4\0\1\6\2\7\1\6\10\0\43\6\1\7\2\0" - + "\1\6\11\0\3\7\60\6\16\7\4\6\4\0\4\7\1\0\14\7" - + "\1\6\1\0\1\6\43\0\22\6\1\0\31\6\14\7\6\0\1\7" - + "\101\0\7\6\1\0\1\6\1\0\4\6\1\0\17\6\1\0\12\6" - + "\7\0\57\6\14\7\5\0\12\7\6\0\4\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\1\0" - + "\2\7\1\6\7\7\2\0\2\7\2\0\3\7\2\0\1\6\6\0" - + "\1\7\5\0\5\6\2\7\2\0\7\7\3\0\5\7\213\0\65\6" - + "\22\7\4\6\5\0\12\7\4\0\1\7\3\6\36\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" - + "\27\0\4\6\2\7\42\0\60\6\21\7\3\0\1\6\13\0\12\7" - + "\46\0\53\6\15\7\1\6\7\0\12\7\66\0\33\6\2\0\17\7" - + "\4\0\12\7\6\0\7\6\271\0\54\6\17\7\145\0\100\6\12\7" - + "\25\0\10\6\2\0\1\6\2\0\10\6\1\0\2\6\1\0\30\6" - + "\6\7\1\0\2\7\2\0\4\7\1\6\1\7\1\6\2\7\14\0" - + "\12\7\106\0\10\6\2\0\47\6\7\7\2\0\7\7\1\6\1\0" - + "\1\6\1\7\33\0\1\6\12\7\50\6\7\7\1\6\4\7\10\0" - + "\1\7\10\0\1\6\13\7\56\6\20\7\3\0\1\6\22\0\111\6" - + "\u0107\0\11\6\1\0\45\6\10\7\1\0\10\7\1\6\17\0\12\7" - + "\30\0\36\6\2\0\26\7\1\0\16\7\111\0\7\6\1\0\2\6" - + "\1\0\46\6\6\7\3\0\1\7\1\0\2\7\1\0\7\7\1\6" - + "\1\7\10\0\12\7\6\0\6\6\1\0\2\6\1\0\40\6\5\7" - + "\1\0\2\7\1\0\5\7\1\6\7\0\12\7\u0136\0\23\6\4\7" - + "\271\0\1\6\54\0\4\6\37\0\u039a\6\146\0\157\6\21\0\304\6" - + "\u0a4c\0\141\6\17\0\u042f\6\1\0\11\7\u0fc7\0\u0247\6\u21b9\0\u0239\6" - + "\7\0\37\6\1\0\12\7\6\0\117\6\1\0\12\7\6\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\u02b0\0\100\6\200\0\113\6\4\0\1\7\1\6" - + "\67\7\7\0\4\7\15\6\100\0\2\6\1\0\1\6\1\7\13\0" - + "\2\7\16\0\u17f8\6\10\0\u04d6\6\52\0\11\6\u22e7\0\4\6\1\0" - + "\7\6\1\0\2\6\1\0\u0123\6\55\0\3\6\21\0\4\6\10\0" - + "\u018c\6\u0904\0\153\6\5\0\15\6\3\0\11\6\7\0\12\6\3\0" - + "\2\7\1\0\4\7\u125c\0\56\7\2\0\27\7\u021e\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\u0200\0" - + "\67\7\4\0\62\7\10\0\1\7\16\0\1\7\26\0\5\7\1\0" - + "\17\7\u0450\0\37\6\341\0\7\7\1\0\21\7\2\0\7\7\1\0" - + "\2\7\1\0\5\7\325\0\55\6\3\0\7\7\7\6\2\0\12\7" - + "\4\0\1\6\u0141\0\36\6\1\7\21\0\54\6\16\7\5\0\1\6" - + "\u04e0\0\7\6\1\0\4\6\1\0\2\6\1\0\17\6\1\0\305\6" - + "\13\0\7\7\51\0\104\6\7\7\1\6\4\0\12\7\u0356\0\1\6" - + "\u014f\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\u0d34\0\12\7\u0406\0\ua6e0\6" - + "\40\0\u1039\6\7\0\336\6\2\0\u1682\6\16\0\u1d31\6\u0c1f\0\u021e\6" - + "\u05e2\0\u134b\6\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uecc0\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 String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\126\1\127\1\1\16\7\4\0\1\3\1\113"+ + "\1\20\1\125\1\6\1\123\1\117\1\21\1\100\1\101\1\5\1\121"+ + "\1\107\1\17\1\10\1\4\1\11\1\15\1\77\1\15\4\15\2\12"+ + "\1\116\1\106\1\112\1\110\1\111\1\115\1\124\1\60\1\14\1\61"+ + "\1\64\1\16\1\67\1\53\1\73\1\74\2\6\1\57\1\70\1\63"+ + "\1\62\1\66\1\75\1\56\1\65\1\54\1\55\1\72\1\76\1\13"+ + "\1\71\1\6\1\104\1\22\1\105\1\122\1\6\1\0\1\27\1\24"+ + "\1\31\1\40\1\26\1\41\1\52\1\44\1\36\1\6\1\30\1\42"+ + "\1\47\1\34\1\33\1\45\1\75\1\25\1\32\1\35\1\37\1\50"+ + "\1\43\1\51\1\46\1\6\1\102\1\120\1\103\1\114\6\7\1\130"+ + "\32\7\2\0\4\6\1\0\1\23\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\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\6\0\51\6\6\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\4\0\4\6\15\0\6\7\5\0\1\6\4\0\13\7"+ + "\1\0\1\7\3\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"+ + "\2\0\1\7\30\6\4\7\1\6\11\7\1\6\3\7\1\6\5\7"+ + "\22\0\31\6\3\7\4\0\13\6\5\0\30\6\1\0\6\6\1\0"+ + "\2\7\6\0\10\7\52\6\72\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\4\6\7\0"+ + "\2\6\1\0\1\7\2\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\7\0\1\6"+ + "\6\7\1\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\7\0\3\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\6\0"+ + "\5\7\10\6\1\0\3\6\1\0\27\6\1\0\20\6\2\0\1\7"+ + "\1\6\7\7\1\0\3\7\1\0\4\7\7\0\2\7\1\0\3\6"+ + "\2\0\1\6\2\0\2\6\2\7\2\0\12\7\20\0\1\6\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"+ + "\6\0\2\6\1\0\2\6\2\7\2\0\12\7\1\0\2\6\15\0"+ + "\4\7\11\6\1\0\3\6\1\0\51\6\2\7\1\6\7\7\1\0"+ + "\3\7\1\0\4\7\1\6\5\0\3\6\1\7\7\0\3\6\2\7"+ + "\2\0\12\7\12\0\6\6\1\0\3\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\4\0\10\6\10\7\1\0\12\7\47\0\2\6"+ + "\1\0\1\6\1\0\5\6\1\0\30\6\1\0\1\6\1\0\12\6"+ + "\1\7\2\6\11\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\126\6\2\0\6\6\3\0"+ + "\u026c\6\2\0\21\6\1\0\32\6\5\0\113\6\3\0\13\6\7\0"+ + "\22\6\4\7\11\0\23\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\17\7\6\0\131\6\7\0\5\6"+ + "\2\7\42\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"+ + "\32\6\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\1\0"+ + "\20\7\61\0\5\7\57\6\21\7\10\6\3\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\2\0\11\6\7\0"+ + "\53\6\2\0\3\6\20\0\3\7\1\0\25\7\4\6\1\7\6\6"+ + "\1\7\2\6\3\7\1\6\5\0\300\6\100\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\126\1\126\5\7"+ + "\20\0\2\6\23\0\1\6\13\0\5\7\1\0\12\7\1\0\1\6"+ + "\15\0\1\6\20\0\15\6\3\0\41\6\17\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\345\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\53\6"+ + "\1\0\136\6\21\0\40\6\60\0\20\6\u0200\0\u19c0\6\100\0\u568d\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\2\7\120\6\2\7\45\0\11\6"+ + "\2\0\147\6\2\0\100\6\5\0\2\6\1\0\1\6\1\0\5\6"+ + "\30\0\20\6\1\7\3\6\1\7\4\6\1\7\27\6\5\7\4\0"+ + "\1\7\13\0\1\6\7\0\64\6\14\0\2\7\62\6\22\7\12\0"+ + "\12\7\6\0\22\7\6\6\3\0\1\6\1\0\2\6\13\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\16\6\6\0\163\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\20\7\3\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\17\0\1\7\37\0\40\6"+ + "\15\0\36\6\5\0\46\6\5\7\5\0\36\6\2\0\44\6\4\0"+ + "\10\6\1\0\5\6\52\0\236\6\2\0\12\7\6\0\44\6\4\0"+ + "\44\6\4\0\50\6\10\0\64\6\14\0\13\6\1\0\17\6\1\0"+ + "\7\6\1\0\2\6\1\0\13\6\1\0\17\6\1\0\7\6\1\0"+ + "\2\6\103\0\u0137\6\11\0\26\6\12\0\10\6\30\0\6\6\1\0"+ + "\52\6\1\0\11\6\105\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\101\0"+ + "\23\6\1\0\2\6\12\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\35\6\2\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\67\0\63\6\15\0\63\6"+ + "\15\0\44\6\4\7\10\0\12\7\u0146\0\52\6\1\0\2\7\3\0"+ + "\2\6\116\0\35\6\12\0\1\6\10\0\26\6\13\7\37\0\22\6"+ + "\4\7\52\0\25\6\33\0\27\6\11\0\3\7\65\6\17\7\37\0"+ + "\13\7\2\6\2\7\1\6\11\0\4\7\55\6\13\7\2\0\1\7"+ + "\4\0\1\7\12\0\1\7\2\0\31\6\7\0\12\7\6\0\3\7"+ + "\44\6\16\7\1\0\12\7\4\0\1\6\2\7\1\6\10\0\43\6"+ + "\1\7\2\0\1\6\11\0\3\7\60\6\16\7\4\6\4\0\4\7"+ + "\1\0\14\7\1\6\1\0\1\6\43\0\22\6\1\0\31\6\14\7"+ + "\6\0\1\7\101\0\7\6\1\0\1\6\1\0\4\6\1\0\17\6"+ + "\1\0\12\6\7\0\57\6\14\7\5\0\12\7\6\0\4\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\1\0\2\7\1\6\7\7\2\0\2\7\2\0\3\7\2\0"+ + "\1\6\6\0\1\7\5\0\5\6\2\7\2\0\7\7\3\0\5\7"+ + "\213\0\65\6\22\7\4\6\5\0\12\7\4\0\1\7\3\6\36\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\27\0\4\6\2\7\42\0\60\6\21\7\3\0\1\6"+ + "\13\0\12\7\46\0\53\6\15\7\1\6\7\0\12\7\66\0\33\6"+ + "\2\0\17\7\4\0\12\7\6\0\7\6\271\0\54\6\17\7\145\0"+ + "\100\6\12\7\25\0\10\6\2\0\1\6\2\0\10\6\1\0\2\6"+ + "\1\0\30\6\6\7\1\0\2\7\2\0\4\7\1\6\1\7\1\6"+ + "\2\7\14\0\12\7\106\0\10\6\2\0\47\6\7\7\2\0\7\7"+ + "\1\6\1\0\1\6\1\7\33\0\1\6\12\7\50\6\7\7\1\6"+ + "\4\7\10\0\1\7\10\0\1\6\13\7\56\6\20\7\3\0\1\6"+ + "\22\0\111\6\u0107\0\11\6\1\0\45\6\10\7\1\0\10\7\1\6"+ + "\17\0\12\7\30\0\36\6\2\0\26\7\1\0\16\7\111\0\7\6"+ + "\1\0\2\6\1\0\46\6\6\7\3\0\1\7\1\0\2\7\1\0"+ + "\7\7\1\6\1\7\10\0\12\7\6\0\6\6\1\0\2\6\1\0"+ + "\40\6\5\7\1\0\2\7\1\0\5\7\1\6\7\0\12\7\u0136\0"+ + "\23\6\4\7\271\0\1\6\54\0\4\6\37\0\u039a\6\146\0\157\6"+ + "\21\0\304\6\u0a4c\0\141\6\17\0\u042f\6\1\0\11\7\u0fc7\0\u0247\6"+ + "\u21b9\0\u0239\6\7\0\37\6\1\0\12\7\6\0\117\6\1\0\12\7"+ + "\6\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\u02b0\0\100\6\200\0\113\6\4\0"+ + "\1\7\1\6\67\7\7\0\4\7\15\6\100\0\2\6\1\0\1\6"+ + "\1\7\13\0\2\7\16\0\u17f8\6\10\0\u04d6\6\52\0\11\6\u22e7\0"+ + "\4\6\1\0\7\6\1\0\2\6\1\0\u0123\6\55\0\3\6\21\0"+ + "\4\6\10\0\u018c\6\u0904\0\153\6\5\0\15\6\3\0\11\6\7\0"+ + "\12\6\3\0\2\7\1\0\4\7\u125c\0\56\7\2\0\27\7\u021e\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\u0200\0\67\7\4\0\62\7\10\0\1\7\16\0\1\7\26\0"+ + "\5\7\1\0\17\7\u0450\0\37\6\341\0\7\7\1\0\21\7\2\0"+ + "\7\7\1\0\2\7\1\0\5\7\325\0\55\6\3\0\7\7\7\6"+ + "\2\0\12\7\4\0\1\6\u0141\0\36\6\1\7\21\0\54\6\16\7"+ + "\5\0\1\6\u04e0\0\7\6\1\0\4\6\1\0\2\6\1\0\17\6"+ + "\1\0\305\6\13\0\7\7\51\0\104\6\7\7\1\6\4\0\12\7"+ + "\u0356\0\1\6\u014f\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\u0d34\0\12\7"+ + "\u0406\0\ua6e0\6\40\0\u1039\6\7\0\336\6\2\0\u1682\6\16\0\u1d31\6"+ + "\u0c1f\0\u021e\6\u05e2\0\u134b\6\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uecc0\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 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(); + /** + * Translates DFA states to action switch labels. + */ + private static final int [] ZZ_ACTION = zzUnpackAction(); - private static final String ZZ_ACTION_PACKED_0 - = "\5\0\1\1\2\2\1\3\1\4\1\5\1\6\1\7" - + "\2\10\1\6\1\11\1\12\1\13\1\14\36\6\1\15" - + "\1\16\1\17\1\20\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\1\45\1\1\1\46\1\47\1\0\1\50" - + "\1\51\1\0\1\52\1\53\1\52\2\0\1\6\1\54" - + "\1\55\1\0\23\6\1\56\14\6\1\57\1\60\5\6" - + "\1\61\25\6\1\62\1\63\1\64\1\65\1\66\1\67" - + "\1\66\1\70\1\71\1\72\1\73\1\74\1\75\1\76" - + "\1\77\2\100\1\101\1\102\1\103\1\104\1\105\1\106" - + "\1\107\1\100\1\110\1\100\1\111\1\112\1\113\1\114" - + "\1\115\1\116\1\117\1\111\1\120\2\111\2\47\2\0" - + "\1\121\1\122\1\52\1\0\1\6\1\123\7\6\1\124" - + "\5\6\1\125\1\126\7\6\1\127\2\6\1\130\5\6" - + "\1\131\6\6\2\132\12\6\1\133\17\6\1\134\2\6" - + "\1\135\1\6\1\136\1\137\1\140\1\141\1\142\10\0" - + "\1\143\4\6\1\144\1\145\1\6\1\146\1\6\1\147" - + "\5\6\1\150\5\6\1\151\3\6\1\152\3\6\1\153" - + "\22\6\1\154\5\6\1\155\4\6\1\156\4\6\1\157" - + "\1\160\1\0\1\161\1\0\1\162\1\163\1\164\4\6" - + "\1\165\1\6\1\166\6\6\1\167\5\6\1\170\2\6" - + "\1\171\14\6\1\172\6\6\1\173\1\6\1\174\2\6" - + "\1\175\1\6\1\176\6\6\1\177\1\200\2\6\1\201" - + "\1\6\1\202\2\6\1\203\1\204\2\6\1\205\3\6" - + "\1\206\3\6\1\207\4\6\1\210\5\6\1\211\6\6" - + "\1\212\3\6\1\213\3\6\1\214\5\6\1\215\11\6" - + "\1\216\1\6\1\217\1\6\1\220\6\6\1\221\6\6" - + "\1\222\2\6\1\223\14\6\1\224\4\6\1\225\1\6" - + "\1\226\1\227\4\6\1\230\1\6\1\231\4\6\1\232" - + "\2\6\1\233\2\6\1\234\1\235\1\6\1\236\7\6" - + "\1\237\1\240\1\6\1\241\1\6\1\242\6\6\1\243" - + "\6\6\1\244\4\6\1\245\1\246\1\247\6\6\1\250" - + "\3\6\1\251\1\6\1\252\2\6\1\253\1\254\2\6" - + "\1\255\3\6\1\256\6\6\1\257\1\260\1\261\1\6" - + "\1\262"; + private static final String ZZ_ACTION_PACKED_0 = + "\5\0\1\1\2\2\1\3\1\4\1\5\1\6\1\7"+ + "\2\10\1\6\1\11\1\12\1\13\1\14\36\6\1\15"+ + "\1\16\1\17\1\20\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\1\1\42\2\43\1\44"+ + "\1\1\1\42\1\1\1\45\1\1\1\46\1\47\1\0"+ + "\1\50\1\51\1\0\1\52\1\53\1\52\2\0\1\6"+ + "\1\54\1\55\1\0\23\6\1\56\14\6\1\57\1\60"+ + "\5\6\1\61\25\6\1\62\1\63\1\64\1\65\1\66"+ + "\1\67\1\66\1\70\1\71\1\72\1\73\1\74\1\75"+ + "\1\76\1\77\1\100\2\101\1\102\1\103\1\104\1\105"+ + "\1\106\1\107\1\110\1\101\1\111\1\101\1\112\1\113"+ + "\1\114\1\115\1\116\1\117\1\120\1\112\1\121\2\112"+ + "\2\47\2\0\1\122\1\123\1\52\1\0\1\6\1\124"+ + "\7\6\1\125\5\6\1\126\1\127\7\6\1\130\2\6"+ + "\1\131\5\6\1\132\6\6\2\133\12\6\1\134\17\6"+ + "\1\135\2\6\1\136\1\6\1\137\1\140\1\141\1\142"+ + "\1\143\10\0\1\144\4\6\1\145\1\146\1\6\1\147"+ + "\1\6\1\150\5\6\1\151\5\6\1\152\3\6\1\153"+ + "\3\6\1\154\22\6\1\155\5\6\1\156\4\6\1\157"+ + "\4\6\1\160\1\161\1\0\1\162\1\0\1\163\1\164"+ + "\1\165\4\6\1\166\1\6\1\167\6\6\1\170\5\6"+ + "\1\171\2\6\1\172\14\6\1\173\6\6\1\174\1\6"+ + "\1\175\2\6\1\176\1\6\1\177\6\6\1\200\1\201"+ + "\2\6\1\202\1\6\1\203\2\6\1\204\1\205\2\6"+ + "\1\206\3\6\1\207\3\6\1\210\4\6\1\211\5\6"+ + "\1\212\6\6\1\213\3\6\1\214\3\6\1\215\5\6"+ + "\1\216\11\6\1\217\1\6\1\220\1\6\1\221\6\6"+ + "\1\222\6\6\1\223\2\6\1\224\14\6\1\225\4\6"+ + "\1\226\1\6\1\227\1\230\4\6\1\231\1\6\1\232"+ + "\4\6\1\233\2\6\1\234\2\6\1\235\1\236\1\6"+ + "\1\237\7\6\1\240\1\241\1\6\1\242\1\6\1\243"+ + "\2\6\1\244\4\6\1\245\6\6\1\246\4\6\1\247"+ + "\1\250\1\251\6\6\1\252\3\6\1\253\1\6\1\254"+ + "\2\6\1\255\1\256\2\6\1\257\3\6\1\260\6\6"+ + "\1\261\1\262\1\263\1\6\1\264"; - private static int[] zzUnpackAction() { - int[] result = new int[613]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; + private static int [] zzUnpackAction() { + int [] result = new int[616]; + int offset = 0; + offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAction(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackAction(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do { - result[j++] = value; - } while (--count > 0); - } - return j; + + /** + * Translates a state to a row index in the transition table + */ + private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); + + private static final String ZZ_ROWMAP_PACKED_0 = + "\0\0\0\131\0\262\0\u010b\0\u0164\0\u01bd\0\u0216\0\u01bd"+ + "\0\u026f\0\u02c8\0\u0321\0\u037a\0\u03d3\0\u042c\0\u0485\0\u04de"+ + "\0\u0537\0\u01bd\0\u01bd\0\u0590\0\u05e9\0\u0642\0\u069b\0\u06f4"+ + "\0\u074d\0\u07a6\0\u07ff\0\u0858\0\u08b1\0\u090a\0\u0963\0\u09bc"+ + "\0\u0a15\0\u0a6e\0\u0ac7\0\u0b20\0\u0b79\0\u0bd2\0\u0c2b\0\u0c84"+ + "\0\u0cdd\0\u0d36\0\u0d8f\0\u0de8\0\u0e41\0\u0e9a\0\u0ef3\0\u0f4c"+ + "\0\u0fa5\0\u0ffe\0\u01bd\0\u01bd\0\u01bd\0\u01bd\0\u01bd\0\u01bd"+ + "\0\u01bd\0\u01bd\0\u1057\0\u10b0\0\u1109\0\u1162\0\u01bd\0\u01bd"+ + "\0\u01bd\0\u11bb\0\u1214\0\u126d\0\u12c6\0\u131f\0\u01bd\0\u1378"+ + "\0\u13d1\0\u142a\0\u01bd\0\u01bd\0\u1483\0\u14dc\0\u1535\0\u01bd"+ + "\0\u158e\0\u01bd\0\u15e7\0\u1640\0\u01bd\0\u01bd\0\u1699\0\u16f2"+ + "\0\u174b\0\u17a4\0\u17fd\0\u1856\0\u18af\0\u01bd\0\u01bd\0\u1908"+ + "\0\u1961\0\u19ba\0\u1a13\0\u1a6c\0\u1ac5\0\u1b1e\0\u1b77\0\u1bd0"+ + "\0\u1c29\0\u1c82\0\u1cdb\0\u1d34\0\u1d8d\0\u1de6\0\u1e3f\0\u1e98"+ + "\0\u1ef1\0\u1f4a\0\u1fa3\0\u1ffc\0\u1ffc\0\u2055\0\u20ae\0\u2107"+ + "\0\u2160\0\u21b9\0\u2212\0\u226b\0\u22c4\0\u231d\0\u2376\0\u23cf"+ + "\0\u2428\0\u2481\0\u24da\0\u2533\0\u2481\0\u258c\0\u25e5\0\u037a"+ + "\0\u263e\0\u2697\0\u26f0\0\u2749\0\u27a2\0\u27fb\0\u2854\0\u28ad"+ + "\0\u2906\0\u295f\0\u29b8\0\u2a11\0\u2a6a\0\u2ac3\0\u2b1c\0\u2b75"+ + "\0\u2bce\0\u2c27\0\u2c80\0\u2cd9\0\u2d32\0\u2d8b\0\u01bd\0\u2de4"+ + "\0\u01bd\0\u01bd\0\u2e3d\0\u2e96\0\u01bd\0\u01bd\0\u01bd\0\u01bd"+ + "\0\u01bd\0\u01bd\0\u01bd\0\u01bd\0\u2eef\0\u01bd\0\u2f48\0\u01bd"+ + "\0\u01bd\0\u01bd\0\u01bd\0\u01bd\0\u01bd\0\u01bd\0\u2fa1\0\u01bd"+ + "\0\u2ffa\0\u01bd\0\u01bd\0\u01bd\0\u01bd\0\u01bd\0\u01bd\0\u01bd"+ + "\0\u3053\0\u01bd\0\u30ac\0\u3105\0\u315e\0\u01bd\0\u31b7\0\u3210"+ + "\0\u01bd\0\u17fd\0\u3269\0\u3269\0\u32c2\0\u331b\0\u3374\0\u33cd"+ + "\0\u3426\0\u347f\0\u34d8\0\u3531\0\u358a\0\u037a\0\u35e3\0\u363c"+ + "\0\u3695\0\u36ee\0\u3747\0\u037a\0\u037a\0\u37a0\0\u37f9\0\u3852"+ + "\0\u38ab\0\u3904\0\u395d\0\u39b6\0\u037a\0\u3a0f\0\u3a68\0\u3a68"+ + "\0\u3ac1\0\u3b1a\0\u3b73\0\u3bcc\0\u3c25\0\u037a\0\u3c7e\0\u3cd7"+ + "\0\u3d30\0\u3d89\0\u3de2\0\u3e3b\0\u3e94\0\u037a\0\u3eed\0\u3f46"+ + "\0\u3f9f\0\u3ff8\0\u4051\0\u40aa\0\u4103\0\u415c\0\u41b5\0\u420e"+ + "\0\u037a\0\u4267\0\u42c0\0\u4319\0\u4372\0\u43cb\0\u4424\0\u447d"+ + "\0\u44d6\0\u452f\0\u4588\0\u45e1\0\u463a\0\u4693\0\u46ec\0\u4745"+ + "\0\u037a\0\u479e\0\u47f7\0\u47f7\0\u4850\0\u01bd\0\u01bd\0\u48a9"+ + "\0\u01bd\0\u01bd\0\u4902\0\u495b\0\u49b4\0\u4a0d\0\u4a66\0\u4abf"+ + "\0\u4b18\0\u4b71\0\u037a\0\u4bca\0\u4c23\0\u4c7c\0\u4cd5\0\u037a"+ + "\0\u037a\0\u4d2e\0\u037a\0\u4d87\0\u037a\0\u4de0\0\u4e39\0\u4e92"+ + "\0\u4eeb\0\u4f44\0\u4f9d\0\u4ff6\0\u504f\0\u50a8\0\u5101\0\u515a"+ + "\0\u037a\0\u51b3\0\u520c\0\u5265\0\u037a\0\u52be\0\u5317\0\u5370"+ + "\0\u037a\0\u53c9\0\u5422\0\u547b\0\u54d4\0\u552d\0\u5586\0\u55df"+ + "\0\u5638\0\u5691\0\u56ea\0\u5743\0\u579c\0\u57f5\0\u584e\0\u58a7"+ + "\0\u5900\0\u5959\0\u59b2\0\u037a\0\u5a0b\0\u5a64\0\u5abd\0\u5b16"+ + "\0\u5b6f\0\u037a\0\u5bc8\0\u5c21\0\u5c7a\0\u5cd3\0\u037a\0\u5d2c"+ + "\0\u5d85\0\u5dde\0\u5e37\0\u01bd\0\u01bd\0\u2ffa\0\u01bd\0\u30ac"+ + "\0\u01bd\0\u01bd\0\u037a\0\u5e90\0\u5ee9\0\u5f42\0\u5f9b\0\u037a"+ + "\0\u5ff4\0\u037a\0\u604d\0\u60a6\0\u60ff\0\u6158\0\u61b1\0\u620a"+ + "\0\u037a\0\u6263\0\u62bc\0\u6315\0\u636e\0\u63c7\0\u037a\0\u6420"+ + "\0\u6479\0\u037a\0\u64d2\0\u652b\0\u6584\0\u65dd\0\u6636\0\u668f"+ + "\0\u66e8\0\u6741\0\u679a\0\u67f3\0\u684c\0\u68a5\0\u037a\0\u68fe"+ + "\0\u6957\0\u69b0\0\u6a09\0\u6a62\0\u6abb\0\u037a\0\u6b14\0\u6b6d"+ + "\0\u6bc6\0\u6c1f\0\u037a\0\u6c78\0\u037a\0\u6cd1\0\u6d2a\0\u6d83"+ + "\0\u6ddc\0\u6e35\0\u6e8e\0\u037a\0\u037a\0\u6ee7\0\u6f40\0\u037a"+ + "\0\u6f99\0\u037a\0\u6ff2\0\u704b\0\u037a\0\u037a\0\u70a4\0\u70fd"+ + "\0\u037a\0\u7156\0\u71af\0\u7208\0\u037a\0\u7261\0\u72ba\0\u7313"+ + "\0\u037a\0\u736c\0\u73c5\0\u741e\0\u7477\0\u037a\0\u74d0\0\u7529"+ + "\0\u7582\0\u75db\0\u7634\0\u037a\0\u768d\0\u76e6\0\u773f\0\u7798"+ + "\0\u77f1\0\u784a\0\u037a\0\u78a3\0\u78fc\0\u7955\0\u037a\0\u79ae"+ + "\0\u7a07\0\u7a60\0\u037a\0\u7ab9\0\u7b12\0\u7b6b\0\u7bc4\0\u7c1d"+ + "\0\u037a\0\u7c76\0\u7ccf\0\u7d28\0\u7d81\0\u7dda\0\u7e33\0\u7e8c"+ + "\0\u7ee5\0\u7f3e\0\u037a\0\u7f97\0\u037a\0\u7ff0\0\u037a\0\u8049"+ + "\0\u80a2\0\u80fb\0\u8154\0\u81ad\0\u8206\0\u037a\0\u825f\0\u82b8"+ + "\0\u8311\0\u836a\0\u83c3\0\u841c\0\u037a\0\u8475\0\u84ce\0\u037a"+ + "\0\u8527\0\u8580\0\u85d9\0\u8632\0\u868b\0\u86e4\0\u873d\0\u8796"+ + "\0\u87ef\0\u8848\0\u88a1\0\u88fa\0\u037a\0\u8953\0\u89ac\0\u8a05"+ + "\0\u8a5e\0\u037a\0\u8ab7\0\u037a\0\u037a\0\u8b10\0\u8b69\0\u8bc2"+ + "\0\u8c1b\0\u037a\0\u8c74\0\u037a\0\u8ccd\0\u8d26\0\u8d7f\0\u8dd8"+ + "\0\u037a\0\u8e31\0\u8e8a\0\u037a\0\u8ee3\0\u8f3c\0\u8f95\0\u8fee"+ + "\0\u9047\0\u037a\0\u90a0\0\u90f9\0\u9152\0\u91ab\0\u9204\0\u925d"+ + "\0\u92b6\0\u037a\0\u037a\0\u930f\0\u037a\0\u9368\0\u037a\0\u93c1"+ + "\0\u941a\0\u037a\0\u9473\0\u94cc\0\u9525\0\u957e\0\u037a\0\u95d7"+ + "\0\u9630\0\u9689\0\u96e2\0\u973b\0\u9794\0\u97ed\0\u9846\0\u989f"+ + "\0\u98f8\0\u9951\0\u037a\0\u037a\0\u037a\0\u99aa\0\u9a03\0\u9a5c"+ + "\0\u9ab5\0\u9b0e\0\u9b67\0\u037a\0\u9bc0\0\u9c19\0\u9c72\0\u037a"+ + "\0\u9ccb\0\u037a\0\u9d24\0\u9d7d\0\u9dd6\0\u9e2f\0\u9e88\0\u9ee1"+ + "\0\u037a\0\u9f3a\0\u9f93\0\u9fec\0\u037a\0\ua045\0\ua09e\0\ua0f7"+ + "\0\ua150\0\ua1a9\0\ua202\0\u037a\0\u037a\0\u037a\0\ua25b\0\u037a"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[616]; + int offset = 0; + offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackRowMap(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int high = packed.charAt(i++) << 16; + result[j++] = high | packed.charAt(i++); } + return j; + } - /** - * Translates a state to a row index in the transition table - */ - private static final int[] ZZ_ROWMAP = zzUnpackRowMap(); + /** + * The transition table of the DFA + */ + private static final int [] ZZ_TRANS = zzUnpackTrans(); - private static final String ZZ_ROWMAP_PACKED_0 - = "\0\0\0\127\0\256\0\u0105\0\u015c\0\u01b3\0\u020a\0\u01b3" - + "\0\u0261\0\u02b8\0\u030f\0\u0366\0\u03bd\0\u0414\0\u046b\0\u04c2" - + "\0\u0519\0\u01b3\0\u01b3\0\u0570\0\u05c7\0\u061e\0\u0675\0\u06cc" - + "\0\u0723\0\u077a\0\u07d1\0\u0828\0\u087f\0\u08d6\0\u092d\0\u0984" - + "\0\u09db\0\u0a32\0\u0a89\0\u0ae0\0\u0b37\0\u0b8e\0\u0be5\0\u0c3c" - + "\0\u0c93\0\u0cea\0\u0d41\0\u0d98\0\u0def\0\u0e46\0\u0e9d\0\u0ef4" - + "\0\u0f4b\0\u0fa2\0\u01b3\0\u01b3\0\u01b3\0\u01b3\0\u01b3\0\u01b3" - + "\0\u01b3\0\u01b3\0\u0ff9\0\u1050\0\u10a7\0\u10fe\0\u01b3\0\u01b3" - + "\0\u01b3\0\u1155\0\u11ac\0\u1203\0\u125a\0\u12b1\0\u01b3\0\u1308" - + "\0\u135f\0\u01b3\0\u01b3\0\u13b6\0\u140d\0\u1464\0\u01b3\0\u14bb" - + "\0\u01b3\0\u1512\0\u1569\0\u01b3\0\u01b3\0\u15c0\0\u1617\0\u166e" - + "\0\u16c5\0\u171c\0\u1773\0\u17ca\0\u01b3\0\u01b3\0\u1821\0\u1878" - + "\0\u18cf\0\u1926\0\u197d\0\u19d4\0\u1a2b\0\u1a82\0\u1ad9\0\u1b30" - + "\0\u1b87\0\u1bde\0\u1c35\0\u1c8c\0\u1ce3\0\u1d3a\0\u1d91\0\u1de8" - + "\0\u1e3f\0\u1e96\0\u1eed\0\u1eed\0\u1f44\0\u1f9b\0\u1ff2\0\u2049" - + "\0\u20a0\0\u20f7\0\u214e\0\u21a5\0\u21fc\0\u2253\0\u22aa\0\u2301" - + "\0\u2358\0\u23af\0\u2406\0\u2358\0\u245d\0\u24b4\0\u0366\0\u250b" - + "\0\u2562\0\u25b9\0\u2610\0\u2667\0\u26be\0\u2715\0\u276c\0\u27c3" - + "\0\u281a\0\u2871\0\u28c8\0\u291f\0\u2976\0\u29cd\0\u2a24\0\u2a7b" - + "\0\u2ad2\0\u2b29\0\u2b80\0\u2bd7\0\u2c2e\0\u01b3\0\u2c85\0\u01b3" - + "\0\u01b3\0\u2cdc\0\u2d33\0\u01b3\0\u01b3\0\u01b3\0\u01b3\0\u01b3" - + "\0\u01b3\0\u01b3\0\u01b3\0\u01b3\0\u2d8a\0\u01b3\0\u01b3\0\u01b3" - + "\0\u01b3\0\u01b3\0\u01b3\0\u01b3\0\u2de1\0\u01b3\0\u2e38\0\u01b3" - + "\0\u01b3\0\u01b3\0\u01b3\0\u01b3\0\u01b3\0\u01b3\0\u2e8f\0\u01b3" - + "\0\u2ee6\0\u2f3d\0\u2f94\0\u01b3\0\u2feb\0\u3042\0\u01b3\0\u171c" - + "\0\u3099\0\u3099\0\u30f0\0\u3147\0\u319e\0\u31f5\0\u324c\0\u32a3" - + "\0\u32fa\0\u3351\0\u33a8\0\u0366\0\u33ff\0\u3456\0\u34ad\0\u3504" - + "\0\u355b\0\u0366\0\u0366\0\u35b2\0\u3609\0\u3660\0\u36b7\0\u370e" - + "\0\u3765\0\u37bc\0\u0366\0\u3813\0\u386a\0\u386a\0\u38c1\0\u3918" - + "\0\u396f\0\u39c6\0\u3a1d\0\u0366\0\u3a74\0\u3acb\0\u3b22\0\u3b79" - + "\0\u3bd0\0\u3c27\0\u3c7e\0\u0366\0\u3cd5\0\u3d2c\0\u3d83\0\u3dda" - + "\0\u3e31\0\u3e88\0\u3edf\0\u3f36\0\u3f8d\0\u3fe4\0\u0366\0\u403b" - + "\0\u4092\0\u40e9\0\u4140\0\u4197\0\u41ee\0\u4245\0\u429c\0\u42f3" - + "\0\u434a\0\u43a1\0\u43f8\0\u444f\0\u44a6\0\u44fd\0\u0366\0\u4554" - + "\0\u45ab\0\u45ab\0\u4602\0\u01b3\0\u01b3\0\u4659\0\u01b3\0\u01b3" - + "\0\u46b0\0\u4707\0\u475e\0\u47b5\0\u480c\0\u4863\0\u48ba\0\u4911" - + "\0\u0366\0\u4968\0\u49bf\0\u4a16\0\u4a6d\0\u0366\0\u0366\0\u4ac4" - + "\0\u0366\0\u4b1b\0\u0366\0\u4b72\0\u4bc9\0\u4c20\0\u4c77\0\u4cce" - + "\0\u4d25\0\u4d7c\0\u4dd3\0\u4e2a\0\u4e81\0\u4ed8\0\u0366\0\u4f2f" - + "\0\u4f86\0\u4fdd\0\u0366\0\u5034\0\u508b\0\u50e2\0\u0366\0\u5139" - + "\0\u5190\0\u51e7\0\u523e\0\u5295\0\u52ec\0\u5343\0\u539a\0\u53f1" - + "\0\u5448\0\u549f\0\u54f6\0\u554d\0\u55a4\0\u55fb\0\u5652\0\u56a9" - + "\0\u5700\0\u0366\0\u5757\0\u57ae\0\u5805\0\u585c\0\u58b3\0\u0366" - + "\0\u590a\0\u5961\0\u59b8\0\u5a0f\0\u0366\0\u5a66\0\u5abd\0\u5b14" - + "\0\u5b6b\0\u01b3\0\u01b3\0\u2e38\0\u01b3\0\u2ee6\0\u01b3\0\u01b3" - + "\0\u0366\0\u5bc2\0\u5c19\0\u5c70\0\u5cc7\0\u0366\0\u5d1e\0\u0366" - + "\0\u5d75\0\u5dcc\0\u5e23\0\u5e7a\0\u5ed1\0\u5f28\0\u0366\0\u5f7f" - + "\0\u5fd6\0\u602d\0\u6084\0\u60db\0\u0366\0\u6132\0\u6189\0\u0366" - + "\0\u61e0\0\u6237\0\u628e\0\u62e5\0\u633c\0\u6393\0\u63ea\0\u6441" - + "\0\u6498\0\u64ef\0\u6546\0\u659d\0\u0366\0\u65f4\0\u664b\0\u66a2" - + "\0\u66f9\0\u6750\0\u67a7\0\u0366\0\u67fe\0\u6855\0\u68ac\0\u6903" - + "\0\u0366\0\u695a\0\u0366\0\u69b1\0\u6a08\0\u6a5f\0\u6ab6\0\u6b0d" - + "\0\u6b64\0\u0366\0\u0366\0\u6bbb\0\u6c12\0\u0366\0\u6c69\0\u0366" - + "\0\u6cc0\0\u6d17\0\u0366\0\u0366\0\u6d6e\0\u6dc5\0\u0366\0\u6e1c" - + "\0\u6e73\0\u6eca\0\u0366\0\u6f21\0\u6f78\0\u6fcf\0\u0366\0\u7026" - + "\0\u707d\0\u70d4\0\u712b\0\u0366\0\u7182\0\u71d9\0\u7230\0\u7287" - + "\0\u72de\0\u0366\0\u7335\0\u738c\0\u73e3\0\u743a\0\u7491\0\u74e8" - + "\0\u0366\0\u753f\0\u7596\0\u75ed\0\u0366\0\u7644\0\u769b\0\u76f2" - + "\0\u0366\0\u7749\0\u77a0\0\u77f7\0\u784e\0\u78a5\0\u0366\0\u78fc" - + "\0\u7953\0\u79aa\0\u7a01\0\u7a58\0\u7aaf\0\u7b06\0\u7b5d\0\u7bb4" - + "\0\u0366\0\u7c0b\0\u0366\0\u7c62\0\u0366\0\u7cb9\0\u7d10\0\u7d67" - + "\0\u7dbe\0\u7e15\0\u7e6c\0\u0366\0\u7ec3\0\u7f1a\0\u7f71\0\u7fc8" - + "\0\u801f\0\u8076\0\u0366\0\u80cd\0\u8124\0\u0366\0\u817b\0\u81d2" - + "\0\u8229\0\u8280\0\u82d7\0\u832e\0\u8385\0\u83dc\0\u8433\0\u848a" - + "\0\u84e1\0\u8538\0\u0366\0\u858f\0\u85e6\0\u863d\0\u8694\0\u0366" - + "\0\u86eb\0\u0366\0\u0366\0\u8742\0\u8799\0\u87f0\0\u8847\0\u0366" - + "\0\u889e\0\u0366\0\u88f5\0\u894c\0\u89a3\0\u89fa\0\u0366\0\u8a51" - + "\0\u8aa8\0\u0366\0\u8aff\0\u8b56\0\u0366\0\u8bad\0\u8c04\0\u0366" - + "\0\u8c5b\0\u8cb2\0\u8d09\0\u8d60\0\u8db7\0\u8e0e\0\u8e65\0\u0366" - + "\0\u0366\0\u8ebc\0\u0366\0\u8f13\0\u0366\0\u8f6a\0\u8fc1\0\u9018" - + "\0\u906f\0\u90c6\0\u911d\0\u0366\0\u9174\0\u91cb\0\u9222\0\u9279" - + "\0\u92d0\0\u9327\0\u937e\0\u93d5\0\u942c\0\u9483\0\u94da\0\u0366" - + "\0\u0366\0\u0366\0\u9531\0\u9588\0\u95df\0\u9636\0\u968d\0\u96e4" - + "\0\u0366\0\u973b\0\u9792\0\u97e9\0\u0366\0\u9840\0\u0366\0\u9897" - + "\0\u98ee\0\u9945\0\u999c\0\u99f3\0\u9a4a\0\u0366\0\u9aa1\0\u9af8" - + "\0\u9b4f\0\u0366\0\u9ba6\0\u9bfd\0\u9c54\0\u9cab\0\u9d02\0\u9d59" - + "\0\u0366\0\u0366\0\u0366\0\u9db0\0\u0366"; + private static final String ZZ_TRANS_PACKED_0 = + "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\6"+ + "\1\15\1\16\1\17\2\14\1\17\1\20\1\21\1\22"+ + "\1\23\1\6\1\24\1\25\1\26\1\27\1\30\1\14"+ + "\1\31\1\32\1\33\1\34\1\35\1\36\1\37\1\40"+ + "\1\41\1\42\1\43\1\14\1\44\1\14\1\45\1\46"+ + "\1\14\1\47\1\50\1\51\1\37\1\52\1\42\1\14"+ + "\1\53\1\54\1\55\1\56\1\57\1\60\1\61\1\45"+ + "\3\14\1\62\2\14\1\17\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\102\1\103\1\104\1\105\1\106"+ + "\1\107\1\110\1\6\1\11\1\6\1\111\1\112\1\113"+ + "\15\111\1\114\1\111\1\115\106\111\1\116\1\112\1\113"+ + "\16\116\1\114\1\117\106\116\131\6\1\120\1\112\1\113"+ + "\17\120\1\121\1\122\105\120\133\0\1\10\131\0\1\11"+ + "\123\0\1\11\5\0\1\123\1\124\102\0\1\125\130\0"+ + "\1\126\26\0\2\14\1\0\6\14\5\0\54\14\30\0"+ + "\1\14\10\0\1\127\2\130\2\0\1\130\61\0\1\130"+ + "\41\0\1\130\1\131\1\132\1\133\1\0\1\131\1\134"+ + "\7\0\1\134\22\0\1\133\25\0\1\131\41\0\1\130"+ + "\2\17\2\0\1\17\1\134\7\0\1\134\50\0\1\17"+ + "\37\0\2\14\1\0\6\14\5\0\24\14\1\135\21\14"+ + "\1\135\5\14\30\0\1\14\17\0\1\136\70\0\1\137"+ + "\43\0\1\140\113\0\2\14\1\0\6\14\5\0\1\14"+ + "\1\141\52\14\30\0\1\14\6\0\2\14\1\0\5\14"+ + "\1\142\5\0\2\14\1\143\1\144\30\14\1\144\17\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14"+ + "\1\145\12\14\1\146\5\14\1\135\1\147\20\14\1\135"+ + "\5\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\10\14\1\150\43\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\3\14\1\151\3\14\1\152\6\14\1\153"+ + "\1\14\1\154\13\14\1\155\12\14\1\154\4\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\2\14\1\156"+ + "\6\14\1\157\1\14\1\160\3\14\1\161\10\14\1\162"+ + "\1\163\22\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\1\14\1\164\30\14\1\165\21\14\30\0\1\14"+ + "\6\0\2\14\1\0\5\14\1\166\5\0\2\14\1\167"+ + "\10\14\1\170\15\14\1\171\22\14\30\0\1\14\6\0"+ + "\2\14\1\0\5\14\1\172\5\0\1\14\1\173\1\172"+ + "\1\174\3\14\1\175\10\14\1\176\1\14\1\177\7\14"+ + "\1\200\1\14\1\174\1\14\1\175\15\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\10\14\1\201\4\14"+ + "\1\202\5\14\1\203\13\14\1\204\3\14\1\205\10\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\10\14"+ + "\1\206\26\14\1\206\14\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\2\14\1\207\4\14\1\210\3\14"+ + "\1\211\6\14\1\212\6\14\1\211\22\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\3\14\1\213\2\14"+ + "\1\214\1\215\2\14\1\216\1\217\25\14\1\214\12\14"+ + "\30\0\1\14\6\0\2\14\1\0\5\14\1\220\5\0"+ + "\2\14\1\220\4\14\1\221\26\14\1\221\15\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\222"+ + "\5\14\1\223\33\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\1\14\1\224\11\14\1\225\2\14\1\226"+ + "\13\14\1\227\1\226\20\14\30\0\1\14\6\0\2\14"+ + "\1\0\3\14\1\230\2\14\5\0\1\230\53\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\231"+ + "\3\14\1\232\44\14\30\0\1\14\6\0\2\14\1\0"+ + "\5\14\1\233\5\0\2\14\1\234\4\14\1\235\26\14"+ + "\1\235\15\14\30\0\1\14\6\0\2\14\1\0\5\14"+ + "\1\233\5\0\2\14\1\233\4\14\1\235\26\14\1\235"+ + "\15\14\30\0\1\14\6\0\2\14\1\0\5\14\1\172"+ + "\5\0\1\14\1\200\1\172\1\174\3\14\1\175\22\14"+ + "\1\200\1\14\1\174\1\14\1\175\15\14\30\0\1\14"+ + "\6\0\2\14\1\0\5\14\1\142\5\0\2\14\1\142"+ + "\1\144\30\14\1\144\17\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\3\14\1\155\14\14\1\154\13\14"+ + "\1\155\12\14\1\154\4\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\1\14\1\165\30\14\1\165\21\14"+ + "\30\0\1\14\6\0\2\14\1\0\5\14\1\166\5\0"+ + "\2\14\1\166\10\14\1\171\15\14\1\171\22\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\13\14\1\211"+ + "\15\14\1\211\22\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\11\14\1\162\1\14\1\163\14\14\1\162"+ + "\1\163\22\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\1\14\1\227\14\14\1\226\13\14\1\227\1\226"+ + "\20\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\6\14\1\214\32\14\1\214\12\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\10\14\1\204\4\14\1\205"+ + "\21\14\1\204\3\14\1\205\10\14\30\0\1\14\110\0"+ + "\1\236\130\0\1\237\1\240\127\0\1\241\1\242\1\243"+ + "\126\0\1\244\130\0\1\245\6\0\1\246\121\0\1\247"+ + "\7\0\1\250\120\0\1\251\10\0\1\252\117\0\1\253"+ + "\130\0\1\254\26\0\1\255\4\0\2\255\1\0\1\255"+ + "\5\0\53\255\32\0\1\111\2\0\15\111\1\0\1\111"+ + "\1\0\106\111\2\0\1\113\126\0\1\256\2\0\6\256"+ + "\1\257\3\256\1\257\2\256\1\260\1\261\1\262\1\256"+ + "\1\263\1\264\6\256\1\265\1\266\1\256\1\267\1\256"+ + "\1\270\7\256\1\271\25\256\1\257\26\256\3\0\1\116"+ + "\2\0\16\116\2\0\106\116\1\256\2\0\15\256\1\260"+ + "\1\261\1\262\1\256\1\263\1\264\6\256\1\265\1\266"+ + "\1\256\1\267\1\256\1\270\7\256\1\271\54\256\3\0"+ + "\1\272\2\0\17\272\1\273\1\274\1\275\1\276\6\272"+ + "\1\277\1\300\1\272\1\301\1\272\1\302\7\272\1\303"+ + "\30\272\1\304\23\272\3\0\1\123\1\305\1\306\126\123"+ + "\5\307\1\310\123\307\10\0\1\311\131\0\2\130\2\0"+ + "\1\130\1\134\7\0\1\134\50\0\1\130\41\0\1\130"+ + "\1\131\1\132\2\0\1\131\1\134\7\0\1\134\50\0"+ + "\1\131\41\0\1\130\2\132\2\0\1\132\1\134\7\0"+ + "\1\134\50\0\1\132\42\0\2\312\1\0\3\312\5\0"+ + "\1\312\1\0\2\312\1\0\1\312\6\0\2\312\16\0"+ + "\2\312\2\0\1\312\2\0\1\312\7\0\1\312\42\0"+ + "\2\313\2\0\1\313\1\0\1\314\57\0\1\313\21\0"+ + "\1\314\15\0\2\14\1\0\6\14\5\0\3\14\1\315"+ + "\30\14\1\315\17\14\30\0\1\14\6\0\1\316\4\0"+ + "\2\316\1\0\1\316\5\0\53\316\40\0\2\14\1\0"+ + "\6\14\5\0\2\14\1\317\51\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\23\14\1\320\20\14\1\320"+ + "\7\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\11\14\1\321\11\14\1\320\20\14\1\320\7\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\10\14\1\322"+ + "\26\14\1\322\14\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\5\14\1\323\46\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\6\14\1\324\45\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\11\14\1\325"+ + "\42\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\14\14\1\326\37\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\6\14\1\327\2\14\1\330\4\14\1\331"+ + "\14\14\1\331\20\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\10\14\1\332\43\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\3\14\1\333\50\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\334"+ + "\30\14\1\334\21\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\16\14\1\331\14\14\1\331\20\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\11\14\1\335"+ + "\42\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\1\14\1\336\1\14\1\337\3\14\1\340\22\14\1\336"+ + "\1\14\1\341\1\14\1\340\15\14\30\0\1\14\6\0"+ + "\2\14\1\0\3\14\1\342\2\14\5\0\1\342\20\14"+ + "\1\343\32\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\12\14\1\344\41\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\1\14\1\336\1\14\1\341\3\14"+ + "\1\340\22\14\1\336\1\14\1\341\1\14\1\340\15\14"+ + "\30\0\1\14\6\0\2\14\1\0\3\14\1\342\2\14"+ + "\5\0\1\342\53\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\14\14\1\345\23\14\1\345\13\14\30\0"+ + "\1\14\6\0\2\14\1\0\2\14\1\346\3\14\5\0"+ + "\17\14\1\347\5\14\1\346\24\14\1\347\1\14\30\0"+ + "\1\14\6\0\2\14\1\0\2\14\1\346\3\14\5\0"+ + "\17\14\1\350\5\14\1\346\24\14\1\347\1\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\351"+ + "\4\14\1\352\20\14\1\352\7\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\23\14\1\352\20\14\1\352"+ + "\7\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\16\14\1\353\14\14\1\353\20\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\3\14\1\354\7\14\1\355"+ + "\6\14\1\356\11\14\1\354\17\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\1\14\1\357\30\14\1\357"+ + "\21\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\26\14\2\360\24\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\1\14\1\361\10\14\1\362\41\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\21\14\1\363"+ + "\32\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\3\14\1\354\30\14\1\354\17\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\6\14\1\364\2\14\1\365"+ + "\16\14\1\366\23\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\15\14\1\367\25\14\1\367\10\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\21\14\1\370"+ + "\32\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\11\14\1\366\16\14\1\366\23\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\14\14\1\371\1\14\1\372"+ + "\14\14\1\372\4\14\1\371\13\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\15\14\1\373\1\374\35\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\21\14"+ + "\1\375\20\14\1\375\11\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\10\14\1\376\43\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\16\14\1\377\35\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\5\14"+ + "\1\u0100\27\14\1\u0100\16\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\1\14\1\u0101\52\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\10\14\1\u0102\43\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\10\14"+ + "\1\u0103\43\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\10\14\1\u0104\26\14\1\u0104\14\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\3\14\1\u0105\30\14"+ + "\1\u0105\17\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\11\14\1\u0106\42\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\12\14\1\u0107\41\14\30\0\1\14"+ + "\6\0\2\14\1\0\5\14\1\u0108\5\0\2\14\1\u0108"+ + "\7\14\1\u0109\35\14\1\u010a\3\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\1\u010b\53\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\3\14\1\u010c\30\14"+ + "\1\u010c\17\14\30\0\1\14\6\0\2\14\1\0\5\14"+ + "\1\u0108\5\0\2\14\1\u0108\7\14\1\u010a\35\14\1\u010a"+ + "\3\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\5\14\1\u010d\1\u010e\1\u010f\6\14\1\u0110\14\14\1\u0110"+ + "\1\14\1\u010d\1\u010f\2\14\1\u010e\12\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\1\14\1\u0111\52\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\12\14"+ + "\1\u0112\41\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\11\14\1\u0113\16\14\1\u0113\23\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\11\14\1\u0114\16\14"+ + "\1\u0113\23\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\11\14\1\u0115\16\14\1\u0115\23\14\30\0\1\14"+ + "\110\0\1\u0116\130\0\1\u0117\1\u0118\127\0\1\u0119\130\0"+ + "\1\u011a\26\0\2\255\1\0\6\255\5\0\54\255\30\0"+ + "\1\255\11\0\1\u011b\3\0\1\u011b\61\0\1\u011b\42\0"+ + "\2\u011c\1\0\3\u011c\5\0\1\u011c\1\0\2\u011c\1\0"+ + "\1\u011c\6\0\2\u011c\16\0\2\u011c\2\0\1\u011c\2\0"+ + "\1\u011c\7\0\1\u011c\42\0\2\u011d\1\0\3\u011d\5\0"+ + "\1\u011d\1\0\2\u011d\1\0\1\u011d\6\0\2\u011d\16\0"+ + "\2\u011d\2\0\1\u011d\2\0\1\u011d\7\0\1\u011d\42\0"+ + "\2\u011e\1\0\3\u011e\5\0\1\u011e\1\0\2\u011e\1\0"+ + "\1\u011e\6\0\2\u011e\16\0\2\u011e\2\0\1\u011e\2\0"+ + "\1\u011e\7\0\1\u011e\42\0\2\u011f\1\0\3\u011f\5\0"+ + "\1\u011f\1\0\2\u011f\1\0\1\u011f\6\0\2\u011f\16\0"+ + "\2\u011f\2\0\1\u011f\2\0\1\u011f\7\0\1\u011f\42\0"+ + "\1\u0120\1\u0121\2\0\1\u0121\61\0\1\u0121\33\0\1\306"+ + "\126\0\5\307\1\u0122\123\307\4\0\1\306\1\310\134\0"+ + "\2\313\2\0\1\313\61\0\1\313\37\0\2\14\1\0"+ + "\6\14\5\0\16\14\1\u0123\14\14\1\u0123\20\14\30\0"+ + "\1\14\6\0\2\316\1\0\6\316\5\0\54\316\30\0"+ + "\1\316\6\0\2\14\1\0\6\14\5\0\3\14\1\u0124"+ + "\50\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\7\14\1\u0125\26\14\1\u0125\15\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\13\14\1\u0126\40\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\14\14\1\u0127"+ + "\23\14\1\u0127\13\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\20\14\1\u0128\33\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\2\14\1\u0129\51\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\2\14\1\u012a"+ + "\51\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\2\14\1\u012b\51\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\5\14\1\u012c\46\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\16\14\1\u012d\14\14\1\u012d"+ + "\20\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\11\14\1\u012e\42\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\6\14\1\u012f\45\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\12\14\1\u0130\35\14\1\u0130"+ + "\3\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\1\14\1\u0131\7\14\1\u0132\20\14\1\u0131\21\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\21\14\1\u0133"+ + "\20\14\1\u0133\11\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\1\14\1\u0131\30\14\1\u0131\21\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\6\14\1\u0134"+ + "\32\14\1\u0134\12\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\2\14\1\u0135\51\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\11\14\1\u0136\42\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\11\14\1\u0137"+ + "\16\14\1\u0137\23\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\16\14\1\u0138\14\14\1\u0138\20\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u0139"+ + "\35\14\30\0\1\14\6\0\2\14\1\0\3\14\1\u013a"+ + "\2\14\5\0\1\u013a\53\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\16\14\1\u013b\14\14\1\u013b\20\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\5\14"+ + "\1\u013c\27\14\1\u013c\16\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\2\14\1\u013d\51\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\26\14\2\u013e\24\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\26\14"+ + "\2\u013f\24\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\7\14\1\u0140\44\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\6\14\1\u0141\45\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\2\14\1\u0142\51\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\11\14"+ + "\1\u0143\42\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\2\14\1\u0144\51\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\1\14\1\u0145\30\14\1\u0145\21\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\7\14"+ + "\1\u0146\6\14\1\u0147\35\14\30\0\1\14\6\0\2\14"+ + "\1\0\5\14\1\u0148\5\0\2\14\1\u0148\51\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\7\14\1\u0149"+ + "\26\14\1\u0149\15\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\3\14\1\u014a\50\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\2\14\1\u014b\51\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u014c"+ + "\14\14\1\u014c\20\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\3\14\1\u014d\50\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\6\14\1\u014e\45\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\7\14\1\u014f"+ + "\26\14\1\u014f\15\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\3\14\1\u0150\50\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\5\14\1\u0151\46\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\26\14\2\u0152"+ + "\24\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\14\14\1\u0153\23\14\1\u0153\13\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\20\14\1\u0154\33\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u0155"+ + "\35\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\24\14\1\u0156\21\14\1\u0156\5\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\10\14\1\u0157\13\14\1\u0158"+ + "\12\14\1\u0157\14\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\10\14\1\u0157\26\14\1\u0157\14\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u0159"+ + "\35\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\22\14\1\u015a\22\14\1\u015a\6\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\20\14\1\u015b\26\14\1\u015b"+ + "\4\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\13\14\1\u015c\15\14\1\u015c\22\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\1\14\1\u015d\30\14\1\u015d"+ + "\21\14\30\0\1\14\6\0\2\14\1\0\5\14\1\u015e"+ + "\5\0\2\14\1\u015e\51\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\14\14\1\u015f\37\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\11\14\1\u0160\1\14"+ + "\1\u0161\10\14\1\u0162\3\14\1\u0160\1\u0161\14\14\1\u0162"+ + "\5\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\7\14\1\u0163\26\14\1\u0163\15\14\30\0\1\14\110\0"+ + "\1\u0164\31\0\1\u0165\3\0\1\u0165\61\0\1\u0165\42\0"+ + "\2\u0166\1\0\3\u0166\5\0\1\u0166\1\0\2\u0166\1\0"+ + "\1\u0166\6\0\2\u0166\16\0\2\u0166\2\0\1\u0166\2\0"+ + "\1\u0166\7\0\1\u0166\42\0\2\u0167\1\0\3\u0167\5\0"+ + "\1\u0167\1\0\2\u0167\1\0\1\u0167\6\0\2\u0167\16\0"+ + "\2\u0167\2\0\1\u0167\2\0\1\u0167\7\0\1\u0167\42\0"+ + "\2\u0168\1\0\3\u0168\5\0\1\u0168\1\0\2\u0168\1\0"+ + "\1\u0168\6\0\2\u0168\16\0\2\u0168\2\0\1\u0168\2\0"+ + "\1\u0168\7\0\1\u0168\42\0\2\u0169\1\0\3\u0169\5\0"+ + "\1\u0169\1\0\2\u0169\1\0\1\u0169\6\0\2\u0169\16\0"+ + "\2\u0169\2\0\1\u0169\2\0\1\u0169\7\0\1\u0169\134\0"+ + "\1\u016a\36\0\2\u0121\2\0\1\u0121\61\0\1\u0121\3\0"+ + "\1\u016a\25\0\4\307\1\306\1\u0122\123\307\6\0\2\14"+ + "\1\0\6\14\5\0\4\14\1\u016b\47\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\24\14\1\u016c\21\14"+ + "\1\u016c\5\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\1\14\1\u016d\52\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\7\14\1\u016e\26\14\1\u016e\15\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\10\14"+ + "\1\u016f\43\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\20\14\1\u0170\33\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\12\14\1\u0171\41\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\6\14\1\u0172\45\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\10\14"+ + "\1\u0173\26\14\1\u0173\14\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\11\14\1\u0174\16\14\1\u0174\23\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\12\14"+ + "\1\u0175\41\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\3\14\1\u0176\10\14\1\u0177\17\14\1\u0176\3\14"+ + "\1\u0177\13\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\11\14\1\u0178\16\14\1\u0178\23\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\1\14\1\u0179\52\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\5\14"+ + "\1\u017a\46\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\15\14\1\u017b\25\14\1\u017b\10\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u017c\35\14"+ + "\1\u017c\3\14\30\0\1\14\6\0\2\14\1\0\5\14"+ + "\1\u017d\5\0\2\14\1\u017d\51\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\11\14\1\u017e\16\14\1\u017e"+ + "\23\14\30\0\1\14\6\0\2\14\1\0\5\14\1\u017f"+ + "\5\0\2\14\1\u017f\51\14\30\0\1\14\6\0\2\14"+ + "\1\0\5\14\1\u0180\5\0\2\14\1\u0180\51\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u0181"+ + "\14\14\1\u0181\20\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\17\14\1\u0182\34\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\7\14\1\u0183\44\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\u0184"+ + "\50\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\1\14\1\u0185\52\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\3\14\1\u0186\30\14\1\u0186\17\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\u0187"+ + "\52\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\2\14\1\u0188\51\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\15\14\1\u0189\25\14\1\u0189\10\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\u018a"+ + "\30\14\1\u018a\17\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\13\14\1\u018b\40\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\11\14\1\u018c\42\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\u018d"+ + "\35\14\1\u018d\3\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\23\14\1\u018e\30\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\2\14\1\u018f\51\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\23\14\1\u0190"+ + "\20\14\1\u0190\7\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\16\14\1\u0191\35\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\11\14\1\u0192\42\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\11\14\1\u0193"+ + "\16\14\1\u0193\23\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\23\14\1\u0194\1\u0195\17\14\1\u0194\1\14"+ + "\1\u0195\5\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\2\14\1\u0196\51\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\15\14\1\u0197\25\14\1\u0197\10\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\11\14"+ + "\1\u0198\16\14\1\u0198\23\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\3\14\1\u0199\50\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u019a\41\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\1\14"+ + "\1\u019b\30\14\1\u019b\21\14\30\0\1\14\6\0\2\14"+ + "\1\0\3\14\1\u019c\2\14\5\0\1\u019c\53\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\14\14\1\u019d"+ + "\23\14\1\u019d\13\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\10\14\1\u019e\26\14\1\u019e\14\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\u019f"+ + "\35\14\1\u019f\3\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\1\14\1\u01a0\30\14\1\u01a0\21\14\30\0"+ + "\1\14\6\0\2\14\1\0\5\14\1\u01a1\5\0\2\14"+ + "\1\u01a1\51\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\3\14\1\u01a2\30\14\1\u01a2\17\14\30\0\1\14"+ + "\6\0\2\14\1\0\5\14\1\u01a3\5\0\2\14\1\u01a3"+ + "\51\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\10\14\1\u01a4\43\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\23\14\1\u01a5\20\14\1\u01a5\7\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\14\14\1\u01a6"+ + "\37\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\10\14\1\u01a7\43\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\26\14\2\u01a8\24\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\14\14\1\u01a9\23\14\1\u01a9"+ + "\13\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\5\14\1\u01aa\46\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\16\14\1\u01ab\14\14\1\u01ab\20\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\u01ac"+ + "\30\14\1\u01ac\21\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\1\14\1\u01ad\30\14\1\u01ad\21\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\20\14\1\u01ae"+ + "\33\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\1\14\1\u01af\30\14\1\u01af\21\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\10\14\1\u01b0\26\14\1\u01b0"+ + "\14\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\1\14\1\u01b1\30\14\1\u01b1\21\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\3\14\1\u01b2\30\14\1\u01b2"+ + "\17\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\11\14\1\u01b3\16\14\1\u01b3\23\14\30\0\1\14\6\0"+ + "\2\14\1\0\5\14\1\u01b4\5\0\2\14\1\u01b4\51\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\15\14"+ + "\1\u01b5\36\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\10\14\1\u01b6\43\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\15\14\1\u01b7\36\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\23\14\1\u01b8\20\14"+ + "\1\u01b8\7\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\11\14\1\u01b9\42\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\23\14\1\u01ba\30\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u01bb\35\14"+ + "\1\u01bb\3\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\14\14\1\u01bc\23\14\1\u01bc\13\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\16\14\1\u01bd\35\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\2\14"+ + "\1\u01be\51\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\5\14\1\u01bf\27\14\1\u01bf\16\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u01c0\41\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\23\14"+ + "\1\u01c1\20\14\1\u01c1\7\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\16\14\1\u01c2\35\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u01c3\41\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\20\14"+ + "\1\u01c4\26\14\1\u01c4\4\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\7\14\1\u01c5\26\14\1\u01c5\15\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14"+ + "\1\u01c6\30\14\1\u01c6\17\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\1\14\1\u01c7\30\14\1\u01c7\21\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14"+ + "\1\u01c8\4\14\1\u01c9\23\14\1\u01c8\2\14\1\u01c9\14\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\11\14"+ + "\1\u01ca\42\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\5\14\1\u01cb\46\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\6\14\1\u01cc\32\14\1\u01cc\12\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\26\14"+ + "\2\u01cd\24\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\23\14\1\u01ce\20\14\1\u01ce\7\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\16\14\1\u01cf\14\14"+ + "\1\u01cf\20\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\1\14\1\u01d0\30\14\1\u01d0\21\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\10\14\1\u01d1\26\14"+ + "\1\u01d1\14\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\23\14\1\u01d2\20\14\1\u01d2\7\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\6\14\1\u01d3\45\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\13\14"+ + "\1\u01d4\40\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\1\14\1\u01d5\30\14\1\u01d5\21\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\16\14\1\u01d6\14\14"+ + "\1\u01d6\20\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\3\14\1\u01d7\30\14\1\u01d7\17\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\3\14\1\u01d8\30\14"+ + "\1\u01d8\17\14\30\0\1\14\6\0\2\14\1\0\5\14"+ + "\1\u01d9\5\0\2\14\1\u01d9\51\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\1\14\1\u01da\30\14\1\u01da"+ + "\21\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\21\14\1\u01db\20\14\1\u01db\11\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\20\14\1\u01dc\26\14\1\u01dc"+ + "\4\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\5\14\1\u01dd\46\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\3\14\1\u01de\50\14\30\0\1\14\6\0"+ + "\2\14\1\0\5\14\1\u01df\5\0\2\14\1\u01df\51\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\2\14"+ + "\1\u01e0\51\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\10\14\1\u01e1\26\14\1\u01e1\14\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\23\14\1\u01e2\20\14"+ + "\1\u01e2\7\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\11\14\1\u01e3\42\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\3\14\1\u01e4\30\14\1\u01e4\17\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\5\14"+ + "\1\u01e5\46\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\3\14\1\u01e6\30\14\1\u01e6\17\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\22\14\1\u01e7\31\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\7\14"+ + "\1\u01e8\44\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\24\14\1\u01e9\21\14\1\u01e9\5\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\1\14\1\u01ea\30\14"+ + "\1\u01ea\21\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\3\14\1\u01eb\30\14\1\u01eb\17\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\6\14\1\u01ec\32\14"+ + "\1\u01ec\12\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\13\14\1\u01ed\15\14\1\u01ed\22\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\2\14\1\u01ee\51\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\11\14"+ + "\1\u01ef\16\14\1\u01ef\23\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\11\14\1\u01f0\16\14\1\u01f0\23\14"+ + "\30\0\1\14\6\0\2\14\1\0\5\14\1\u01f1\5\0"+ + "\2\14\1\u01f1\51\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\6\14\1\u01f2\32\14\1\u01f2\12\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\14\14\1\u01f3"+ + "\23\14\1\u01f3\13\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\7\14\1\u01f4\26\14\1\u01f4\15\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\2\14\1\u01f5"+ + "\51\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\3\14\1\u01f6\30\14\1\u01f6\17\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\6\14\1\u01f7\32\14\1\u01f7"+ + "\12\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\26\14\2\u01f8\24\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\23\14\1\u01f9\20\14\1\u01f9\7\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\26\14\2\u01fa"+ + "\24\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\3\14\1\u01fb\30\14\1\u01fb\17\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\12\14\1\u01fc\35\14\1\u01fc"+ + "\3\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\2\14\1\u01fd\51\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\5\14\1\u01fe\46\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\16\14\1\u01ff\14\14\1\u01ff"+ + "\20\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\10\14\1\u0200\43\14\30\0\1\14\6\0\2\14\1\0"+ + "\5\14\1\u0201\5\0\2\14\1\u0201\51\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\7\14\1\u0202\26\14"+ + "\1\u0202\15\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\11\14\1\u0203\16\14\1\u0203\23\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\10\14\1\u0204\26\14"+ + "\1\u0204\14\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\10\14\1\u0205\43\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\12\14\1\u0206\35\14\1\u0206\3\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\12\14"+ + "\1\u0207\35\14\1\u0207\3\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\23\14\1\u0208\20\14\1\u0208\7\14"+ + "\30\0\1\14\6\0\2\14\1\0\3\14\1\u0209\2\14"+ + "\5\0\1\u0209\53\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\23\14\1\u020a\20\14\1\u020a\7\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\u020b"+ + "\30\14\1\u020b\21\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\20\14\1\u020c\26\14\1\u020c\4\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\u020d"+ + "\30\14\1\u020d\21\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\12\14\1\u020e\35\14\1\u020e\3\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\6\14\1\u020f"+ + "\12\14\1\u0210\17\14\1\u020f\1\u0210\11\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\24\14\1\u0211\21\14"+ + "\1\u0211\5\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\26\14\2\u0212\24\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\7\14\1\u0213\26\14\1\u0213\15\14"+ + "\30\0\1\14\6\0\2\14\1\0\5\14\1\u0214\5\0"+ + "\2\14\1\u0214\51\14\30\0\1\14\6\0\2\14\1\0"+ + "\5\14\1\u0215\5\0\2\14\1\u0215\51\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\11\14\1\u0216\16\14"+ + "\1\u0216\23\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\26\14\2\u0217\24\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\7\14\1\u0218\44\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\2\14\1\u0219\51\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\7\14"+ + "\1\u021a\26\14\1\u021a\15\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\11\14\1\u021b\42\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\14\14\1\u021c\23\14"+ + "\1\u021c\13\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\24\14\1\u021d\21\14\1\u021d\5\14\30\0\1\14"+ + "\6\0\2\14\1\0\5\14\1\u021e\5\0\2\14\1\u021e"+ + "\51\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\14\14\1\u021f\23\14\1\u021f\13\14\30\0\1\14\6\0"+ + "\2\14\1\0\5\14\1\u0220\5\0\2\14\1\u0220\51\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14"+ + "\1\u0221\30\14\1\u0221\17\14\30\0\1\14\6\0\2\14"+ + "\1\0\5\14\1\u0222\5\0\2\14\1\u0222\51\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\u0223"+ + "\35\14\1\u0223\3\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\12\14\1\u0224\35\14\1\u0224\3\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\7\14\1\u0225"+ + "\26\14\1\u0225\15\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\11\14\1\u0226\16\14\1\u0226\23\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u0227"+ + "\14\14\1\u0227\20\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\12\14\1\u0228\35\14\1\u0228\3\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\13\14\1\u0229"+ + "\15\14\1\u0229\22\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\11\14\1\u022a\16\14\1\u022a\23\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\20\14\1\u022b"+ + "\26\14\1\u022b\4\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\20\14\1\u022c\26\14\1\u022c\4\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\15\14\1\u022d"+ + "\36\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\3\14\1\u022e\30\14\1\u022e\17\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\6\14\1\u022f\45\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\u0230"+ + "\35\14\1\u0230\3\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\23\14\1\u0231\20\14\1\u0231\7\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\53\14\1\u0232"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\10\14"+ + "\1\u0233\26\14\1\u0233\14\14\30\0\1\14\6\0\2\14"+ + "\1\0\3\14\1\u0234\2\14\5\0\1\u0234\53\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\11\14\1\u0235"+ + "\16\14\1\u0235\23\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\10\14\1\u0236\26\14\1\u0236\14\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\10\14\1\u0237"+ + "\26\14\1\u0237\14\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\7\14\1\u0238\26\14\1\u0238\15\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\u0239"+ + "\30\14\1\u0239\17\14\30\0\1\14\6\0\2\14\1\0"+ + "\5\14\1\u023a\5\0\2\14\1\u023a\51\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\10\14\1\u023b\26\14"+ + "\1\u023b\14\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\51\14\1\u023c\2\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\14\14\1\u023d\23\14\1\u023d\13\14"+ + "\30\0\1\14\6\0\2\14\1\0\5\14\1\u023e\5\0"+ + "\2\14\1\u023e\51\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\7\14\1\u023f\26\14\1\u023f\15\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\13\14\1\u0240"+ + "\15\14\1\u0240\22\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\16\14\1\u0241\14\14\1\u0241\20\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\23\14\1\u0242"+ + "\20\14\1\u0242\7\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\26\14\2\u0243\24\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\21\14\1\u0244\20\14\1\u0244"+ + "\11\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\22\14\1\u0245\22\14\1\u0245\6\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\5\14\1\u0246\27\14\1\u0246"+ + "\16\14\30\0\1\14\6\0\2\14\1\0\6\14\5\0"+ + "\14\14\1\u0247\23\14\1\u0247\13\14\30\0\1\14\6\0"+ + "\2\14\1\0\6\14\5\0\13\14\1\u0248\15\14\1\u0248"+ + "\22\14\30\0\1\14\6\0\2\14\1\0\5\14\1\u0249"+ + "\5\0\2\14\1\u0249\51\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\10\14\1\u024a\26\14\1\u024a\14\14"+ + "\30\0\1\14\6\0\2\14\1\0\6\14\5\0\24\14"+ + "\1\u024b\21\14\1\u024b\5\14\30\0\1\14\6\0\2\14"+ + "\1\0\6\14\5\0\23\14\1\u024c\20\14\1\u024c\7\14"+ + "\30\0\1\14\6\0\2\14\1\0\5\14\1\u024d\5\0"+ + "\2\14\1\u024d\51\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\3\14\1\u024e\30\14\1\u024e\17\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u024f"+ + "\14\14\1\u024f\20\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\6\14\1\u0250\32\14\1\u0250\12\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\u0251"+ + "\30\14\1\u0251\17\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\14\14\1\u0252\23\14\1\u0252\13\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\13\14\1\u0253"+ + "\15\14\1\u0253\22\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\12\14\1\u0254\35\14\1\u0254\3\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\6\14\1\u0255"+ + "\32\14\1\u0255\12\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\21\14\1\u0256\20\14\1\u0256\11\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\u0257"+ + "\35\14\1\u0257\3\14\30\0\1\14\6\0\2\14\1\0"+ + "\6\14\5\0\16\14\1\u0258\14\14\1\u0258\20\14\30\0"+ + "\1\14\6\0\2\14\1\0\6\14\5\0\23\14\1\u0259"+ + "\20\14\1\u0259\7\14\30\0\1\14\6\0\2\14\1\0"+ + "\5\14\1\u025a\5\0\2\14\1\u025a\51\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\10\14\1\u025b\26\14"+ + "\1\u025b\14\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\10\14\1\u025c\26\14\1\u025c\14\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\21\14\1\u025d\20\14"+ + "\1\u025d\11\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\12\14\1\u025e\35\14\1\u025e\3\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\5\14\1\u025f\27\14"+ + "\1\u025f\16\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\13\14\1\u0260\15\14\1\u0260\22\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\13\14\1\u0261\15\14"+ + "\1\u0261\22\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\11\14\1\u0262\16\14\1\u0262\23\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\16\14\1\u0263\14\14"+ + "\1\u0263\20\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\23\14\1\u0264\20\14\1\u0264\7\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\23\14\1\u0265\20\14"+ + "\1\u0265\7\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\22\14\1\u0266\22\14\1\u0266\6\14\30\0\1\14"+ + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u0267\35\14"+ + "\1\u0267\3\14\30\0\1\14\6\0\2\14\1\0\6\14"+ + "\5\0\21\14\1\u0268\20\14\1\u0268\11\14\30\0\1\14"; - private static int[] zzUnpackRowMap() { - int[] result = new int[613]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; + private static int [] zzUnpackTrans() { + int [] result = new int[41652]; + int offset = 0; + offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackTrans(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + value--; + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackRowMap(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; + + /* error codes */ + private static final int ZZ_UNKNOWN_ERROR = 0; + private static final int ZZ_NO_MATCH = 1; + private static final int ZZ_PUSHBACK_2BIG = 2; + + /* error messages for the codes above */ + private static final String ZZ_ERROR_MSG[] = { + "Unkown internal scanner error", + "Error: could not match input", + "Error: pushback value was too large" + }; + + /** + * ZZ_ATTRIBUTE[aState] contains the attributes of state aState + */ + private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); + + private static final String ZZ_ATTRIBUTE_PACKED_0 = + "\5\0\1\11\1\1\1\11\11\1\2\11\37\1\10\11"+ + "\4\1\3\11\5\1\1\11\3\1\2\11\3\1\1\11"+ + "\1\1\1\11\1\1\1\0\2\11\1\0\3\1\2\0"+ + "\1\1\2\11\1\0\76\1\1\11\1\1\2\11\2\1"+ + "\10\11\1\1\1\11\1\1\7\11\1\1\1\11\1\1"+ + "\7\11\1\1\1\11\3\1\1\11\2\0\1\11\2\1"+ + "\1\0\111\1\2\11\1\1\2\11\10\0\101\1\2\11"+ + "\1\0\1\11\1\0\2\11\376\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[616]; + int offset = 0; + offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAttribute(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - /** - * The transition table of the DFA - */ - private static final int[] ZZ_TRANS = zzUnpackTrans(); + /** the input device */ + private java.io.Reader zzReader; - private static final String ZZ_TRANS_PACKED_0 - = "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\6" - + "\1\15\1\16\1\17\2\14\1\17\1\20\1\21\1\22" - + "\1\23\1\6\1\24\1\25\1\26\1\27\1\30\1\14" - + "\1\31\1\32\1\33\1\34\1\35\1\36\1\37\1\40" - + "\1\41\1\42\1\43\1\14\1\44\1\14\1\45\1\46" - + "\1\14\1\47\1\50\1\51\1\37\1\52\1\42\1\14" - + "\1\53\1\54\1\55\1\56\1\57\1\60\1\61\1\45" - + "\3\14\1\62\2\14\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\102\1\103\1\104\1\105\1\106\1\107" - + "\1\6\1\11\1\6\1\110\1\111\1\112\15\110\1\113" - + "\1\110\1\114\104\110\1\115\1\111\1\112\16\115\1\113" - + "\1\116\104\115\127\6\1\117\1\111\1\112\17\117\1\120" - + "\1\121\103\117\131\0\1\10\127\0\1\11\121\0\1\11" - + "\5\0\1\122\1\123\101\0\1\124\126\0\1\125\25\0" - + "\2\14\1\0\6\14\5\0\53\14\27\0\1\14\10\0" - + "\1\126\2\127\2\0\1\127\121\0\1\127\1\130\1\131" - + "\1\132\1\0\1\130\1\133\7\0\1\133\22\0\1\132" - + "\65\0\1\127\2\17\2\0\1\17\1\133\7\0\1\133" - + "\106\0\2\14\1\0\6\14\5\0\24\14\1\134\21\14" - + "\1\134\4\14\27\0\1\14\17\0\1\135\67\0\1\136" - + "\42\0\1\137\111\0\2\14\1\0\6\14\5\0\1\14" - + "\1\140\51\14\27\0\1\14\6\0\2\14\1\0\5\14" - + "\1\141\5\0\2\14\1\142\1\143\30\14\1\143\16\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14" - + "\1\144\12\14\1\145\5\14\1\134\1\146\20\14\1\134" - + "\4\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\10\14\1\147\42\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\3\14\1\150\3\14\1\151\6\14\1\152" - + "\1\14\1\153\13\14\1\154\12\14\1\153\3\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\2\14\1\155" - + "\6\14\1\156\1\14\1\157\3\14\1\160\10\14\1\161" - + "\1\162\21\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\1\14\1\163\30\14\1\164\20\14\27\0\1\14" - + "\6\0\2\14\1\0\5\14\1\165\5\0\2\14\1\166" - + "\10\14\1\167\15\14\1\170\21\14\27\0\1\14\6\0" - + "\2\14\1\0\5\14\1\171\5\0\1\14\1\172\1\171" - + "\1\173\3\14\1\174\10\14\1\175\1\14\1\176\7\14" - + "\1\177\1\14\1\173\1\14\1\174\14\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\10\14\1\200\4\14" - + "\1\201\5\14\1\202\13\14\1\203\3\14\1\204\7\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\10\14" - + "\1\205\26\14\1\205\13\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\2\14\1\206\4\14\1\207\3\14" - + "\1\210\6\14\1\211\6\14\1\210\21\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\3\14\1\212\2\14" - + "\1\213\1\214\2\14\1\215\1\216\25\14\1\213\11\14" - + "\27\0\1\14\6\0\2\14\1\0\5\14\1\217\5\0" - + "\2\14\1\217\4\14\1\220\26\14\1\220\14\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\221" - + "\5\14\1\222\32\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\1\14\1\223\11\14\1\224\2\14\1\225" - + "\13\14\1\226\1\225\17\14\27\0\1\14\6\0\2\14" - + "\1\0\3\14\1\227\2\14\5\0\1\227\52\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\230" - + "\3\14\1\231\43\14\27\0\1\14\6\0\2\14\1\0" - + "\5\14\1\232\5\0\2\14\1\233\4\14\1\234\26\14" - + "\1\234\14\14\27\0\1\14\6\0\2\14\1\0\5\14" - + "\1\232\5\0\2\14\1\232\4\14\1\234\26\14\1\234" - + "\14\14\27\0\1\14\6\0\2\14\1\0\5\14\1\171" - + "\5\0\1\14\1\177\1\171\1\173\3\14\1\174\22\14" - + "\1\177\1\14\1\173\1\14\1\174\14\14\27\0\1\14" - + "\6\0\2\14\1\0\5\14\1\141\5\0\2\14\1\141" - + "\1\143\30\14\1\143\16\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\3\14\1\154\14\14\1\153\13\14" - + "\1\154\12\14\1\153\3\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\1\14\1\164\30\14\1\164\20\14" - + "\27\0\1\14\6\0\2\14\1\0\5\14\1\165\5\0" - + "\2\14\1\165\10\14\1\170\15\14\1\170\21\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\13\14\1\210" - + "\15\14\1\210\21\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\11\14\1\161\1\14\1\162\14\14\1\161" - + "\1\162\21\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\1\14\1\226\14\14\1\225\13\14\1\226\1\225" - + "\17\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\6\14\1\213\32\14\1\213\11\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\10\14\1\203\4\14\1\204" - + "\21\14\1\203\3\14\1\204\7\14\27\0\1\14\107\0" - + "\1\235\126\0\1\236\1\237\125\0\1\240\1\241\1\242" - + "\124\0\1\243\126\0\1\244\6\0\1\245\117\0\1\246" - + "\7\0\1\247\116\0\1\250\10\0\1\251\115\0\1\252" - + "\126\0\1\253\17\0\1\110\2\0\15\110\1\0\1\110" - + "\1\0\104\110\2\0\1\112\124\0\1\254\2\0\6\254" - + "\1\255\3\254\1\255\2\254\1\256\1\257\1\260\1\254" - + "\1\261\1\262\6\254\1\263\1\264\1\254\1\265\1\254" - + "\1\266\7\254\1\267\52\254\3\0\1\115\2\0\16\115" - + "\2\0\104\115\1\254\2\0\15\254\1\256\1\257\1\260" - + "\1\254\1\261\1\262\6\254\1\263\1\264\1\254\1\265" - + "\1\254\1\266\7\254\1\267\52\254\3\0\1\270\2\0" - + "\17\270\1\271\1\272\1\273\1\274\6\270\1\275\1\276" - + "\1\270\1\277\1\270\1\300\7\270\1\301\27\270\1\302" - + "\22\270\3\0\1\122\1\303\1\304\124\122\5\305\1\306" - + "\121\305\10\0\1\307\127\0\2\127\2\0\1\127\1\133" - + "\7\0\1\133\110\0\1\127\1\130\1\131\2\0\1\130" - + "\1\133\7\0\1\133\110\0\1\127\2\131\2\0\1\131" - + "\1\133\7\0\1\133\111\0\2\310\1\0\3\310\5\0" - + "\1\310\1\0\2\310\1\0\1\310\6\0\2\310\16\0" - + "\2\310\2\0\1\310\2\0\1\310\50\0\2\311\2\0" - + "\1\311\1\0\1\312\100\0\1\312\14\0\2\14\1\0" - + "\6\14\5\0\3\14\1\313\30\14\1\313\16\14\27\0" - + "\1\14\6\0\1\314\4\0\2\314\1\0\1\314\5\0" - + "\53\314\36\0\2\14\1\0\6\14\5\0\2\14\1\315" - + "\50\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\23\14\1\316\20\14\1\316\6\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\11\14\1\317\11\14\1\316" - + "\20\14\1\316\6\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\10\14\1\320\26\14\1\320\13\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\5\14\1\321" - + "\45\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\6\14\1\322\44\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\11\14\1\323\41\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\14\14\1\324\36\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\6\14\1\325" - + "\2\14\1\326\4\14\1\327\14\14\1\327\17\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\10\14\1\330" - + "\42\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\3\14\1\331\47\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\1\14\1\332\30\14\1\332\20\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\327" - + "\14\14\1\327\17\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\11\14\1\333\41\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\1\14\1\334\1\14\1\335" - + "\3\14\1\336\22\14\1\334\1\14\1\337\1\14\1\336" - + "\14\14\27\0\1\14\6\0\2\14\1\0\3\14\1\340" - + "\2\14\5\0\1\340\20\14\1\341\31\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\12\14\1\342\40\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\1\14" - + "\1\334\1\14\1\337\3\14\1\336\22\14\1\334\1\14" - + "\1\337\1\14\1\336\14\14\27\0\1\14\6\0\2\14" - + "\1\0\3\14\1\340\2\14\5\0\1\340\52\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\14\14\1\343" - + "\23\14\1\343\12\14\27\0\1\14\6\0\2\14\1\0" - + "\2\14\1\344\3\14\5\0\17\14\1\345\5\14\1\344" - + "\24\14\1\345\27\0\1\14\6\0\2\14\1\0\2\14" - + "\1\344\3\14\5\0\17\14\1\346\5\14\1\344\24\14" - + "\1\345\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\16\14\1\347\4\14\1\350\20\14\1\350\6\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\23\14\1\350" - + "\20\14\1\350\6\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\16\14\1\351\14\14\1\351\17\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\352" - + "\7\14\1\353\6\14\1\354\11\14\1\352\16\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\355" - + "\30\14\1\355\20\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\26\14\2\356\23\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\1\14\1\357\10\14\1\360" - + "\40\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\21\14\1\361\31\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\3\14\1\352\30\14\1\352\16\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\6\14\1\362" - + "\2\14\1\363\16\14\1\364\22\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\15\14\1\365\25\14\1\365" - + "\7\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\21\14\1\366\31\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\11\14\1\364\16\14\1\364\22\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\14\14\1\367" - + "\1\14\1\370\14\14\1\370\4\14\1\367\12\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\15\14\1\371" - + "\1\372\34\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\21\14\1\373\20\14\1\373\10\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\10\14\1\374\42\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\16\14" - + "\1\375\34\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\5\14\1\376\27\14\1\376\15\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\1\14\1\377\51\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\10\14" - + "\1\u0100\42\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\10\14\1\u0101\42\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\10\14\1\u0102\26\14\1\u0102\13\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14" - + "\1\u0103\30\14\1\u0103\16\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\11\14\1\u0104\41\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u0105\40\14" - + "\27\0\1\14\6\0\2\14\1\0\5\14\1\u0106\5\0" - + "\2\14\1\u0106\7\14\1\u0107\35\14\1\u0108\2\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\1\u0109\52\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14" - + "\1\u010a\30\14\1\u010a\16\14\27\0\1\14\6\0\2\14" - + "\1\0\5\14\1\u0106\5\0\2\14\1\u0106\7\14\1\u0108" - + "\35\14\1\u0108\2\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\5\14\1\u010b\1\u010c\1\u010d\6\14\1\u010e" - + "\14\14\1\u010e\1\14\1\u010b\1\u010d\2\14\1\u010c\11\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\1\14" - + "\1\u010f\51\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\12\14\1\u0110\40\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\11\14\1\u0111\16\14\1\u0111\22\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\11\14" - + "\1\u0112\16\14\1\u0111\22\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\11\14\1\u0113\16\14\1\u0113\22\14" - + "\27\0\1\14\107\0\1\u0114\126\0\1\u0115\1\u0116\125\0" - + "\1\u0117\126\0\1\u0118\30\0\1\u0119\3\0\1\u0119\122\0" - + "\2\u011a\1\0\3\u011a\5\0\1\u011a\1\0\2\u011a\1\0" - + "\1\u011a\6\0\2\u011a\16\0\2\u011a\2\0\1\u011a\2\0" - + "\1\u011a\50\0\2\u011b\1\0\3\u011b\5\0\1\u011b\1\0" - + "\2\u011b\1\0\1\u011b\6\0\2\u011b\16\0\2\u011b\2\0" - + "\1\u011b\2\0\1\u011b\50\0\2\u011c\1\0\3\u011c\5\0" - + "\1\u011c\1\0\2\u011c\1\0\1\u011c\6\0\2\u011c\16\0" - + "\2\u011c\2\0\1\u011c\2\0\1\u011c\50\0\2\u011d\1\0" - + "\3\u011d\5\0\1\u011d\1\0\2\u011d\1\0\1\u011d\6\0" - + "\2\u011d\16\0\2\u011d\2\0\1\u011d\2\0\1\u011d\50\0" - + "\1\u011e\1\u011f\2\0\1\u011f\113\0\1\304\124\0\5\305" - + "\1\u0120\121\305\4\0\1\304\1\306\132\0\2\311\2\0" - + "\1\311\117\0\2\14\1\0\6\14\5\0\16\14\1\u0121" - + "\14\14\1\u0121\17\14\27\0\1\14\6\0\2\314\1\0" - + "\6\314\5\0\53\314\27\0\1\314\6\0\2\14\1\0" - + "\6\14\5\0\3\14\1\u0122\47\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\7\14\1\u0123\26\14\1\u0123" - + "\14\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\13\14\1\u0124\37\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\14\14\1\u0125\23\14\1\u0125\12\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\20\14\1\u0126" - + "\32\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\2\14\1\u0127\50\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\2\14\1\u0128\50\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\2\14\1\u0129\50\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\5\14\1\u012a" - + "\45\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\16\14\1\u012b\14\14\1\u012b\17\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\11\14\1\u012c\41\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\6\14\1\u012d" - + "\44\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\12\14\1\u012e\35\14\1\u012e\2\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\1\14\1\u012f\7\14\1\u0130" - + "\20\14\1\u012f\20\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\21\14\1\u0131\20\14\1\u0131\10\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\u012f" - + "\30\14\1\u012f\20\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\6\14\1\u0132\32\14\1\u0132\11\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\2\14\1\u0133" - + "\50\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\11\14\1\u0134\41\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\11\14\1\u0135\16\14\1\u0135\22\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u0136" - + "\14\14\1\u0136\17\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\16\14\1\u0137\34\14\27\0\1\14\6\0" - + "\2\14\1\0\3\14\1\u0138\2\14\5\0\1\u0138\52\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\16\14" - + "\1\u0139\14\14\1\u0139\17\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\5\14\1\u013a\27\14\1\u013a\15\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\2\14" - + "\1\u013b\50\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\26\14\2\u013c\23\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\26\14\2\u013d\23\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\7\14\1\u013e\43\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\6\14" - + "\1\u013f\44\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\2\14\1\u0140\50\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\11\14\1\u0141\41\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\2\14\1\u0142\50\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\1\14" - + "\1\u0143\30\14\1\u0143\20\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\7\14\1\u0144\6\14\1\u0145\34\14" - + "\27\0\1\14\6\0\2\14\1\0\5\14\1\u0146\5\0" - + "\2\14\1\u0146\50\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\7\14\1\u0147\26\14\1\u0147\14\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\u0148" - + "\47\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\2\14\1\u0149\50\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\16\14\1\u014a\14\14\1\u014a\17\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\u014b" - + "\47\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\6\14\1\u014c\44\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\7\14\1\u014d\26\14\1\u014d\14\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\u014e" - + "\47\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\5\14\1\u014f\45\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\26\14\2\u0150\23\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\14\14\1\u0151\23\14\1\u0151" - + "\12\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\20\14\1\u0152\32\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\16\14\1\u0153\34\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\24\14\1\u0154\21\14\1\u0154" - + "\4\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\10\14\1\u0155\13\14\1\u0156\12\14\1\u0155\13\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\10\14\1\u0155" - + "\26\14\1\u0155\13\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\16\14\1\u0157\34\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\22\14\1\u0158\22\14\1\u0158" - + "\5\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\20\14\1\u0159\26\14\1\u0159\3\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\13\14\1\u015a\15\14\1\u015a" - + "\21\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\1\14\1\u015b\30\14\1\u015b\20\14\27\0\1\14\6\0" - + "\2\14\1\0\5\14\1\u015c\5\0\2\14\1\u015c\50\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\14\14" - + "\1\u015d\36\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\11\14\1\u015e\1\14\1\u015f\10\14\1\u0160\3\14" - + "\1\u015e\1\u015f\14\14\1\u0160\4\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\7\14\1\u0161\26\14\1\u0161" - + "\14\14\27\0\1\14\107\0\1\u0162\30\0\1\u0163\3\0" - + "\1\u0163\122\0\2\u0164\1\0\3\u0164\5\0\1\u0164\1\0" - + "\2\u0164\1\0\1\u0164\6\0\2\u0164\16\0\2\u0164\2\0" - + "\1\u0164\2\0\1\u0164\50\0\2\u0165\1\0\3\u0165\5\0" - + "\1\u0165\1\0\2\u0165\1\0\1\u0165\6\0\2\u0165\16\0" - + "\2\u0165\2\0\1\u0165\2\0\1\u0165\50\0\2\u0166\1\0" - + "\3\u0166\5\0\1\u0166\1\0\2\u0166\1\0\1\u0166\6\0" - + "\2\u0166\16\0\2\u0166\2\0\1\u0166\2\0\1\u0166\50\0" - + "\2\u0167\1\0\3\u0167\5\0\1\u0167\1\0\2\u0167\1\0" - + "\1\u0167\6\0\2\u0167\16\0\2\u0167\2\0\1\u0167\2\0" - + "\1\u0167\141\0\1\u0168\35\0\2\u011f\2\0\1\u011f\64\0" - + "\1\u0168\24\0\4\305\1\304\1\u0120\121\305\6\0\2\14" - + "\1\0\6\14\5\0\4\14\1\u0169\46\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\24\14\1\u016a\21\14" - + "\1\u016a\4\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\1\14\1\u016b\51\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\7\14\1\u016c\26\14\1\u016c\14\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\10\14" - + "\1\u016d\42\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\20\14\1\u016e\32\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\12\14\1\u016f\40\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\6\14\1\u0170\44\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\10\14" - + "\1\u0171\26\14\1\u0171\13\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\11\14\1\u0172\16\14\1\u0172\22\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\12\14" - + "\1\u0173\40\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\3\14\1\u0174\10\14\1\u0175\17\14\1\u0174\3\14" - + "\1\u0175\12\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\11\14\1\u0176\16\14\1\u0176\22\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\1\14\1\u0177\51\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\5\14" - + "\1\u0178\45\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\15\14\1\u0179\25\14\1\u0179\7\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u017a\35\14" - + "\1\u017a\2\14\27\0\1\14\6\0\2\14\1\0\5\14" - + "\1\u017b\5\0\2\14\1\u017b\50\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\11\14\1\u017c\16\14\1\u017c" - + "\22\14\27\0\1\14\6\0\2\14\1\0\5\14\1\u017d" - + "\5\0\2\14\1\u017d\50\14\27\0\1\14\6\0\2\14" - + "\1\0\5\14\1\u017e\5\0\2\14\1\u017e\50\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u017f" - + "\14\14\1\u017f\17\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\17\14\1\u0180\33\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\7\14\1\u0181\43\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\u0182" - + "\47\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\1\14\1\u0183\51\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\3\14\1\u0184\30\14\1\u0184\16\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\u0185" - + "\51\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\2\14\1\u0186\50\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\15\14\1\u0187\25\14\1\u0187\7\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\3\14\1\u0188" - + "\30\14\1\u0188\16\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\13\14\1\u0189\37\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\11\14\1\u018a\41\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\u018b" - + "\35\14\1\u018b\2\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\23\14\1\u018c\27\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\2\14\1\u018d\50\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\23\14\1\u018e" - + "\20\14\1\u018e\6\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\16\14\1\u018f\34\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\11\14\1\u0190\41\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\11\14\1\u0191" - + "\16\14\1\u0191\22\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\23\14\1\u0192\1\u0193\17\14\1\u0192\1\14" - + "\1\u0193\4\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\2\14\1\u0194\50\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\15\14\1\u0195\25\14\1\u0195\7\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\11\14" - + "\1\u0196\16\14\1\u0196\22\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\3\14\1\u0197\47\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u0198\40\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\1\14" - + "\1\u0199\30\14\1\u0199\20\14\27\0\1\14\6\0\2\14" - + "\1\0\3\14\1\u019a\2\14\5\0\1\u019a\52\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\14\14\1\u019b" - + "\23\14\1\u019b\12\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\10\14\1\u019c\26\14\1\u019c\13\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\u019d" - + "\35\14\1\u019d\2\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\1\14\1\u019e\30\14\1\u019e\20\14\27\0" - + "\1\14\6\0\2\14\1\0\5\14\1\u019f\5\0\2\14" - + "\1\u019f\50\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\3\14\1\u01a0\30\14\1\u01a0\16\14\27\0\1\14" - + "\6\0\2\14\1\0\5\14\1\u01a1\5\0\2\14\1\u01a1" - + "\50\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\10\14\1\u01a2\42\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\23\14\1\u01a3\20\14\1\u01a3\6\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\14\14\1\u01a4" - + "\36\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\10\14\1\u01a5\42\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\26\14\2\u01a6\23\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\14\14\1\u01a7\23\14\1\u01a7" - + "\12\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\5\14\1\u01a8\45\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\16\14\1\u01a9\14\14\1\u01a9\17\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\u01aa" - + "\30\14\1\u01aa\20\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\1\14\1\u01ab\30\14\1\u01ab\20\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\20\14\1\u01ac" - + "\32\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\1\14\1\u01ad\30\14\1\u01ad\20\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\10\14\1\u01ae\26\14\1\u01ae" - + "\13\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\1\14\1\u01af\30\14\1\u01af\20\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\3\14\1\u01b0\30\14\1\u01b0" - + "\16\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\11\14\1\u01b1\16\14\1\u01b1\22\14\27\0\1\14\6\0" - + "\2\14\1\0\5\14\1\u01b2\5\0\2\14\1\u01b2\50\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\15\14" - + "\1\u01b3\35\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\10\14\1\u01b4\42\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\15\14\1\u01b5\35\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\23\14\1\u01b6\20\14" - + "\1\u01b6\6\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\11\14\1\u01b7\41\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\23\14\1\u01b8\27\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u01b9\35\14" - + "\1\u01b9\2\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\14\14\1\u01ba\23\14\1\u01ba\12\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\16\14\1\u01bb\34\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\2\14" - + "\1\u01bc\50\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\5\14\1\u01bd\27\14\1\u01bd\15\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u01be\40\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\23\14" - + "\1\u01bf\20\14\1\u01bf\6\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\16\14\1\u01c0\34\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u01c1\40\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\20\14" - + "\1\u01c2\26\14\1\u01c2\3\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\7\14\1\u01c3\26\14\1\u01c3\14\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14" - + "\1\u01c4\30\14\1\u01c4\16\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\1\14\1\u01c5\30\14\1\u01c5\20\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14" - + "\1\u01c6\4\14\1\u01c7\23\14\1\u01c6\2\14\1\u01c7\13\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\11\14" - + "\1\u01c8\41\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\5\14\1\u01c9\45\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\6\14\1\u01ca\32\14\1\u01ca\11\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\26\14" - + "\2\u01cb\23\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\23\14\1\u01cc\20\14\1\u01cc\6\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\16\14\1\u01cd\14\14" - + "\1\u01cd\17\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\1\14\1\u01ce\30\14\1\u01ce\20\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\10\14\1\u01cf\26\14" - + "\1\u01cf\13\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\23\14\1\u01d0\20\14\1\u01d0\6\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\6\14\1\u01d1\44\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\13\14" - + "\1\u01d2\37\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\1\14\1\u01d3\30\14\1\u01d3\20\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\16\14\1\u01d4\14\14" - + "\1\u01d4\17\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\3\14\1\u01d5\30\14\1\u01d5\16\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\3\14\1\u01d6\30\14" - + "\1\u01d6\16\14\27\0\1\14\6\0\2\14\1\0\5\14" - + "\1\u01d7\5\0\2\14\1\u01d7\50\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\1\14\1\u01d8\30\14\1\u01d8" - + "\20\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\21\14\1\u01d9\20\14\1\u01d9\10\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\20\14\1\u01da\26\14\1\u01da" - + "\3\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\5\14\1\u01db\45\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\3\14\1\u01dc\47\14\27\0\1\14\6\0" - + "\2\14\1\0\5\14\1\u01dd\5\0\2\14\1\u01dd\50\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\2\14" - + "\1\u01de\50\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\10\14\1\u01df\26\14\1\u01df\13\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\23\14\1\u01e0\20\14" - + "\1\u01e0\6\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\11\14\1\u01e1\41\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\3\14\1\u01e2\30\14\1\u01e2\16\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\5\14" - + "\1\u01e3\45\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\3\14\1\u01e4\30\14\1\u01e4\16\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\22\14\1\u01e5\30\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\7\14" - + "\1\u01e6\43\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\24\14\1\u01e7\21\14\1\u01e7\4\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\1\14\1\u01e8\30\14" - + "\1\u01e8\20\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\3\14\1\u01e9\30\14\1\u01e9\16\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\6\14\1\u01ea\32\14" - + "\1\u01ea\11\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\13\14\1\u01eb\15\14\1\u01eb\21\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\2\14\1\u01ec\50\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\11\14" - + "\1\u01ed\16\14\1\u01ed\22\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\11\14\1\u01ee\16\14\1\u01ee\22\14" - + "\27\0\1\14\6\0\2\14\1\0\5\14\1\u01ef\5\0" - + "\2\14\1\u01ef\50\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\6\14\1\u01f0\32\14\1\u01f0\11\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\14\14\1\u01f1" - + "\23\14\1\u01f1\12\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\7\14\1\u01f2\26\14\1\u01f2\14\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\2\14\1\u01f3" - + "\50\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\3\14\1\u01f4\30\14\1\u01f4\16\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\6\14\1\u01f5\32\14\1\u01f5" - + "\11\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\26\14\2\u01f6\23\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\23\14\1\u01f7\20\14\1\u01f7\6\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\26\14\2\u01f8" - + "\23\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\3\14\1\u01f9\30\14\1\u01f9\16\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\12\14\1\u01fa\35\14\1\u01fa" - + "\2\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\2\14\1\u01fb\50\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\5\14\1\u01fc\45\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\16\14\1\u01fd\14\14\1\u01fd" - + "\17\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\10\14\1\u01fe\42\14\27\0\1\14\6\0\2\14\1\0" - + "\5\14\1\u01ff\5\0\2\14\1\u01ff\50\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\7\14\1\u0200\26\14" - + "\1\u0200\14\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\11\14\1\u0201\16\14\1\u0201\22\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\10\14\1\u0202\26\14" - + "\1\u0202\13\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\10\14\1\u0203\42\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\12\14\1\u0204\35\14\1\u0204\2\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\12\14" - + "\1\u0205\35\14\1\u0205\2\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\23\14\1\u0206\20\14\1\u0206\6\14" - + "\27\0\1\14\6\0\2\14\1\0\3\14\1\u0207\2\14" - + "\5\0\1\u0207\52\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\23\14\1\u0208\20\14\1\u0208\6\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\u0209" - + "\30\14\1\u0209\20\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\20\14\1\u020a\26\14\1\u020a\3\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\1\14\1\u020b" - + "\30\14\1\u020b\20\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\12\14\1\u020c\35\14\1\u020c\2\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\6\14\1\u020d" - + "\12\14\1\u020e\17\14\1\u020d\1\u020e\10\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\24\14\1\u020f\21\14" - + "\1\u020f\4\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\26\14\2\u0210\23\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\7\14\1\u0211\26\14\1\u0211\14\14" - + "\27\0\1\14\6\0\2\14\1\0\5\14\1\u0212\5\0" - + "\2\14\1\u0212\50\14\27\0\1\14\6\0\2\14\1\0" - + "\5\14\1\u0213\5\0\2\14\1\u0213\50\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\11\14\1\u0214\16\14" - + "\1\u0214\22\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\26\14\2\u0215\23\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\7\14\1\u0216\43\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\2\14\1\u0217\50\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\7\14" - + "\1\u0218\26\14\1\u0218\14\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\11\14\1\u0219\41\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\14\14\1\u021a\23\14" - + "\1\u021a\12\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\24\14\1\u021b\21\14\1\u021b\4\14\27\0\1\14" - + "\6\0\2\14\1\0\5\14\1\u021c\5\0\2\14\1\u021c" - + "\50\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\14\14\1\u021d\23\14\1\u021d\12\14\27\0\1\14\6\0" - + "\2\14\1\0\5\14\1\u021e\5\0\2\14\1\u021e\50\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\3\14" - + "\1\u021f\30\14\1\u021f\16\14\27\0\1\14\6\0\2\14" - + "\1\0\5\14\1\u0220\5\0\2\14\1\u0220\50\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\u0221" - + "\35\14\1\u0221\2\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\12\14\1\u0222\35\14\1\u0222\2\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\7\14\1\u0223" - + "\26\14\1\u0223\14\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\11\14\1\u0224\16\14\1\u0224\22\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\16\14\1\u0225" - + "\14\14\1\u0225\17\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\12\14\1\u0226\35\14\1\u0226\2\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\13\14\1\u0227" - + "\15\14\1\u0227\21\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\11\14\1\u0228\16\14\1\u0228\22\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\20\14\1\u0229" - + "\26\14\1\u0229\3\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\20\14\1\u022a\26\14\1\u022a\3\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\15\14\1\u022b" - + "\35\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\3\14\1\u022c\30\14\1\u022c\16\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\6\14\1\u022d\44\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\12\14\1\u022e" - + "\35\14\1\u022e\2\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\23\14\1\u022f\20\14\1\u022f\6\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\10\14\1\u0230" - + "\26\14\1\u0230\13\14\27\0\1\14\6\0\2\14\1\0" - + "\3\14\1\u0231\2\14\5\0\1\u0231\52\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\11\14\1\u0232\16\14" - + "\1\u0232\22\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\10\14\1\u0233\26\14\1\u0233\13\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\10\14\1\u0234\26\14" - + "\1\u0234\13\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\7\14\1\u0235\26\14\1\u0235\14\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\3\14\1\u0236\30\14" - + "\1\u0236\16\14\27\0\1\14\6\0\2\14\1\0\5\14" - + "\1\u0237\5\0\2\14\1\u0237\50\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\10\14\1\u0238\26\14\1\u0238" - + "\13\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\51\14\1\u0239\1\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\14\14\1\u023a\23\14\1\u023a\12\14\27\0" - + "\1\14\6\0\2\14\1\0\5\14\1\u023b\5\0\2\14" - + "\1\u023b\50\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\7\14\1\u023c\26\14\1\u023c\14\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\13\14\1\u023d\15\14" - + "\1\u023d\21\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\16\14\1\u023e\14\14\1\u023e\17\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\23\14\1\u023f\20\14" - + "\1\u023f\6\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\26\14\2\u0240\23\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\21\14\1\u0241\20\14\1\u0241\10\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\22\14" - + "\1\u0242\22\14\1\u0242\5\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\5\14\1\u0243\27\14\1\u0243\15\14" - + "\27\0\1\14\6\0\2\14\1\0\6\14\5\0\14\14" - + "\1\u0244\23\14\1\u0244\12\14\27\0\1\14\6\0\2\14" - + "\1\0\6\14\5\0\13\14\1\u0245\15\14\1\u0245\21\14" - + "\27\0\1\14\6\0\2\14\1\0\5\14\1\u0246\5\0" - + "\2\14\1\u0246\50\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\10\14\1\u0247\26\14\1\u0247\13\14\27\0" - + "\1\14\6\0\2\14\1\0\6\14\5\0\24\14\1\u0248" - + "\21\14\1\u0248\4\14\27\0\1\14\6\0\2\14\1\0" - + "\6\14\5\0\23\14\1\u0249\20\14\1\u0249\6\14\27\0" - + "\1\14\6\0\2\14\1\0\5\14\1\u024a\5\0\2\14" - + "\1\u024a\50\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\3\14\1\u024b\30\14\1\u024b\16\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\16\14\1\u024c\14\14" - + "\1\u024c\17\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\6\14\1\u024d\32\14\1\u024d\11\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\3\14\1\u024e\30\14" - + "\1\u024e\16\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\14\14\1\u024f\23\14\1\u024f\12\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\13\14\1\u0250\15\14" - + "\1\u0250\21\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\12\14\1\u0251\35\14\1\u0251\2\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\6\14\1\u0252\32\14" - + "\1\u0252\11\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\21\14\1\u0253\20\14\1\u0253\10\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\12\14\1\u0254\35\14" - + "\1\u0254\2\14\27\0\1\14\6\0\2\14\1\0\6\14" - + "\5\0\16\14\1\u0255\14\14\1\u0255\17\14\27\0\1\14" - + "\6\0\2\14\1\0\6\14\5\0\23\14\1\u0256\20\14" - + "\1\u0256\6\14\27\0\1\14\6\0\2\14\1\0\5\14" - + "\1\u0257\5\0\2\14\1\u0257\50\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\10\14\1\u0258\26\14\1\u0258" - + "\13\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\10\14\1\u0259\26\14\1\u0259\13\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\21\14\1\u025a\20\14\1\u025a" - + "\10\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\12\14\1\u025b\35\14\1\u025b\2\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\5\14\1\u025c\27\14\1\u025c" - + "\15\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\13\14\1\u025d\15\14\1\u025d\21\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\13\14\1\u025e\15\14\1\u025e" - + "\21\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\11\14\1\u025f\16\14\1\u025f\22\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\16\14\1\u0260\14\14\1\u0260" - + "\17\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\23\14\1\u0261\20\14\1\u0261\6\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\23\14\1\u0262\20\14\1\u0262" - + "\6\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\22\14\1\u0263\22\14\1\u0263\5\14\27\0\1\14\6\0" - + "\2\14\1\0\6\14\5\0\12\14\1\u0264\35\14\1\u0264" - + "\2\14\27\0\1\14\6\0\2\14\1\0\6\14\5\0" - + "\21\14\1\u0265\20\14\1\u0265\10\14\27\0\1\14"; + /** the current state of the DFA */ + private int zzState; - private static int[] zzUnpackTrans() { - int[] result = new int[40455]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } + /** the current lexical state */ + private int zzLexicalState = YYINITIAL; - private static int zzUnpackTrans(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do { - result[j++] = value; - } while (--count > 0); - } - return j; - } + /** 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; - /* 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; + /** the current text position in the buffer */ + private int zzCurrentPos; - /* 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" - }; + /** startRead marks the beginning of the yytext() string in the buffer */ + private int zzStartRead; - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute(); + /** endRead marks the last character in the buffer, that has been read + from input */ + private int zzEndRead; - private static final String ZZ_ATTRIBUTE_PACKED_0 - = "\5\0\1\11\1\1\1\11\11\1\2\11\37\1\10\11" - + "\4\1\3\11\5\1\1\11\2\1\2\11\3\1\1\11" - + "\1\1\1\11\1\1\1\0\2\11\1\0\3\1\2\0" - + "\1\1\2\11\1\0\76\1\1\11\1\1\2\11\2\1" - + "\11\11\1\1\7\11\1\1\1\11\1\1\7\11\1\1" - + "\1\11\3\1\1\11\2\0\1\11\2\1\1\0\111\1" - + "\2\11\1\1\2\11\10\0\101\1\2\11\1\0\1\11" - + "\1\0\2\11\375\1"; + /** number of newlines encountered up to the start of the matched text */ + private int yyline; - private static int[] zzUnpackAttribute() { - int[] result = new int[613]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } + /** the number of characters up to the start of the matched text */ + private int yychar; - 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 number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; - /** - * the input device - */ - private java.io.Reader zzReader; + /** + * zzAtBOL == true <=> the scanner is currently at the beginning of a line + */ + private boolean zzAtBOL = true; - /** - * the current state of the DFA - */ - private int zzState; + /** zzAtEOF == true <=> the scanner is at the EOF */ + private boolean zzAtEOF; - /** - * the current lexical state - */ - private int zzLexicalState = YYINITIAL; + /** 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; - /** - * this buffer contains the current text to be matched and is the source of - * the yytext() string - */ - private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; + /* user code: */ - /** - * 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 = ""; @@ -1276,22 +1246,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); } } @@ -1307,10 +1277,9 @@ 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(); @@ -1319,1394 +1288,1114 @@ 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; + + + /** + * 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 < 3866) { + 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; } - /** - * 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 < 3862) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do { - map[j++] = value; - } while (--count > 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; + } + + /* 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 */ + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + --zzEndRead; + zzFinalHighSurrogate = 1; } - return map; + } + return false; } - /** - * Refills the input buffer. - * - * @return false, iff there was new input. - * @throws java.io.IOException if any I/O-Error occurs - */ - private boolean zzRefill() throws java.io.IOException { + // totalRead = 0: End of stream + return true; + } - /* first: make room (if you can) */ - if (zzStartRead > 0) { - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; - System.arraycopy(zzBuffer, zzStartRead, - zzBuffer, 0, - zzEndRead - zzStartRead); + + /** + * Closes the input stream. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; /* indicate end of file */ + zzEndRead = zzStartRead; /* invalidate buffer */ - /* translate stored positions */ - zzEndRead -= zzStartRead; - zzCurrentPos -= zzStartRead; - zzMarkedPos -= zzStartRead; - zzStartRead = 0; - } + if (zzReader != null) + zzReader.close(); + } - /* 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; - } - /* 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; - } + /** + * 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]; + } - 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; + /** + * 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]; } - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; - /* indicate end of file */ - zzEndRead = zzStartRead; - /* invalidate buffer */ + throw new Error(message); + } - 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]; - } - } + /** + * 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); - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } + zzMarkedPos -= number; + } - /** - * 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); - } + /** + * 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; - /** - * 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]; - } + // cached fields: + int zzCurrentPosL; + int zzMarkedPosL; + int zzEndReadL = zzEndRead; + char [] zzBufferL = zzBuffer; + char [] zzCMapL = ZZ_CMAP; - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos - zzStartRead; - } + int [] zzTransL = ZZ_TRANS; + int [] zzRowMapL = ZZ_ROWMAP; + int [] zzAttrL = ZZ_ATTRIBUTE; - /** - * 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]; - } + while (true) { + zzMarkedPosL = zzMarkedPos; - throw new Error(message); - } + yychar+= zzMarkedPosL-zzStartRead; - /** - * 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); - } + zzAction = -1; - zzMarkedPos -= number; - } + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + zzState = ZZ_LEXSTATE[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 - * @throws java.io.IOException if any I/O-Error occurs - */ - public ParsedSymbol yylex() throws java.io.IOException, ActionParseException { - int zzInput; - int zzAction; + // set up zzAction for empty match case: + int zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + } - // 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) { - zzMarkedPosL = zzMarkedPos; - - 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; + + 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; } - - 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; - } - } - - } + 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; - // store back cached position - zzMarkedPos = zzMarkedPosL; + zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + zzMarkedPosL = zzCurrentPosL; + if ( (zzAttributes & 8) == 8 ) break zzForAction; + } - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: { - } - case 179: - break; - case 2: { - yyline++; - } - case 180: - break; - case 3: { - /*ignore*/ - } - case 181: - break; - case 4: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); - } - case 182: - break; - case 5: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); - } - case 183: - break; - case 6: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - case 184: - break; - case 7: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); - } - case 185: - break; - case 8: { - try { - return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext())); - } catch (NumberFormatException nfe) { - //its too long for a Long var - return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(yytext())); - } - } - case 186: - break; - case 9: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); - } - case 187: - break; - case 10: { - string.setLength(0); - yybegin(STRING); - } - case 188: - break; - case 11: { - string.setLength(0); - yybegin(CHARLITERAL); - } - case 189: - break; - case 12: { - string.setLength(0); - yybegin(OIDENTIFIER); - } - case 190: - break; - case 13: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); - } - case 191: - break; - case 14: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); - } - case 192: - break; - case 15: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); - } - case 193: - break; - case 16: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); - } - case 194: - break; - case 17: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); - } - case 195: - break; - case 18: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); - } - case 196: - break; - case 19: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); - } - case 197: - break; - case 20: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); - } - case 198: - break; - case 21: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); - } - case 199: - break; - case 22: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); - } - case 200: - break; - case 23: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); - } - case 201: - break; - case 24: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); - } - case 202: - break; - case 25: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); - } - case 203: - break; - case 26: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); - } - case 204: - break; - case 27: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); - } - case 205: - break; - case 28: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); - } - case 206: - break; - case 29: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); - } - case 207: - break; - case 30: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); - } - case 208: - break; - case 31: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); - } - case 209: - break; - case 32: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); - } - case 210: - break; - case 33: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); - } - case 211: - break; - case 34: { - string.append(yytext()); - } - case 212: - break; - case 35: { - yybegin(YYINITIAL); - yyline++; - } - case 213: - break; - case 36: { - yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); - } - case 214: - break; - case 37: { - for (int r = 0; r < repeatNum; r++) { - string.append(yytext()); - } - repeatNum = 1; - } - case 215: - break; - case 38: { - yybegin(YYINITIAL); - repeatNum = 1; - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); - } - case 216: - break; - case 39: { - yyline += count(yytext(), "\n"); - } - case 217: - break; - case 40: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); - } - case 218: - break; - case 41: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); - } - case 219: - break; - case 42: { - return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(yytext())); - } - case 220: - break; - case 43: { - return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); - } - case 221: - break; - case 44: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); - } - case 222: - break; - case 45: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); - } - case 223: - break; - case 46: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLOR, yytext()); - } - case 224: - break; - case 47: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); - } - case 225: - break; - case 48: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); - } - case 226: - break; - case 49: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); - } - case 227: - break; - case 50: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); - } - case 228: - break; - case 51: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); - } - case 229: - break; - case 52: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); - } - case 230: - break; - case 53: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); - } - case 231: - break; - case 54: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); - } - case 232: - break; - case 55: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); - } - case 233: - break; - case 56: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); - } - case 234: - break; - case 57: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); - } - case 235: - break; - case 58: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); - } - case 236: - break; - case 59: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); - } - case 237: - break; - case 60: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); - } - case 238: - break; - case 61: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); - } - case 239: - break; - case 62: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); - } - case 240: - break; - case 63: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); - } - case 241: - break; - case 64: { - string.append('\\'); - /*illegal escape sequence*/ - } - case 242: - break; - case 65: { - string.append('\"'); - } - case 243: - break; - case 66: { - string.append('\''); - } - case 244: - break; - case 67: { - string.append('\\'); - } - case 245: - break; - case 68: { - string.append('\b'); - } - case 246: - break; - case 69: { - string.append('\r'); - } - case 247: - break; - case 70: { - string.append('\n'); - } - case 248: - break; - case 71: { - string.append('\t'); - } - case 249: - break; - case 72: { - string.append('\f'); - } - case 250: - break; - case 73: { - throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 251: - break; - case 74: { - for (int r = 0; r < repeatNum; r++) { - string.append('\\'); - } - repeatNum = 1; - } - case 252: - break; - case 75: { - for (int r = 0; r < repeatNum; r++) { - string.append('\u00A7'); - } - repeatNum = 1; - } - case 253: - break; - case 76: { - for (int r = 0; r < repeatNum; r++) { - string.append('\b'); - } - repeatNum = 1; - } - case 254: - break; - case 77: { - for (int r = 0; r < repeatNum; r++) { - string.append('\r'); - } - repeatNum = 1; - } - case 255: - break; - case 78: { - for (int r = 0; r < repeatNum; r++) { - string.append('\n'); - } - repeatNum = 1; - } - case 256: - break; - case 79: { - for (int r = 0; r < repeatNum; r++) { - string.append('\t'); - } - repeatNum = 1; - } - case 257: - break; - case 80: { - for (int r = 0; r < repeatNum; r++) { - string.append('\f'); - } - repeatNum = 1; - } - case 258: - break; - case 81: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); - } - case 259: - break; - case 82: { - return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); - } - case 260: - break; - case 83: { - return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2)); - } - case 261: - break; - case 84: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLAND, yytext()); - } - case 262: - break; - case 85: { - if (caseSensitiveIdentifiers && !"chr".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); - } - case 263: - break; - case 86: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SET, yytext()); - } - case 264: - break; - case 87: { - if (caseSensitiveIdentifiers && !"ord".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); - } - case 265: - break; - case 88: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); - } - case 266: - break; - case 89: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); - } - case 267: - break; - case 90: { - if (caseSensitiveIdentifiers && !"int".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); - } - case 268: - break; - case 91: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); - } - case 269: - break; - case 92: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); - } - case 270: - break; - case 93: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.GET, yytext()); - } - case 271: - break; - case 94: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); - } - case 272: - break; - case 95: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); - } - case 273: - break; - case 96: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); - } - case 274: - break; - case 97: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); - } - case 275: - break; - case 98: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); - } - case 276: - break; - case 99: { - if (caseSensitiveIdentifiers && !"eval".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); - } - case 277: - break; - case 100: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EACH, yytext()); - } - case 278: - break; - case 101: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); - } - case 279: - break; - case 102: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); - } - case 280: - break; - case 103: { - if (caseSensitiveIdentifiers && !"call".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CALL, yytext()); - } - case 281: - break; - case 104: { - if (caseSensitiveIdentifiers && !"stop".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); - } - case 282: - break; - case 105: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); - } - case 283: - break; - case 106: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); - } - case 284: - break; - case 107: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); - } - case 285: - break; - case 108: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); - } - case 286: - break; - case 109: { - if (caseSensitiveIdentifiers && !"play".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); - } - case 287: - break; - case 110: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); - } - case 288: - break; - case 111: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); - } - case 289: - break; - case 112: { - char val = (char) Integer.parseInt(yytext().substring(1), 8); - string.append(val); - } - case 290: - break; - case 113: { - char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); - } - case 291: - break; - case 114: { - char val = (char) Integer.parseInt(yytext().substring(2), 16); - for (int r = 0; r < repeatNum; r++) { - string.append(val); - } - repeatNum = 1; - } - case 292: - break; - case 115: { - repeatNum = Integer.parseInt(yytext().substring(2, yytext().length() - 1)); - } - case 293: - break; - case 116: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); - } - case 294: - break; - case 117: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); - } - case 295: - break; - case 118: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); - } - case 296: - break; - case 119: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); - } - case 297: - break; - case 120: { - if (caseSensitiveIdentifiers && !"trace".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); - } - case 298: - break; - case 121: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); - } - case 299: - break; - case 122: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); - } - case 300: - break; - case 123: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); - } - case 301: - break; - case 124: { - if (caseSensitiveIdentifiers && !"print".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINT, yytext()); - } - case 302: - break; - case 125: { - if (caseSensitiveIdentifiers && !"mbchr".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); - } - case 303: - break; - case 126: { - if (caseSensitiveIdentifiers && !"mbord".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); - } - case 304: - break; - case 127: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); - } - case 305: - break; - case 128: { - if (caseSensitiveIdentifiers && !"random".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); - } - case 306: - break; - case 129: { - if (caseSensitiveIdentifiers && !"String".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); - } - case 307: - break; - case 130: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.STATIC, yytext()); - } - case 308: - break; - case 131: { - if (caseSensitiveIdentifiers && !"substr".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); - } - case 309: - break; - case 132: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); - } - case 310: - break; - case 133: { - if (caseSensitiveIdentifiers && !"Number".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); - } - case 311: - break; - case 134: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); - } - case 312: - break; - case 135: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); - } - case 313: - break; - case 136: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); - } - case 314: - break; - case 137: { - if (caseSensitiveIdentifiers && !"length".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); - } - case 315: - break; - case 138: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); - } - case 316: - break; - case 139: { - if (caseSensitiveIdentifiers && !"getURL".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); - } - case 317: - break; - case 140: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); - } - case 318: - break; - case 141: { - if (caseSensitiveIdentifiers && !"newline".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); - } - case 319: - break; - case 142: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); - } - case 320: - break; - case 143: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DYNAMIC, yytext()); - } - case 321: - break; - case 144: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); - } - case 322: - break; - case 145: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); - } - case 323: - break; - case 146: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); - } - case 324: - break; - case 147: { - if (caseSensitiveIdentifiers && !"stopDrag".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); - } - case 325: - break; - case 148: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); - } - case 326: - break; - case 149: { - if (caseSensitiveIdentifiers && !"printNum".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTNUM, yytext()); - } - case 327: - break; - case 150: { - if (caseSensitiveIdentifiers && !"mblength".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); - } - case 328: - break; - case 151: { - if (caseSensitiveIdentifiers && !"getTimer".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); - } - case 329: - break; - case 152: { - if (caseSensitiveIdentifiers && !"startDrag".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); - } - case 330: - break; - case 153: { - if (caseSensitiveIdentifiers && !"nextFrame".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); - } - case 331: - break; - case 154: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); - } - case 332: - break; - case 155: { - if (caseSensitiveIdentifiers && !"undefined".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); - } - case 333: - break; - case 156: { - if (caseSensitiveIdentifiers && !"fscommand".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND, yytext()); - } - case 334: - break; - case 157: { - if (caseSensitiveIdentifiers && !"loadMovie".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); - } - case 335: - break; - case 158: { - if (caseSensitiveIdentifiers && !"prevFrame".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); - } - case 336: - break; - case 159: { - if (caseSensitiveIdentifiers && !"tellTarget".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); - } - case 337: - break; - case 160: { - if (caseSensitiveIdentifiers && !"targetPath".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); - } - case 338: - break; - case 161: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); - } - case 339: - break; - case 162: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); - } - case 340: - break; - case 163: { - if (caseSensitiveIdentifiers && !"getVersion".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETVERSION, yytext()); - } - case 341: - break; - case 164: { - if (caseSensitiveIdentifiers && !"unloadMovie".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIE, yytext()); - } - case 342: - break; - case 165: { - if (caseSensitiveIdentifiers && !"mbsubstring".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); - } - case 343: - break; - case 166: { - if (caseSensitiveIdentifiers && !"gotoAndStop".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); - } - case 344: - break; - case 167: { - if (caseSensitiveIdentifiers && !"gotoAndPlay".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); - } - case 345: - break; - case 168: { - if (caseSensitiveIdentifiers && !"loadMovieNum".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIENUM, yytext()); - } - case 346: - break; - case 169: { - if (caseSensitiveIdentifiers && !"stopAllSounds".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); - } - case 347: - break; - case 170: { - if (caseSensitiveIdentifiers && !"ifFrameLoaded".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IFFRAMELOADED, yytext()); - } - case 348: - break; - case 171: { - if (caseSensitiveIdentifiers && !"loadVariables".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); - } - case 349: - break; - case 172: { - if (caseSensitiveIdentifiers && !"printAsBitmap".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAP, yytext()); - } - case 350: - break; - case 173: { - if (caseSensitiveIdentifiers && !"unloadMovieNum".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); - } - case 351: - break; - case 174: { - if (caseSensitiveIdentifiers && !"removeMovieClip".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); - } - case 352: - break; - case 175: { - if (caseSensitiveIdentifiers && !"loadVariablesNum".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLESNUM, yytext()); - } - case 353: - break; - case 176: { - if (caseSensitiveIdentifiers && !"printAsBitmapNum".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAPNUM, yytext()); - } - case 354: - break; - case 177: { - if (caseSensitiveIdentifiers && !"toggleHighQuality".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); - } - case 355: - break; - case 178: { - if (caseSensitiveIdentifiers && !"duplicateMovieClip".equals(yytext())) { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); - } - case 356: - 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 181: break; + case 2: + { yyline++; + } + case 182: break; + case 3: + { /*ignore*/ + } + case 183: break; + case 4: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); + } + case 184: break; + case 5: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); + } + case 185: break; + case 6: + { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } + case 186: break; + case 7: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); + } + case 187: break; + case 8: + { try{ + return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext())); + } catch(NumberFormatException nfe){ + //its too long for a Long var + return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(yytext())); + } + } + case 188: break; + case 9: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); + } + case 189: break; + case 10: + { string.setLength(0); + yybegin(STRING); + } + case 190: break; + case 11: + { string.setLength(0); + yybegin(CHARLITERAL); + } + case 191: break; + case 12: + { string.setLength(0); + yybegin(OIDENTIFIER); + } + case 192: break; + case 13: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); + } + case 193: break; + case 14: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); + } + case 194: break; + case 15: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); + } + case 195: break; + case 16: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); + } + case 196: break; + case 17: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); + } + case 197: break; + case 18: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); + } + case 198: break; + case 19: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); + } + case 199: break; + case 20: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); + } + case 200: break; + case 21: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); + } + case 201: break; + case 22: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); + } + case 202: break; + case 23: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); + } + case 203: break; + case 24: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); + } + case 204: break; + case 25: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); + } + case 205: break; + case 26: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); + } + case 206: break; + case 27: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); + } + case 207: break; + case 28: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); + } + case 208: break; + case 29: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); + } + case 209: break; + case 30: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); + } + case 210: break; + case 31: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); + } + case 211: break; + case 32: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); + } + case 212: break; + case 33: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); + } + case 213: break; + case 34: + { string.append(yytext()); + } + case 214: break; + case 35: + { yybegin(YYINITIAL); yyline++; + } + case 215: break; + case 36: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); + } + case 216: break; + case 37: + { for(int r=0;r> uninitializedClassTraits, SecondPassData secondPassData, boolean insideDoInitAction, GraphSourceItem lineStartAction, TranslateStack stack, List output, HashMap regNames, HashMap variables, HashMap functions, int staticOperation, String path) { String fsCommandPrefix = "FSCommand:"; - if (urlString.startsWith(fsCommandPrefix) && targetString.isEmpty()) { + if (urlString.startsWith(fsCommandPrefix)) { String command = urlString.substring(fsCommandPrefix.length()); - output.add(new FSCommandActionItem(this, lineStartAction, new DirectValueActionItem(command))); + output.add(new FSCommandActionItem(this, lineStartAction, new DirectValueActionItem(command), targetString.isEmpty() ? null : new DirectValueActionItem(targetString))); return; } String levelPrefix = "_level"; diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex index fd4fdaef6..151775baa 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex @@ -294,6 +294,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* /* whitespace */ {WhiteSpace} { } /* identifiers */ + "#" {Identifier} { return token(TokenType.KEYWORD); } {SlashVariable} { return token(TokenType.IDENTIFIER); } {Identifier}{NamespaceSuffix} { return token(TokenType.REGEX); } {Identifier} { return token(TokenType.IDENTIFIER); }