Scinotes: fix a NPE when editing huge file
[scilab.git] / scilab / modules / scinotes / src / java / org / scilab / modules / scinotes / ScilabLexer.java
1 /* The following code was generated by JFlex 1.6.1 */
2
3 //CHECKSTYLE:OFF
4
5 package org.scilab.modules.scinotes;
6
7 import java.io.IOException;
8 import java.util.ArrayList;
9 import java.util.Arrays;
10 import java.util.HashSet;
11 import java.util.List;
12 import java.util.Set;
13 import javax.swing.text.BadLocationException;
14 import javax.swing.text.Element;
15 import org.scilab.modules.commons.ScilabCommonsUtils;
16
17 @javax.annotation.Generated("JFlex")
18 @SuppressWarnings("fallthrough")
19
20
21 /**
22  * This class is a scanner generated by 
23  * <a href="http://www.jflex.de/">JFlex</a> 1.6.1
24  * from the specification file <tt>modules/scinotes/src/java/jflex/scilab.jflex</tt>
25  */
26 public final class ScilabLexer extends ScilabLexerConstants {
27
28   /** This character denotes the end of file */
29   public static final int YYEOF = -1;
30
31   /** initial size of the lookahead buffer */
32   private static final int ZZ_BUFFERSIZE = 16384;
33
34   /** lexical states */
35   public static final int YYINITIAL = 0;
36   public static final int QSTRING = 2;
37   public static final int COMMENT = 4;
38   public static final int BLOCKCOMMENT = 6;
39   public static final int FIELD = 8;
40   public static final int COMMANDS = 10;
41   public static final int COMMANDSWHITE = 12;
42   public static final int BREAKSTRING = 14;
43
44   /**
45    * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
46    * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
47    *                  at the beginning of a line
48    * l is of the form l = 2*k, k a non negative integer
49    */
50   private static final int ZZ_LEXSTATE[] = { 
51      0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7, 7
52   };
53
54   /** 
55    * Translates characters to character classes
56    */
57   private static final String ZZ_CMAP_PACKED = 
58     "\11\0\1\111\1\1\1\124\1\121\1\114\22\0\1\72\1\117\1\10"+
59     "\1\115\1\112\1\11\1\51\1\7\1\3\1\4\1\6\1\43\1\120"+
60     "\1\44\1\40\1\5\12\116\1\113\1\125\1\47\1\45\1\50\1\115"+
61     "\1\53\1\101\1\102\1\26\1\36\1\34\1\15\1\104\1\31\1\27"+
62     "\1\105\1\110\1\76\1\33\1\73\1\32\1\35\1\123\1\37\1\25"+
63     "\1\13\1\77\1\106\1\30\1\123\1\100\1\74\1\2\1\41\1\4"+
64     "\1\42\1\122\1\0\1\24\1\65\1\55\1\57\1\16\1\14\1\103"+
65     "\1\60\1\20\1\107\1\66\1\63\1\70\1\21\1\56\1\17\1\67"+
66     "\1\61\1\23\1\12\1\54\1\75\1\62\1\71\1\64\1\22\1\2"+
67     "\1\52\1\4\1\46\6\0\1\124\u1fa2\0\1\124\1\124\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\udfe6\0";
68
69   /** 
70    * Translates characters to character classes
71    */
72   private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
73
74   /** 
75    * Translates DFA states to action switch labels.
76    */
77   private static final int [] ZZ_ACTION = zzUnpackAction();
78
79   private static final String ZZ_ACTION_PACKED_0 =
80     "\1\0\1\1\4\0\1\1\1\0\1\2\1\3\1\4"+
81     "\2\5\1\6\1\7\14\10\1\11\7\5\7\10\1\12"+
82     "\1\13\2\14\1\15\1\2\1\1\1\16\1\17\1\1"+
83     "\1\20\1\21\12\22\1\23\6\22\1\24\2\22\1\25"+
84     "\1\26\1\27\1\25\1\30\1\31\1\32\2\1\1\12"+
85     "\1\13\2\16\1\33\1\34\1\5\1\35\1\0\2\36"+
86     "\1\10\1\36\12\10\1\37\5\10\2\5\1\14\1\15"+
87     "\1\0\2\5\3\10\1\40\3\10\1\0\1\35\2\0"+
88     "\1\35\1\15\1\0\1\41\33\0\1\42\1\43\2\0"+
89     "\1\1\1\44\3\0\6\10\1\45\6\10\1\36\1\10"+
90     "\1\15\2\35\10\10\2\15\1\0\1\41\31\0\1\42"+
91     "\1\0\3\10\1\46\1\47\13\10\1\41\13\0\1\50"+
92     "\15\0\1\42\11\10\26\0\1\10\1\46\3\10\26\0"+
93     "\2\10\26\0\1\51\16\0\1\52\1\0\1\53\271\0";
94
95   private static int [] zzUnpackAction() {
96     int [] result = new int[555];
97     int offset = 0;
98     offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
99     return result;
100   }
101
102   private static int zzUnpackAction(String packed, int offset, int [] result) {
103     int i = 0;       /* index in packed string  */
104     int j = offset;  /* index in unpacked array */
105     int l = packed.length();
106     while (i < l) {
107       int count = packed.charAt(i++);
108       int value = packed.charAt(i++);
109       do result[j++] = value; while (--count > 0);
110     }
111     return j;
112   }
113
114
115   /** 
116    * Translates a state to a row index in the transition table
117    */
118   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
119
120   private static final String ZZ_ROWMAP_PACKED_0 =
121     "\0\0\0\126\0\254\0\u0102\0\u0158\0\u01ae\0\u0204\0\u025a"+
122     "\0\u02b0\0\u02b0\0\u02b0\0\u0306\0\u035c\0\u03b2\0\u03b2\0\u0408"+
123     "\0\u045e\0\u04b4\0\u050a\0\u0560\0\u05b6\0\u060c\0\u0662\0\u06b8"+
124     "\0\u070e\0\u0764\0\u07ba\0\u0810\0\u0866\0\u08bc\0\u0912\0\u0968"+
125     "\0\u09be\0\u0a14\0\u0a6a\0\u0ac0\0\u0b16\0\u0b6c\0\u0bc2\0\u0c18"+
126     "\0\u0c6e\0\u0cc4\0\u0d1a\0\u0d70\0\u0560\0\u0866\0\u0dc6\0\u0866"+
127     "\0\u0e1c\0\u02b0\0\u0e72\0\u0ec8\0\u02b0\0\u02b0\0\u02b0\0\u0f1e"+
128     "\0\u0f74\0\u0fca\0\u1020\0\u1076\0\u10cc\0\u1122\0\u1178\0\u11ce"+
129     "\0\u02b0\0\u1224\0\u127a\0\u12d0\0\u1326\0\u137c\0\u13d2\0\u02b0"+
130     "\0\u1428\0\u147e\0\u02b0\0\u02b0\0\u14d4\0\u14d4\0\u02b0\0\u152a"+
131     "\0\u152a\0\u1580\0\u15d6\0\u02b0\0\u02b0\0\u162c\0\u1682\0\u02b0"+
132     "\0\u16d8\0\u02b0\0\u02b0\0\u172e\0\u0560\0\u1784\0\u17da\0\u1830"+
133     "\0\u1886\0\u18dc\0\u1932\0\u1988\0\u19de\0\u1a34\0\u1a8a\0\u1ae0"+
134     "\0\u1b36\0\u1b8c\0\u0560\0\u1be2\0\u1c38\0\u1c8e\0\u1ce4\0\u1d3a"+
135     "\0\u1d90\0\u1de6\0\u1e3c\0\u1e92\0\u1ee8\0\u1f3e\0\u1f94\0\u1fea"+
136     "\0\u2040\0\u2096\0\u0560\0\u20ec\0\u2142\0\u2198\0\u21ee\0\u2244"+
137     "\0\u0866\0\u0d70\0\u229a\0\u22f0\0\u0e72\0\u2346\0\u239c\0\u23f2"+
138     "\0\u2448\0\u249e\0\u24f4\0\u254a\0\u25a0\0\u25f6\0\u264c\0\u26a2"+
139     "\0\u26f8\0\u274e\0\u27a4\0\u27fa\0\u2850\0\u1178\0\u28a6\0\u28fc"+
140     "\0\u2952\0\u29a8\0\u29fe\0\u2a54\0\u2aaa\0\u2b00\0\u2b56\0\u1428"+
141     "\0\u2bac\0\u02b0\0\u02b0\0\u147e\0\u152a\0\u2c02\0\u1682\0\u2c58"+
142     "\0\u2cae\0\u2d04\0\u2d5a\0\u2db0\0\u2e06\0\u2e5c\0\u2eb2\0\u2f08"+
143     "\0\u2f5e\0\u2fb4\0\u300a\0\u3060\0\u30b6\0\u310c\0\u3162\0\u31b8"+
144     "\0\u320e\0\u3264\0\u1f3e\0\u1f94\0\u32ba\0\u3310\0\u3366\0\u33bc"+
145     "\0\u3412\0\u3468\0\u34be\0\u3514\0\u356a\0\u35c0\0\u3616\0\u366c"+
146     "\0\u36c2\0\u3718\0\u376e\0\u37c4\0\u381a\0\u3870\0\u38c6\0\u391c"+
147     "\0\u3972\0\u39c8\0\u3a1e\0\u3a74\0\u3aca\0\u3b20\0\u3b76\0\u3bcc"+
148     "\0\u3c22\0\u3c78\0\u3cce\0\u3d24\0\u3d7a\0\u3dd0\0\u3e26\0\u3e7c"+
149     "\0\u3ed2\0\u1428\0\u3f28\0\u3f7e\0\u3fd4\0\u402a\0\u4080\0\u0560"+
150     "\0\u40d6\0\u412c\0\u4182\0\u41d8\0\u422e\0\u4284\0\u42da\0\u4330"+
151     "\0\u4386\0\u43dc\0\u4432\0\u02b0\0\u4488\0\u44de\0\u4534\0\u458a"+
152     "\0\u45e0\0\u4636\0\u468c\0\u46e2\0\u4738\0\u478e\0\u47e4\0\u02b0"+
153     "\0\u483a\0\u4890\0\u48e6\0\u493c\0\u4992\0\u49e8\0\u4a3e\0\u4a94"+
154     "\0\u4aea\0\u4b40\0\u4b96\0\u4bec\0\u4c42\0\u2c58\0\u4c98\0\u4cee"+
155     "\0\u4d44\0\u4d9a\0\u4df0\0\u4e46\0\u4e9c\0\u4ef2\0\u4f48\0\u4f9e"+
156     "\0\u4ff4\0\u504a\0\u50a0\0\u50f6\0\u514c\0\u51a2\0\u51f8\0\u524e"+
157     "\0\u52a4\0\u52fa\0\u5350\0\u53a6\0\u53fc\0\u5452\0\u54a8\0\u54fe"+
158     "\0\u5554\0\u55aa\0\u5600\0\u5656\0\u56ac\0\u5702\0\u0560\0\u5758"+
159     "\0\u57ae\0\u5804\0\u585a\0\u58b0\0\u5906\0\u595c\0\u59b2\0\u5a08"+
160     "\0\u5a5e\0\u5ab4\0\u5b0a\0\u5b60\0\u5bb6\0\u5c0c\0\u5c62\0\u5cb8"+
161     "\0\u5d0e\0\u5d64\0\u5dba\0\u5e10\0\u5e66\0\u5ebc\0\u5f12\0\u5f68"+
162     "\0\u5fbe\0\u6014\0\u606a\0\u60c0\0\u6116\0\u616c\0\u61c2\0\u6218"+
163     "\0\u626e\0\u62c4\0\u631a\0\u6370\0\u63c6\0\u641c\0\u6472\0\u64c8"+
164     "\0\u651e\0\u6574\0\u65ca\0\u6620\0\u6676\0\u66cc\0\u6722\0\u6778"+
165     "\0\u0560\0\u67ce\0\u6824\0\u687a\0\u68d0\0\u6926\0\u697c\0\u69d2"+
166     "\0\u6a28\0\u6a7e\0\u6ad4\0\u6b2a\0\u6b80\0\u6bd6\0\u6c2c\0\u02b0"+
167     "\0\u6c82\0\u641c\0\u6cd8\0\u6d2e\0\u6d84\0\u6dda\0\u6e30\0\u6e86"+
168     "\0\u6edc\0\u6f32\0\u6f88\0\u6fde\0\u7034\0\u708a\0\u70e0\0\u7136"+
169     "\0\u718c\0\u71e2\0\u7238\0\u728e\0\u72e4\0\u733a\0\u7390\0\u73e6"+
170     "\0\u743c\0\u7492\0\u74e8\0\u753e\0\u7594\0\u75ea\0\u7640\0\u7696"+
171     "\0\u76ec\0\u7742\0\u7798\0\u77ee\0\u7844\0\u789a\0\u78f0\0\u7946"+
172     "\0\u799c\0\u79f2\0\u7a48\0\u7a9e\0\u7af4\0\u7b4a\0\u7ba0\0\u7bf6"+
173     "\0\u7c4c\0\u7ca2\0\u7cf8\0\u7d4e\0\u7da4\0\u7dfa\0\u7e50\0\u7ea6"+
174     "\0\u7efc\0\u7f52\0\u7fa8\0\u7ffe\0\u8054\0\u80aa\0\u8100\0\u8156"+
175     "\0\u81ac\0\u8202\0\u8258\0\u82ae\0\u8304\0\u835a\0\u83b0\0\u8406"+
176     "\0\u845c\0\u84b2\0\u8508\0\u855e\0\u85b4\0\u860a\0\u8660\0\u86b6"+
177     "\0\u870c\0\u8762\0\u87b8\0\u880e\0\u8864\0\u88ba\0\u8910\0\u8966"+
178     "\0\u89bc\0\u8a12\0\u8a68\0\u8abe\0\u8b14\0\u8b6a\0\u8bc0\0\u8c16"+
179     "\0\u8c6c\0\u8cc2\0\u8d18\0\u8d6e\0\u8dc4\0\u8e1a\0\u8e70\0\u8ec6"+
180     "\0\u8f1c\0\u8f72\0\u8fc8\0\u901e\0\u9074\0\u90ca\0\u9120\0\u9176"+
181     "\0\u91cc\0\u9222\0\u9278\0\u92ce\0\u9324\0\u937a\0\u93d0\0\u9426"+
182     "\0\u947c\0\u94d2\0\u9528\0\u957e\0\u95d4\0\u962a\0\u9680\0\u96d6"+
183     "\0\u972c\0\u9782\0\u97d8\0\u982e\0\u9884\0\u98da\0\u9930\0\u9986"+
184     "\0\u99dc\0\u9a32\0\u9a88\0\u9ade\0\u9b34\0\u9b8a\0\u9be0\0\u9c36"+
185     "\0\u9c8c\0\u9ce2\0\u9d38\0\u9d8e\0\u9de4\0\u9e3a\0\u9e90\0\u9ee6"+
186     "\0\u9f3c\0\u9f92\0\u9fe8\0\ua03e\0\ua094\0\ua0ea\0\ua140\0\ua196"+
187     "\0\ua1ec\0\ua242\0\ua298\0\ua2ee\0\ua344\0\ua39a\0\ua3f0\0\ua446"+
188     "\0\ua49c\0\ua4f2\0\ua548\0\ua59e\0\ua5f4\0\ua64a\0\ua6a0\0\ua6f6"+
189     "\0\ua74c\0\ua7a2\0\ua7f8\0\ua84e\0\ua8a4\0\ua8fa\0\ua950\0\ua9a6"+
190     "\0\ua9fc\0\uaa52\0\uaaa8";
191
192   private static int [] zzUnpackRowMap() {
193     int [] result = new int[555];
194     int offset = 0;
195     offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
196     return result;
197   }
198
199   private static int zzUnpackRowMap(String packed, int offset, int [] result) {
200     int i = 0;  /* index in packed string  */
201     int j = offset;  /* index in unpacked array */
202     int l = packed.length();
203     while (i < l) {
204       int high = packed.charAt(i++) << 16;
205       result[j++] = high | packed.charAt(i++);
206     }
207     return j;
208   }
209
210   /** 
211    * The transition table of the DFA
212    */
213   private static final int [] ZZ_TRANS = zzUnpackTrans();
214
215   private static final String ZZ_TRANS_PACKED_0 =
216     "\2\11\2\12\1\13\1\14\1\15\1\16\1\17\1\20"+
217     "\1\21\1\22\1\23\1\24\1\25\1\26\1\27\2\24"+
218     "\1\30\1\31\1\32\2\24\1\33\7\24\1\34\2\35"+
219     "\1\36\1\37\2\40\1\41\1\40\1\42\1\43\1\40"+
220     "\1\24\1\44\1\45\1\46\1\24\1\47\1\50\2\24"+
221     "\1\51\1\24\1\52\2\24\1\53\16\24\1\54\1\55"+
222     "\1\56\1\0\1\24\1\57\1\24\1\60\1\0\2\24"+
223     "\1\0\1\11\1\61\1\62\5\61\2\63\27\61\1\64"+
224     "\31\61\1\65\16\61\1\66\2\61\1\0\11\61\25\67"+
225     "\1\70\1\71\1\72\3\67\1\73\1\74\1\75\1\76"+
226     "\10\67\1\77\10\67\1\100\11\67\1\101\1\67\1\102"+
227     "\3\67\1\103\1\104\1\105\2\67\1\106\1\107\2\67"+
228     "\1\110\1\111\1\67\1\0\4\67\1\0\2\67\1\0"+
229     "\7\67\1\112\16\67\1\70\1\71\1\72\3\67\1\73"+
230     "\1\74\1\75\1\76\10\67\1\77\10\67\1\100\11\67"+
231     "\1\101\1\67\1\102\3\67\1\103\1\104\1\105\2\67"+
232     "\1\106\1\107\2\67\1\110\1\111\1\67\1\0\4\67"+
233     "\1\0\2\67\1\0\1\67\1\113\1\114\7\113\27\115"+
234     "\14\113\16\115\1\113\16\115\1\113\1\116\1\113\1\0"+
235     "\1\115\1\113\1\115\1\113\1\0\2\115\1\0\2\113"+
236     "\1\114\1\113\1\117\66\113\1\120\16\113\1\121\2\113"+
237     "\1\0\4\113\1\0\2\113\1\0\1\113\5\122\1\123"+
238     "\64\122\1\124\16\122\1\125\6\122\1\113\4\122\1\113"+
239     "\5\62\1\126\32\62\1\127\31\62\1\124\16\62\1\125"+
240     "\2\62\1\0\4\62\1\0\2\62\1\0\1\62\133\0"+
241     "\1\130\1\131\31\0\1\132\4\0\1\133\66\0\1\132"+
242     "\36\0\1\133\172\0\1\134\25\0\4\135\1\136\1\137"+
243     "\1\140\1\141\2\135\14\24\14\0\16\24\1\0\16\24"+
244     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\26\24"+
245     "\14\0\4\24\1\142\1\143\10\24\1\0\16\24\1\0"+
246     "\1\24\2\0\3\24\2\0\2\24\14\0\21\24\1\144"+
247     "\4\24\14\0\16\24\1\0\16\24\1\0\1\24\2\0"+
248     "\3\24\2\0\2\24\14\0\26\24\14\0\1\145\1\24"+
249     "\1\146\13\24\1\0\16\24\1\0\1\24\2\0\3\24"+
250     "\2\0\2\24\14\0\26\24\14\0\16\24\1\0\16\24"+
251     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\7\24"+
252     "\1\147\16\24\14\0\7\24\1\150\5\24\1\151\1\0"+
253     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\14\0"+
254     "\12\24\1\152\13\24\14\0\16\24\1\0\16\24\1\0"+
255     "\1\24\2\0\3\24\2\0\2\24\14\0\2\24\1\153"+
256     "\23\24\14\0\16\24\1\0\16\24\1\0\1\24\2\0"+
257     "\3\24\2\0\2\24\14\0\4\24\1\154\21\24\14\0"+
258     "\6\24\1\155\7\24\1\0\16\24\1\0\1\24\2\0"+
259     "\3\24\2\0\2\24\14\0\26\24\14\0\11\24\1\156"+
260     "\4\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
261     "\2\24\14\0\14\24\1\157\11\24\14\0\16\24\1\0"+
262     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\14\0"+
263     "\13\24\1\160\12\24\14\0\16\24\1\0\16\24\1\0"+
264     "\1\24\2\0\3\24\2\0\2\24\7\0\1\161\1\162"+
265     "\1\132\30\0\1\163\1\161\1\132\2\0\1\133\50\0"+
266     "\1\164\54\0\1\133\65\0\2\133\31\0\1\165\2\133"+
267     "\2\0\1\133\65\0\2\133\31\0\1\165\2\133\2\0"+
268     "\1\133\2\0\1\133\122\0\1\132\125\0\1\132\2\0"+
269     "\1\132\126\0\1\166\126\0\1\167\65\0\12\24\1\170"+
270     "\13\24\14\0\2\24\1\171\13\24\1\0\16\24\1\0"+
271     "\1\24\2\0\3\24\2\0\2\24\14\0\1\172\25\24"+
272     "\14\0\16\24\1\0\16\24\1\0\1\24\2\0\3\24"+
273     "\2\0\2\24\14\0\26\24\14\0\2\24\1\173\13\24"+
274     "\1\0\16\24\1\0\1\24\2\0\3\24\2\0\2\24"+
275     "\14\0\4\24\1\174\21\24\14\0\16\24\1\0\16\24"+
276     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\26\24"+
277     "\14\0\4\24\1\175\11\24\1\0\16\24\1\0\1\24"+
278     "\2\0\3\24\2\0\2\24\14\0\26\24\14\0\5\24"+
279     "\1\176\10\24\1\0\16\24\1\0\1\24\2\0\3\24"+
280     "\2\0\2\24\14\0\26\24\14\0\1\151\15\24\1\0"+
281     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\74\0"+
282     "\1\177\16\0\1\200\5\0\1\201\100\0\1\200\16\0"+
283     "\1\202\26\0\4\203\1\204\15\203\1\204\1\203\1\204"+
284     "\1\203\1\164\13\0\3\203\1\204\12\203\1\0\16\203"+
285     "\1\0\1\203\2\0\1\203\1\57\1\203\2\0\2\203"+
286     "\2\0\1\61\1\0\5\61\2\205\27\61\1\0\31\61"+
287     "\1\0\16\61\1\0\2\61\1\0\11\61\7\0\2\61"+
288     "\155\0\1\206\103\0\1\207\1\0\1\210\43\0\1\211"+
289     "\57\0\1\212\5\0\1\213\36\0\1\214\63\0\1\215"+
290     "\51\0\1\216\52\0\1\217\3\0\1\220\174\0\1\221"+
291     "\52\0\1\222\125\0\1\223\6\0\1\224\110\0\27\225"+
292     "\3\0\1\225\7\0\16\225\1\226\16\225\1\226\4\0"+
293     "\1\225\3\0\2\225\14\0\1\227\173\0\1\230\71\0"+
294     "\1\231\122\0\1\232\41\0\1\233\60\0\1\234\42\0"+
295     "\1\235\62\0\1\236\127\0\1\237\105\0\41\240\1\241"+
296     "\50\240\1\242\13\240\5\0\1\243\1\244\131\0\26\115"+
297     "\14\0\16\115\1\0\16\115\1\0\1\115\2\0\3\115"+
298     "\2\0\2\115\5\0\1\117\66\0\1\245\16\0\1\245"+
299     "\14\0\5\122\1\0\64\122\1\0\16\122\1\0\6\122"+
300     "\1\0\4\122\1\0\5\246\1\130\64\246\1\0\33\246"+
301     "\5\0\1\130\160\0\1\247\73\0\1\131\117\0\7\134"+
302     "\2\250\30\134\1\251\50\134\1\252\13\134\12\0\5\24"+
303     "\1\253\20\24\14\0\16\24\1\0\16\24\1\0\1\24"+
304     "\2\0\3\24\2\0\2\24\14\0\6\24\1\135\17\24"+
305     "\14\0\16\24\1\0\16\24\1\0\1\24\2\0\3\24"+
306     "\2\0\2\24\14\0\7\24\1\254\16\24\14\0\16\24"+
307     "\1\0\16\24\1\0\1\24\2\0\3\24\2\0\2\24"+
308     "\14\0\12\24\1\255\13\24\14\0\16\24\1\0\16\24"+
309     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\4\24"+
310     "\1\256\21\24\14\0\16\24\1\0\16\24\1\0\1\24"+
311     "\2\0\3\24\2\0\2\24\14\0\26\24\14\0\10\24"+
312     "\1\153\5\24\1\0\16\24\1\0\1\24\2\0\3\24"+
313     "\2\0\2\24\14\0\23\24\1\257\2\24\14\0\16\24"+
314     "\1\0\16\24\1\0\1\24\2\0\3\24\2\0\2\24"+
315     "\14\0\7\24\1\260\16\24\14\0\16\24\1\0\16\24"+
316     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\26\24"+
317     "\14\0\5\24\1\153\10\24\1\0\16\24\1\0\1\24"+
318     "\2\0\3\24\2\0\2\24\14\0\26\24\14\0\3\24"+
319     "\1\261\12\24\1\0\16\24\1\0\1\24\2\0\3\24"+
320     "\2\0\2\24\14\0\11\24\1\262\14\24\14\0\16\24"+
321     "\1\0\16\24\1\0\1\24\2\0\3\24\2\0\2\24"+
322     "\14\0\6\24\1\263\17\24\14\0\16\24\1\0\16\24"+
323     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\26\24"+
324     "\14\0\1\264\15\24\1\0\16\24\1\0\1\24\2\0"+
325     "\3\24\2\0\2\24\14\0\26\24\14\0\7\24\1\265"+
326     "\6\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
327     "\2\24\14\0\6\24\1\266\17\24\14\0\16\24\1\0"+
328     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\14\0"+
329     "\26\24\14\0\2\24\1\267\13\24\1\0\16\24\1\0"+
330     "\1\24\2\0\3\24\2\0\2\24\14\0\15\24\1\270"+
331     "\10\24\14\0\16\24\1\0\16\24\1\0\1\24\2\0"+
332     "\3\24\2\0\2\24\14\0\14\24\1\271\11\24\14\0"+
333     "\16\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
334     "\2\24\42\0\1\132\73\0\1\132\31\0\1\132\125\0"+
335     "\1\163\103\0\1\272\15\0\1\272\1\0\1\272\20\0"+
336     "\1\272\36\0\1\164\14\0\2\133\32\0\4\133\132\0"+
337     "\1\273\126\0\1\274\65\0\1\275\10\24\1\276\14\24"+
338     "\14\0\16\24\1\0\16\24\1\0\1\24\2\0\3\24"+
339     "\2\0\2\24\14\0\7\24\1\277\16\24\14\0\16\24"+
340     "\1\0\16\24\1\0\1\24\2\0\3\24\2\0\2\24"+
341     "\14\0\26\24\14\0\4\24\1\300\11\24\1\0\16\24"+
342     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\1\301"+
343     "\10\24\1\302\14\24\14\0\16\24\1\0\16\24\1\0"+
344     "\1\24\2\0\3\24\2\0\2\24\14\0\6\24\1\303"+
345     "\17\24\14\0\16\24\1\0\16\24\1\0\1\24\2\0"+
346     "\3\24\2\0\2\24\14\0\4\24\1\304\21\24\14\0"+
347     "\16\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
348     "\2\24\74\0\1\177\16\0\1\200\106\0\1\200\16\0"+
349     "\1\200\26\0\26\203\14\0\16\203\1\0\16\203\1\0"+
350     "\1\203\2\0\3\203\2\0\2\203\14\0\26\203\3\0"+
351     "\2\305\7\0\16\203\1\0\16\203\1\0\1\203\2\0"+
352     "\1\203\1\306\1\203\2\0\2\203\7\0\1\307\32\0"+
353     "\1\206\31\0\1\310\16\0\1\310\75\0\1\311\134\0"+
354     "\1\312\120\0\1\313\121\0\1\314\131\0\1\315\60\0"+
355     "\1\316\5\0\1\317\162\0\1\320\103\0\1\321\143\0"+
356     "\1\322\71\0\1\323\141\0\1\324\106\0\1\325\212\0"+
357     "\1\326\126\0\1\327\33\0\27\225\3\0\1\225\6\0"+
358     "\1\330\16\225\1\0\16\225\5\0\1\225\3\0\2\225"+
359     "\14\0\1\331\171\0\1\332\70\0\1\333\116\0\1\334"+
360     "\176\0\1\335\123\0\1\336\120\0\1\337\132\0\1\340"+
361     "\65\0\1\341\104\0\41\240\1\241\50\240\1\342\13\240"+
362     "\5\246\1\0\64\246\1\0\33\246\7\0\2\134\115\0"+
363     "\7\134\2\250\30\134\1\251\50\134\1\343\13\134\7\0"+
364     "\2\242\127\0\11\24\1\135\14\24\14\0\16\24\1\0"+
365     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\14\0"+
366     "\2\24\1\135\23\24\14\0\16\24\1\0\16\24\1\0"+
367     "\1\24\2\0\3\24\2\0\2\24\14\0\7\24\1\135"+
368     "\16\24\14\0\16\24\1\0\16\24\1\0\1\24\2\0"+
369     "\3\24\2\0\2\24\14\0\7\24\1\173\16\24\14\0"+
370     "\16\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
371     "\2\24\14\0\24\24\1\344\1\24\14\0\16\24\1\0"+
372     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\14\0"+
373     "\26\24\14\0\1\24\1\345\14\24\1\0\16\24\1\0"+
374     "\1\24\2\0\3\24\2\0\2\24\14\0\2\24\1\346"+
375     "\23\24\14\0\16\24\1\0\16\24\1\0\1\24\2\0"+
376     "\3\24\2\0\2\24\14\0\4\24\1\347\21\24\14\0"+
377     "\16\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
378     "\2\24\14\0\1\350\25\24\14\0\16\24\1\0\16\24"+
379     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\11\24"+
380     "\1\351\14\24\14\0\16\24\1\0\16\24\1\0\1\24"+
381     "\2\0\3\24\2\0\2\24\14\0\4\24\1\352\21\24"+
382     "\14\0\16\24\1\0\16\24\1\0\1\24\2\0\3\24"+
383     "\2\0\2\24\14\0\1\353\25\24\14\0\16\24\1\0"+
384     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\14\0"+
385     "\26\24\14\0\5\24\1\263\10\24\1\0\16\24\1\0"+
386     "\1\24\2\0\3\24\2\0\2\24\14\0\17\24\1\354"+
387     "\6\24\14\0\16\24\1\0\16\24\1\0\1\24\2\0"+
388     "\3\24\2\0\2\24\14\0\15\24\1\135\10\24\14\0"+
389     "\16\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
390     "\2\24\45\0\2\305\51\0\1\305\21\0\26\24\14\0"+
391     "\1\24\1\355\14\24\1\0\16\24\1\0\1\24\2\0"+
392     "\3\24\2\0\2\24\14\0\4\24\1\173\21\24\14\0"+
393     "\16\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
394     "\2\24\14\0\1\356\25\24\14\0\16\24\1\0\16\24"+
395     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\4\24"+
396     "\1\357\21\24\14\0\16\24\1\0\16\24\1\0\1\24"+
397     "\2\0\3\24\2\0\2\24\14\0\26\24\14\0\1\360"+
398     "\15\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
399     "\2\24\14\0\26\24\14\0\1\361\15\24\1\0\16\24"+
400     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\26\24"+
401     "\14\0\7\24\1\362\6\24\1\0\16\24\1\0\1\24"+
402     "\2\0\3\24\2\0\2\24\14\0\12\24\1\363\13\24"+
403     "\14\0\16\24\1\0\16\24\1\0\1\24\2\0\3\24"+
404     "\2\0\2\24\120\0\1\305\21\0\26\203\14\0\16\203"+
405     "\1\0\16\203\1\0\1\203\2\0\1\203\1\306\1\203"+
406     "\2\0\2\203\7\0\1\364\125\0\1\307\64\0\1\310"+
407     "\16\0\1\310\117\0\1\365\100\0\1\366\144\0\1\367"+
408     "\111\0\1\370\64\0\1\371\175\0\1\372\111\0\1\373"+
409     "\71\0\1\374\134\0\1\375\156\0\1\376\121\0\1\377"+
410     "\77\0\1\u0100\160\0\1\u0101\64\0\1\u0102\134\0\1\u0103"+
411     "\110\0\26\u0104\4\0\1\u0104\7\0\16\u0104\1\0\16\u0104"+
412     "\5\0\1\u0104\4\0\1\u0104\21\0\1\u0105\162\0\1\u0106"+
413     "\72\0\1\u0107\162\0\1\u0108\73\0\1\u0109\122\0\1\u010a"+
414     "\125\0\1\u010b\162\0\1\u010c\124\0\1\u010d\50\0\7\134"+
415     "\2\u010e\30\134\1\251\50\134\1\252\13\134\12\0\15\24"+
416     "\1\u010f\10\24\14\0\16\24\1\0\16\24\1\0\1\24"+
417     "\2\0\3\24\2\0\2\24\14\0\1\u0110\25\24\14\0"+
418     "\16\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
419     "\2\24\14\0\26\24\14\0\1\145\15\24\1\0\16\24"+
420     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\6\24"+
421     "\1\u0111\17\24\14\0\16\24\1\0\16\24\1\0\1\24"+
422     "\2\0\3\24\2\0\2\24\14\0\4\24\1\350\21\24"+
423     "\14\0\16\24\1\0\16\24\1\0\1\24\2\0\3\24"+
424     "\2\0\2\24\14\0\26\24\14\0\1\24\1\u0112\14\24"+
425     "\1\0\16\24\1\0\1\24\2\0\3\24\2\0\2\24"+
426     "\14\0\26\24\14\0\1\24\1\u0113\14\24\1\0\16\24"+
427     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\20\24"+
428     "\1\u0114\5\24\14\0\16\24\1\0\16\24\1\0\1\24"+
429     "\2\0\3\24\2\0\2\24\14\0\26\24\14\0\4\24"+
430     "\1\173\11\24\1\0\16\24\1\0\1\24\2\0\3\24"+
431     "\2\0\2\24\14\0\6\24\1\u0115\17\24\14\0\16\24"+
432     "\1\0\16\24\1\0\1\24\2\0\3\24\2\0\2\24"+
433     "\14\0\26\24\14\0\5\24\1\u0116\10\24\1\0\16\24"+
434     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\26\24"+
435     "\14\0\5\24\1\u0117\10\24\1\0\16\24\1\0\1\24"+
436     "\2\0\3\24\2\0\2\24\14\0\26\24\14\0\14\24"+
437     "\1\351\1\24\1\0\16\24\1\0\1\24\2\0\3\24"+
438     "\2\0\2\24\14\0\4\24\1\153\21\24\14\0\16\24"+
439     "\1\0\16\24\1\0\1\24\2\0\3\24\2\0\2\24"+
440     "\14\0\26\24\14\0\12\24\1\350\3\24\1\0\16\24"+
441     "\1\0\1\24\2\0\3\24\2\0\2\24\20\0\1\u0118"+
442     "\130\0\1\u0119\122\0\1\u011a\127\0\1\u011b\176\0\1\u011c"+
443     "\52\0\1\u011d\166\0\1\u011e\72\0\1\u0100\202\0\1\u0100"+
444     "\50\0\1\u011f\117\0\1\u0120\170\0\1\u0121\56\0\1\u0122"+
445     "\126\0\1\u0123\124\0\26\u0104\1\u0124\3\0\1\u0104\7\0"+
446     "\16\u0104\1\0\16\u0104\5\0\1\u0104\4\0\1\u0104\115\0"+
447     "\1\u0125\73\0\1\u0126\136\0\1\u0127\53\0\1\u0128\126\0"+
448     "\1\u0129\130\0\1\u012a\157\0\1\u012b\137\0\1\u012c\53\0"+
449     "\1\u012d\121\0\25\24\1\135\14\0\16\24\1\0\16\24"+
450     "\1\0\1\24\2\0\3\24\2\0\2\24\14\0\6\24"+
451     "\1\u012e\17\24\14\0\16\24\1\0\16\24\1\0\1\24"+
452     "\2\0\3\24\2\0\2\24\14\0\2\24\1\u012f\23\24"+
453     "\14\0\16\24\1\0\16\24\1\0\1\24\2\0\3\24"+
454     "\2\0\2\24\14\0\1\153\25\24\14\0\16\24\1\0"+
455     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\14\0"+
456     "\26\24\14\0\4\24\1\153\11\24\1\0\16\24\1\0"+
457     "\1\24\2\0\3\24\2\0\2\24\14\0\21\24\1\u0130"+
458     "\4\24\14\0\16\24\1\0\16\24\1\0\1\24\2\0"+
459     "\3\24\2\0\2\24\14\0\7\24\1\u0131\16\24\14\0"+
460     "\16\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
461     "\2\24\14\0\26\24\14\0\6\24\1\u0132\7\24\1\0"+
462     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\14\0"+
463     "\7\24\1\350\16\24\14\0\16\24\1\0\16\24\1\0"+
464     "\1\24\2\0\3\24\2\0\2\24\74\0\1\u0133\125\0"+
465     "\1\u0134\56\0\1\u0135\157\0\1\u0136\62\0\1\u0137\134\0"+
466     "\1\u0138\122\0\1\u0139\125\0\1\u013a\172\0\1\u013b\60\0"+
467     "\1\u013c\125\0\1\u013d\143\0\1\u013e\103\0\26\u013f\4\0"+
468     "\1\u0104\7\0\16\u013f\1\0\16\u013f\5\0\1\u0104\4\0"+
469     "\1\u013f\7\0\1\u0140\212\0\1\u0141\61\0\1\u0142\120\0"+
470     "\1\u0143\176\0\1\u0144\114\0\1\u0145\136\0\1\u0146\51\0"+
471     "\1\u0147\130\0\1\u0148\116\0\26\24\14\0\2\24\1\u0149"+
472     "\13\24\1\0\16\24\1\0\1\24\2\0\3\24\2\0"+
473     "\2\24\14\0\22\24\1\135\3\24\14\0\16\24\1\0"+
474     "\16\24\1\0\1\24\2\0\3\24\2\0\2\24\14\0"+
475     "\26\24\14\0\1\351\15\24\1\0\16\24\1\0\1\24"+
476     "\2\0\3\24\2\0\2\24\14\0\6\24\1\u014a\17\24"+
477     "\14\0\16\24\1\0\16\24\1\0\1\24\2\0\3\24"+
478     "\2\0\2\24\27\0\1\u014b\204\0\1\u014c\33\0\1\u014d"+
479     "\205\0\1\u014e\51\0\1\u014f\121\0\1\u0150\205\0\1\u0151"+
480     "\116\0\1\u0152\134\0\1\u0153\125\0\1\u0154\111\0\1\u0100"+
481     "\101\0\1\u0100\105\0\26\u0155\1\u0124\3\0\1\u0104\7\0"+
482     "\16\u0155\1\0\16\u0155\5\0\1\u0104\4\0\1\u0155\7\0"+
483     "\1\u0156\153\0\1\u0157\124\0\1\u0158\23\0\1\u0159\65\0"+
484     "\1\u015a\134\0\1\u015b\1\u015c\156\0\1\u015d\153\0\1\u015e"+
485     "\112\0\1\u015f\45\0\1\u0160\125\0\7\24\1\u0161\16\24"+
486     "\14\0\16\24\1\0\16\24\1\0\1\24\2\0\3\24"+
487     "\2\0\2\24\14\0\11\24\1\276\14\24\14\0\16\24"+
488     "\1\0\16\24\1\0\1\24\2\0\3\24\2\0\2\24"+
489     "\14\0\1\u0162\1\u0163\136\0\1\u0164\54\0\1\u0165\105\0"+
490     "\1\u0166\102\0\1\u0167\161\0\1\u0168\125\0\1\u0169\137\0"+
491     "\1\u016a\113\0\1\u016b\140\0\1\u016c\53\0\1\u016d\42\0"+
492     "\1\u016e\41\0\26\u016f\1\u0124\3\0\1\u0104\3\0\1\u0170"+
493     "\3\0\16\u016f\1\u0171\16\u016f\1\u0171\4\0\1\u0104\4\0"+
494     "\1\u016f\2\0\1\u0172\1\0\5\u0172\2\0\61\u0172\1\0"+
495     "\16\u0172\1\0\2\u0172\1\0\4\u0172\1\0\4\u0172\24\0"+
496     "\1\u0173\54\0\1\u0174\122\0\1\u0175\112\0\1\u0176\134\0"+
497     "\1\u0177\53\0\1\u0178\6\0\1\u0179\130\0\1\u017a\23\0"+
498     "\1\u017b\141\0\1\u017c\65\0\1\u017d\23\0\1\u017e\104\0"+
499     "\1\u017f\162\0\1\u0180\51\0\1\u0181\143\0\1\u0182\152\0"+
500     "\1\u0183\103\0\1\u0184\104\0\1\u0185\125\0\1\u0186\15\0"+
501     "\1\u0187\127\0\1\u0188\125\0\1\u0189\121\0\1\u018a\23\0"+
502     "\1\u018b\151\0\1\u018c\77\0\1\u018d\22\0\1\u018e\52\0"+
503     "\1\u018f\54\0\1\u0190\50\0\1\u0191\54\0\1\u0192\36\0"+
504     "\26\u0193\1\u0124\3\0\1\u0104\3\0\1\u0170\3\0\16\u0193"+
505     "\1\u0171\16\u0193\1\u0171\4\0\1\u0104\4\0\1\u0193\52\0"+
506     "\1\u0170\21\0\1\u0171\16\0\1\u0171\73\0\1\u0194\104\0"+
507     "\1\u0195\165\0\1\u0196\112\0\1\u0197\76\0\1\u0198\161\0"+
508     "\1\u0199\70\0\1\u019a\131\0\1\u019b\147\0\1\u019c\75\0"+
509     "\1\u019d\111\0\1\u019e\124\0\1\u019f\131\0\1\u01a0\6\0"+
510     "\1\u01a1\124\0\1\u01a2\47\0\1\u01a3\45\0\1\u01a4\143\0"+
511     "\1\u01a5\107\0\1\u01a6\143\0\1\u01a7\163\0\1\u01a8\116\0"+
512     "\1\u01a9\140\0\1\u01aa\45\0\1\u01ab\15\0\1\u01ac\115\0"+
513     "\1\u01ad\54\0\1\u01ae\57\0\1\u01af\162\0\1\u01b0\61\0"+
514     "\1\u01b1\54\0\1\u01b2\107\0\1\u01b3\140\0\1\u01b4\110\0"+
515     "\1\u01b5\103\0\1\u01b6\107\0\1\u01b7\177\0\1\u01b8\44\0"+
516     "\26\u01b9\1\u0124\3\0\1\u0104\3\0\1\u0170\3\0\16\u01b9"+
517     "\1\u0171\16\u01b9\1\u0171\4\0\1\u0104\4\0\1\u01b9\22\0"+
518     "\1\u01ba\134\0\1\u01bb\132\0\1\u01bc\107\0\1\u01bd\172\0"+
519     "\1\u01be\12\0\1\u01bf\105\0\1\u01c0\101\0\1\u01c1\166\0"+
520     "\1\u01c2\53\0\1\u01c3\160\0\1\u01c4\22\0\1\u01c5\65\0"+
521     "\1\u01c2\147\0\1\u01c3\121\0\1\u01c6\76\0\1\u01c7\131\0"+
522     "\1\u01c8\23\0\1\u01c9\65\0\1\u01ca\1\0\1\u01c6\6\0"+
523     "\1\u01c7\4\0\1\u01cb\152\0\1\u0100\103\0\1\u0100\111\0"+
524     "\1\u01cc\127\0\1\u01cd\176\0\1\u01ce\11\0\1\u01cf\41\0"+
525     "\1\u01d0\202\0\1\u01d1\45\0\1\u01d2\177\0\1\u01d3\127\0"+
526     "\1\u01d4\136\0\1\u01d5\53\0\1\u01d6\107\0\1\u01d7\163\0"+
527     "\1\u01d8\150\0\1\u01d9\46\0\1\u01da\134\0\1\u01db\114\0"+
528     "\1\u01dc\143\0\1\u01dd\150\0\1\u013d\104\0\1\u013e\101\0"+
529     "\26\u0104\1\u0124\3\0\1\u0104\3\0\1\u0170\3\0\16\u0104"+
530     "\1\u0171\16\u0104\1\u0171\4\0\1\u0104\4\0\1\u0104\23\0"+
531     "\1\u01de\177\0\1\u01df\45\0\1\u01cd\124\0\1\u01cc\133\0"+
532     "\1\u01e0\134\0\1\u01e1\117\0\1\u0100\177\0\1\u0100\66\0"+
533     "\1\u01e2\107\0\1\u01e3\212\0\1\u01e4\126\0\1\u01e5\45\0"+
534     "\1\u01e6\202\0\1\u01e7\123\0\1\u01e8\102\0\1\u01e9\160\0"+
535     "\1\u01ea\123\0\1\u01eb\32\0\1\u01ec\126\0\1\u01ed\130\0"+
536     "\1\u01ee\15\0\1\u01ef\123\0\1\u01f0\23\0\1\u01f1\137\0"+
537     "\1\u01f2\70\0\1\u01f3\112\0\1\u01f4\134\0\1\u01f5\116\0"+
538     "\1\u01f6\134\0\1\u01f7\172\0\1\u0100\53\0\1\u0100\162\0"+
539     "\1\u01f8\104\0\1\u01f9\113\0\1\u01fa\202\0\1\u01fb\101\0"+
540     "\1\u01fc\76\0\1\u01fd\117\0\1\u01fe\134\0\1\u01ff\122\0"+
541     "\1\u0200\202\0\1\u0201\37\0\1\u0100\124\0\1\u0100\167\0"+
542     "\1\u0202\150\0\1\u0203\107\0\1\u01f6\103\0\1\u01f7\174\0"+
543     "\1\u0204\114\0\1\u0205\46\0\1\u0206\143\0\1\u0207\107\0"+
544     "\1\u0100\143\0\1\u0100\150\0\1\u0208\104\0\1\u0209\166\0"+
545     "\1\u020a\102\0\1\u020b\75\0\1\u020c\202\0\1\u020d\46\0"+
546     "\1\u01c3\177\0\1\u01c2\110\0\1\u0100\104\0\1\u0100\107\0"+
547     "\1\u01c0\134\0\1\u01c1\153\0\1\u020e\76\0\1\u020f\157\0"+
548     "\1\u0210\76\0\1\u0211\140\0\1\u0212\125\0\1\u0213\104\0"+
549     "\1\u0100\127\0\1\u0100\116\0\1\u0214\143\0\1\u0215\125\0"+
550     "\1\u0216\107\0\1\u0217\163\0\1\u0218\150\0\1\u0219\107\0"+
551     "\1\u021a\103\0\1\u021b\121\0\1\u021c\162\0\1\u021d\116\0"+
552     "\1\u021e\103\0\1\u021f\146\0\1\u0200\76\0\1\u0201\120\0"+
553     "\1\u0220\202\0\1\u0221\120\0\1\u0222\125\0\1\u0223\52\0"+
554     "\1\u0224\177\0\1\u0225\71\0\1\u01e2\147\0\1\u01e3\65\0"+
555     "\1\u01ec\177\0\1\u01ed\106\0\1\u0100\150\0\1\u0100\127\0"+
556     "\1\u01a5\50\0\1\u01a4\162\0\1\u01ec\103\0\1\u01ed\151\0"+
557     "\1\u0100\140\0\1\u0100\105\0\1\u0226\101\0\1\u0227\111\0"+
558     "\1\u0228\143\0\1\u0229\145\0\1\u022a\150\0\1\u022b\112\0"+
559     "\1\u0100\141\0\1\u0100\45\0\1\u0218\134\0\1\u0219\76\0";
560
561   private static int [] zzUnpackTrans() {
562     int [] result = new int[43774];
563     int offset = 0;
564     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
565     return result;
566   }
567
568   private static int zzUnpackTrans(String packed, int offset, int [] result) {
569     int i = 0;       /* index in packed string  */
570     int j = offset;  /* index in unpacked array */
571     int l = packed.length();
572     while (i < l) {
573       int count = packed.charAt(i++);
574       int value = packed.charAt(i++);
575       value--;
576       do result[j++] = value; while (--count > 0);
577     }
578     return j;
579   }
580
581
582   /* error codes */
583   private static final int ZZ_UNKNOWN_ERROR = 0;
584   private static final int ZZ_NO_MATCH = 1;
585   private static final int ZZ_PUSHBACK_2BIG = 2;
586
587   /* error messages for the codes above */
588   private static final String ZZ_ERROR_MSG[] = {
589     "Unknown internal scanner error",
590     "Error: could not match input",
591     "Error: pushback value was too large"
592   };
593
594   /**
595    * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
596    */
597   private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
598
599   private static final String ZZ_ATTRIBUTE_PACKED_0 =
600     "\1\0\1\1\4\0\1\1\1\0\3\11\46\1\1\11"+
601     "\2\1\3\11\11\1\1\11\6\1\1\11\2\1\2\11"+
602     "\2\1\1\11\4\1\2\11\2\1\1\11\1\1\2\11"+
603     "\1\0\30\1\1\0\11\1\1\0\1\1\2\0\2\1"+
604     "\1\0\1\1\33\0\2\11\2\0\2\1\3\0\34\1"+
605     "\1\0\1\1\31\0\1\1\1\0\20\1\1\11\13\0"+
606     "\1\11\15\0\12\1\26\0\5\1\26\0\2\1\26\0"+
607     "\1\1\16\0\1\11\1\0\1\1\271\0";
608
609   private static int [] zzUnpackAttribute() {
610     int [] result = new int[555];
611     int offset = 0;
612     offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
613     return result;
614   }
615
616   private static int zzUnpackAttribute(String packed, int offset, int [] result) {
617     int i = 0;       /* index in packed string  */
618     int j = offset;  /* index in unpacked array */
619     int l = packed.length();
620     while (i < l) {
621       int count = packed.charAt(i++);
622       int value = packed.charAt(i++);
623       do result[j++] = value; while (--count > 0);
624     }
625     return j;
626   }
627
628   /** the input device */
629   private java.io.Reader zzReader;
630
631   /** the current state of the DFA */
632   private int zzState;
633
634   /** the current lexical state */
635   private int zzLexicalState = YYINITIAL;
636
637   /** this buffer contains the current text to be matched and is
638       the source of the yytext() string */
639   private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
640
641   /** the textposition at the last accepting state */
642   private int zzMarkedPos;
643
644   /** the current text position in the buffer */
645   private int zzCurrentPos;
646
647   /** startRead marks the beginning of the yytext() string in the buffer */
648   private int zzStartRead;
649
650   /** endRead marks the last character in the buffer, that has been read
651       from input */
652   private int zzEndRead;
653
654   /** number of newlines encountered up to the start of the matched text */
655   private int yyline;
656
657   /** the number of characters up to the start of the matched text */
658   private int yychar;
659
660   /**
661    * the number of characters from the last newline up to the start of the 
662    * matched text
663    */
664   private int yycolumn;
665
666   /** 
667    * zzAtBOL == true <=> the scanner is currently at the beginning of a line
668    */
669   private boolean zzAtBOL = true;
670
671   /** zzAtEOF == true <=> the scanner is at the EOF */
672   private boolean zzAtEOF;
673
674   /** denotes if the user-EOF-code has already been executed */
675   private boolean zzEOFDone;
676   
677   /** 
678    * The number of occupied positions in zzBuffer beyond zzEndRead.
679    * When a lead/high surrogate has been read from the input stream
680    * into the final zzBuffer position, this will have a value of 1;
681    * otherwise, it will have a value of 0.
682    */
683   private int zzFinalHighSurrogate = 0;
684
685   /* user code: */
686     public int start;
687     public int end;
688     public int beginString;
689     public static Set<String> commands = new HashSet<String>();
690     public static Set<String> macros = new HashSet<String>();
691     public static Set<String> variables = new HashSet<String>();
692     public Set<String> infile;
693
694     private ScilabDocument doc;
695     private boolean transposable;
696     private Element elem;
697     private boolean breakstring;
698     private boolean breakcomment;
699     private MatchingBlockScanner matchBlock;
700
701     static {
702         // For SciNotes colors in preferences
703         commands.add("cos");
704         macros.add("cosh");
705     }
706
707     public ScilabLexer(ScilabDocument doc) {
708         this(doc, new MatchingBlockScanner(doc), true);
709     }
710
711     public ScilabLexer(ScilabDocument doc, boolean update) {
712         this(doc, new MatchingBlockScanner(doc), update);
713     }
714
715     public ScilabLexer(ScilabDocument doc, MatchingBlockScanner matchBlock, boolean update) {
716         this.doc = doc;
717         this.elem = doc.getDefaultRootElement();
718         this.infile = doc.getFunctionsInDoc();
719         this.matchBlock = matchBlock;
720         if (update) {
721                 update();
722         }
723     }
724
725     public static void update() {
726        if (ScilabCommonsUtils.isScilabThread()) {
727            String[] vars = ScilabKeywords.GetVariablesName();
728            String[] funs = ScilabKeywords.GetFunctionsName();
729            String[] macs = ScilabKeywords.GetMacrosName();
730            variables.clear();
731            commands.clear();
732            macros.clear();
733            if (vars != null) {
734                variables.addAll(Arrays.asList(vars));
735            }
736            if (funs != null) {
737                commands.addAll(Arrays.asList(funs));
738            }
739            if (macs != null) {
740                macros.addAll(Arrays.asList(macs));
741            }
742         }
743     }
744
745     public void setRange(int p0, int p1) {
746         start = p0;
747         end = p1;
748         transposable = false;
749         breakstring = false;
750         yyreset(new ScilabDocumentReader(doc, p0, p1));
751         int currentLine = elem.getElementIndex(start);
752         if (currentLine != 0) {
753            ScilabDocument.ScilabLeafElement e = (ScilabDocument.ScilabLeafElement) elem.getElement(currentLine - 1);
754            if (e.isBrokenString()) {
755               yybegin(QSTRING);
756            } else if (e.isBlockComment()) {
757               yybegin(BLOCKCOMMENT);
758            }
759         }
760     }
761
762     public int yychar() {
763         return yychar;
764     }
765
766     public int scan() throws IOException {
767         int ret = yylex();
768         int lastPos = start + yychar + yylength();
769         if (lastPos == end - 1) {
770            ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBrokenString(breakstring);
771            breakstring = false;
772         } else if (lastPos == end) {
773            ((ScilabDocument.ScilabLeafElement) elem.getElement(elem.getElementIndex(start))).setBlockComment(yystate() == BLOCKCOMMENT);
774         }
775         return ret;
776     }
777
778     public boolean isLineFinishedByBlockComment(int start, int end) {
779         this.start = start;
780         this.end = end;
781         try {           
782            yyreset(new ScilabDocumentReader(doc, start, end));
783            int tok = 0;
784            while (tok != ScilabLexerConstants.EOF) {
785               tok = yylex();
786            }
787         } catch (Exception e) { }
788         
789         return yystate() == BLOCKCOMMENT;
790     }
791
792     public int getKeyword(int pos, boolean strict) {
793         // Pre condition
794         if (elem == null) {
795             return ScilabLexerConstants.DEFAULT;
796         }
797
798         Element line = elem.getElement(elem.getElementIndex(pos));
799         int end = line.getEndOffset();
800         int tok = -1;
801         start = line.getStartOffset();
802         int startL = start;
803         int s = -1;
804
805         try {
806            yyreset(new ScilabDocumentReader(doc, start, end));
807            if (!strict) {
808               pos++;
809            }
810
811            while (startL < pos && (s != startL || yystate() == BREAKSTRING)) {
812                s = startL;
813                tok = yylex();
814                startL = start + yychar + yylength();
815            }
816
817            return tok;
818         } catch (IOException e) {
819            return ScilabLexerConstants.DEFAULT;
820         }
821      }
822
823      public static ScilabTokens getScilabTokens(String str) {
824          ScilabDocument doc = new ScilabDocument(false);
825          try {
826              doc.insertString(0, str, null);
827          } catch (BadLocationException e) { }
828          return getScilabTokens(doc);
829      }
830
831      public static ScilabTokens getScilabTokens(ScilabDocument doc) {
832          ScilabLexer lexer = new ScilabLexer(doc);
833          lexer.yyreset(new ScilabDocumentReader(doc, 0, doc.getLength()));
834          ScilabTokens tokens = new ScilabTokens();
835          int tok = -1;
836          try {
837             while (tok != ScilabLexerConstants.EOF) {
838                tok = lexer.yylex();
839                tokens.add(tok, lexer.yychar + lexer.yylength());
840             }
841          } catch (IOException e) { }
842  
843          return tokens;
844      }
845
846      public static class ScilabTokens {
847         private List<Integer> tokenType = new ArrayList<Integer>();
848         private List<Integer> tokenPos = new ArrayList<Integer>();
849
850         ScilabTokens() { }
851
852         void add(final int type, final int pos) {
853            tokenType.add(type);
854            tokenPos.add(pos);
855         }
856
857         public final List<Integer> getTokenType() {
858            return tokenType;
859         }
860
861         public final List<Integer> getTokenPos() {
862            return tokenPos;
863         }
864      }
865
866
867   /**
868    * Creates a new scanner
869    *
870    * @param   in  the java.io.Reader to read input from.
871    */
872   public ScilabLexer(java.io.Reader in) {
873     this.zzReader = in;
874   }
875
876
877   /** 
878    * Unpacks the compressed character translation table.
879    *
880    * @param packed   the packed character translation table
881    * @return         the unpacked character translation table
882    */
883   private static char [] zzUnpackCMap(String packed) {
884     char [] map = new char[0x110000];
885     int i = 0;  /* index in packed string  */
886     int j = 0;  /* index in unpacked array */
887     while (i < 230) {
888       int  count = packed.charAt(i++);
889       char value = packed.charAt(i++);
890       do map[j++] = value; while (--count > 0);
891     }
892     return map;
893   }
894
895
896   /**
897    * Refills the input buffer.
898    *
899    * @return      <code>false</code>, iff there was new input.
900    * 
901    * @exception   java.io.IOException  if any I/O-Error occurs
902    */
903   private boolean zzRefill() throws java.io.IOException {
904
905     /* first: make room (if you can) */
906     if (zzStartRead > 0) {
907       zzEndRead += zzFinalHighSurrogate;
908       zzFinalHighSurrogate = 0;
909       System.arraycopy(zzBuffer, zzStartRead,
910                        zzBuffer, 0,
911                        zzEndRead-zzStartRead);
912
913       /* translate stored positions */
914       zzEndRead-= zzStartRead;
915       zzCurrentPos-= zzStartRead;
916       zzMarkedPos-= zzStartRead;
917       zzStartRead = 0;
918     }
919
920     /* is the buffer big enough? */
921     if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) {
922       /* if not: blow it up */
923       char newBuffer[] = new char[zzBuffer.length*2];
924       System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
925       zzBuffer = newBuffer;
926       zzEndRead += zzFinalHighSurrogate;
927       zzFinalHighSurrogate = 0;
928     }
929
930     /* fill the buffer with new input */
931     int requested = zzBuffer.length - zzEndRead;
932     int numRead = zzReader.read(zzBuffer, zzEndRead, requested);
933
934     /* not supposed to occur according to specification of java.io.Reader */
935     if (numRead == 0) {
936       throw new java.io.IOException("Reader returned 0 characters. See JFlex examples for workaround.");
937     }
938     if (numRead > 0) {
939       zzEndRead += numRead;
940       /* If numRead == requested, we might have requested to few chars to
941          encode a full Unicode character. We assume that a Reader would
942          otherwise never return half characters. */
943       if (numRead == requested) {
944         if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) {
945           --zzEndRead;
946           zzFinalHighSurrogate = 1;
947         }
948       }
949       /* potentially more input available */
950       return false;
951     }
952
953     /* numRead < 0 ==> end of stream */
954     return true;
955   }
956
957     
958   /**
959    * Closes the input stream.
960    */
961   public final void yyclose() throws java.io.IOException {
962     zzAtEOF = true;            /* indicate end of file */
963     zzEndRead = zzStartRead;  /* invalidate buffer    */
964
965     if (zzReader != null)
966       zzReader.close();
967   }
968
969
970   /**
971    * Resets the scanner to read from a new input stream.
972    * Does not close the old reader.
973    *
974    * All internal variables are reset, the old input stream 
975    * <b>cannot</b> be reused (internal buffer is discarded and lost).
976    * Lexical state is set to <tt>ZZ_INITIAL</tt>.
977    *
978    * Internal scan buffer is resized down to its initial length, if it has grown.
979    *
980    * @param reader   the new input stream 
981    */
982   public final void yyreset(java.io.Reader reader) {
983     zzReader = reader;
984     zzAtBOL  = true;
985     zzAtEOF  = false;
986     zzEOFDone = false;
987     zzEndRead = zzStartRead = 0;
988     zzCurrentPos = zzMarkedPos = 0;
989     zzFinalHighSurrogate = 0;
990     yyline = yychar = yycolumn = 0;
991     zzLexicalState = YYINITIAL;
992     if (zzBuffer.length > ZZ_BUFFERSIZE)
993       zzBuffer = new char[ZZ_BUFFERSIZE];
994   }
995
996
997   /**
998    * Returns the current lexical state.
999    */
1000   public final int yystate() {
1001     return zzLexicalState;
1002   }
1003
1004
1005   /**
1006    * Enters a new lexical state
1007    *
1008    * @param newState the new lexical state
1009    */
1010   public final void yybegin(int newState) {
1011     zzLexicalState = newState;
1012   }
1013
1014
1015   /**
1016    * Returns the text matched by the current regular expression.
1017    */
1018   public final String yytext() {
1019     return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
1020   }
1021
1022
1023   /**
1024    * Returns the character at position <tt>pos</tt> from the 
1025    * matched text. 
1026    * 
1027    * It is equivalent to yytext().charAt(pos), but faster
1028    *
1029    * @param pos the position of the character to fetch. 
1030    *            A value from 0 to yylength()-1.
1031    *
1032    * @return the character at position pos
1033    */
1034   public final char yycharat(int pos) {
1035     return zzBuffer[zzStartRead+pos];
1036   }
1037
1038
1039   /**
1040    * Returns the length of the matched text region.
1041    */
1042   public final int yylength() {
1043     return zzMarkedPos-zzStartRead;
1044   }
1045
1046
1047   /**
1048    * Reports an error that occured while scanning.
1049    *
1050    * In a wellformed scanner (no or only correct usage of 
1051    * yypushback(int) and a match-all fallback rule) this method 
1052    * will only be called with things that "Can't Possibly Happen".
1053    * If this method is called, something is seriously wrong
1054    * (e.g. a JFlex bug producing a faulty scanner etc.).
1055    *
1056    * Usual syntax/scanner level error handling should be done
1057    * in error fallback rules.
1058    *
1059    * @param   errorCode  the code of the errormessage to display
1060    */
1061   private void zzScanError(int errorCode) {
1062     String message;
1063     try {
1064       message = ZZ_ERROR_MSG[errorCode];
1065     }
1066     catch (ArrayIndexOutOfBoundsException e) {
1067       message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
1068     }
1069
1070     throw new Error(message);
1071   } 
1072
1073
1074   /**
1075    * Pushes the specified amount of characters back into the input stream.
1076    *
1077    * They will be read again by then next call of the scanning method
1078    *
1079    * @param number  the number of characters to be read again.
1080    *                This number must not be greater than yylength()!
1081    */
1082   public void yypushback(int number)  {
1083     if ( number > yylength() )
1084       zzScanError(ZZ_PUSHBACK_2BIG);
1085
1086     zzMarkedPos -= number;
1087   }
1088
1089
1090   /**
1091    * Resumes scanning until the next regular expression is matched,
1092    * the end of input is encountered or an I/O-Error occurs.
1093    *
1094    * @return      the next token
1095    * @exception   java.io.IOException  if any I/O-Error occurs
1096    */
1097   public int yylex() throws java.io.IOException {
1098     int zzInput;
1099     int zzAction;
1100
1101     // cached fields:
1102     int zzCurrentPosL;
1103     int zzMarkedPosL;
1104     int zzEndReadL = zzEndRead;
1105     char [] zzBufferL = zzBuffer;
1106     char [] zzCMapL = ZZ_CMAP;
1107
1108     int [] zzTransL = ZZ_TRANS;
1109     int [] zzRowMapL = ZZ_ROWMAP;
1110     int [] zzAttrL = ZZ_ATTRIBUTE;
1111
1112     while (true) {
1113       zzMarkedPosL = zzMarkedPos;
1114
1115       yychar+= zzMarkedPosL-zzStartRead;
1116
1117       zzAction = -1;
1118
1119       zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
1120   
1121       zzState = ZZ_LEXSTATE[zzLexicalState];
1122
1123       // set up zzAction for empty match case:
1124       int zzAttributes = zzAttrL[zzState];
1125       if ( (zzAttributes & 1) == 1 ) {
1126         zzAction = zzState;
1127       }
1128
1129
1130       zzForAction: {
1131         while (true) {
1132     
1133           if (zzCurrentPosL < zzEndReadL) {
1134             zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
1135             zzCurrentPosL += Character.charCount(zzInput);
1136           }
1137           else if (zzAtEOF) {
1138             zzInput = YYEOF;
1139             break zzForAction;
1140           }
1141           else {
1142             // store back cached positions
1143             zzCurrentPos  = zzCurrentPosL;
1144             zzMarkedPos   = zzMarkedPosL;
1145             boolean eof = zzRefill();
1146             // get translated positions and possibly new buffer
1147             zzCurrentPosL  = zzCurrentPos;
1148             zzMarkedPosL   = zzMarkedPos;
1149             zzBufferL      = zzBuffer;
1150             zzEndReadL     = zzEndRead;
1151             if (eof) {
1152               zzInput = YYEOF;
1153               break zzForAction;
1154             }
1155             else {
1156               zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
1157               zzCurrentPosL += Character.charCount(zzInput);
1158             }
1159           }
1160           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
1161           if (zzNext == -1) break zzForAction;
1162           zzState = zzNext;
1163
1164           zzAttributes = zzAttrL[zzState];
1165           if ( (zzAttributes & 1) == 1 ) {
1166             zzAction = zzState;
1167             zzMarkedPosL = zzCurrentPosL;
1168             if ( (zzAttributes & 8) == 8 ) break zzForAction;
1169           }
1170
1171         }
1172       }
1173
1174       // store back cached position
1175       zzMarkedPos = zzMarkedPosL;
1176
1177       if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
1178         zzAtEOF = true;
1179               {
1180                 return ScilabLexerConstants.EOF;
1181               }
1182       }
1183       else {
1184         switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
1185           case 1: 
1186             { return ScilabLexerConstants.STRING;
1187             }
1188           case 44: break;
1189           case 2: 
1190             { transposable = false;
1191                                    return ScilabLexerConstants.DEFAULT;
1192             }
1193           case 45: break;
1194           case 3: 
1195             { transposable = false;
1196                                    return ScilabLexerConstants.OPENCLOSE;
1197             }
1198           case 46: break;
1199           case 4: 
1200             { transposable = true;
1201                                    return ScilabLexerConstants.OPENCLOSE;
1202             }
1203           case 47: break;
1204           case 5: 
1205             { transposable = false;
1206                                    return ScilabLexerConstants.OPERATOR;
1207             }
1208           case 48: break;
1209           case 6: 
1210             { if (transposable) {
1211                                        return ScilabLexerConstants.TRANSP;
1212                                     } else {
1213                                        beginString = zzStartRead;
1214                                        yybegin(QSTRING);
1215                                        return ScilabLexerConstants.STRING;
1216                                     }
1217             }
1218           case 49: break;
1219           case 7: 
1220             { transposable = false;
1221                                    beginString = zzStartRead;
1222                                    yybegin(QSTRING);
1223                                    return ScilabLexerConstants.STRING;
1224             }
1225           case 50: break;
1226           case 8: 
1227             { transposable = true;
1228                                    String str = yytext();
1229                                    if (commands.contains(str)) {
1230                                        yybegin(COMMANDS);
1231                                        return ScilabLexerConstants.COMMANDS;
1232                                    } else if (macros.contains(str)) {
1233                                        yybegin(COMMANDS);
1234                                        return ScilabLexerConstants.MACROS;
1235                                    } else if (infile.contains(str)) {
1236                                        yybegin(COMMANDS);
1237                                        return ScilabLexerConstants.MACROINFILE;
1238                                    } else {
1239                                        List<String>[] arr = doc.getInOutArgs(start + yychar);
1240                                        if (arr != null && (arr[0].contains(str) || arr[1].contains(str))) {
1241                                            return ScilabLexerConstants.INPUTOUTPUTARGS;
1242                                        } else if (variables.contains(str)) {
1243                                            return ScilabLexerConstants.VARIABLES;
1244                                        }
1245                                    }
1246                                    return ScilabLexerConstants.ID;
1247             }
1248           case 51: break;
1249           case 9: 
1250             { transposable = false;
1251                                    yybegin(FIELD);
1252                                    return ScilabLexerConstants.OPERATOR;
1253             }
1254           case 52: break;
1255           case 10: 
1256             { return ScilabLexerConstants.WHITE;
1257             }
1258           case 53: break;
1259           case 11: 
1260             { return ScilabLexerConstants.TAB;
1261             }
1262           case 54: break;
1263           case 12: 
1264             { transposable = false;
1265                                    return ScilabLexerConstants.SPECIAL;
1266             }
1267           case 55: break;
1268           case 13: 
1269             { transposable = true;
1270                                    return ScilabLexerConstants.NUMBER;
1271             }
1272           case 56: break;
1273           case 14: 
1274             { return ScilabLexerConstants.DEFAULT;
1275             }
1276           case 57: break;
1277           case 15: 
1278             { transposable = false;
1279                                    yybegin(YYINITIAL);
1280                                    return ScilabLexerConstants.STRING;
1281             }
1282           case 58: break;
1283           case 16: 
1284             { return ScilabLexerConstants.WHITE_STRING;
1285             }
1286           case 59: break;
1287           case 17: 
1288             { return ScilabLexerConstants.TAB_STRING;
1289             }
1290           case 60: break;
1291           case 18: 
1292             { return ScilabLexerConstants.COMMENT;
1293             }
1294           case 61: break;
1295           case 19: 
1296             { return ScilabLexerConstants.WHITE_COMMENT;
1297             }
1298           case 62: break;
1299           case 20: 
1300             { return ScilabLexerConstants.TAB_COMMENT;
1301             }
1302           case 63: break;
1303           case 21: 
1304             { yypushback(1);
1305                                    yybegin(YYINITIAL);
1306             }
1307           case 64: break;
1308           case 22: 
1309             { 
1310             }
1311           case 65: break;
1312           case 23: 
1313             { transposable = true;
1314                                    return ScilabLexerConstants.FIELD;
1315             }
1316           case 66: break;
1317           case 24: 
1318             { yypushback(yylength());
1319                                    yybegin(YYINITIAL);
1320             }
1321           case 67: break;
1322           case 25: 
1323             { yybegin(COMMANDSWHITE);
1324                                    return ScilabLexerConstants.WHITE;
1325             }
1326           case 68: break;
1327           case 26: 
1328             { yybegin(COMMANDSWHITE);
1329                                    return ScilabLexerConstants.TAB;
1330             }
1331           case 69: break;
1332           case 27: 
1333             { transposable = false;
1334                                    yypushback(2);
1335                                    yybegin(COMMENT);
1336             }
1337           case 70: break;
1338           case 28: 
1339             { transposable = false;
1340                                    yypushback(2);
1341                                    yybegin(BLOCKCOMMENT);
1342             }
1343           case 71: break;
1344           case 29: 
1345             { return ScilabLexerConstants.ERROR;
1346             }
1347           case 72: break;
1348           case 30: 
1349             { transposable = true;
1350                                    return ScilabLexerConstants.CONSTANTES;
1351             }
1352           case 73: break;
1353           case 31: 
1354             { transposable = false;
1355                                    return ScilabLexerConstants.OSKEYWORD;
1356             }
1357           case 74: break;
1358           case 32: 
1359             { transposable = false;
1360                                    return ScilabLexerConstants.SKEYWORD;
1361             }
1362           case 75: break;
1363           case 33: 
1364             { yypushback(yylength());
1365                                    yybegin(BREAKSTRING);
1366                                    transposable = false;
1367                                    return ScilabLexerConstants.STRING;
1368             }
1369           case 76: break;
1370           case 34: 
1371             { return ScilabLexerConstants.LATEX;
1372             }
1373           case 77: break;
1374           case 35: 
1375             { yybegin(YYINITIAL);
1376                                    return ScilabLexerConstants.COMMENT;
1377             }
1378           case 78: break;
1379           case 36: 
1380             { breakstring = true;
1381                                    return ScilabLexerConstants.SPECIAL;
1382             }
1383           case 79: break;
1384           case 37: 
1385             { transposable = false;
1386                                    if (matchBlock != null) {
1387                                       MatchingBlockScanner.MatchingPositions pos = matchBlock.getMatchingBlock(start + yychar + yylength(), false);
1388                                       if (pos != null) {
1389                                          try {
1390                                              String match = doc.getText(pos.secondB, pos.secondE - pos.secondB);
1391                                              if (match.equals("function")) {
1392                                                 return ScilabLexerConstants.FKEYWORD;
1393                                              }
1394                                          } catch (BadLocationException e) { }
1395                                       }
1396                                    }
1397                                    return ScilabLexerConstants.OSKEYWORD;
1398             }
1399           case 80: break;
1400           case 38: 
1401             { transposable = false;
1402                                    return ScilabLexerConstants.ELSEIF;
1403             }
1404           case 81: break;
1405           case 39: 
1406             { transposable = false;
1407                                    return ScilabLexerConstants.CKEYWORD;
1408             }
1409           case 82: break;
1410           case 40: 
1411             { return ScilabLexerConstants.AUTHORS;
1412             }
1413           case 83: break;
1414           case 41: 
1415             { transposable = false;
1416                                    return ScilabLexerConstants.FKEYWORD;
1417             }
1418           case 84: break;
1419           case 42: 
1420             { return ScilabLexerConstants.MAIL;
1421             }
1422           case 85: break;
1423           case 43: 
1424             { return ScilabLexerConstants.URL;
1425             }
1426           case 86: break;
1427           default:
1428             zzScanError(ZZ_NO_MATCH);
1429         }
1430       }
1431     }
1432   }
1433
1434
1435 }