You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by mh...@apache.org on 2013/09/24 20:33:15 UTC
[39/50] [abbrv] Implement Standard and Classic Analyzers
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7a4b442f/src/contrib/Analyzers/Standard/Std31/StandardTokenizerImpl31.cs
----------------------------------------------------------------------
diff --git a/src/contrib/Analyzers/Standard/Std31/StandardTokenizerImpl31.cs b/src/contrib/Analyzers/Standard/Std31/StandardTokenizerImpl31.cs
new file mode 100644
index 0000000..c369e53
--- /dev/null
+++ b/src/contrib/Analyzers/Standard/Std31/StandardTokenizerImpl31.cs
@@ -0,0 +1,1116 @@
+using Lucene.Net.Analysis.Tokenattributes;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+namespace Lucene.Net.Analysis.Standard.Std31
+{
+ public sealed class StandardTokenizerImpl31 : IStandardTokenizerInterface
+ {
+
+ /** This character denotes the end of file */
+ public const int YYEOF = -1;
+
+ /** initial size of the lookahead buffer */
+ private const int ZZ_BUFFERSIZE = 4096;
+
+ /** lexical states */
+ public const int YYINITIAL = 0;
+
+ /**
+ * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
+ * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
+ * at the beginning of a line
+ * l is of the form l = 2*k, k a non negative integer
+ */
+ private static readonly int[] ZZ_LEXSTATE = {
+ 0, 0
+ };
+
+ /**
+ * Translates characters to character classes
+ */
+ private const String ZZ_CMAP_PACKED =
+ "\u0027\0\u0001\u0060\u0004\0\u0001\u005f\u0001\0\u0001\u0060\u0001\0\u000a\u005c\u0001\u005e\u0001\u005f" +
+ "\u0005\0\u001a\u005a\u0004\0\u0001\u0061\u0001\0\u001a\u005a\u002f\0\u0001\u005a\u0002\0\u0001\u005b" +
+ "\u0007\0\u0001\u005a\u0001\0\u0001\u005e\u0002\0\u0001\u005a\u0005\0\u0017\u005a\u0001\0\u001f\u005a" +
+ "\u0001\0\u01ca\u005a\u0004\0\u000c\u005a\u000e\0\u0005\u005a\u0007\0\u0001\u005a\u0001\0\u0001\u005a" +
+ "\u0011\0\u0070\u005b\u0005\u005a\u0001\0\u0002\u005a\u0002\0\u0004\u005a\u0001\u005f\u0007\0\u0001\u005a" +
+ "\u0001\u005e\u0003\u005a\u0001\0\u0001\u005a\u0001\0\u0014\u005a\u0001\0\u0053\u005a\u0001\0\u008b\u005a" +
+ "\u0001\0\u0007\u005b\u009e\u005a\u0009\0\u0026\u005a\u0002\0\u0001\u005a\u0007\0\u0027\u005a\u0001\0" +
+ "\u0001\u005f\u0007\0\u002d\u005b\u0001\0\u0001\u005b\u0001\0\u0002\u005b\u0001\0\u0002\u005b\u0001\0" +
+ "\u0001\u005b\u0008\0\u001b\u005a\u0005\0\u0004\u005a\u0001\u005e\u000b\0\u0004\u005b\u0008\0\u0002\u005f" +
+ "\u0002\0\u000b\u005b\u0005\0\u002b\u005a\u0015\u005b\u000a\u005c\u0001\0\u0001\u005c\u0001\u005f\u0001\0" +
+ "\u0002\u005a\u0001\u005b\u0063\u005a\u0001\0\u0001\u005a\u0007\u005b\u0001\u005b\u0001\0\u0006\u005b\u0002\u005a" +
+ "\u0002\u005b\u0001\0\u0004\u005b\u0002\u005a\u000a\u005c\u0003\u005a\u0002\0\u0001\u005a\u000f\0\u0001\u005b" +
+ "\u0001\u005a\u0001\u005b\u001e\u005a\u001b\u005b\u0002\0\u0059\u005a\u000b\u005b\u0001\u005a\u000e\0\u000a\u005c" +
+ "\u0021\u005a\u0009\u005b\u0002\u005a\u0002\0\u0001\u005f\u0001\0\u0001\u005a\u0005\0\u0016\u005a\u0004\u005b" +
+ "\u0001\u005a\u0009\u005b\u0001\u005a\u0003\u005b\u0001\u005a\u0005\u005b\u0012\0\u0019\u005a\u0003\u005b\u00a4\0" +
+ "\u0004\u005b\u0036\u005a\u0003\u005b\u0001\u005a\u0012\u005b\u0001\u005a\u0007\u005b\u000a\u005a\u0002\u005b\u0002\0" +
+ "\u000a\u005c\u0001\0\u0007\u005a\u0001\0\u0007\u005a\u0001\0\u0003\u005b\u0001\0\u0008\u005a\u0002\0" +
+ "\u0002\u005a\u0002\0\u0016\u005a\u0001\0\u0007\u005a\u0001\0\u0001\u005a\u0003\0\u0004\u005a\u0002\0" +
+ "\u0001\u005b\u0001\u005a\u0007\u005b\u0002\0\u0002\u005b\u0002\0\u0003\u005b\u0001\u005a\u0008\0\u0001\u005b" +
+ "\u0004\0\u0002\u005a\u0001\0\u0003\u005a\u0002\u005b\u0002\0\u000a\u005c\u0002\u005a\u000f\0\u0003\u005b" +
+ "\u0001\0\u0006\u005a\u0004\0\u0002\u005a\u0002\0\u0016\u005a\u0001\0\u0007\u005a\u0001\0\u0002\u005a" +
+ "\u0001\0\u0002\u005a\u0001\0\u0002\u005a\u0002\0\u0001\u005b\u0001\0\u0005\u005b\u0004\0\u0002\u005b" +
+ "\u0002\0\u0003\u005b\u0003\0\u0001\u005b\u0007\0\u0004\u005a\u0001\0\u0001\u005a\u0007\0\u000a\u005c" +
+ "\u0002\u005b\u0003\u005a\u0001\u005b\u000b\0\u0003\u005b\u0001\0\u0009\u005a\u0001\0\u0003\u005a\u0001\0" +
+ "\u0016\u005a\u0001\0\u0007\u005a\u0001\0\u0002\u005a\u0001\0\u0005\u005a\u0002\0\u0001\u005b\u0001\u005a" +
+ "\u0008\u005b\u0001\0\u0003\u005b\u0001\0\u0003\u005b\u0002\0\u0001\u005a\u000f\0\u0002\u005a\u0002\u005b" +
+ "\u0002\0\u000a\u005c\u0011\0\u0003\u005b\u0001\0\u0008\u005a\u0002\0\u0002\u005a\u0002\0\u0016\u005a" +
+ "\u0001\0\u0007\u005a\u0001\0\u0002\u005a\u0001\0\u0005\u005a\u0002\0\u0001\u005b\u0001\u005a\u0007\u005b" +
+ "\u0002\0\u0002\u005b\u0002\0\u0003\u005b\u0008\0\u0002\u005b\u0004\0\u0002\u005a\u0001\0\u0003\u005a" +
+ "\u0002\u005b\u0002\0\u000a\u005c\u0001\0\u0001\u005a\u0010\0\u0001\u005b\u0001\u005a\u0001\0\u0006\u005a" +
+ "\u0003\0\u0003\u005a\u0001\0\u0004\u005a\u0003\0\u0002\u005a\u0001\0\u0001\u005a\u0001\0\u0002\u005a" +
+ "\u0003\0\u0002\u005a\u0003\0\u0003\u005a\u0003\0\u000c\u005a\u0004\0\u0005\u005b\u0003\0\u0003\u005b" +
+ "\u0001\0\u0004\u005b\u0002\0\u0001\u005a\u0006\0\u0001\u005b\u000e\0\u000a\u005c\u0011\0\u0003\u005b" +
+ "\u0001\0\u0008\u005a\u0001\0\u0003\u005a\u0001\0\u0017\u005a\u0001\0\u000a\u005a\u0001\0\u0005\u005a" +
+ "\u0003\0\u0001\u005a\u0007\u005b\u0001\0\u0003\u005b\u0001\0\u0004\u005b\u0007\0\u0002\u005b\u0001\0" +
+ "\u0002\u005a\u0006\0\u0002\u005a\u0002\u005b\u0002\0\u000a\u005c\u0012\0\u0002\u005b\u0001\0\u0008\u005a" +
+ "\u0001\0\u0003\u005a\u0001\0\u0017\u005a\u0001\0\u000a\u005a\u0001\0\u0005\u005a\u0002\0\u0001\u005b" +
+ "\u0001\u005a\u0007\u005b\u0001\0\u0003\u005b\u0001\0\u0004\u005b\u0007\0\u0002\u005b\u0007\0\u0001\u005a" +
+ "\u0001\0\u0002\u005a\u0002\u005b\u0002\0\u000a\u005c\u0001\0\u0002\u005a\u000f\0\u0002\u005b\u0001\0" +
+ "\u0008\u005a\u0001\0\u0003\u005a\u0001\0\u0029\u005a\u0002\0\u0001\u005a\u0007\u005b\u0001\0\u0003\u005b" +
+ "\u0001\0\u0004\u005b\u0001\u005a\u0008\0\u0001\u005b\u0008\0\u0002\u005a\u0002\u005b\u0002\0\u000a\u005c" +
+ "\u000a\0\u0006\u005a\u0002\0\u0002\u005b\u0001\0\u0012\u005a\u0003\0\u0018\u005a\u0001\0\u0009\u005a" +
+ "\u0001\0\u0001\u005a\u0002\0\u0007\u005a\u0003\0\u0001\u005b\u0004\0\u0006\u005b\u0001\0\u0001\u005b" +
+ "\u0001\0\u0008\u005b\u0012\0\u0002\u005b\u000d\0\u0030\u0062\u0001\u0063\u0002\u0062\u0007\u0063\u0005\0" +
+ "\u0007\u0062\u0008\u0063\u0001\0\u000a\u005c\u0027\0\u0002\u0062\u0001\0\u0001\u0062\u0002\0\u0002\u0062" +
+ "\u0001\0\u0001\u0062\u0002\0\u0001\u0062\u0006\0\u0004\u0062\u0001\0\u0007\u0062\u0001\0\u0003\u0062" +
+ "\u0001\0\u0001\u0062\u0001\0\u0001\u0062\u0002\0\u0002\u0062\u0001\0\u0004\u0062\u0001\u0063\u0002\u0062" +
+ "\u0006\u0063\u0001\0\u0002\u0063\u0001\u0062\u0002\0\u0005\u0062\u0001\0\u0001\u0062\u0001\0\u0006\u0063" +
+ "\u0002\0\u000a\u005c\u0002\0\u0002\u0062\u0022\0\u0001\u005a\u0017\0\u0002\u005b\u0006\0\u000a\u005c" +
+ "\u000b\0\u0001\u005b\u0001\0\u0001\u005b\u0001\0\u0001\u005b\u0004\0\u0002\u005b\u0008\u005a\u0001\0" +
+ "\u0024\u005a\u0004\0\u0014\u005b\u0001\0\u0002\u005b\u0005\u005a\u000b\u005b\u0001\0\u0024\u005b\u0009\0" +
+ "\u0001\u005b\u0039\0\u002b\u0062\u0014\u0063\u0001\u0062\u000a\u005c\u0006\0\u0006\u0062\u0004\u0063\u0004\u0062" +
+ "\u0003\u0063\u0001\u0062\u0003\u0063\u0002\u0062\u0007\u0063\u0003\u0062\u0004\u0063\u000d\u0062\u000c\u0063\u0001\u0062" +
+ "\u0001\u0063\u000a\u005c\u0004\u0063\u0002\u0062\u0026\u005a\u000a\0\u002b\u005a\u0001\0\u0001\u005a\u0003\0" +
+ "\u0100\u0066\u0049\u005a\u0001\0\u0004\u005a\u0002\0\u0007\u005a\u0001\0\u0001\u005a\u0001\0\u0004\u005a" +
+ "\u0002\0\u0029\u005a\u0001\0\u0004\u005a\u0002\0\u0021\u005a\u0001\0\u0004\u005a\u0002\0\u0007\u005a" +
+ "\u0001\0\u0001\u005a\u0001\0\u0004\u005a\u0002\0\u000f\u005a\u0001\0\u0039\u005a\u0001\0\u0004\u005a" +
+ "\u0002\0\u0043\u005a\u0002\0\u0003\u005b\u0020\0\u0010\u005a\u0010\0\u0055\u005a\u000c\0\u026c\u005a" +
+ "\u0002\0\u0011\u005a\u0001\0\u001a\u005a\u0005\0\u004b\u005a\u0003\0\u0003\u005a\u000f\0\u000d\u005a" +
+ "\u0001\0\u0004\u005a\u0003\u005b\u000b\0\u0012\u005a\u0003\u005b\u000b\0\u0012\u005a\u0002\u005b\u000c\0" +
+ "\u000d\u005a\u0001\0\u0003\u005a\u0001\0\u0002\u005b\u000c\0\u0034\u0062\u0002\u0063\u001e\u0063\u0003\0" +
+ "\u0001\u0062\u0004\0\u0001\u0062\u0001\u0063\u0002\0\u000a\u005c\u0021\0\u0003\u005b\u0002\0\u000a\u005c" +
+ "\u0006\0\u0058\u005a\u0008\0\u0029\u005a\u0001\u005b\u0001\u005a\u0005\0\u0046\u005a\u000a\0\u001d\u005a" +
+ "\u0003\0\u000c\u005b\u0004\0\u000c\u005b\u000a\0\u000a\u005c\u001e\u0062\u0002\0\u0005\u0062\u000b\0" +
+ "\u002c\u0062\u0004\0\u0011\u0063\u0007\u0062\u0002\u0063\u0006\0\u000a\u005c\u0001\u0062\u0003\0\u0002\u0062" +
+ "\u0020\0\u0017\u005a\u0005\u005b\u0004\0\u0035\u0062\u000a\u0063\u0001\0\u001d\u0063\u0002\0\u0001\u005b" +
+ "\u000a\u005c\u0006\0\u000a\u005c\u0006\0\u000e\u0062\u0052\0\u0005\u005b\u002f\u005a\u0011\u005b\u0007\u005a" +
+ "\u0004\0\u000a\u005c\u0011\0\u0009\u005b\u000c\0\u0003\u005b\u001e\u005a\u000a\u005b\u0003\0\u0002\u005a" +
+ "\u000a\u005c\u0006\0\u0026\u005a\u000e\u005b\u000c\0\u0024\u005a\u0014\u005b\u0008\0\u000a\u005c\u0003\0" +
+ "\u0003\u005a\u000a\u005c\u0024\u005a\u0052\0\u0003\u005b\u0001\0\u0015\u005b\u0004\u005a\u0001\u005b\u0004\u005a" +
+ "\u0001\u005b\u000d\0\u00c0\u005a\u0027\u005b\u0015\0\u0004\u005b\u0116\u005a\u0002\0\u0006\u005a\u0002\0" +
+ "\u0026\u005a\u0002\0\u0006\u005a\u0002\0\u0008\u005a\u0001\0\u0001\u005a\u0001\0\u0001\u005a\u0001\0" +
+ "\u0001\u005a\u0001\0\u001f\u005a\u0002\0\u0035\u005a\u0001\0\u0007\u005a\u0001\0\u0001\u005a\u0003\0" +
+ "\u0003\u005a\u0001\0\u0007\u005a\u0003\0\u0004\u005a\u0002\0\u0006\u005a\u0004\0\u000d\u005a\u0005\0" +
+ "\u0003\u005a\u0001\0\u0007\u005a\u000f\0\u0002\u005b\u0002\u005b\u0008\0\u0002\u0060\u000a\0\u0001\u0060" +
+ "\u0002\0\u0001\u005e\u0002\0\u0005\u005b\u0010\0\u0002\u0061\u0003\0\u0001\u005f\u000f\0\u0001\u0061" +
+ "\u000b\0\u0005\u005b\u0005\0\u0006\u005b\u0001\0\u0001\u005a\u000d\0\u0001\u005a\u0010\0\u000d\u005a" +
+ "\u0033\0\u0021\u005b\u0011\0\u0001\u005a\u0004\0\u0001\u005a\u0002\0\u000a\u005a\u0001\0\u0001\u005a" +
+ "\u0003\0\u0005\u005a\u0006\0\u0001\u005a\u0001\0\u0001\u005a\u0001\0\u0001\u005a\u0001\0\u0004\u005a" +
+ "\u0001\0\u000b\u005a\u0002\0\u0004\u005a\u0005\0\u0005\u005a\u0004\0\u0001\u005a\u0011\0\u0029\u005a" +
+ "\u032d\0\u0034\u005a\u0716\0\u002f\u005a\u0001\0\u002f\u005a\u0001\0\u0085\u005a\u0006\0\u0004\u005a" +
+ "\u0003\u005b\u000e\0\u0026\u005a\u000a\0\u0036\u005a\u0009\0\u0001\u005a\u000f\0\u0001\u005b\u0017\u005a" +
+ "\u0009\0\u0007\u005a\u0001\0\u0007\u005a\u0001\0\u0007\u005a\u0001\0\u0007\u005a\u0001\0\u0007\u005a" +
+ "\u0001\0\u0007\u005a\u0001\0\u0007\u005a\u0001\0\u0007\u005a\u0001\0\u0020\u005b\u002f\0\u0001\u005a" +
+ "\u0050\0\u001a\u0064\u0001\0\u0059\u0064\u000c\0\u00d6\u0064\u002f\0\u0001\u005a\u0001\0\u0001\u0064" +
+ "\u0019\0\u0009\u0064\u0004\u005b\u0002\u005b\u0001\0\u0005\u005d\u0002\0\u0003\u0064\u0001\u005a\u0001\u005a" +
+ "\u0004\0\u0056\u0065\u0002\0\u0002\u005b\u0002\u005d\u0003\u0065\u005b\u005d\u0001\0\u0004\u005d\u0005\0" +
+ "\u0029\u005a\u0003\0\u005e\u0066\u0011\0\u001b\u005a\u0035\0\u0010\u005d\u001f\0\u0041\0\u001f\0" +
+ "\u0051\0\u002f\u005d\u0001\0\u0058\u005d\u00a8\0\u19b6\u0064\u004a\0\u51cc\u0064\u0034\0\u048d\u005a" +
+ "\u0043\0\u002e\u005a\u0002\0\u010d\u005a\u0003\0\u0010\u005a\u000a\u005c\u0002\u005a\u0014\0\u002f\u005a" +
+ "\u0004\u005b\u0009\0\u0002\u005b\u0001\0\u0019\u005a\u0008\0\u0050\u005a\u0002\u005b\u0025\0\u0009\u005a" +
+ "\u0002\0\u0067\u005a\u0002\0\u0004\u005a\u0001\0\u0002\u005a\u000e\0\u000a\u005a\u0050\0\u0008\u005a" +
+ "\u0001\u005b\u0003\u005a\u0001\u005b\u0004\u005a\u0001\u005b\u0017\u005a\u0005\u005b\u0018\0\u0034\u005a\u000c\0" +
+ "\u0002\u005b\u0032\u005a\u0011\u005b\u000b\0\u000a\u005c\u0006\0\u0012\u005b\u0006\u005a\u0003\0\u0001\u005a" +
+ "\u0004\0\u000a\u005c\u001c\u005a\u0008\u005b\u0002\0\u0017\u005a\u000d\u005b\u000c\0\u001d\u0066\u0003\0" +
+ "\u0004\u005b\u002f\u005a\u000e\u005b\u000e\0\u0001\u005a\u000a\u005c\u0026\0\u0029\u005a\u000e\u005b\u0009\0" +
+ "\u0003\u005a\u0001\u005b\u0008\u005a\u0002\u005b\u0002\0\u000a\u005c\u0006\0\u001b\u0062\u0001\u0063\u0004\0" +
+ "\u0030\u0062\u0001\u0063\u0001\u0062\u0003\u0063\u0002\u0062\u0002\u0063\u0005\u0062\u0002\u0063\u0001\u0062\u0001\u0063" +
+ "\u0001\u0062\u0018\0\u0005\u0062\u0021\0\u0006\u005a\u0002\0\u0006\u005a\u0002\0\u0006\u005a\u0009\0" +
+ "\u0007\u005a\u0001\0\u0007\u005a\u0091\0\u0023\u005a\u0008\u005b\u0001\0\u0002\u005b\u0002\0\u000a\u005c" +
+ "\u0006\0\u2ba4\u0066\u000c\0\u0017\u0066\u0004\0\u0031\u0066\u0004\0\u0001\u0019\u0001\u0015\u0001\u0026" +
+ "\u0001\u0023\u0001\u000b\u0003\0\u0001\u0007\u0001\u0005\u0002\0\u0001\u0003\u0001\u0001\u000c\0\u0001\u0009" +
+ "\u0011\0\u0001\u004a\u0007\0\u0001\u0035\u0001\u000f\u0006\0\u0001\u0058\u0003\0\u0001\u0050\u0001\u0050" +
+ "\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050" +
+ "\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050" +
+ "\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050" +
+ "\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0051" +
+ "\u0001\u0050\u0001\u0050\u0001\u0050\u0001\u0055\u0001\u0053\u000f\0\u0001\u004c\u02c1\0\u0001\u0038\u00bf\0" +
+ "\u0001\u004b\u0001\u0039\u0001\u0002\u0003\u0054\u0002\u001d\u0001\u0054\u0001\u001d\u0002\u0054\u0001\u000c\u0011\u0054" +
+ "\u0002\u0030\u0007\u003b\u0001\u003a\u0007\u003b\u0007\u002a\u0001\u000d\u0001\u002a\u0001\u003d\u0002\u0025\u0001\u0024" +
+ "\u0001\u003d\u0001\u0025\u0001\u0024\u0008\u003d\u0002\u0033\u0005\u0031\u0002\u002c\u0005\u0031\u0001\u0006\u0008\u001f" +
+ "\u0005\u0011\u0003\u0017\u000a\u0046\u0010\u0017\u0003\u0022\u001a\u0018\u0001\u0016\u0002\u0014\u0002\u0048\u0001\u0049" +
+ "\u0002\u0048\u0002\u0049\u0002\u0048\u0001\u0049\u0003\u0014\u0001\u000e\u0002\u0014\u000a\u0034\u0001\u003c\u0001\u0021" +
+ "\u0001\u001c\u0001\u0034\u0006\u0021\u0001\u001c\u0036\u0021\u0005\u004d\u0006\u0043\u0001\u0029\u0004\u0043\u0002\u0029" +
+ "\u0008\u0043\u0001\u0029\u0007\u0040\u0001\u000a\u0002\u0040\u001a\u0043\u0001\u000a\u0004\u0040\u0001\u000a\u0005\u0042" +
+ "\u0001\u0041\u0001\u0042\u0003\u0041\u0007\u0042\u0001\u0041\u0013\u0042\u0005\u0037\u0003\u0042\u0006\u0037\u0002\u0037" +
+ "\u0006\u0036\u0008\u0036\u0002\u0040\u0007\u0036\u001e\u0040\u0004\u0036\u0042\u0040\u000d\u004d\u0001\u003f\u0002\u004d" +
+ "\u0001\u0059\u0003\u004f\u0001\u004d\u0002\u004f\u0005\u004d\u0004\u004f\u0004\u004e\u0001\u004d\u0003\u004e\u0001\u004d" +
+ "\u0005\u004e\u0016\u002e\u0004\u0013\u0001\u0045\u0002\u0044\u0004\u0052\u0001\u0044\u0002\u0052\u0003\u003e\u001b\u0052" +
+ "\u001d\u002d\u0003\u0052\u001d\u0056\u0003\u0052\u0006\u0056\u0002\u001b\u0019\u0056\u0001\u001b\u000f\u0056\u0006\u0052" +
+ "\u0004\u0012\u0001\u0008\u001f\u0012\u0001\u0008\u0004\u0012\u0015\u0032\u0001\u0057\u0009\u0032\u0011\u002d\u0005\u0032" +
+ "\u0001\u002f\u000a\u0020\u000b\u0032\u0004\u002d\u0001\u0028\u0006\u002d\u000a\u0052\u000f\u002d\u0001\u0027\u0003\u002b" +
+ "\u000d\u0010\u0009\u001e\u0001\u001a\u0014\u001e\u0002\u0010\u0009\u001e\u0001\u001a\u0019\u001e\u0001\u001a\u0004\u0010" +
+ "\u0004\u001e\u0002\u001a\u0002\u0047\u0001\u0004\u0005\u0047\u002a\u0004\u1900\0\u012e\u0064\u0002\0\u003e\u0064" +
+ "\u0002\0\u006a\u0064\u0026\0\u0007\u005a\u000c\0\u0005\u005a\u0005\0\u0001\u005a\u0001\u005b\u000a\u005a" +
+ "\u0001\0\u000d\u005a\u0001\0\u0005\u005a\u0001\0\u0001\u005a\u0001\0\u0002\u005a\u0001\0\u0002\u005a" +
+ "\u0001\0\u006c\u005a\u0021\0\u016b\u005a\u0012\0\u0040\u005a\u0002\0\u0036\u005a\u0028\0\u000c\u005a" +
+ "\u0004\0\u0010\u005b\u0001\u005f\u0002\0\u0001\u005e\u0001\u005f\u000b\0\u0007\u005b\u000c\0\u0002\u0061" +
+ "\u0018\0\u0003\u0061\u0001\u005f\u0001\0\u0001\u0060\u0001\0\u0001\u005f\u0001\u005e\u001a\0\u0005\u005a" +
+ "\u0001\0\u0087\u005a\u0002\0\u0001\u005b\u0007\0\u0001\u0060\u0004\0\u0001\u005f\u0001\0\u0001\u0060" +
+ "\u0001\0\u000a\u005c\u0001\u005e\u0001\u005f\u0005\0\u001a\u005a\u0004\0\u0001\u0061\u0001\0\u001a\u005a" +
+ "\u000b\0\u0038\u005d\u0002\u005b\u001f\u0066\u0003\0\u0006\u0066\u0002\0\u0006\u0066\u0002\0\u0006\u0066" +
+ "\u0002\0\u0003\u0066\u001c\0\u0003\u005b\u0004\0";
+
+ /**
+ * Translates characters to character classes
+ */
+ private static readonly char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+
+ /**
+ * Translates DFA states to action switch labels.
+ */
+ private static readonly int[] ZZ_ACTION = zzUnpackAction();
+
+ private const String ZZ_ACTION_PACKED_0 =
+ "\u0001\0\u0013\u0001\u0001\u0002\u0001\u0003\u0001\u0004\u0001\u0001\u0001\u0005\u0001\u0006" +
+ "\u0001\u0007\u0001\u0008\u000d\0\u0001\u0002\u0001\0\u0001\u0002\u0008\0\u0001\u0003" +
+ "\u000d\0\u0001\u0002\u002f\0";
+
+ private static int[] zzUnpackAction()
+ {
+ int[] result = new int[114];
+ 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[i++];
+ int value = packed[i++];
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Translates a state to a row index in the transition table
+ */
+ private static readonly int[] ZZ_ROWMAP = zzUnpackRowMap();
+
+ private const String ZZ_ROWMAP_PACKED_0 =
+ "\0\0\0\u0067\0\u00ce\0\u0135\0\u019c\0\u0203\0\u026a\0\u02d1" +
+ "\0\u0338\0\u039f\0\u0406\0\u046d\0\u04d4\0\u053b\0\u05a2\0\u0609" +
+ "\0\u0670\0\u06d7\0\u073e\0\u07a5\0\u080c\0\u0873\0\u08da\0\u0941" +
+ "\0\u09a8\0\u0067\0\u0067\0\u0a0f\0\u00ce\0\u0135\0\u019c\0\u0203" +
+ "\0\u026a\0\u0a76\0\u0add\0\u0b44\0\u0bab\0\u046d\0\u0c12\0\u0c79" +
+ "\0\u0ce0\0\u0d47\0\u0dae\0\u0e15\0\u0e7c\0\u0338\0\u039f\0\u0ee3" +
+ "\0\u0f4a\0\u0fb1\0\u1018\0\u107f\0\u10e6\0\u114d\0\u11b4\0\u121b" +
+ "\0\u1282\0\u12e9\0\u1350\0\u13b7\0\u141e\0\u1485\0\u14ec\0\u1553" +
+ "\0\u15ba\0\u0941\0\u1621\0\u1688\0\u16ef\0\u1756\0\u17bd\0\u1824" +
+ "\0\u188b\0\u18f2\0\u1959\0\u19c0\0\u1a27\0\u1a8e\0\u1af5\0\u1b5c" +
+ "\0\u1bc3\0\u1c2a\0\u1c91\0\u1cf8\0\u1d5f\0\u1dc6\0\u1e2d\0\u1e94" +
+ "\0\u1efb\0\u1f62\0\u1fc9\0\u2030\0\u2097\0\u20fe\0\u2165\0\u21cc" +
+ "\0\u2233\0\u229a\0\u2301\0\u2368\0\u23cf\0\u2436\0\u249d\0\u2504" +
+ "\0\u256b\0\u25d2\0\u2639\0\u26a0\0\u2707\0\u276e\0\u27d5\0\u283c" +
+ "\0\u28a3\0\u290a";
+
+ private static int[] zzUnpackRowMap()
+ {
+ int[] result = new int[114];
+ 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[i++] << 16;
+ result[j++] = high | packed[i++];
+ }
+ return j;
+ }
+
+ /**
+ * The transition table of the DFA
+ */
+ private static readonly int[] ZZ_TRANS = zzUnpackTrans();
+
+ private const String ZZ_TRANS_PACKED_0 =
+ "\u0001\u0002\u0001\u0003\u0001\u0002\u0001\u0004\u0001\u0002\u0001\u0005\u0001\u0002\u0001\u0006" +
+ "\u0001\u0002\u0001\u0007\u0001\u0002\u0001\u0008\u0003\u0002\u0001\u0009\u0005\u0002\u0001\u000a" +
+ "\u0003\u0002\u0001\u000b\u0009\u0002\u0001\u000c\u0002\u0002\u0001\u000d\u0023\u0002\u0001\u000e" +
+ "\u0001\u0002\u0001\u000f\u0003\u0002\u0001\u0010\u0001\u0011\u0001\u0002\u0001\u0012\u0001\u0002" +
+ "\u0001\u0013\u0002\u0002\u0001\u0014\u0001\u0002\u0001\u0015\u0001\u0002\u0001\u0016\u0001\u0017" +
+ "\u0003\u0002\u0001\u0018\u0002\u0019\u0001\u001a\u0001\u001b\u0001\u001c\u0069\0\u0001\u0015" +
+ "\u0009\0\u0001\u0015\u0010\0\u0001\u0015\u0012\0\u0001\u0015\u0008\0\u0003\u0015" +
+ "\u000f\0\u0001\u0015\u0008\0\u0001\u0015\u0014\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0003\u0015" +
+ "\u0001\0\u0005\u0015\u0001\0\u0003\u0015\u0001\0\u0009\u0015\u0001\0\u0002\u0015" +
+ "\u0001\0\u000e\u0015\u0001\0\u0002\u0015\u0001\0\u0011\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0003\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0002\u0015" +
+ "\u0001\0\u0001\u0015\u000f\0\u0001\u0015\u0003\0\u0001\u0015\u0005\0\u0002\u0015" +
+ "\u0003\0\u0001\u0015\u000b\0\u0001\u0015\u0001\0\u0001\u0015\u0004\0\u0002\u0015" +
+ "\u0004\0\u0001\u0015\u0001\0\u0001\u0015\u0003\0\u0002\u0015\u0001\0\u0001\u0015" +
+ "\u0005\0\u0003\u0015\u0001\0\u0001\u0015\u000d\0\u0001\u0015\u0008\0\u0001\u0015" +
+ "\u0014\0\u0001\u0015\u0003\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0003\u0015\u0002\0\u0004\u0015\u0001\0\u0003\u0015\u0002\0\u0003\u0015" +
+ "\u0001\0\u0004\u0015\u0001\0\u0002\u0015\u0002\0\u0003\u0015\u0001\0\u0009\u0015" +
+ "\u0001\0\u0002\u0015\u0001\0\u000e\u0015\u0001\0\u0002\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0003\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0002\u0015" +
+ "\u0001\0\u0001\u0015\u000f\0\u0001\u0015\u0003\0\u0001\u0015\u0003\0\u0001\u0015" +
+ "\u0001\0\u0003\u0015\u0002\0\u0001\u0015\u0001\0\u0002\u0015\u0001\0\u0003\u0015" +
+ "\u0003\0\u0002\u0015\u0001\0\u0001\u0015\u0001\0\u0002\u0015\u0001\0\u0002\u0015" +
+ "\u0003\0\u0002\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0002\u0015" +
+ "\u0001\0\u0002\u0015\u0001\0\u0002\u0015\u0001\0\u0005\u0015\u0001\0\u0005\u0015" +
+ "\u0001\0\u0002\u0015\u0001\0\u0002\u0015\u0001\0\u0001\u0015\u0001\0\u0003\u0015" +
+ "\u0004\0\u0001\u0015\u0004\0\u0001\u0015\u0019\0\u0003\u0015\u0005\0\u0001\u0015" +
+ "\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0004\0\u0001\u0015\u000c\0\u0001\u0015" +
+ "\u0005\0\u0001\u0015\u0009\0\u0002\u0015\u000a\0\u0001\u0016\u0001\0\u0002\u0015" +
+ "\u000a\0\u0001\u0015\u0014\0\u0001\u0015\u0001\0\u0001\u0016\u0007\0\u0002\u0015" +
+ "\u0002\0\u0005\u0015\u0002\0\u0002\u0015\u0004\0\u0006\u0015\u0001\0\u0002\u0015" +
+ "\u0004\0\u0005\u0015\u0001\0\u0005\u0015\u0001\0\u0002\u0015\u0001\0\u0003\u0015" +
+ "\u0001\0\u0004\u0015\u0001\0\u0005\u0015\u0001\u0016\u0001\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0001\0\u0003\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0002\0\u0001\u0015\u000f\0\u0001\u0015\u0003\0\u0001\u0015\u0005\0" +
+ "\u0002\u0015\u0003\0\u0001\u0015\u0004\0\u0003\u0015\u0004\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0002\0\u0001\u0015\u0001\0\u0002\u0015\u0004\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0003\0\u0002\u0015\u0001\0\u0001\u0015\u0005\0\u0003\u0015\u0001\0" +
+ "\u0001\u0015\u0008\0\u0001\u0015\u0001\0\u0002\u0016\u0001\0\u0001\u0015\u0008\0" +
+ "\u0001\u0015\u0014\0\u0001\u0015\u0003\0\u0001\u0015\u0006\0\u0002\u0015\u0005\0" +
+ "\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0009\u0015\u0002\0" +
+ "\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0006\u0015\u0002\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0001\0\u0003\u0015\u0003\0\u0002\u0015\u0004\0\u0003\u0015\u0001\0" +
+ "\u0001\u0015\u0008\0\u0001\u0015\u0001\0\u0002\u0015\u0011\0\u0001\u0015\u0009\0" +
+ "\u0002\u0015\u000f\0\u0001\u0015\u0006\0\u0002\u0015\u0004\0\u0001\u0015\u0005\0" +
+ "\u0001\u0015\u0002\0\u0001\u0015\u0005\0\u0003\u0015\u0001\0\u0001\u0015\u000d\0" +
+ "\u0001\u0015\u0008\0\u0001\u0015\u0014\0\u0001\u0015\u0003\0\u0001\u0015\u0005\0" +
+ "\u0001\u0015\u001a\0\u000d\u0015\u0005\0\u0003\u0015\u0001\0\u0001\u0015\u0005\0" +
+ "\u0001\u0015\u0007\0\u0001\u0015\u0002\0\u0001\u0015\u0005\0\u0001\u0015\u0002\0" +
+ "\u0001\u0015\u0001\0\u0001\u0015\u0046\0\u0001\u001b\u0011\0\u0001\u0017\u001d\0" +
+ "\u0001\u001a\u0003\0\u0001\u001a\u0003\0\u0001\u001a\u0001\0\u0003\u001a\u0002\0" +
+ "\u0001\u001a\u0002\0\u0001\u001a\u0001\0\u0003\u001a\u0003\0\u0002\u001a\u0001\0" +
+ "\u0001\u001a\u0001\0\u0002\u001a\u0001\0\u0002\u001a\u0003\0\u0002\u001a\u0001\0" +
+ "\u0001\u001a\u0003\0\u0002\u001a\u0001\0\u0002\u001a\u0001\0\u0002\u001a\u0001\0" +
+ "\u0005\u001a\u0001\0\u0005\u001a\u0002\0\u0001\u001a\u0001\0\u0002\u001a\u0001\0" +
+ "\u0001\u001a\u0001\0\u0003\u001a\u0004\0\u0001\u001a\u0004\0\u0001\u001a\u000f\0" +
+ "\u0001\u001a\u0001\0\u0001\u001a\u0001\0\u0001\u001a\u0001\0\u0001\u001a\u0001\0" +
+ "\u0001\u001a\u0001\0\u0003\u001a\u0001\0\u0005\u001a\u0001\0\u0003\u001a\u0001\0" +
+ "\u0009\u001a\u0001\0\u0002\u001a\u0001\0\u000e\u001a\u0001\0\u0002\u001a\u0001\0" +
+ "\u0011\u001a\u0001\0\u0001\u001a\u0001\0\u0003\u001a\u0002\0\u0001\u001a\u0001\0" +
+ "\u0001\u001a\u0001\0\u0002\u001a\u0001\0\u0001\u001a\u000f\0\u0001\u001a\u0001\0" +
+ "\u0001\u001a\u0001\0\u0001\u001a\u0003\0\u0001\u001a\u0001\0\u0003\u001a\u0001\0" +
+ "\u0002\u001a\u0001\0\u0002\u001a\u0001\0\u0003\u001a\u0001\0\u0009\u001a\u0001\0" +
+ "\u0002\u001a\u0001\0\u000e\u001a\u0001\0\u0002\u001a\u0001\0\u0011\u001a\u0001\0" +
+ "\u0001\u001a\u0001\0\u0003\u001a\u0002\0\u0001\u001a\u0001\0\u0001\u001a\u0001\0" +
+ "\u0002\u001a\u0001\0\u0001\u001a\u000f\0\u0001\u001a\u0009\0\u0001\u001a\u0010\0" +
+ "\u0001\u001a\u001b\0\u0001\u001a\u0011\0\u0001\u001a\u0008\0\u0001\u001a\u0014\0" +
+ "\u0001\u001a\u0001\0\u0001\u001a\u0001\0\u0001\u001a\u0001\0\u0001\u001a\u0001\0" +
+ "\u0001\u001a\u0001\0\u0003\u001a\u0001\0\u0005\u001a\u0001\0\u0003\u001a\u0001\0" +
+ "\u0006\u001a\u0001\0\u0002\u001a\u0001\0\u0002\u001a\u0001\0\u0008\u001a\u0001\0" +
+ "\u0005\u001a\u0001\0\u0002\u001a\u0001\0\u0011\u001a\u0001\0\u0001\u001a\u0001\0" +
+ "\u0003\u001a\u0002\0\u0001\u001a\u0001\0\u0001\u001a\u0001\0\u0002\u001a\u0001\0" +
+ "\u0001\u001a\u0066\0\u0001\u001b\u000e\0\u0001\u001d\u0001\0\u0001\u001e\u0001\0" +
+ "\u0001\u001f\u0001\0\u0001\u0020\u0001\0\u0001\u0021\u0001\0\u0001\u0022\u0003\0" +
+ "\u0001\u0023\u0005\0\u0001\u0024\u0003\0\u0001\u0025\u0009\0\u0001\u0026\u0002\0" +
+ "\u0001\u0027\u000e\0\u0001\u0028\u0002\0\u0001\u0029\u0021\0\u0002\u0015\u0001\u002a" +
+ "\u0001\0\u0001\u002b\u0001\0\u0001\u002b\u0001\u002c\u0001\0\u0001\u0015\u0002\0" +
+ "\u0001\u0015\u0001\0\u0001\u001d\u0001\0\u0001\u001e\u0001\0\u0001\u001f\u0001\0" +
+ "\u0001\u0020\u0001\0\u0001\u0021\u0001\0\u0001\u002d\u0003\0\u0001\u002e\u0005\0" +
+ "\u0001\u002f\u0003\0\u0001\u0030\u0009\0\u0001\u0026\u0002\0\u0001\u0031\u000e\0" +
+ "\u0001\u0032\u0002\0\u0001\u0033\u0021\0\u0001\u0015\u0002\u0016\u0002\0\u0002\u0034" +
+ "\u0001\u0035\u0001\0\u0001\u0016\u0002\0\u0001\u0015\u000b\0\u0001\u0036\u000d\0" +
+ "\u0001\u0037\u000c\0\u0001\u0038\u000e\0\u0001\u0039\u0002\0\u0001\u003a\u0011\0" +
+ "\u0001\u003b\u0010\0\u0001\u0017\u0001\0\u0001\u0017\u0003\0\u0001\u002c\u0001\0" +
+ "\u0001\u0017\u0004\0\u0001\u001d\u0001\0\u0001\u001e\u0001\0\u0001\u001f\u0001\0" +
+ "\u0001\u0020\u0001\0\u0001\u0021\u0001\0\u0001\u003c\u0003\0\u0001\u002e\u0005\0" +
+ "\u0001\u002f\u0003\0\u0001\u003d\u0009\0\u0001\u0026\u0002\0\u0001\u003e\u000e\0" +
+ "\u0001\u003f\u0002\0\u0001\u0040\u0011\0\u0001\u0041\u000f\0\u0001\u0015\u0001\u0042" +
+ "\u0001\u0016\u0001\u0043\u0003\0\u0001\u0042\u0001\0\u0001\u0042\u0002\0\u0001\u0015" +
+ "\u0062\0\u0002\u0019\u0004\0\u0001\u001d\u0001\0\u0001\u001e\u0001\0\u0001\u001f" +
+ "\u0001\0\u0001\u0020\u0001\0\u0001\u0021\u0001\0\u0001\u0044\u0003\0\u0001\u0023" +
+ "\u0005\0\u0001\u0024\u0003\0\u0001\u0045\u0009\0\u0001\u0026\u0002\0\u0001\u0046" +
+ "\u000e\0\u0001\u0047\u0002\0\u0001\u0048\u0021\0\u0001\u0015\u0001\u001c\u0001\u002a" +
+ "\u0001\0\u0001\u002b\u0001\0\u0001\u002b\u0001\u002c\u0001\0\u0001\u001c\u0002\0" +
+ "\u0001\u001c\u0002\0\u0001\u0015\u0009\0\u0003\u0015\u0005\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0001\0\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0001\u0015\u0001\0" +
+ "\u0002\u0015\u0004\0\u0001\u0015\u0005\0\u0001\u0015\u0003\0\u0001\u0015\u0004\0" +
+ "\u0005\u0015\u0008\0\u0001\u002a\u0001\0\u0002\u0015\u0001\0\u0001\u0015\u0008\0" +
+ "\u0001\u0015\u0014\0\u0001\u0015\u0001\0\u0001\u002a\u0007\0\u0002\u0015\u0002\0" +
+ "\u0005\u0015\u0002\0\u0002\u0015\u0004\0\u0006\u0015\u0001\0\u0002\u0015\u0004\0" +
+ "\u0005\u0015\u0001\0\u0005\u0015\u0001\0\u0002\u0015\u0001\0\u0003\u0015\u0001\0" +
+ "\u0004\u0015\u0001\0\u0005\u0015\u0001\u002a\u0001\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0003\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0002\0\u0001\u0015\u000f\0\u0001\u0015\u0003\0\u0001\u0015\u0005\0\u0002\u0015" +
+ "\u0003\0\u0001\u0015\u0004\0\u0003\u0015\u0004\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0002\0\u0001\u0015\u0001\0\u0002\u0015\u0004\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0003\0\u0002\u0015\u0001\0\u0001\u0015\u0005\0\u0003\u0015\u0001\0\u0001\u0015" +
+ "\u0008\0\u0001\u0015\u0001\0\u0002\u002a\u0001\0\u0001\u0015\u0008\0\u0001\u0015" +
+ "\u0014\0\u0001\u0015\u0003\0\u0001\u0015\u0006\0\u0002\u0015\u0005\0\u0001\u0015" +
+ "\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0009\u0015\u0002\0\u0001\u0015" +
+ "\u0004\0\u0001\u0015\u0004\0\u0006\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0003\u0015\u0001\0\u0001\u0015\u0001\0\u0002\u0015\u0004\0\u0003\u0015" +
+ "\u0001\0\u0001\u0015\u0008\0\u0001\u0015\u0001\0\u0002\u0015\u0011\0\u0001\u0015" +
+ "\u0003\0\u0001\u0015\u0005\0\u0001\u0015\u001a\0\u000d\u0015\u0005\0\u0003\u0015" +
+ "\u0001\0\u0001\u0015\u0005\0\u0003\u0015\u0005\0\u0001\u0015\u0002\0\u0002\u0015" +
+ "\u0004\0\u0001\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0043\0\u0002\u0015" +
+ "\u0006\0\u0001\u0015\u002e\0\u0001\u0015\u0003\0\u0001\u0015\u0002\0\u0001\u0015" +
+ "\u0003\0\u0001\u0015\u0005\0\u0001\u0015\u0007\0\u0001\u0015\u0004\0\u0002\u0015" +
+ "\u0003\0\u0002\u0015\u0001\0\u0001\u0015\u0004\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0002\0\u0002\u0015\u0001\0\u0003\u0015\u0001\0\u0001\u0015\u0002\0\u0004\u0015" +
+ "\u0002\0\u0001\u0015\u0021\0\u0001\u001d\u0001\0\u0001\u001e\u0001\0\u0001\u001f" +
+ "\u0001\0\u0001\u0020\u0001\0\u0001\u0021\u0001\0\u0001\u0049\u0003\0\u0001\u0023" +
+ "\u0005\0\u0001\u0024\u0003\0\u0001\u004a\u0009\0\u0001\u0026\u0002\0\u0001\u004b" +
+ "\u000e\0\u0001\u004c\u0002\0\u0001\u004d\u0021\0\u0001\u0015\u0002\u002a\u0002\0" +
+ "\u0002\u004e\u0001\u002c\u0001\0\u0001\u002a\u0002\0\u0001\u0015\u0001\0\u0001\u001d" +
+ "\u0001\0\u0001\u001e\u0001\0\u0001\u001f\u0001\0\u0001\u0020\u0001\0\u0001\u0021" +
+ "\u0001\0\u0001\u004f\u0003\0\u0001\u0050\u0005\0\u0001\u0051\u0003\0\u0001\u0052" +
+ "\u0009\0\u0001\u0026\u0002\0\u0001\u0053\u000e\0\u0001\u0054\u0002\0\u0001\u0055" +
+ "\u0021\0\u0001\u0015\u0001\u002b\u0007\0\u0001\u002b\u0002\0\u0001\u0015\u0001\0" +
+ "\u0001\u001d\u0001\0\u0001\u001e\u0001\0\u0001\u001f\u0001\0\u0001\u0020\u0001\0" +
+ "\u0001\u0021\u0001\0\u0001\u0056\u0003\0\u0001\u0023\u0005\0\u0001\u0024\u0003\0" +
+ "\u0001\u0057\u0009\0\u0001\u0026\u0002\0\u0001\u0058\u000e\0\u0001\u0059\u0002\0" +
+ "\u0001\u005a\u0011\0\u0001\u0041\u000f\0\u0001\u0015\u0001\u002c\u0001\u002a\u0001\u0043" +
+ "\u0003\0\u0001\u002c\u0001\0\u0001\u002c\u0002\0\u0001\u0015\u0002\0\u0001\u0016" +
+ "\u0009\0\u0003\u0015\u0005\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0004\0\u0001\u0015\u0004\0\u0001\u0016\u0001\0\u0002\u0016\u0004\0\u0001\u0015" +
+ "\u0005\0\u0001\u0015\u0003\0\u0001\u0016\u0004\0\u0001\u0016\u0002\u0015\u0002\u0016" +
+ "\u0008\0\u0001\u0016\u0001\0\u0002\u0015\u0001\0\u0001\u0016\u0008\0\u0001\u0015" +
+ "\u0014\0\u0001\u0015\u0003\0\u0001\u0015\u0006\0\u0002\u0015\u0005\0\u0001\u0015" +
+ "\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0009\u0015\u0002\0\u0001\u0015" +
+ "\u0004\0\u0001\u0015\u0004\0\u0006\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0003\u0015\u0001\0\u0001\u0016\u0001\0\u0002\u0015\u0004\0\u0003\u0015" +
+ "\u0001\0\u0001\u0015\u0008\0\u0001\u0015\u0001\0\u0002\u0015\u0011\0\u0001\u0015" +
+ "\u0003\0\u0001\u0015\u0005\0\u0001\u0015\u001a\0\u000d\u0015\u0005\0\u0003\u0015" +
+ "\u0001\0\u0001\u0015\u0005\0\u0001\u0015\u0002\u0016\u0005\0\u0001\u0015\u0002\0" +
+ "\u0001\u0015\u0001\u0016\u0004\0\u0001\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0043\0\u0002\u0016\u0006\0\u0001\u0016\u002e\0\u0001\u0016\u0003\0\u0001\u0016" +
+ "\u0002\0\u0001\u0016\u0003\0\u0001\u0016\u0005\0\u0001\u0016\u0007\0\u0001\u0016" +
+ "\u0004\0\u0002\u0016\u0003\0\u0002\u0016\u0001\0\u0001\u0016\u0004\0\u0001\u0016" +
+ "\u0001\0\u0001\u0016\u0002\0\u0002\u0016\u0001\0\u0003\u0016\u0001\0\u0001\u0016" +
+ "\u0002\0\u0004\u0016\u0002\0\u0001\u0016\u002b\0\u0001\u005b\u0003\0\u0001\u005c" +
+ "\u0005\0\u0001\u005d\u0003\0\u0001\u005e\u000c\0\u0001\u005f\u000e\0\u0001\u0060" +
+ "\u0002\0\u0001\u0061\u0022\0\u0001\u0034\u0001\u0016\u0006\0\u0001\u0034\u0004\0" +
+ "\u0001\u001d\u0001\0\u0001\u001e\u0001\0\u0001\u001f\u0001\0\u0001\u0020\u0001\0" +
+ "\u0001\u0021\u0001\0\u0001\u0062\u0003\0\u0001\u002e\u0005\0\u0001\u002f\u0003\0" +
+ "\u0001\u0063\u0009\0\u0001\u0026\u0002\0\u0001\u0064\u000e\0\u0001\u0065\u0002\0" +
+ "\u0001\u0066\u0011\0\u0001\u0041\u000f\0\u0001\u0015\u0001\u0035\u0001\u0016\u0001\u0043" +
+ "\u0003\0\u0001\u0035\u0001\0\u0001\u0035\u0002\0\u0001\u0015\u0002\0\u0001\u0017" +
+ "\u001f\0\u0001\u0017\u0001\0\u0002\u0017\u000e\0\u0001\u0017\u0004\0\u0001\u0017" +
+ "\u0002\0\u0002\u0017\u000d\0\u0001\u0017\u005a\0\u0001\u0017\u006b\0\u0002\u0017" +
+ "\u0009\0\u0001\u0017\u004d\0\u0002\u0017\u0006\0\u0001\u0017\u002e\0\u0001\u0017" +
+ "\u0003\0\u0001\u0017\u0002\0\u0001\u0017\u0003\0\u0001\u0017\u0005\0\u0001\u0017" +
+ "\u0007\0\u0001\u0017\u0004\0\u0002\u0017\u0003\0\u0002\u0017\u0001\0\u0001\u0017" +
+ "\u0004\0\u0001\u0017\u0001\0\u0001\u0017\u0002\0\u0002\u0017\u0001\0\u0003\u0017" +
+ "\u0001\0\u0001\u0017\u0002\0\u0004\u0017\u0002\0\u0001\u0017\u006b\0\u0001\u0017" +
+ "\u001d\0\u0001\u0042\u0009\0\u0003\u0015\u0005\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0001\u0042\u0001\0\u0002\u0042" +
+ "\u0004\0\u0001\u0015\u0005\0\u0001\u0015\u0003\0\u0001\u0042\u0004\0\u0001\u0042" +
+ "\u0002\u0015\u0002\u0042\u0008\0\u0001\u0016\u0001\0\u0002\u0015\u0001\0\u0001\u0042" +
+ "\u0008\0\u0001\u0015\u0014\0\u0001\u0015\u0003\0\u0001\u0015\u0006\0\u0002\u0015" +
+ "\u0005\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0009\u0015" +
+ "\u0002\0\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0006\u0015\u0002\0\u0001\u0015" +
+ "\u0001\0\u0001\u0015\u0001\0\u0003\u0015\u0001\0\u0001\u0042\u0001\0\u0002\u0015" +
+ "\u0004\0\u0003\u0015\u0001\0\u0001\u0015\u0008\0\u0001\u0015\u0001\0\u0002\u0015" +
+ "\u0011\0\u0001\u0015\u0003\0\u0001\u0015\u0005\0\u0001\u0015\u001a\0\u000d\u0015" +
+ "\u0005\0\u0003\u0015\u0001\0\u0001\u0015\u0005\0\u0001\u0015\u0002\u0042\u0005\0" +
+ "\u0001\u0015\u0002\0\u0001\u0015\u0001\u0042\u0004\0\u0001\u0015\u0002\0\u0001\u0015" +
+ "\u0001\0\u0001\u0015\u0043\0\u0002\u0042\u0006\0\u0001\u0042\u002e\0\u0001\u0042" +
+ "\u0003\0\u0001\u0042\u0002\0\u0001\u0042\u0003\0\u0001\u0042\u0005\0\u0001\u0042" +
+ "\u0007\0\u0001\u0042\u0004\0\u0002\u0042\u0003\0\u0002\u0042\u0001\0\u0001\u0042" +
+ "\u0004\0\u0001\u0042\u0001\0\u0001\u0042\u0002\0\u0002\u0042\u0001\0\u0003\u0042" +
+ "\u0001\0\u0001\u0042\u0002\0\u0004\u0042\u0002\0\u0001\u0042\u006b\0\u0001\u0043" +
+ "\u0026\0\u0001\u0067\u000d\0\u0001\u0068\u000c\0\u0001\u0069\u000e\0\u0001\u006a" +
+ "\u0002\0\u0001\u006b\u0011\0\u0001\u0041\u0010\0\u0001\u0043\u0001\0\u0001\u0043" +
+ "\u0003\0\u0001\u002c\u0001\0\u0001\u0043\u0005\0\u0001\u001c\u0009\0\u0003\u0015" +
+ "\u0005\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0004\0\u0001\u0015" +
+ "\u0004\0\u0001\u001c\u0001\0\u0002\u001c\u0004\0\u0001\u0015\u0005\0\u0001\u0015" +
+ "\u0003\0\u0001\u001c\u0004\0\u0001\u001c\u0002\u0015\u0002\u001c\u0008\0\u0001\u002a" +
+ "\u0001\0\u0002\u0015\u0001\0\u0001\u001c\u0008\0\u0001\u0015\u0014\0\u0001\u0015" +
+ "\u0003\0\u0001\u0015\u0006\0\u0002\u0015\u0005\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0001\u0015\u0001\0\u0009\u0015\u0002\0\u0001\u0015\u0004\0\u0001\u0015" +
+ "\u0004\0\u0006\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0003\u0015" +
+ "\u0001\0\u0001\u001c\u0001\0\u0002\u0015\u0004\0\u0003\u0015\u0001\0\u0001\u0015" +
+ "\u0008\0\u0001\u0015\u0001\0\u0002\u0015\u0011\0\u0001\u0015\u0003\0\u0001\u0015" +
+ "\u0005\0\u0001\u0015\u001a\0\u000d\u0015\u0005\0\u0003\u0015\u0001\0\u0001\u0015" +
+ "\u0005\0\u0001\u0015\u0002\u001c\u0005\0\u0001\u0015\u0002\0\u0001\u0015\u0001\u001c" +
+ "\u0004\0\u0001\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0043\0\u0002\u001c" +
+ "\u0006\0\u0001\u001c\u002e\0\u0001\u001c\u0003\0\u0001\u001c\u0002\0\u0001\u001c" +
+ "\u0003\0\u0001\u001c\u0005\0\u0001\u001c\u0007\0\u0001\u001c\u0004\0\u0002\u001c" +
+ "\u0003\0\u0002\u001c\u0001\0\u0001\u001c\u0004\0\u0001\u001c\u0001\0\u0001\u001c" +
+ "\u0002\0\u0002\u001c\u0001\0\u0003\u001c\u0001\0\u0001\u001c\u0002\0\u0004\u001c" +
+ "\u0002\0\u0001\u001c\u0022\0\u0001\u002a\u0009\0\u0003\u0015\u0005\0\u0001\u0015" +
+ "\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0001\u002a" +
+ "\u0001\0\u0002\u002a\u0004\0\u0001\u0015\u0005\0\u0001\u0015\u0003\0\u0001\u002a" +
+ "\u0004\0\u0001\u002a\u0002\u0015\u0002\u002a\u0008\0\u0001\u002a\u0001\0\u0002\u0015" +
+ "\u0001\0\u0001\u002a\u0008\0\u0001\u0015\u0014\0\u0001\u0015\u0003\0\u0001\u0015" +
+ "\u0006\0\u0002\u0015\u0005\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015" +
+ "\u0001\0\u0009\u0015\u0002\0\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0006\u0015" +
+ "\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0003\u0015\u0001\0\u0001\u002a" +
+ "\u0001\0\u0002\u0015\u0004\0\u0003\u0015\u0001\0\u0001\u0015\u0008\0\u0001\u0015" +
+ "\u0001\0\u0002\u0015\u0011\0\u0001\u0015\u0003\0\u0001\u0015\u0005\0\u0001\u0015" +
+ "\u001a\0\u000d\u0015\u0005\0\u0003\u0015\u0001\0\u0001\u0015\u0005\0\u0001\u0015" +
+ "\u0002\u002a\u0005\0\u0001\u0015\u0002\0\u0001\u0015\u0001\u002a\u0004\0\u0001\u0015" +
+ "\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0043\0\u0002\u002a\u0006\0\u0001\u002a" +
+ "\u002e\0\u0001\u002a\u0003\0\u0001\u002a\u0002\0\u0001\u002a\u0003\0\u0001\u002a" +
+ "\u0005\0\u0001\u002a\u0007\0\u0001\u002a\u0004\0\u0002\u002a\u0003\0\u0002\u002a" +
+ "\u0001\0\u0001\u002a\u0004\0\u0001\u002a\u0001\0\u0001\u002a\u0002\0\u0002\u002a" +
+ "\u0001\0\u0003\u002a\u0001\0\u0001\u002a\u0002\0\u0004\u002a\u0002\0\u0001\u002a" +
+ "\u002b\0\u0001\u006c\u0003\0\u0001\u006d\u0005\0\u0001\u006e\u0003\0\u0001\u006f" +
+ "\u000c\0\u0001\u0070\u000e\0\u0001\u0071\u0002\0\u0001\u0072\u0022\0\u0001\u004e" +
+ "\u0001\u002a\u0006\0\u0001\u004e\u0005\0\u0001\u002b\u0009\0\u0003\u0015\u0005\0" +
+ "\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0004\0\u0001\u0015\u0004\0" +
+ "\u0001\u002b\u0001\0\u0002\u002b\u0004\0\u0001\u0015\u0005\0\u0001\u0015\u0003\0" +
+ "\u0001\u002b\u0004\0\u0001\u002b\u0002\u0015\u0002\u002b\u000a\0\u0002\u0015\u0001\0" +
+ "\u0001\u002b\u0008\0\u0001\u0015\u0014\0\u0001\u0015\u0009\0\u0002\u0015\u0002\0" +
+ "\u0005\u0015\u0002\0\u0002\u0015\u0004\0\u0006\u0015\u0001\0\u0002\u0015\u0004\0" +
+ "\u0005\u0015\u0001\0\u0005\u0015\u0001\0\u0002\u0015\u0001\0\u0003\u0015\u0001\0" +
+ "\u0004\u0015\u0001\0\u0005\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0" +
+ "\u0003\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0002\0" +
+ "\u0001\u0015\u000f\0\u0001\u0015\u0003\0\u0001\u0015\u0005\0\u0002\u0015\u0003\0" +
+ "\u0001\u0015\u0004\0\u0003\u0015\u0004\0\u0001\u0015\u0001\0\u0001\u0015\u0002\0" +
+ "\u0001\u0015\u0001\0\u0002\u0015\u0004\0\u0001\u0015\u0001\0\u0001\u0015\u0003\0" +
+ "\u0002\u0015\u0001\0\u0001\u0015\u0005\0\u0003\u0015\u0001\0\u0001\u0015\u0008\0" +
+ "\u0001\u0015\u0004\0\u0001\u0015\u0008\0\u0001\u0015\u0014\0\u0001\u0015\u0003\0" +
+ "\u0001\u0015\u0006\0\u0002\u0015\u0005\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0001\0\u0009\u0015\u0002\0\u0001\u0015\u0004\0\u0001\u0015\u0004\0" +
+ "\u0006\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0003\u0015\u0001\0" +
+ "\u0001\u002b\u0001\0\u0002\u0015\u0004\0\u0003\u0015\u0001\0\u0001\u0015\u0008\0" +
+ "\u0001\u0015\u0001\0\u0002\u0015\u0011\0\u0001\u0015\u0003\0\u0001\u0015\u0005\0" +
+ "\u0001\u0015\u001a\0\u000d\u0015\u0005\0\u0003\u0015\u0001\0\u0001\u0015\u0005\0" +
+ "\u0001\u0015\u0002\u002b\u0005\0\u0001\u0015\u0002\0\u0001\u0015\u0001\u002b\u0004\0" +
+ "\u0001\u0015\u0002\0\u0001\u0015\u0001\0\u0001\u0015\u0043\0\u0002\u002b\u0006\0" +
+ "\u0001\u002b\u002e\0\u0001\u002b\u0003\0\u0001\u002b\u0002\0\u0001\u002b\u0003\0" +
+ "\u0001\u002b\u0005\0\u0001\u002b\u0007\0\u0001\u002b\u0004\0\u0002\u002b\u0003\0" +
+ "\u0002\u002b\u0001\0\u0001\u002b\u0004\0\u0001\u002b\u0001\0\u0001\u002b\u0002\0" +
+ "\u0002\u002b\u0001\0\u0003\u002b\u0001\0\u0001\u002b\u0002\0\u0004\u002b\u0002\0" +
+ "\u0001\u002b\u0022\0\u0001\u002c\u0009\0\u0003\u0015\u0005\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0001\0\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0001\u002c\u0001\0" +
+ "\u0002\u002c\u0004\0\u0001\u0015\u0005\0\u0001\u0015\u0003\0\u0001\u002c\u0004\0" +
+ "\u0001\u002c\u0002\u0015\u0002\u002c\u0008\0\u0001\u002a\u0001\0\u0002\u0015\u0001\0" +
+ "\u0001\u002c\u0008\0\u0001\u0015\u0014\0\u0001\u0015\u0003\0\u0001\u0015\u0006\0" +
+ "\u0002\u0015\u0005\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0" +
+ "\u0009\u0015\u0002\0\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0006\u0015\u0002\0" +
+ "\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0003\u0015\u0001\0\u0001\u002c\u0001\0" +
+ "\u0002\u0015\u0004\0\u0003\u0015\u0001\0\u0001\u0015\u0008\0\u0001\u0015\u0001\0" +
+ "\u0002\u0015\u0011\0\u0001\u0015\u0003\0\u0001\u0015\u0005\0\u0001\u0015\u001a\0" +
+ "\u000d\u0015\u0005\0\u0003\u0015\u0001\0\u0001\u0015\u0005\0\u0001\u0015\u0002\u002c" +
+ "\u0005\0\u0001\u0015\u0002\0\u0001\u0015\u0001\u002c\u0004\0\u0001\u0015\u0002\0" +
+ "\u0001\u0015\u0001\0\u0001\u0015\u0043\0\u0002\u002c\u0006\0\u0001\u002c\u002e\0" +
+ "\u0001\u002c\u0003\0\u0001\u002c\u0002\0\u0001\u002c\u0003\0\u0001\u002c\u0005\0" +
+ "\u0001\u002c\u0007\0\u0001\u002c\u0004\0\u0002\u002c\u0003\0\u0002\u002c\u0001\0" +
+ "\u0001\u002c\u0004\0\u0001\u002c\u0001\0\u0001\u002c\u0002\0\u0002\u002c\u0001\0" +
+ "\u0003\u002c\u0001\0\u0001\u002c\u0002\0\u0004\u002c\u0002\0\u0001\u002c\u0022\0" +
+ "\u0001\u0034\u001f\0\u0001\u0034\u0001\0\u0002\u0034\u000e\0\u0001\u0034\u0004\0" +
+ "\u0001\u0034\u0002\0\u0002\u0034\u0008\0\u0001\u0016\u0004\0\u0001\u0034\u001f\0" +
+ "\u0001\u0016\u0042\0\u0001\u0016\u0067\0\u0002\u0016\u005c\0\u0001\u0034\u006b\0" +
+ "\u0002\u0034\u0009\0\u0001\u0034\u004d\0\u0002\u0034\u0006\0\u0001\u0034\u002e\0" +
+ "\u0001\u0034\u0003\0\u0001\u0034\u0002\0\u0001\u0034\u0003\0\u0001\u0034\u0005\0" +
+ "\u0001\u0034\u0007\0\u0001\u0034\u0004\0\u0002\u0034\u0003\0\u0002\u0034\u0001\0" +
+ "\u0001\u0034\u0004\0\u0001\u0034\u0001\0\u0001\u0034\u0002\0\u0002\u0034\u0001\0" +
+ "\u0003\u0034\u0001\0\u0001\u0034\u0002\0\u0004\u0034\u0002\0\u0001\u0034\u0022\0" +
+ "\u0001\u0035\u0009\0\u0003\u0015\u0005\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0001\u0035\u0001\0\u0002\u0035\u0004\0" +
+ "\u0001\u0015\u0005\0\u0001\u0015\u0003\0\u0001\u0035\u0004\0\u0001\u0035\u0002\u0015" +
+ "\u0002\u0035\u0008\0\u0001\u0016\u0001\0\u0002\u0015\u0001\0\u0001\u0035\u0008\0" +
+ "\u0001\u0015\u0014\0\u0001\u0015\u0003\0\u0001\u0015\u0006\0\u0002\u0015\u0005\0" +
+ "\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0001\u0015\u0001\0\u0009\u0015\u0002\0" +
+ "\u0001\u0015\u0004\0\u0001\u0015\u0004\0\u0006\u0015\u0002\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0001\0\u0003\u0015\u0001\0\u0001\u0035\u0001\0\u0002\u0015\u0004\0" +
+ "\u0003\u0015\u0001\0\u0001\u0015\u0008\0\u0001\u0015\u0001\0\u0002\u0015\u0011\0" +
+ "\u0001\u0015\u0003\0\u0001\u0015\u0005\0\u0001\u0015\u001a\0\u000d\u0015\u0005\0" +
+ "\u0003\u0015\u0001\0\u0001\u0015\u0005\0\u0001\u0015\u0002\u0035\u0005\0\u0001\u0015" +
+ "\u0002\0\u0001\u0015\u0001\u0035\u0004\0\u0001\u0015\u0002\0\u0001\u0015\u0001\0" +
+ "\u0001\u0015\u0043\0\u0002\u0035\u0006\0\u0001\u0035\u002e\0\u0001\u0035\u0003\0" +
+ "\u0001\u0035\u0002\0\u0001\u0035\u0003\0\u0001\u0035\u0005\0\u0001\u0035\u0007\0" +
+ "\u0001\u0035\u0004\0\u0002\u0035\u0003\0\u0002\u0035\u0001\0\u0001\u0035\u0004\0" +
+ "\u0001\u0035\u0001\0\u0001\u0035\u0002\0\u0002\u0035\u0001\0\u0003\u0035\u0001\0" +
+ "\u0001\u0035\u0002\0\u0004\u0035\u0002\0\u0001\u0035\u0022\0\u0001\u0043\u001f\0" +
+ "\u0001\u0043\u0001\0\u0002\u0043\u000e\0\u0001\u0043\u0004\0\u0001\u0043\u0002\0" +
+ "\u0002\u0043\u000d\0\u0001\u0043\u005a\0\u0001\u0043\u006b\0\u0002\u0043\u0009\0" +
+ "\u0001\u0043\u004d\0\u0002\u0043\u0006\0\u0001\u0043\u002e\0\u0001\u0043\u0003\0" +
+ "\u0001\u0043\u0002\0\u0001\u0043\u0003\0\u0001\u0043\u0005\0\u0001\u0043\u0007\0" +
+ "\u0001\u0043\u0004\0\u0002\u0043\u0003\0\u0002\u0043\u0001\0\u0001\u0043\u0004\0" +
+ "\u0001\u0043\u0001\0\u0001\u0043\u0002\0\u0002\u0043\u0001\0\u0003\u0043\u0001\0" +
+ "\u0001\u0043\u0002\0\u0004\u0043\u0002\0\u0001\u0043\u0022\0\u0001\u004e\u001f\0" +
+ "\u0001\u004e\u0001\0\u0002\u004e\u000e\0\u0001\u004e\u0004\0\u0001\u004e\u0002\0" +
+ "\u0002\u004e\u0008\0\u0001\u002a\u0004\0\u0001\u004e\u001f\0\u0001\u002a\u0042\0" +
+ "\u0001\u002a\u0067\0\u0002\u002a\u005c\0\u0001\u004e\u006b\0\u0002\u004e\u0009\0" +
+ "\u0001\u004e\u004d\0\u0002\u004e\u0006\0\u0001\u004e\u002e\0\u0001\u004e\u0003\0" +
+ "\u0001\u004e\u0002\0\u0001\u004e\u0003\0\u0001\u004e\u0005\0\u0001\u004e\u0007\0" +
+ "\u0001\u004e\u0004\0\u0002\u004e\u0003\0\u0002\u004e\u0001\0\u0001\u004e\u0004\0" +
+ "\u0001\u004e\u0001\0\u0001\u004e\u0002\0\u0002\u004e\u0001\0\u0003\u004e\u0001\0" +
+ "\u0001\u004e\u0002\0\u0004\u004e\u0002\0\u0001\u004e\u0020\0";
+
+ private static int[] zzUnpackTrans()
+ {
+ int[] result = new int[10609];
+ 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[i++];
+ int value = packed[i++];
+ value--;
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /* error codes */
+ private const int ZZ_UNKNOWN_ERROR = 0;
+ private const int ZZ_NO_MATCH = 1;
+ private const int ZZ_PUSHBACK_2BIG = 2;
+
+ /* error messages for the codes above */
+ private static readonly String[] ZZ_ERROR_MSG = {
+ "Unkown internal scanner error",
+ "Error: could not match input",
+ "Error: pushback value was too large"
+ };
+
+ /**
+ * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
+ */
+ private static readonly int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
+
+ private const String ZZ_ATTRIBUTE_PACKED_0 =
+ "\u0001\0\u0001\u0009\u0017\u0001\u0002\u0009\u0001\u0001\u000d\0\u0001\u0001\u0001\0" +
+ "\u0001\u0001\u0008\0\u0001\u0001\u000d\0\u0001\u0001\u002f\0";
+
+ private static int[] zzUnpackAttribute()
+ {
+ int[] result = new int[114];
+ 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[i++];
+ int value = packed[i++];
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /** the input device */
+ private TextReader zzReader;
+
+ /** the current state of the DFA */
+ private int zzState;
+
+ /** the current lexical state */
+ private int zzLexicalState = YYINITIAL;
+
+ /** this buffer contains the current text to be matched and is
+ the source of the yytext() string */
+ private char[] zzBuffer = new char[ZZ_BUFFERSIZE];
+
+ /** the textposition at the last accepting state */
+ private int zzMarkedPos;
+
+ /** the current text position in the buffer */
+ private int zzCurrentPos;
+
+ /** startRead marks the beginning of the yytext() string in the buffer */
+ private int zzStartRead;
+
+ /** endRead marks the last character in the buffer, that has been read
+ from input */
+ private int zzEndRead;
+
+ /** number of newlines encountered up to the start of the matched text */
+ private int yyline;
+
+ /** the number of characters up to the start of the matched text */
+ private int yychar;
+
+ /**
+ * the number of characters from the last newline up to the start of the
+ * matched text
+ */
+ private int yycolumn;
+
+ /**
+ * zzAtBOL == true <=> the scanner is currently at the beginning of a line
+ */
+ private bool zzAtBOL = true;
+
+ /** zzAtEOF == true <=> the scanner is at the EOF */
+ private bool zzAtEOF;
+
+ /** denotes if the user-EOF-code has already been executed */
+ private bool zzEOFDone;
+
+ /* user code: */
+ /** Alphanumeric sequences */
+ public const int WORD_TYPE = StandardTokenizer.ALPHANUM;
+
+ /** Numbers */
+ public const int NUMERIC_TYPE = StandardTokenizer.NUM;
+
+ /**
+ * Chars in class \p{Line_Break = Complex_Context} are from South East Asian
+ * scripts (Thai, Lao, Myanmar, Khmer, etc.). Sequences of these are kept
+ * together as as a single token rather than broken up, because the logic
+ * required to break them at word boundaries is too complex for UAX#29.
+ * <p>
+ * See Unicode Line Breaking Algorithm: http://www.unicode.org/reports/tr14/#SA
+ */
+ public const int SOUTH_EAST_ASIAN_TYPE = StandardTokenizer.SOUTHEAST_ASIAN;
+
+ public const int IDEOGRAPHIC_TYPE = StandardTokenizer.IDEOGRAPHIC;
+
+ public const int HIRAGANA_TYPE = StandardTokenizer.HIRAGANA;
+
+ public const int KATAKANA_TYPE = StandardTokenizer.KATAKANA;
+
+ public const int HANGUL_TYPE = StandardTokenizer.HANGUL;
+
+ public int YYChar
+ {
+ get
+ {
+ return yychar;
+ }
+ }
+
+ /**
+ * Fills CharTermAttribute with the current token text.
+ */
+ public void GetText(ICharTermAttribute t)
+ {
+ t.CopyBuffer(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);
+ }
+
+
+ /**
+ * Creates a new scanner
+ * There is also a java.io.InputStream version of this constructor.
+ *
+ * @param in the TextReader to read input from.
+ */
+ public StandardTokenizerImpl31(TextReader input)
+ {
+ this.zzReader = input;
+ }
+
+
+
+ /**
+ * Unpacks the compressed character translation table.
+ *
+ * @param packed the packed character translation table
+ * @return the unpacked character translation table
+ */
+ private static char[] zzUnpackCMap(String packed)
+ {
+ char[] map = new char[0x10000];
+ int i = 0; /* index in packed string */
+ int j = 0; /* index in unpacked array */
+ while (i < 2650)
+ {
+ int count = packed[i++];
+ char value = packed[i++];
+ do map[j++] = value; while (--count > 0);
+ }
+ return map;
+ }
+
+
+ /**
+ * Refills the input buffer.
+ *
+ * @return <code>false</code>, iff there was new input.
+ *
+ * @exception java.io.IOException if any I/O-Error occurs
+ */
+ private bool zzRefill()
+ {
+
+ /* first: make room (if you can) */
+ if (zzStartRead > 0)
+ {
+ Array.Copy(zzBuffer, zzStartRead,
+ zzBuffer, 0,
+ zzEndRead - zzStartRead);
+
+ /* translate stored positions */
+ zzEndRead -= zzStartRead;
+ zzCurrentPos -= zzStartRead;
+ zzMarkedPos -= zzStartRead;
+ zzStartRead = 0;
+ }
+
+ /* is the buffer big enough? */
+ if (zzCurrentPos >= zzBuffer.Length)
+ {
+ /* if not: blow it up */
+ char[] newBuffer = new char[zzCurrentPos * 2];
+ Array.Copy(zzBuffer, 0, newBuffer, 0, zzBuffer.Length);
+ zzBuffer = newBuffer;
+ }
+
+ /* finally: fill the buffer with new input */
+ int numRead = zzReader.Read(zzBuffer, zzEndRead,
+ zzBuffer.Length - zzEndRead);
+
+ if (numRead > 0)
+ {
+ zzEndRead += numRead;
+ return false;
+ }
+ // unlikely but not impossible: read 0 characters, but not at end of stream
+ if (numRead == 0)
+ {
+ int c = zzReader.Read();
+ if (c <= 0)
+ {
+ return true;
+ }
+ else
+ {
+ zzBuffer[zzEndRead++] = (char)c;
+ return false;
+ }
+ }
+
+ // numRead < 0
+ return true;
+ }
+
+
+ /**
+ * Closes the input stream.
+ */
+ public void yyclose()
+ {
+ zzAtEOF = true; /* indicate end of file */
+ zzEndRead = zzStartRead; /* invalidate buffer */
+
+ if (zzReader != null)
+ zzReader.Close();
+ }
+
+
+ /**
+ * Resets the scanner to read from a new input stream.
+ * Does not close the old reader.
+ *
+ * All internal variables are reset, the old input stream
+ * <b>cannot</b> be reused (internal buffer is discarded and lost).
+ * Lexical state is set to <tt>ZZ_INITIAL</tt>.
+ *
+ * Internal scan buffer is resized down to its initial length, if it has grown.
+ *
+ * @param reader the new input stream
+ */
+ public void YYReset(TextReader reader)
+ {
+ zzReader = reader;
+ zzAtBOL = true;
+ zzAtEOF = false;
+ zzEOFDone = false;
+ zzEndRead = zzStartRead = 0;
+ zzCurrentPos = zzMarkedPos = 0;
+ yyline = yychar = yycolumn = 0;
+ zzLexicalState = YYINITIAL;
+ if (zzBuffer.Length > ZZ_BUFFERSIZE)
+ zzBuffer = new char[ZZ_BUFFERSIZE];
+ }
+
+
+ /**
+ * Returns the current lexical state.
+ */
+ public int yystate()
+ {
+ return zzLexicalState;
+ }
+
+
+ /**
+ * Enters a new lexical state
+ *
+ * @param newState the new lexical state
+ */
+ public void yybegin(int newState)
+ {
+ zzLexicalState = newState;
+ }
+
+
+ /**
+ * Returns the text matched by the current regular expression.
+ */
+ public String yytext()
+ {
+ return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);
+ }
+
+
+ /**
+ * Returns the character at position <tt>pos</tt> from the
+ * matched text.
+ *
+ * It is equivalent to yytext().charAt(pos), but faster
+ *
+ * @param pos the position of the character to fetch.
+ * A value from 0 to yylength()-1.
+ *
+ * @return the character at position pos
+ */
+ public char yycharat(int pos)
+ {
+ return zzBuffer[zzStartRead + pos];
+ }
+
+
+ /**
+ * Returns the length of the matched text region.
+ */
+ public int YYLength
+ {
+ get
+ {
+ 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 (IndexOutOfRangeException e)
+ {
+ message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+ }
+
+ throw new Exception(message);
+ }
+
+
+ /**
+ * Pushes the specified amount of characters back into the input stream.
+ *
+ * They will be read again by then next call of the scanning method
+ *
+ * @param number the number of characters to be read again.
+ * This number must not be greater than yylength()!
+ */
+ public void yypushback(int number)
+ {
+ if (number > YYLength)
+ zzScanError(ZZ_PUSHBACK_2BIG);
+
+ zzMarkedPos -= number;
+ }
+
+
+ /**
+ * Resumes scanning until the next regular expression is matched,
+ * the end of input is encountered or an I/O-Error occurs.
+ *
+ * @return the next token
+ * @exception java.io.IOException if any I/O-Error occurs
+ */
+ public int GetNextToken()
+ {
+ int zzInput;
+ int zzAction;
+
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ char[] zzBufferL = zzBuffer;
+ char[] zzCMapL = ZZ_CMAP;
+
+ int[] zzTransL = ZZ_TRANS;
+ int[] zzRowMapL = ZZ_ROWMAP;
+ int[] zzAttrL = ZZ_ATTRIBUTE;
+
+ while (true)
+ {
+ zzMarkedPosL = zzMarkedPos;
+
+ yychar += zzMarkedPosL - zzStartRead;
+
+ zzAction = -1;
+
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
+
+ // set up zzAction for empty match case:
+ int zzAttributes = zzAttrL[zzState];
+ if ((zzAttributes & 1) == 1)
+ {
+ zzAction = zzState;
+ }
+
+
+ //zzForAction:
+ {
+ while (true)
+ {
+
+ if (zzCurrentPosL < zzEndReadL)
+ zzInput = zzBufferL[zzCurrentPosL++];
+ else if (zzAtEOF)
+ {
+ zzInput = YYEOF;
+ break;
+ }
+ else
+ {
+ // store back cached positions
+ zzCurrentPos = zzCurrentPosL;
+ zzMarkedPos = zzMarkedPosL;
+ bool eof = zzRefill();
+ // get translated positions and possibly new buffer
+ zzCurrentPosL = zzCurrentPos;
+ zzMarkedPosL = zzMarkedPos;
+ zzBufferL = zzBuffer;
+ zzEndReadL = zzEndRead;
+ if (eof)
+ {
+ zzInput = YYEOF;
+ break;
+ }
+ else
+ {
+ zzInput = zzBufferL[zzCurrentPosL++];
+ }
+ }
+ int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]];
+ if (zzNext == -1) break;
+ zzState = zzNext;
+
+ zzAttributes = zzAttrL[zzState];
+ if ((zzAttributes & 1) == 1)
+ {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ((zzAttributes & 8) == 8) break;
+ }
+
+ }
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction])
+ {
+ case 1:
+ { /* Break so we don't hit fall-through warning: */
+ break; /* Not numeric, word, ideographic, hiragana, or SE Asian -- ignore it. */
+ }
+ case 9: break;
+ case 2:
+ {
+ return WORD_TYPE;
+ }
+ case 10: break;
+ case 3:
+ {
+ return NUMERIC_TYPE;
+ }
+ case 11: break;
+ case 4:
+ {
+ return KATAKANA_TYPE;
+ }
+ case 12: break;
+ case 5:
+ {
+ return SOUTH_EAST_ASIAN_TYPE;
+ }
+ case 13: break;
+ case 6:
+ {
+ return IDEOGRAPHIC_TYPE;
+ }
+ case 14: break;
+ case 7:
+ {
+ return HIRAGANA_TYPE;
+ }
+ case 15: break;
+ case 8:
+ {
+ return HANGUL_TYPE;
+ }
+ case 16: break;
+ default:
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos)
+ {
+ zzAtEOF = true;
+ {
+ return StandardTokenizerInterface.YYEOF;
+ }
+ }
+ else
+ {
+ zzScanError(ZZ_NO_MATCH);
+ }
+ break;
+ }
+ }
+ }
+
+
+ }
+}