groovy gstring lexing fix
authorMaxim Medvedev <maxim.medvedev@jetbrains.com>
Mon, 9 Nov 2009 13:43:03 +0000 (16:43 +0300)
committerMaxim Medvedev <maxim.medvedev@jetbrains.com>
Mon, 9 Nov 2009 13:43:03 +0000 (16:43 +0300)
plugins/groovy/src/org/jetbrains/plugins/groovy/lang/lexer/_GroovyLexer.java
plugins/groovy/src/org/jetbrains/plugins/groovy/lang/lexer/groovy.flex
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/parser/ExpressionsParsingTest.groovy
plugins/groovy/testdata/parsing/groovy/expressions/gstring/str_error8.test [new file with mode: 0644]

index 5cf550ac1c35f2f4a586fda9f9f8204e45850661..59dc986bfca8bbb783833c4890043f5028cfa6fa 100644 (file)
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.1 on 15.10.09 16:49 */
+/* The following code was generated by JFlex 1.4.1 on 22.10.09 18:04 */
 
 /*
  * Copyright 2000-2007 JetBrains s.r.o.
@@ -19,15 +19,14 @@ package org.jetbrains.plugins.groovy.lang.lexer;
 
 import com.intellij.lexer.FlexLexer;
 import com.intellij.psi.tree.IElementType;
-import java.util.*;
-import java.lang.reflect.Field;
-import org.jetbrains.annotations.NotNull;
+
+import java.util.Stack;
 
 
 /**
  * This class is a scanner generated by 
  * <a href="http://www.jflex.de/">JFlex</a> 1.4.1
- * on 15.10.09 16:49 from the specification file
+ * on 22.10.09 18:04 from the specification file
  * <tt>groovy.flex</tt>
  */
 public class _GroovyLexer implements FlexLexer, GroovyTokenTypes {
@@ -150,7 +149,7 @@ public class _GroovyLexer implements FlexLexer, GroovyTokenTypes {
     "\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31"+
     "\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+
     "\1\42\6\10\1\43\1\44\1\45\1\46\1\47\1\50"+
-    "\1\51\1\52\1\0\1\53\1\54\2\51\1\55\1\51"+
+    "\1\51\1\52\1\51\1\53\1\54\2\51\1\55\1\51"+
     "\1\43\1\46\1\56\1\57\2\60\2\61\3\62\1\63"+
     "\1\64\2\65\3\66\1\67\1\70\1\71\1\72\1\73"+
     "\1\72\1\74\1\1\1\75\1\76\1\77\2\1\1\100"+
@@ -161,30 +160,30 @@ public class _GroovyLexer implements FlexLexer, GroovyTokenTypes {
     "\1\0\1\130\1\131\11\10\2\0\1\132\1\17\1\0"+
     "\1\17\1\133\1\134\1\135\1\136\1\137\1\0\1\140"+
     "\1\0\1\141\1\142\1\143\1\144\1\145\1\146\4\10"+
-    "\1\147\13\10\1\51\1\0\2\51\1\150\1\151\3\0"+
-    "\1\73\1\74\1\0\1\74\1\106\1\64\2\0\1\1"+
-    "\1\100\1\67\1\152\1\0\1\106\1\153\1\154\1\155"+
-    "\1\0\1\155\3\10\1\156\1\10\1\157\2\10\1\160"+
-    "\4\10\1\11\1\161\1\162\1\163\5\10\1\164\5\10"+
-    "\1\132\1\165\2\17\1\166\1\167\1\170\1\171\1\0"+
-    "\24\10\1\51\1\172\1\173\1\0\1\74\1\173\1\64"+
-    "\2\106\1\153\1\106\2\153\1\155\3\10\1\174\6\10"+
-    "\1\175\1\10\1\176\1\11\1\177\2\10\1\200\1\10"+
-    "\1\201\3\10\1\202\3\0\1\17\1\0\1\203\10\10"+
-    "\1\204\1\10\1\205\7\10\1\206\1\10\1\51\1\0"+
-    "\1\64\2\106\2\153\1\106\1\0\1\153\1\207\1\210"+
-    "\1\211\12\10\1\212\1\213\1\10\2\0\1\17\1\0"+
-    "\6\10\1\214\1\215\3\10\1\216\1\10\1\217\2\10"+
-    "\1\220\1\74\2\153\1\0\4\10\1\221\1\10\1\222"+
-    "\1\10\1\223\1\224\1\10\1\225\1\10\2\0\2\10"+
-    "\1\226\2\10\1\227\2\10\1\230\1\10\1\231\1\10"+
-    "\1\74\1\232\3\10\1\233\1\234\1\10\1\235\1\17"+
-    "\1\236\1\10\1\237\12\10\1\240\1\241\1\242\1\10"+
-    "\1\243\1\244\2\10\1\245\1\246\1\10\1\247\1\250"+
-    "\2\10\1\251";
+    "\1\147\13\10\1\0\2\51\1\150\1\151\3\0\1\73"+
+    "\1\74\1\0\1\74\1\106\1\64\2\0\1\1\1\100"+
+    "\1\67\1\152\1\0\1\106\1\153\1\154\1\155\1\0"+
+    "\1\155\3\10\1\156\1\10\1\157\2\10\1\160\4\10"+
+    "\1\11\1\161\1\162\1\163\5\10\1\164\5\10\1\132"+
+    "\1\165\2\17\1\166\1\167\1\170\1\171\1\0\24\10"+
+    "\1\51\1\172\1\173\1\0\1\74\1\173\1\64\2\106"+
+    "\1\153\1\106\2\153\1\155\3\10\1\174\6\10\1\175"+
+    "\1\10\1\176\1\11\1\177\2\10\1\200\1\10\1\201"+
+    "\3\10\1\202\3\0\1\17\1\0\1\203\10\10\1\204"+
+    "\1\10\1\205\7\10\1\206\1\10\1\51\1\0\1\64"+
+    "\2\106\2\153\1\106\1\0\1\153\1\207\1\210\1\211"+
+    "\12\10\1\212\1\213\1\10\2\0\1\17\1\0\6\10"+
+    "\1\214\1\215\3\10\1\216\1\10\1\217\2\10\1\220"+
+    "\1\74\2\153\1\0\4\10\1\221\1\10\1\222\1\10"+
+    "\1\223\1\224\1\10\1\225\1\10\2\0\2\10\1\226"+
+    "\2\10\1\227\2\10\1\230\1\10\1\231\1\10\1\74"+
+    "\1\232\3\10\1\233\1\234\1\10\1\235\1\17\1\236"+
+    "\1\10\1\237\12\10\1\240\1\241\1\242\1\10\1\243"+
+    "\1\244\2\10\1\245\1\246\1\10\1\247\1\250\2\10"+
+    "\1\251";
 
   private static int [] zzUnpackAction() {
-    int [] result = new int[482];
+    int [] result = new int[481];
     int offset = 0;
     offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
     return result;
@@ -236,43 +235,43 @@ public class _GroovyLexer implements FlexLexer, GroovyTokenTypes {
     "\0\u0690\0\u238c\0\u0690\0\u0690\0\u0690\0\u0690\0\u0690\0\u0690"+
     "\0\u23d2\0\u2418\0\u245e\0\u24a4\0\u24ea\0\u2530\0\u2576\0\u25bc"+
     "\0\u2602\0\u2648\0\u268e\0\u26d4\0\u271a\0\u2760\0\u27a6\0\u27ec"+
-    "\0\u120c\0\u2832\0\u2878\0\u28be\0\u2904\0\u294a\0\u2990\0\u29d6"+
-    "\0\u2a1c\0\u2a62\0\u2aa8\0\u2aee\0\u2b34\0\u2b7a\0\u2bc0\0\u2c06"+
-    "\0\u2c4c\0\u2c92\0\u16b2\0\u16b2\0\u2cd8\0\u1810\0\u2d1e\0\u2d64"+
-    "\0\u0690\0\u2daa\0\u2df0\0\u2e36\0\u2e7c\0\u2ec2\0\u2f08\0\u087a"+
-    "\0\u2f4e\0\u2f94\0\u2fda\0\u3020\0\u3066\0\u30ac\0\u30f2\0\u3138"+
-    "\0\u317e\0\u31c4\0\u0690\0\u0690\0\u087a\0\u320a\0\u3250\0\u3296"+
-    "\0\u32dc\0\u3322\0\u087a\0\u3368\0\u33ae\0\u33f4\0\u343a\0\u3480"+
-    "\0\u0690\0\u34c6\0\u0690\0\u350c\0\u0690\0\u0690\0\u0690\0\u0690"+
-    "\0\u3552\0\u3598\0\u35de\0\u3624\0\u366a\0\u36b0\0\u36f6\0\u373c"+
-    "\0\u3782\0\u37c8\0\u380e\0\u3854\0\u389a\0\u38e0\0\u3926\0\u396c"+
-    "\0\u39b2\0\u39f8\0\u3a3e\0\u3a84\0\u3aca\0\u3b10\0\u0690\0\u0690"+
-    "\0\u3b56\0\u3b9c\0\u2aa8\0\u2aa8\0\u3be2\0\u3c28\0\u3c6e\0\u3cb4"+
-    "\0\u3cfa\0\u0690\0\u0690\0\u3d40\0\u3d86\0\u3dcc\0\u087a\0\u3e12"+
-    "\0\u3e58\0\u3e9e\0\u3ee4\0\u3f2a\0\u3f70\0\u087a\0\u3fb6\0\u087a"+
-    "\0\u3ffc\0\u087a\0\u4042\0\u4088\0\u087a\0\u40ce\0\u087a\0\u4114"+
-    "\0\u415a\0\u41a0\0\u087a\0\u41e6\0\u422c\0\u4272\0\u42b8\0\u42fe"+
-    "\0\u0690\0\u4344\0\u438a\0\u43d0\0\u4416\0\u445c\0\u44a2\0\u44e8"+
-    "\0\u452e\0\u087a\0\u4574\0\u087a\0\u45ba\0\u4600\0\u4646\0\u468c"+
-    "\0\u46d2\0\u4718\0\u475e\0\u087a\0\u47a4\0\u0690\0\u47ea\0\u2aee"+
-    "\0\u4830\0\u4876\0\u48bc\0\u4902\0\u0690\0\u3cb4\0\u4948\0\u087a"+
-    "\0\u498e\0\u087a\0\u49d4\0\u4a1a\0\u4a60\0\u4aa6\0\u4aec\0\u4b32"+
-    "\0\u4b78\0\u4bbe\0\u4c04\0\u4c4a\0\u4c90\0\u087a\0\u4cd6\0\u4d1c"+
-    "\0\u4d62\0\u4da8\0\u4dee\0\u4e34\0\u4e7a\0\u4ec0\0\u4f06\0\u4f4c"+
-    "\0\u4f92\0\u087a\0\u087a\0\u4fd8\0\u501e\0\u5064\0\u087a\0\u50aa"+
-    "\0\u087a\0\u50f0\0\u5136\0\u087a\0\u4830\0\u517c\0\u51c2\0\u4948"+
-    "\0\u5208\0\u524e\0\u5294\0\u52da\0\u087a\0\u5320\0\u087a\0\u5366"+
-    "\0\u087a\0\u087a\0\u53ac\0\u087a\0\u53f2\0\u5438\0\u547e\0\u54c4"+
-    "\0\u550a\0\u087a\0\u5550\0\u5596\0\u087a\0\u55dc\0\u5622\0\u087a"+
-    "\0\u5668\0\u087a\0\u56ae\0\u517c\0\u087a\0\u56f4\0\u573a\0\u5780"+
-    "\0\u087a\0\u087a\0\u57c6\0\u087a\0\u4dee\0\u087a\0\u580c\0\u087a"+
-    "\0\u5852\0\u5898\0\u58de\0\u5924\0\u596a\0\u59b0\0\u59f6\0\u5a3c"+
-    "\0\u5a82\0\u5ac8\0\u087a\0\u087a\0\u087a\0\u5b0e\0\u087a\0\u087a"+
-    "\0\u5b54\0\u5b9a\0\u087a\0\u087a\0\u5be0\0\u087a\0\u087a\0\u5c26"+
-    "\0\u5c6c\0\u087a";
+    "\0\u2832\0\u2878\0\u28be\0\u2904\0\u294a\0\u2990\0\u29d6\0\u2a1c"+
+    "\0\u2a62\0\u2aa8\0\u2aee\0\u2b34\0\u2b7a\0\u2bc0\0\u2c06\0\u2c4c"+
+    "\0\u2c92\0\u16b2\0\u16b2\0\u2cd8\0\u1810\0\u2d1e\0\u2d64\0\u0690"+
+    "\0\u2daa\0\u2df0\0\u2e36\0\u2e7c\0\u2ec2\0\u2f08\0\u087a\0\u2f4e"+
+    "\0\u2f94\0\u2fda\0\u3020\0\u3066\0\u30ac\0\u30f2\0\u3138\0\u317e"+
+    "\0\u31c4\0\u0690\0\u0690\0\u087a\0\u320a\0\u3250\0\u3296\0\u32dc"+
+    "\0\u3322\0\u087a\0\u3368\0\u33ae\0\u33f4\0\u343a\0\u3480\0\u0690"+
+    "\0\u34c6\0\u0690\0\u350c\0\u0690\0\u0690\0\u0690\0\u0690\0\u3552"+
+    "\0\u3598\0\u35de\0\u3624\0\u366a\0\u36b0\0\u36f6\0\u373c\0\u3782"+
+    "\0\u37c8\0\u380e\0\u3854\0\u389a\0\u38e0\0\u3926\0\u396c\0\u39b2"+
+    "\0\u39f8\0\u3a3e\0\u3a84\0\u3aca\0\u3b10\0\u0690\0\u0690\0\u3b56"+
+    "\0\u3b9c\0\u2aa8\0\u2aa8\0\u3be2\0\u3c28\0\u3c6e\0\u3cb4\0\u3cfa"+
+    "\0\u0690\0\u0690\0\u3d40\0\u3d86\0\u3dcc\0\u087a\0\u3e12\0\u3e58"+
+    "\0\u3e9e\0\u3ee4\0\u3f2a\0\u3f70\0\u087a\0\u3fb6\0\u087a\0\u3ffc"+
+    "\0\u087a\0\u4042\0\u4088\0\u087a\0\u40ce\0\u087a\0\u4114\0\u415a"+
+    "\0\u41a0\0\u087a\0\u41e6\0\u422c\0\u4272\0\u42b8\0\u42fe\0\u0690"+
+    "\0\u4344\0\u438a\0\u43d0\0\u4416\0\u445c\0\u44a2\0\u44e8\0\u452e"+
+    "\0\u087a\0\u4574\0\u087a\0\u45ba\0\u4600\0\u4646\0\u468c\0\u46d2"+
+    "\0\u4718\0\u475e\0\u087a\0\u47a4\0\u0690\0\u47ea\0\u2aee\0\u4830"+
+    "\0\u4876\0\u48bc\0\u4902\0\u0690\0\u3cb4\0\u4948\0\u087a\0\u498e"+
+    "\0\u087a\0\u49d4\0\u4a1a\0\u4a60\0\u4aa6\0\u4aec\0\u4b32\0\u4b78"+
+    "\0\u4bbe\0\u4c04\0\u4c4a\0\u4c90\0\u087a\0\u4cd6\0\u4d1c\0\u4d62"+
+    "\0\u4da8\0\u4dee\0\u4e34\0\u4e7a\0\u4ec0\0\u4f06\0\u4f4c\0\u4f92"+
+    "\0\u087a\0\u087a\0\u4fd8\0\u501e\0\u5064\0\u087a\0\u50aa\0\u087a"+
+    "\0\u50f0\0\u5136\0\u087a\0\u4830\0\u517c\0\u51c2\0\u4948\0\u5208"+
+    "\0\u524e\0\u5294\0\u52da\0\u087a\0\u5320\0\u087a\0\u5366\0\u087a"+
+    "\0\u087a\0\u53ac\0\u087a\0\u53f2\0\u5438\0\u547e\0\u54c4\0\u550a"+
+    "\0\u087a\0\u5550\0\u5596\0\u087a\0\u55dc\0\u5622\0\u087a\0\u5668"+
+    "\0\u087a\0\u56ae\0\u517c\0\u087a\0\u56f4\0\u573a\0\u5780\0\u087a"+
+    "\0\u087a\0\u57c6\0\u087a\0\u4dee\0\u087a\0\u580c\0\u087a\0\u5852"+
+    "\0\u5898\0\u58de\0\u5924\0\u596a\0\u59b0\0\u59f6\0\u5a3c\0\u5a82"+
+    "\0\u5ac8\0\u087a\0\u087a\0\u087a\0\u5b0e\0\u087a\0\u087a\0\u5b54"+
+    "\0\u5b9a\0\u087a\0\u087a\0\u5be0\0\u087a\0\u087a\0\u5c26\0\u5c6c"+
+    "\0\u087a";
 
   private static int [] zzUnpackRowMap() {
-    int [] result = new int[482];
+    int [] result = new int[481];
     int offset = 0;
     offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
     return result;
@@ -388,337 +387,337 @@ public class _GroovyLexer implements FlexLexer, GroovyTokenTypes {
     "\2\0\3\115\1\0\1\115\1\0\4\115\2\0\1\115"+
     "\24\0\14\115\11\0\16\120\2\0\3\120\1\0\1\120"+
     "\1\0\4\120\2\0\1\120\24\0\14\120\1\122\2\0"+
-    "\1\122\1\331\31\122\1\0\4\122\1\0\42\122\1\0"+
-    "\3\123\1\332\101\0\1\122\2\0\103\122\4\127\1\130"+
-    "\31\127\1\0\4\127\1\333\43\127\2\0\141\127\1\0"+
-    "\4\127\1\334\42\127\11\0\1\335\1\0\14\335\3\0"+
-    "\2\335\1\0\1\335\1\0\4\335\2\0\1\335\24\0"+
-    "\14\335\11\0\1\336\1\0\14\336\3\0\2\336\1\0"+
-    "\1\336\1\0\4\336\2\0\1\336\24\0\14\336\1\0"+
-    "\3\136\1\337\102\0\3\140\1\340\112\0\16\141\2\0"+
+    "\1\122\1\124\31\122\1\0\4\122\1\0\42\122\1\0"+
+    "\3\123\1\331\101\0\1\122\2\0\103\122\4\127\1\130"+
+    "\31\127\1\0\4\127\1\332\43\127\2\0\141\127\1\0"+
+    "\4\127\1\333\42\127\11\0\1\334\1\0\14\334\3\0"+
+    "\2\334\1\0\1\334\1\0\4\334\2\0\1\334\24\0"+
+    "\14\334\11\0\1\335\1\0\14\335\3\0\2\335\1\0"+
+    "\1\335\1\0\4\335\2\0\1\335\24\0\14\335\1\0"+
+    "\3\136\1\336\102\0\3\140\1\337\112\0\16\141\2\0"+
     "\3\141\1\0\1\141\1\0\4\141\2\0\1\141\24\0"+
-    "\14\141\5\0\1\143\101\0\3\151\1\341\106\0\1\152"+
-    "\101\0\1\342\1\161\103\0\1\343\2\344\1\343\1\345"+
-    "\1\210\1\346\27\343\1\347\47\343\4\0\1\350\102\0"+
-    "\3\165\1\351\112\0\16\166\2\0\3\166\1\0\1\166"+
+    "\14\141\5\0\1\143\101\0\3\151\1\340\106\0\1\152"+
+    "\101\0\1\341\1\161\103\0\1\342\2\343\1\342\1\344"+
+    "\1\210\1\345\27\342\1\346\47\342\4\0\1\347\102\0"+
+    "\3\165\1\350\112\0\16\166\2\0\3\166\1\0\1\166"+
     "\1\0\4\166\2\0\1\166\24\0\14\166\1\170\2\0"+
-    "\1\170\1\171\1\172\30\170\1\173\50\170\1\352\2\170"+
-    "\1\171\1\353\30\170\1\354\47\170\5\0\1\172\111\0"+
-    "\1\355\1\0\14\355\3\0\2\355\1\0\1\355\1\0"+
-    "\4\355\2\0\1\355\24\0\14\355\1\0\3\177\1\356"+
+    "\1\170\1\171\1\172\30\170\1\173\50\170\1\351\2\170"+
+    "\1\171\1\352\30\170\1\353\47\170\5\0\1\172\111\0"+
+    "\1\354\1\0\14\354\3\0\2\354\1\0\1\354\1\0"+
+    "\4\354\2\0\1\354\24\0\14\354\1\0\3\177\1\355"+
     "\102\0\2\177\110\0\1\210\1\211\100\0\2\32\105\0"+
-    "\1\33\103\0\1\210\2\0\103\210\6\357\1\360\77\357"+
-    "\52\0\1\361\33\0\1\216\2\0\103\216\12\0\1\362"+
-    "\14\0\2\363\1\362\66\0\1\364\16\0\1\364\65\0"+
+    "\1\33\103\0\1\210\2\0\103\210\6\356\1\357\77\356"+
+    "\52\0\1\360\33\0\1\216\2\0\103\216\12\0\1\361"+
+    "\14\0\2\362\1\361\66\0\1\363\16\0\1\363\65\0"+
     "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
-    "\6\41\1\365\5\41\11\0\16\41\2\0\3\41\1\0"+
-    "\2\41\1\366\3\41\2\0\1\41\24\0\14\41\11\0"+
-    "\6\41\1\367\7\41\2\0\3\41\1\0\6\41\2\0"+
+    "\6\41\1\364\5\41\11\0\16\41\2\0\3\41\1\0"+
+    "\2\41\1\365\3\41\2\0\1\41\24\0\14\41\11\0"+
+    "\6\41\1\366\7\41\2\0\3\41\1\0\6\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\3\41\1\370\2\41\2\0\1\41\24\0\14\41\11\0"+
-    "\16\41\2\0\3\41\1\0\2\41\1\371\3\41\2\0"+
+    "\3\41\1\367\2\41\2\0\1\41\24\0\14\41\11\0"+
+    "\16\41\2\0\3\41\1\0\2\41\1\370\3\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\4\41\1\372\1\41\2\0\1\41\24\0\4\41\1\373"+
+    "\4\41\1\371\1\41\2\0\1\41\24\0\4\41\1\372"+
     "\7\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\41\24\0\1\374\13\41\11\0\4\41\1\375\11\41"+
+    "\1\41\24\0\1\373\13\41\11\0\4\41\1\374\11\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\376"+
+    "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\375"+
     "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\4\41\1\377\7\41\11\0\16\41"+
-    "\2\0\3\41\1\0\4\41\1\u0100\1\41\2\0\1\41"+
+    "\2\0\1\41\24\0\4\41\1\376\7\41\11\0\16\41"+
+    "\2\0\3\41\1\0\4\41\1\377\1\41\2\0\1\41"+
     "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\u0101\24\0\14\41\11\0\2\u0102\2\0\2\u0102"+
-    "\4\0\4\u0102\2\0\1\u0102\10\0\1\u0102\30\0\2\u0102"+
-    "\45\0\1\u0103\24\0\1\u0104\35\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\13\41\1\u0105\11\0"+
-    "\6\41\1\u0106\7\41\2\0\3\41\1\0\6\41\2\0"+
+    "\2\0\1\u0100\24\0\14\41\11\0\2\u0101\2\0\2\u0101"+
+    "\4\0\4\u0101\2\0\1\u0101\10\0\1\u0101\30\0\2\u0101"+
+    "\45\0\1\u0102\24\0\1\u0103\35\0\16\41\2\0\3\41"+
+    "\1\0\6\41\2\0\1\41\24\0\13\41\1\u0104\11\0"+
+    "\6\41\1\u0105\7\41\2\0\3\41\1\0\6\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\4\41\1\u0107\1\41\2\0\1\41\24\0\14\41\11\0"+
-    "\16\41\2\0\3\41\1\0\4\41\1\u0108\1\41\2\0"+
+    "\4\41\1\u0106\1\41\2\0\1\41\24\0\14\41\11\0"+
+    "\16\41\2\0\3\41\1\0\4\41\1\u0107\1\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\6\41\2\0\1\u0109\24\0\1\41\1\u010a\6\41\1\u010b"+
-    "\3\41\11\0\10\41\1\u010c\5\41\2\0\3\41\1\0"+
-    "\3\41\1\u010d\2\41\2\0\1\41\24\0\14\41\11\0"+
-    "\14\41\1\u010e\1\41\2\0\3\41\1\0\6\41\2\0"+
+    "\6\41\2\0\1\u0108\24\0\1\41\1\u0109\6\41\1\u010a"+
+    "\3\41\11\0\10\41\1\u010b\5\41\2\0\3\41\1\0"+
+    "\3\41\1\u010c\2\41\2\0\1\41\24\0\14\41\11\0"+
+    "\14\41\1\u010d\1\41\2\0\3\41\1\0\6\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\6\41\2\0\1\41\24\0\6\41\1\u010f\5\41\11\0"+
-    "\16\41\2\0\3\41\1\0\4\41\1\u0110\1\41\2\0"+
+    "\6\41\2\0\1\41\24\0\6\41\1\u010e\5\41\11\0"+
+    "\16\41\2\0\3\41\1\0\4\41\1\u010f\1\41\2\0"+
     "\1\41\24\0\14\41\1\265\2\0\1\265\1\266\31\265"+
-    "\1\0\4\265\1\u0111\43\265\2\0\103\265\43\0\1\u0112"+
-    "\42\0\1\270\2\0\1\270\1\271\37\270\1\u0113\42\270"+
-    "\2\0\103\270\44\0\1\u0114\124\0\1\u0115\104\0\1\u0116"+
-    "\75\0\1\u0117\105\0\1\u0118\7\0\1\u0119\34\0\10\41"+
-    "\1\u011a\5\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\6\41\1\u011b\5\41\11\0\16\41\2\0\3\41"+
-    "\1\0\5\41\1\u011c\2\0\1\41\24\0\14\41\11\0"+
+    "\1\0\4\265\1\u0110\43\265\2\0\103\265\43\0\1\u0111"+
+    "\42\0\1\270\2\0\1\270\1\271\37\270\1\u0112\42\270"+
+    "\2\0\103\270\44\0\1\u0113\124\0\1\u0114\104\0\1\u0115"+
+    "\75\0\1\u0116\105\0\1\u0117\7\0\1\u0118\34\0\10\41"+
+    "\1\u0119\5\41\2\0\3\41\1\0\6\41\2\0\1\41"+
+    "\24\0\6\41\1\u011a\5\41\11\0\16\41\2\0\3\41"+
+    "\1\0\5\41\1\u011b\2\0\1\41\24\0\14\41\11\0"+
     "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
-    "\2\41\1\u011d\11\41\11\0\16\41\2\0\3\41\1\0"+
-    "\6\41\2\0\1\41\24\0\4\41\1\u011e\7\41\11\0"+
+    "\2\41\1\u011c\11\41\11\0\16\41\2\0\3\41\1\0"+
+    "\6\41\2\0\1\41\24\0\4\41\1\u011d\7\41\11\0"+
     "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
-    "\4\41\1\u011f\7\41\11\0\16\41\2\0\3\41\1\0"+
-    "\6\41\2\0\1\41\24\0\1\41\1\u0120\12\41\11\0"+
-    "\16\41\2\0\3\41\1\0\4\41\1\u0121\1\41\2\0"+
-    "\1\41\24\0\4\41\1\u0122\7\41\11\0\16\41\2\0"+
-    "\3\41\1\0\2\41\1\u0123\3\41\2\0\1\41\24\0"+
+    "\4\41\1\u011e\7\41\11\0\16\41\2\0\3\41\1\0"+
+    "\6\41\2\0\1\41\24\0\1\41\1\u011f\12\41\11\0"+
+    "\16\41\2\0\3\41\1\0\4\41\1\u0120\1\41\2\0"+
+    "\1\41\24\0\4\41\1\u0121\7\41\11\0\16\41\2\0"+
+    "\3\41\1\0\2\41\1\u0122\3\41\2\0\1\41\24\0"+
     "\14\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\41\24\0\1\41\1\u0124\12\41\11\0\16\41\2\0"+
-    "\3\41\1\0\3\41\1\u0125\2\41\2\0\1\41\24\0"+
-    "\1\41\1\u0126\12\41\11\0\16\41\2\0\3\41\1\0"+
-    "\6\41\2\0\1\41\24\0\1\u0127\13\41\11\0\16\41"+
-    "\2\0\3\41\1\0\2\41\1\u0128\3\41\2\0\1\41"+
+    "\1\41\24\0\1\41\1\u0123\12\41\11\0\16\41\2\0"+
+    "\3\41\1\0\3\41\1\u0124\2\41\2\0\1\41\24\0"+
+    "\1\41\1\u0125\12\41\11\0\16\41\2\0\3\41\1\0"+
+    "\6\41\2\0\1\41\24\0\1\u0126\13\41\11\0\16\41"+
+    "\2\0\3\41\1\0\2\41\1\u0127\3\41\2\0\1\41"+
     "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\6\41\1\u0129\5\41\11\0\10\41"+
-    "\1\u012a\5\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\14\41\11\0\6\41\1\u012b\1\41\1\u012c\5\41"+
+    "\2\0\1\41\24\0\6\41\1\u0128\5\41\11\0\10\41"+
+    "\1\u0129\5\41\2\0\3\41\1\0\6\41\2\0\1\41"+
+    "\24\0\14\41\11\0\6\41\1\u012a\1\41\1\u012b\5\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\11\0\10\41\1\u012d\5\41\2\0\3\41\1\0\6\41"+
+    "\11\0\10\41\1\u012c\5\41\2\0\3\41\1\0\6\41"+
     "\2\0\1\41\24\0\14\41\1\0\2\123\103\0\36\127"+
-    "\1\0\4\127\1\u012e\100\127\1\0\4\127\1\u012f\42\127"+
-    "\11\0\16\335\2\0\3\335\1\0\1\335\1\0\4\335"+
-    "\2\0\1\335\24\0\14\335\11\0\16\336\2\0\3\336"+
-    "\1\0\1\336\1\0\4\336\2\0\1\336\24\0\14\336"+
+    "\1\0\4\127\1\u012d\100\127\1\0\4\127\1\u012e\42\127"+
+    "\11\0\16\334\2\0\3\334\1\0\1\334\1\0\4\334"+
+    "\2\0\1\334\24\0\14\334\11\0\16\335\2\0\3\335"+
+    "\1\0\1\335\1\0\4\335\2\0\1\335\24\0\14\335"+
     "\1\0\2\136\104\0\2\140\104\0\2\151\105\0\1\161"+
-    "\103\0\1\343\2\0\1\343\1\345\1\u0130\30\343\1\347"+
-    "\47\343\1\344\2\0\1\344\1\u0131\1\0\30\344\1\147"+
-    "\47\344\1\343\1\u0132\2\343\1\345\1\u0133\30\343\1\u0134"+
-    "\47\343\1\u0135\2\357\1\u0135\1\u0136\1\357\1\u0137\27\u0135"+
-    "\1\357\47\u0135\5\0\1\u0130\100\0\1\164\2\0\103\164"+
+    "\103\0\1\342\2\0\1\342\1\344\1\u012f\30\342\1\346"+
+    "\47\342\1\343\2\0\1\343\1\u0130\1\0\30\343\1\147"+
+    "\47\343\1\342\1\u0131\2\342\1\344\1\u0132\30\342\1\u0133"+
+    "\47\342\1\u0134\2\356\1\u0134\1\u0135\1\356\1\u0136\27\u0134"+
+    "\1\356\47\u0134\5\0\1\u012f\100\0\1\164\2\0\103\164"+
     "\1\0\2\165\103\0\1\170\1\0\2\170\1\171\1\172"+
-    "\30\170\1\173\47\170\11\0\16\355\2\0\3\355\1\0"+
-    "\1\355\1\0\4\355\2\0\1\355\24\0\14\355\6\357"+
-    "\1\u0138\77\357\5\u0139\1\u013a\1\360\77\u0139\12\0\1\362"+
-    "\2\u013b\2\221\4\0\2\224\4\0\1\362\66\0\1\362"+
-    "\16\0\1\362\66\0\1\364\2\u013b\2\221\4\0\2\224"+
-    "\2\225\2\0\1\364\65\0\16\41\2\0\3\41\1\0"+
-    "\6\41\2\0\1\41\24\0\1\41\1\u013c\12\41\11\0"+
+    "\30\170\1\173\47\170\11\0\16\354\2\0\3\354\1\0"+
+    "\1\354\1\0\4\354\2\0\1\354\24\0\14\354\6\356"+
+    "\1\u0137\77\356\5\u0138\1\u0139\1\357\77\u0138\12\0\1\361"+
+    "\2\u013a\2\221\4\0\2\224\4\0\1\361\66\0\1\361"+
+    "\16\0\1\361\66\0\1\363\2\u013a\2\221\4\0\2\224"+
+    "\2\225\2\0\1\363\65\0\16\41\2\0\3\41\1\0"+
+    "\6\41\2\0\1\41\24\0\1\41\1\u013b\12\41\11\0"+
     "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
-    "\1\41\1\u013d\12\41\11\0\16\41\2\0\3\41\1\0"+
-    "\6\41\2\0\1\41\24\0\4\41\1\u013e\7\41\11\0"+
-    "\2\41\1\u013f\13\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\41\24\0\14\41\11\0\14\41\1\u0140\1\41\2\0"+
+    "\1\41\1\u013c\12\41\11\0\16\41\2\0\3\41\1\0"+
+    "\6\41\2\0\1\41\24\0\4\41\1\u013d\7\41\11\0"+
+    "\2\41\1\u013e\13\41\2\0\3\41\1\0\6\41\2\0"+
+    "\1\41\24\0\14\41\11\0\14\41\1\u013f\1\41\2\0"+
     "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
-    "\16\41\2\0\3\41\1\0\4\41\1\u0141\1\41\2\0"+
-    "\1\41\24\0\14\41\11\0\6\41\1\u0142\7\41\2\0"+
-    "\3\41\1\0\6\41\2\0\1\41\24\0\6\41\1\u0143"+
+    "\16\41\2\0\3\41\1\0\4\41\1\u0140\1\41\2\0"+
+    "\1\41\24\0\14\41\11\0\6\41\1\u0141\7\41\2\0"+
+    "\3\41\1\0\6\41\2\0\1\41\24\0\6\41\1\u0142"+
     "\5\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\41\24\0\1\41\1\u0144\12\41\11\0\16\41\2\0"+
-    "\3\41\1\0\5\41\1\u0145\2\0\1\41\24\0\14\41"+
-    "\11\0\14\41\1\u0146\1\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u0147\1\41"+
+    "\1\41\24\0\1\41\1\u0143\12\41\11\0\16\41\2\0"+
+    "\3\41\1\0\5\41\1\u0144\2\0\1\41\24\0\14\41"+
+    "\11\0\14\41\1\u0145\1\41\2\0\3\41\1\0\6\41"+
+    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u0146\1\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\5\41\1\u0148\6\41\11\0\2\u0102\2\220\2\u0102"+
-    "\2\222\2\223\2\u0102\2\u0149\2\0\1\u0102\2\0\1\226"+
-    "\5\0\1\u0102\30\0\2\u0102\22\0\6\41\1\u014a\7\41"+
+    "\24\0\5\41\1\u0147\6\41\11\0\2\u0101\2\220\2\u0101"+
+    "\2\222\2\223\2\u0101\2\u0148\2\0\1\u0101\2\0\1\226"+
+    "\5\0\1\u0101\30\0\2\u0101\22\0\6\41\1\u0149\7\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\11\0\10\41\1\u014b\5\41\2\0\3\41\1\0\6\41"+
+    "\11\0\10\41\1\u014a\5\41\2\0\3\41\1\0\6\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\u014c\24\0\14\41\11\0\14\41"+
-    "\1\u014d\1\41\2\0\3\41\1\0\6\41\2\0\1\41"+
+    "\1\0\6\41\2\0\1\u014b\24\0\14\41\11\0\14\41"+
+    "\1\u014c\1\41\2\0\3\41\1\0\6\41\2\0\1\41"+
     "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\2\41"+
-    "\1\u014e\3\41\2\0\1\41\24\0\14\41\11\0\16\41"+
+    "\1\u014d\3\41\2\0\1\41\24\0\14\41\11\0\16\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\4\41"+
-    "\1\u014f\7\41\11\0\16\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\6\41\1\u0150\5\41\11\0\16\41"+
+    "\1\u014e\7\41\11\0\16\41\2\0\3\41\1\0\6\41"+
+    "\2\0\1\41\24\0\6\41\1\u014f\5\41\11\0\16\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\1\41"+
-    "\1\u0151\12\41\11\0\6\41\1\u0152\7\41\2\0\3\41"+
+    "\1\u0150\12\41\11\0\6\41\1\u0151\7\41\2\0\3\41"+
     "\1\0\6\41\2\0\1\41\24\0\14\41\11\0\14\41"+
-    "\1\u0153\1\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\14\41\4\u0154\1\u0155\31\u0154\1\0\4\u0154\1\u0156"+
-    "\42\u0154\4\u0114\1\u0157\37\u0114\1\u0158\41\u0114\52\0\1\u0159"+
+    "\1\u0152\1\41\2\0\3\41\1\0\6\41\2\0\1\41"+
+    "\24\0\14\41\4\u0153\1\u0154\31\u0153\1\0\4\u0153\1\u0155"+
+    "\42\u0153\4\u0113\1\u0156\37\u0113\1\u0157\41\u0113\52\0\1\u0158"+
     "\44\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\7\41\1\u015a\4\41\11\0\16\41\2\0\3\41"+
-    "\1\0\4\41\1\u015b\1\41\2\0\1\41\24\0\14\41"+
-    "\11\0\6\41\1\u015c\7\41\2\0\3\41\1\0\6\41"+
+    "\24\0\7\41\1\u0159\4\41\11\0\16\41\2\0\3\41"+
+    "\1\0\4\41\1\u015a\1\41\2\0\1\41\24\0\14\41"+
+    "\11\0\6\41\1\u015b\7\41\2\0\3\41\1\0\6\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\3\41\1\u015d\10\41"+
-    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u015e\1\41"+
-    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u015f\1\41"+
+    "\1\0\6\41\2\0\1\41\24\0\3\41\1\u015c\10\41"+
+    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u015d\1\41"+
+    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u015e\1\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\4\41\1\u0160\7\41\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\2\41\1\u0161\11\41"+
-    "\11\0\14\41\1\u0162\1\41\2\0\3\41\1\0\6\41"+
+    "\24\0\4\41\1\u015f\7\41\11\0\16\41\2\0\3\41"+
+    "\1\0\6\41\2\0\1\41\24\0\2\41\1\u0160\11\41"+
+    "\11\0\14\41\1\u0161\1\41\2\0\3\41\1\0\6\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\4\41\1\u0163\1\41\2\0\1\41\24\0\14\41"+
-    "\11\0\16\41\2\0\3\41\1\0\3\41\1\u0164\2\41"+
-    "\2\0\1\41\24\0\14\41\11\0\10\41\1\u0165\5\41"+
+    "\1\0\4\41\1\u0162\1\41\2\0\1\41\24\0\14\41"+
+    "\11\0\16\41\2\0\3\41\1\0\3\41\1\u0163\2\41"+
+    "\2\0\1\41\24\0\14\41\11\0\10\41\1\u0164\5\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u0166\1\41"+
-    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u0167\1\41"+
+    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u0165\1\41"+
+    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u0166\1\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\2\41\1\u0168\11\41\11\0\16\41\2\0\3\41"+
-    "\1\0\3\41\1\u0169\2\41\2\0\1\41\24\0\14\41"+
-    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u016a\1\41"+
+    "\24\0\2\41\1\u0167\11\41\11\0\16\41\2\0\3\41"+
+    "\1\0\3\41\1\u0168\2\41\2\0\1\41\24\0\14\41"+
+    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u0169\1\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\1\41\1\u016b\12\41"+
-    "\11\0\12\41\1\u016c\3\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\14\41\11\0\6\41\1\u016d\7\41"+
+    "\1\0\6\41\2\0\1\41\24\0\1\41\1\u016a\12\41"+
+    "\11\0\12\41\1\u016b\3\41\2\0\3\41\1\0\6\41"+
+    "\2\0\1\41\24\0\14\41\11\0\6\41\1\u016c\7\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\36\127\1\0\4\127\1\u016e\42\127\1\344\1\u016f\2\344"+
-    "\1\u0131\31\344\1\u0170\47\344\1\343\1\0\2\343\1\345"+
-    "\1\u0130\30\343\1\347\47\343\1\u0135\2\357\1\u0135\1\u0136"+
-    "\1\357\1\u0171\27\u0135\1\357\50\u0135\1\u0172\2\u0135\1\u0136"+
-    "\1\u0135\1\u0171\77\u0135\1\u0173\2\u0139\1\u0173\1\u0174\1\u013a"+
-    "\1\u0137\27\u0173\1\u0139\47\u0173\5\357\1\u0175\1\u0176\77\357"+
-    "\6\u0139\1\u0177\77\u0139\11\0\16\41\2\0\3\41\1\0"+
-    "\4\41\1\u0178\1\41\2\0\1\41\24\0\14\41\11\0"+
-    "\6\41\1\u0179\7\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\41\24\0\14\41\11\0\14\41\1\u017a\1\41\2\0"+
+    "\36\127\1\0\4\127\1\u016d\42\127\1\343\1\u016e\2\343"+
+    "\1\u0130\31\343\1\u016f\47\343\1\342\1\0\2\342\1\344"+
+    "\1\u012f\30\342\1\346\47\342\1\u0134\2\356\1\u0134\1\u0135"+
+    "\1\356\1\u0170\27\u0134\1\356\50\u0134\1\u0171\2\u0134\1\u0135"+
+    "\1\u0134\1\u0170\77\u0134\1\u0172\2\u0138\1\u0172\1\u0173\1\u0139"+
+    "\1\u0136\27\u0172\1\u0138\47\u0172\5\356\1\u0174\1\u0175\77\356"+
+    "\6\u0138\1\u0176\77\u0138\11\0\16\41\2\0\3\41\1\0"+
+    "\4\41\1\u0177\1\41\2\0\1\41\24\0\14\41\11\0"+
+    "\6\41\1\u0178\7\41\2\0\3\41\1\0\6\41\2\0"+
+    "\1\41\24\0\14\41\11\0\14\41\1\u0179\1\41\2\0"+
     "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
-    "\16\41\2\0\3\41\1\0\3\41\1\u017b\2\41\2\0"+
+    "\16\41\2\0\3\41\1\0\3\41\1\u017a\2\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\6\41\2\0\1\41\24\0\1\41\1\u017c\12\41\11\0"+
-    "\14\41\1\u017d\1\41\2\0\3\41\1\0\6\41\2\0"+
+    "\6\41\2\0\1\41\24\0\1\41\1\u017b\12\41\11\0"+
+    "\14\41\1\u017c\1\41\2\0\3\41\1\0\6\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\3\41\1\u017e\2\41\2\0\1\41\24\0\14\41\11\0"+
-    "\16\41\2\0\3\41\1\0\6\41\2\0\1\u017f\24\0"+
-    "\14\41\11\0\6\41\1\u0180\7\41\2\0\3\41\1\0"+
+    "\3\41\1\u017d\2\41\2\0\1\41\24\0\14\41\11\0"+
+    "\16\41\2\0\3\41\1\0\6\41\2\0\1\u017e\24\0"+
+    "\14\41\11\0\6\41\1\u017f\7\41\2\0\3\41\1\0"+
     "\6\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
-    "\3\41\1\0\2\41\1\u0181\3\41\2\0\1\41\24\0"+
-    "\14\41\11\0\2\u0102\2\220\2\u0102\2\222\2\223\2\u0102"+
-    "\2\u0149\2\363\1\u0102\2\0\1\226\5\0\1\u0102\30\0"+
-    "\2\u0102\22\0\16\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\41\24\0\7\41\1\u0182\4\41\11\0\16\41\2\0"+
-    "\3\41\1\0\3\41\1\u0183\2\41\2\0\1\41\24\0"+
+    "\3\41\1\0\2\41\1\u0180\3\41\2\0\1\41\24\0"+
+    "\14\41\11\0\2\u0101\2\220\2\u0101\2\222\2\223\2\u0101"+
+    "\2\u0148\2\362\1\u0101\2\0\1\226\5\0\1\u0101\30\0"+
+    "\2\u0101\22\0\16\41\2\0\3\41\1\0\6\41\2\0"+
+    "\1\41\24\0\7\41\1\u0181\4\41\11\0\16\41\2\0"+
+    "\3\41\1\0\3\41\1\u0182\2\41\2\0\1\41\24\0"+
     "\14\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\41\24\0\4\41\1\u0184\7\41\11\0\16\41\2\0"+
-    "\3\41\1\0\6\41\2\0\1\41\24\0\13\41\1\u0185"+
+    "\1\41\24\0\4\41\1\u0183\7\41\11\0\16\41\2\0"+
+    "\3\41\1\0\6\41\2\0\1\41\24\0\13\41\1\u0184"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\3\41\1\u0186\10\41\11\0\14\41\1\u0187\1\41"+
+    "\24\0\3\41\1\u0185\10\41\11\0\14\41\1\u0186\1\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\4\u0154\1\u0155\31\u0154\1\0\4\u0154\1\u0188\43\u0154\2\0"+
-    "\141\u0154\1\0\4\u0154\1\u0189\42\u0154\4\u0114\1\u0157\37\u0114"+
-    "\1\u018a\105\u0114\1\u018b\41\u0114\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\1\41\1\u018c\12\41"+
-    "\11\0\14\41\1\u018d\1\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\14\41\11\0\10\41\1\u018e\5\41"+
+    "\4\u0153\1\u0154\31\u0153\1\0\4\u0153\1\u0187\43\u0153\2\0"+
+    "\141\u0153\1\0\4\u0153\1\u0188\42\u0153\4\u0113\1\u0156\37\u0113"+
+    "\1\u0189\105\u0113\1\u018a\41\u0113\11\0\16\41\2\0\3\41"+
+    "\1\0\6\41\2\0\1\41\24\0\1\41\1\u018b\12\41"+
+    "\11\0\14\41\1\u018c\1\41\2\0\3\41\1\0\6\41"+
+    "\2\0\1\41\24\0\14\41\11\0\10\41\1\u018d\5\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\1\41\1\u018f\12\41\11\0\16\41\2\0\3\41"+
-    "\1\0\3\41\1\u0190\2\41\2\0\1\41\24\0\14\41"+
-    "\11\0\16\41\2\0\3\41\1\0\3\41\1\u0191\2\41"+
+    "\24\0\1\41\1\u018e\12\41\11\0\16\41\2\0\3\41"+
+    "\1\0\3\41\1\u018f\2\41\2\0\1\41\24\0\14\41"+
+    "\11\0\16\41\2\0\3\41\1\0\3\41\1\u0190\2\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\4\41\1\u0192\7\41"+
+    "\1\0\6\41\2\0\1\41\24\0\4\41\1\u0191\7\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\11\41\1\u0193\2\41\11\0\10\41\1\u0194\5\41"+
+    "\24\0\11\41\1\u0192\2\41\11\0\10\41\1\u0193\5\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\2\41\1\u0195\11\41\11\0\10\41\1\u0196\5\41"+
+    "\24\0\2\41\1\u0194\11\41\11\0\10\41\1\u0195\5\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\11\0\16\41\2\0\3\41\1\0\3\41\1\u0197\2\41"+
+    "\11\0\16\41\2\0\3\41\1\0\3\41\1\u0196\2\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\11\41\1\u0198\2\41"+
-    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u0199\1\41"+
+    "\1\0\6\41\2\0\1\41\24\0\11\41\1\u0197\2\41"+
+    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u0198\1\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\2\41\1\u019a\11\41"+
-    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u019b\1\41"+
-    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u019c\1\41"+
+    "\1\0\6\41\2\0\1\41\24\0\2\41\1\u0199\11\41"+
+    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u019a\1\41"+
+    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u019b\1\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\1\344\1\0\2\344\1\u0131\1\0\30\344\1\147\47\344"+
-    "\1\u0135\2\357\1\u0135\1\u0136\1\u0175\1\u019d\27\u0135\1\357"+
-    "\50\u0135\1\357\2\u0135\1\u0136\1\357\1\u0171\27\u0135\1\357"+
-    "\47\u0135\1\u0173\2\u0139\1\u0173\1\u0174\1\u0139\1\u019e\27\u0173"+
-    "\1\u0139\50\u0173\1\u019f\2\u0173\1\u0174\1\u0173\1\u019e\77\u0173"+
-    "\5\u0139\1\u013a\1\u01a0\77\u0139\11\0\6\41\1\u01a1\7\41"+
+    "\1\343\1\0\2\343\1\u0130\1\0\30\343\1\147\47\343"+
+    "\1\u0134\2\356\1\u0134\1\u0135\1\u0174\1\u019c\27\u0134\1\356"+
+    "\50\u0134\1\356\2\u0134\1\u0135\1\356\1\u0170\27\u0134\1\356"+
+    "\47\u0134\1\u0172\2\u0138\1\u0172\1\u0173\1\u0138\1\u019d\27\u0172"+
+    "\1\u0138\50\u0172\1\u019e\2\u0172\1\u0173\1\u0172\1\u019d\77\u0172"+
+    "\5\u0138\1\u0139\1\u019f\77\u0138\11\0\6\41\1\u01a0\7\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\11\0\4\41\1\u01a2\11\41\2\0\3\41\1\0\6\41"+
+    "\11\0\4\41\1\u01a1\11\41\2\0\3\41\1\0\6\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\2\41\1\u01a3\3\41\2\0\1\41\24\0\14\41"+
+    "\1\0\2\41\1\u01a2\3\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\5\41\1\u01a4\6\41\11\0\16\41\2\0\3\41"+
-    "\1\0\4\41\1\u01a5\1\41\2\0\1\41\24\0\14\41"+
-    "\11\0\6\41\1\u01a6\7\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u01a7\1\41"+
+    "\24\0\5\41\1\u01a3\6\41\11\0\16\41\2\0\3\41"+
+    "\1\0\4\41\1\u01a4\1\41\2\0\1\41\24\0\14\41"+
+    "\11\0\6\41\1\u01a5\7\41\2\0\3\41\1\0\6\41"+
+    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u01a6\1\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\11\0\12\41\1\u01a8\3\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u01a9\1\41"+
+    "\11\0\12\41\1\u01a7\3\41\2\0\3\41\1\0\6\41"+
+    "\2\0\1\41\24\0\14\41\11\0\14\41\1\u01a8\1\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\11\0\16\41\2\0\3\41\1\0\2\41\1\u01aa\3\41"+
-    "\2\0\1\41\24\0\14\41\11\0\10\41\1\u01ab\5\41"+
+    "\11\0\16\41\2\0\3\41\1\0\2\41\1\u01a9\3\41"+
+    "\2\0\1\41\24\0\14\41\11\0\10\41\1\u01aa\5\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\4\41\1\u01ac\7\41\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\1\41\1\u01ad\12\41"+
-    "\36\u0154\1\0\4\u0154\1\u01ae\100\u0154\1\0\4\u0154\1\0"+
-    "\42\u0154\4\u0114\1\u0157\37\u0114\1\u01af\105\u0114\1\u0113\41\u0114"+
-    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u01b0\1\41"+
+    "\24\0\4\41\1\u01ab\7\41\11\0\16\41\2\0\3\41"+
+    "\1\0\6\41\2\0\1\41\24\0\1\41\1\u01ac\12\41"+
+    "\36\u0153\1\0\4\u0153\1\u01ad\100\u0153\1\0\4\u0153\1\0"+
+    "\42\u0153\4\u0113\1\u0156\37\u0113\1\u01ae\105\u0113\1\u0112\41\u0113"+
+    "\11\0\16\41\2\0\3\41\1\0\4\41\1\u01af\1\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\6\41\2\0\1\41\24\0\2\41\1\u01b1\11\41"+
+    "\1\0\6\41\2\0\1\41\24\0\2\41\1\u01b0\11\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\2\41\1\u01b2\11\41\11\0\2\41\1\u01b3\13\41"+
+    "\24\0\2\41\1\u01b1\11\41\11\0\2\41\1\u01b2\13\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\1\41\1\u01b4\12\41\11\0\16\41\2\0\3\41"+
-    "\1\0\4\41\1\u01b5\1\41\2\0\1\41\24\0\14\41"+
-    "\11\0\16\41\2\0\3\41\1\0\2\41\1\u01b6\3\41"+
+    "\24\0\1\41\1\u01b3\12\41\11\0\16\41\2\0\3\41"+
+    "\1\0\4\41\1\u01b4\1\41\2\0\1\41\24\0\14\41"+
+    "\11\0\16\41\2\0\3\41\1\0\2\41\1\u01b5\3\41"+
     "\2\0\1\41\24\0\14\41\11\0\16\41\2\0\3\41"+
-    "\1\0\4\41\1\u01b7\1\41\2\0\1\41\24\0\14\41"+
+    "\1\0\4\41\1\u01b6\1\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\2\41\1\u01b8\11\41\11\0\16\41\2\0\3\41"+
-    "\1\0\3\41\1\u01b9\2\41\2\0\1\41\24\0\14\41"+
+    "\24\0\2\41\1\u01b7\11\41\11\0\16\41\2\0\3\41"+
+    "\1\0\3\41\1\u01b8\2\41\2\0\1\41\24\0\14\41"+
     "\11\0\16\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\11\41\1\u01ba\2\41\11\0\10\41\1\u01bb\5\41"+
+    "\24\0\11\41\1\u01b9\2\41\11\0\10\41\1\u01ba\5\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\14\41"+
-    "\1\u0173\2\u0139\1\u0173\1\u0174\1\u013a\1\u01bc\27\u0173\1\u0139"+
-    "\50\u0173\1\u0139\2\u0173\1\u0174\1\u0139\1\u019e\27\u0173\1\u0139"+
-    "\47\u0173\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\41\24\0\10\41\1\u01bd\3\41\11\0\16\41\2\0"+
-    "\3\41\1\0\6\41\2\0\1\41\24\0\1\41\1\u01be"+
+    "\1\u0172\2\u0138\1\u0172\1\u0173\1\u0139\1\u01bb\27\u0172\1\u0138"+
+    "\50\u0172\1\u0138\2\u0172\1\u0173\1\u0138\1\u019d\27\u0172\1\u0138"+
+    "\47\u0172\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
+    "\1\41\24\0\10\41\1\u01bc\3\41\11\0\16\41\2\0"+
+    "\3\41\1\0\6\41\2\0\1\41\24\0\1\41\1\u01bd"+
     "\12\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\41\24\0\2\41\1\u01bf\11\41\11\0\14\41\1\u01c0"+
+    "\1\41\24\0\2\41\1\u01be\11\41\11\0\14\41\1\u01bf"+
     "\1\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
-    "\14\41\11\0\16\41\2\0\3\41\1\0\4\41\1\u01c1"+
+    "\14\41\11\0\16\41\2\0\3\41\1\0\4\41\1\u01c0"+
     "\1\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
-    "\3\41\1\0\6\41\2\0\1\41\24\0\4\41\1\u01c2"+
-    "\7\41\11\0\14\41\1\u01c3\1\41\2\0\3\41\1\0"+
+    "\3\41\1\0\6\41\2\0\1\41\24\0\4\41\1\u01c1"+
+    "\7\41\11\0\14\41\1\u01c2\1\41\2\0\3\41\1\0"+
     "\6\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
-    "\3\41\1\0\2\41\1\u01c4\3\41\2\0\1\41\24\0"+
-    "\14\41\36\u0154\1\0\4\u0154\1\u0111\42\u0154\44\u0114\1\u01c5"+
-    "\41\u0114\11\0\14\41\1\u01c6\1\41\2\0\3\41\1\0"+
+    "\3\41\1\0\2\41\1\u01c3\3\41\2\0\1\41\24\0"+
+    "\14\41\36\u0153\1\0\4\u0153\1\u0110\42\u0153\44\u0113\1\u01c4"+
+    "\41\u0113\11\0\14\41\1\u01c5\1\41\2\0\3\41\1\0"+
     "\6\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
-    "\3\41\1\0\4\41\1\u01c7\1\41\2\0\1\41\24\0"+
-    "\14\41\11\0\14\41\1\u01c8\1\41\2\0\3\41\1\0"+
+    "\3\41\1\0\4\41\1\u01c6\1\41\2\0\1\41\24\0"+
+    "\14\41\11\0\14\41\1\u01c7\1\41\2\0\3\41\1\0"+
     "\6\41\2\0\1\41\24\0\14\41\11\0\16\41\2\0"+
-    "\3\41\1\0\6\41\2\0\1\41\24\0\2\41\1\u01c9"+
+    "\3\41\1\0\6\41\2\0\1\41\24\0\2\41\1\u01c8"+
     "\11\41\11\0\16\41\2\0\3\41\1\0\6\41\2\0"+
-    "\1\u01ca\24\0\14\41\11\0\4\41\1\u01cb\11\41\2\0"+
+    "\1\u01c9\24\0\14\41\11\0\4\41\1\u01ca\11\41\2\0"+
     "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
     "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
-    "\6\41\1\u01cc\5\41\11\0\6\41\1\u01cd\7\41\2\0"+
+    "\6\41\1\u01cb\5\41\11\0\6\41\1\u01cc\7\41\2\0"+
     "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
     "\16\41\2\0\3\41\1\0\6\41\2\0\1\41\24\0"+
-    "\2\41\1\u01ce\11\41\11\0\14\41\1\u01cf\1\41\2\0"+
+    "\2\41\1\u01cd\11\41\11\0\14\41\1\u01ce\1\41\2\0"+
     "\3\41\1\0\6\41\2\0\1\41\24\0\14\41\11\0"+
-    "\16\41\2\0\3\41\1\0\2\41\1\u01d0\3\41\2\0"+
+    "\16\41\2\0\3\41\1\0\2\41\1\u01cf\3\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\2\41\1\u01d1\3\41\2\0\1\41\24\0\14\41\11\0"+
-    "\14\41\1\u01d2\1\41\2\0\3\41\1\0\6\41\2\0"+
+    "\2\41\1\u01d0\3\41\2\0\1\41\24\0\14\41\11\0"+
+    "\14\41\1\u01d1\1\41\2\0\3\41\1\0\6\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\4\41\1\u01d3\1\41\2\0\1\41\24\0\14\41\11\0"+
-    "\14\41\1\u01d4\1\41\2\0\3\41\1\0\6\41\2\0"+
+    "\4\41\1\u01d2\1\41\2\0\1\41\24\0\14\41\11\0"+
+    "\14\41\1\u01d3\1\41\2\0\3\41\1\0\6\41\2\0"+
     "\1\41\24\0\14\41\11\0\16\41\2\0\3\41\1\0"+
-    "\6\41\2\0\1\41\24\0\1\u01d5\13\41\11\0\16\41"+
-    "\2\0\3\41\1\0\2\41\1\u01d6\3\41\2\0\1\41"+
-    "\24\0\14\41\11\0\14\41\1\u01d7\1\41\2\0\3\41"+
+    "\6\41\2\0\1\41\24\0\1\u01d4\13\41\11\0\16\41"+
+    "\2\0\3\41\1\0\2\41\1\u01d5\3\41\2\0\1\41"+
+    "\24\0\14\41\11\0\14\41\1\u01d6\1\41\2\0\3\41"+
     "\1\0\6\41\2\0\1\41\24\0\14\41\11\0\14\41"+
-    "\1\u01d8\1\41\2\0\3\41\1\0\6\41\2\0\1\41"+
+    "\1\u01d7\1\41\2\0\3\41\1\0\6\41\2\0\1\41"+
     "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\6\41\1\u01d9\5\41\11\0\16\41"+
-    "\2\0\3\41\1\0\4\41\1\u01da\1\41\2\0\1\41"+
+    "\2\0\1\41\24\0\6\41\1\u01d8\5\41\11\0\16\41"+
+    "\2\0\3\41\1\0\4\41\1\u01d9\1\41\2\0\1\41"+
     "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\4\41"+
-    "\1\u01db\1\41\2\0\1\41\24\0\14\41\11\0\12\41"+
-    "\1\u01dc\3\41\2\0\3\41\1\0\6\41\2\0\1\41"+
-    "\24\0\14\41\11\0\10\41\1\u01dd\5\41\2\0\3\41"+
+    "\1\u01da\1\41\2\0\1\41\24\0\14\41\11\0\12\41"+
+    "\1\u01db\3\41\2\0\3\41\1\0\6\41\2\0\1\41"+
+    "\24\0\14\41\11\0\10\41\1\u01dc\5\41\2\0\3\41"+
     "\1\0\6\41\2\0\1\41\24\0\14\41\11\0\4\41"+
-    "\1\u01de\11\41\2\0\3\41\1\0\6\41\2\0\1\41"+
+    "\1\u01dd\11\41\2\0\3\41\1\0\6\41\2\0\1\41"+
     "\24\0\14\41\11\0\16\41\2\0\3\41\1\0\6\41"+
-    "\2\0\1\41\24\0\4\41\1\u01df\7\41\11\0\16\41"+
+    "\2\0\1\41\24\0\4\41\1\u01de\7\41\11\0\16\41"+
     "\2\0\3\41\1\0\6\41\2\0\1\41\24\0\12\41"+
-    "\1\u01e0\1\41\11\0\14\41\1\u01e1\1\41\2\0\3\41"+
+    "\1\u01df\1\41\11\0\14\41\1\u01e0\1\41\2\0\3\41"+
     "\1\0\6\41\2\0\1\41\24\0\14\41\11\0\12\41"+
-    "\1\u01e2\3\41\2\0\3\41\1\0\6\41\2\0\1\41"+
+    "\1\u01e1\3\41\2\0\3\41\1\0\6\41\2\0\1\41"+
     "\24\0\14\41";
 
   private static int [] zzUnpackTrans() {
@@ -765,23 +764,23 @@ public class _GroovyLexer implements FlexLexer, GroovyTokenTypes {
   private static final String ZZ_ATTRIBUTE_PACKED_0 =
     "\21\0\1\1\6\0\1\11\1\1\1\11\27\1\2\11"+
     "\2\1\6\11\2\1\1\11\4\1\2\11\6\1\1\11"+
-    "\1\1\2\11\1\1\1\11\2\1\1\0\2\11\1\7"+
-    "\1\1\1\11\1\1\2\3\1\11\1\1\1\11\2\1"+
-    "\2\11\2\1\3\11\1\1\1\11\2\1\5\11\5\1"+
-    "\1\11\2\1\1\11\1\1\1\11\1\3\1\11\3\1"+
-    "\1\11\1\1\1\11\1\1\1\0\3\1\1\11\1\1"+
-    "\2\11\1\1\6\11\2\0\15\1\5\11\1\0\1\1"+
-    "\1\11\11\1\2\0\2\1\1\0\1\1\2\11\1\1"+
-    "\1\11\1\1\1\0\1\11\1\0\6\11\21\1\1\0"+
-    "\2\1\2\5\3\0\2\1\1\0\3\1\2\0\3\1"+
-    "\1\5\1\0\2\1\1\11\1\1\1\0\17\1\2\11"+
-    "\14\1\1\11\1\1\1\11\1\1\4\11\1\0\25\1"+
-    "\2\11\1\0\10\1\2\11\30\1\3\0\1\1\1\0"+
-    "\1\11\24\1\1\15\1\0\5\1\1\11\1\0\21\1"+
-    "\2\0\1\1\1\0\24\1\1\0\15\1\2\0\63\1";
+    "\1\1\2\11\1\1\1\11\3\1\2\11\1\7\1\1"+
+    "\1\11\1\1\2\3\1\11\1\1\1\11\2\1\2\11"+
+    "\2\1\3\11\1\1\1\11\2\1\5\11\5\1\1\11"+
+    "\2\1\1\11\1\1\1\11\1\3\1\11\3\1\1\11"+
+    "\1\1\1\11\1\1\1\0\3\1\1\11\1\1\2\11"+
+    "\1\1\6\11\2\0\15\1\5\11\1\0\1\1\1\11"+
+    "\11\1\2\0\2\1\1\0\1\1\2\11\1\1\1\11"+
+    "\1\1\1\0\1\11\1\0\6\11\20\1\1\0\2\1"+
+    "\2\5\3\0\2\1\1\0\3\1\2\0\3\1\1\5"+
+    "\1\0\2\1\1\11\1\1\1\0\17\1\2\11\14\1"+
+    "\1\11\1\1\1\11\1\1\4\11\1\0\25\1\2\11"+
+    "\1\0\10\1\2\11\30\1\3\0\1\1\1\0\1\11"+
+    "\24\1\1\15\1\0\5\1\1\11\1\0\21\1\2\0"+
+    "\1\1\1\0\24\1\1\0\15\1\2\0\63\1";
 
   private static int [] zzUnpackAttribute() {
-    int [] result = new int[482];
+    int [] result = new int[481];
     int offset = 0;
     offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
     return result;
index b9973b69465ca1b7e00d09028042814c691e83b6..5ca59ae96b4caa2097f8a7ecaf91c3170ad7e9e1 100644 (file)
@@ -282,6 +282,7 @@ mGSTRING_LITERAL = \"\"
 
 <IN_SINGLE_GSTRING> {
   {mGSTRING_SINGLE_CONTENT} (\\)?         {  return mGSTRING_CONTENT; }
+  \\                                      {  return mGSTRING_CONTENT; }
 
   \"                                      {  if (!gStringStack.isEmpty()) {
                                                gStringStack.pop();
index 601873753723880092801fb2bb9fcbb2a56aec2c..84397e5217212c668551901548b86ed00b1b8712 100644 (file)
@@ -69,6 +69,7 @@ public class ExpressionsParsingTest extends GroovyParsingTestCase {
   public void testgstring$str_error5() throws Throwable { doTest(); }
   public void testgstring$str_error6() throws Throwable { doTest(); }
   public void testgstring$str_error7() throws Throwable { doTest(); }
+  public void testgstring$str_error8() throws Throwable { doTest(); }
   public void testgstring$triple$triple1() throws Throwable { doTest(); }
   public void testgstring$triple$triple2() throws Throwable { doTest(); }
   public void testgstring$triple$triple3() throws Throwable { doTest(); }
diff --git a/plugins/groovy/testdata/parsing/groovy/expressions/gstring/str_error8.test b/plugins/groovy/testdata/parsing/groovy/expressions/gstring/str_error8.test
new file mode 100644 (file)
index 0000000..3106735
--- /dev/null
@@ -0,0 +1,8 @@
+"\
+-----
+Groovy script
+  Compound Gstring
+    PsiElement(Gstring begin)('"')
+    PsiElement(Gstring content)('\')
+    PsiErrorElement:String end expected
+      <empty list>
\ No newline at end of file