You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@netbeans.apache.org by GitBox <gi...@apache.org> on 2018/09/03 12:59:02 UTC

[GitHub] tmysik closed pull request #830: Fix ASTPHP5Scanner (Heredoc & Nowdoc syntaxes)

tmysik closed pull request #830: Fix ASTPHP5Scanner (Heredoc & Nowdoc syntaxes)
URL: https://github.com/apache/incubator-netbeans/pull/830
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/parser/ASTPHP5Scanner.java b/php/php.editor/src/org/netbeans/modules/php/editor/parser/ASTPHP5Scanner.java
index 9ab74353ea..8e3768582d 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/parser/ASTPHP5Scanner.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/parser/ASTPHP5Scanner.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 17/07/09 10:32 */
+/* The following code was generated by JFlex 1.4.3 on 18/06/21 0:39 */
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -33,8 +33,8 @@
 /**
  * This class is a scanner generated by
  * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 17/07/09 10:32 from the specification file
- * <tt>/home/junichi11/hg/web-main/php.editor/tools/ASTPHP5Scanner.flex</tt>
+ * on 18/06/21 0:39 from the specification file
+ * <tt>/home/junichi11/NetBeansProjects/netbeans-releases/php.editor/tools/ASTPHP5Scanner.flex</tt>
  */
 public class ASTPHP5Scanner implements Scanner {
 
@@ -181,59 +181,59 @@
   private static final int [] ZZ_ACTION = zzUnpackAction();
 
   private static final String ZZ_ACTION_PACKED_0 =
-    "\4\0\1\1\15\0\2\2\1\3\1\4\1\5\1\6"+
-    "\1\7\1\4\4\6\1\10\1\11\1\12\1\13\1\14"+
-    "\1\15\1\16\1\17\17\6\1\20\1\21\1\22\1\6"+
-    "\1\23\1\24\1\6\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\1\43\1\3\1\44\1\45\2\3\1\46\1\3"+
-    "\1\47\2\3\1\50\1\3\1\1\1\3\1\1\2\3"+
-    "\2\51\1\52\3\3\2\53\1\54\1\55\1\56\1\55"+
-    "\1\57\1\60\1\61\1\5\1\7\1\61\1\62\1\63"+
-    "\1\64\1\65\1\17\1\20\1\21\1\22\1\23\1\25"+
-    "\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35"+
-    "\1\66\1\67\1\70\1\71\2\3\3\72\2\71\1\73"+
-    "\1\2\1\0\1\74\1\75\1\2\1\76\2\0\1\77"+
-    "\6\6\1\100\1\101\2\0\3\6\1\102\2\6\2\0"+
-    "\1\103\3\0\1\104\1\0\1\105\1\106\1\107\7\6"+
-    "\1\110\12\6\1\111\12\6\1\112\1\113\1\114\1\115"+
-    "\1\116\1\117\1\6\12\0\1\6\1\120\1\121\1\120"+
-    "\1\122\1\0\1\123\1\124\1\125\1\126\1\127\1\130"+
-    "\1\131\1\132\1\133\1\134\1\135\1\136\1\137\4\0"+
-    "\2\103\2\140\1\141\1\142\1\140\3\0\1\103\3\143"+
-    "\3\0\2\1\1\103\2\144\1\0\1\145\10\0\1\146"+
-    "\1\0\1\147\1\150\2\0\1\151\2\0\1\152\1\153"+
-    "\1\154\2\0\1\76\1\0\1\155\7\6\2\76\1\156"+
-    "\1\6\1\157\2\6\1\0\1\160\6\6\1\161\3\6"+
-    "\1\162\2\6\1\163\1\6\1\164\1\165\23\6\1\166"+
-    "\1\167\12\0\10\6\1\170\1\171\1\172\2\0\1\173"+
-    "\1\0\1\174\1\0\2\130\2\136\1\0\1\175\1\45"+
-    "\1\175\1\47\1\175\1\176\1\1\1\176\2\1\1\175"+
-    "\1\177\1\0\1\177\1\0\2\150\1\200\2\0\6\6"+
-    "\1\201\1\202\1\6\1\203\23\6\1\204\12\6\1\205"+
-    "\1\6\1\206\5\6\12\0\11\6\5\0\1\207\3\0"+
-    "\1\45\1\47\1\1\2\0\1\6\1\210\5\6\1\211"+
-    "\1\6\1\212\1\213\4\6\1\214\1\6\1\215\1\216"+
-    "\3\6\1\217\2\6\1\220\1\6\1\221\2\6\1\222"+
-    "\1\223\1\224\4\6\1\225\1\226\2\6\1\227\2\6"+
-    "\5\0\1\230\6\0\11\6\2\231\5\0\4\232\2\233"+
-    "\1\0\2\6\1\234\2\6\1\235\7\6\1\236\7\6"+
-    "\1\237\1\240\1\241\1\6\1\0\1\242\1\243\2\6"+
-    "\4\0\1\244\5\0\1\245\11\6\6\0\1\246\6\6"+
-    "\1\247\3\6\1\250\1\251\1\252\1\6\1\253\3\6"+
-    "\1\254\1\0\1\255\1\6\1\256\3\0\1\257\1\0"+
-    "\1\6\1\260\7\6\2\261\4\0\3\6\1\262\1\263"+
-    "\5\6\1\264\1\6\1\265\1\266\1\6\1\0\1\6"+
-    "\1\267\1\270\1\6\1\271\3\6\1\272\2\6\5\0"+
-    "\2\6\1\273\1\274\1\6\1\275\2\6\1\276\1\6"+
-    "\1\0\1\277\1\300\2\6\1\301\2\6\5\0\1\302"+
-    "\1\303\1\6\1\304\1\305\1\6\1\306\2\6\1\307"+
-    "\1\6\10\0\5\6\7\0\1\310\1\311\1\312\2\6"+
-    "\1\0\1\313\2\0\1\314\1\6\5\0\1\6\1\315"+
-    "\3\0\1\6\7\0\1\316\7\0\1\75\1\0";
+    "\22\0\2\1\1\2\1\3\1\4\1\5\1\6\1\3"+
+    "\4\5\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+
+    "\1\16\17\5\1\17\1\20\1\21\1\5\1\22\1\23"+
+    "\1\5\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"+
+    "\1\2\1\43\1\44\2\2\1\45\1\2\1\46\2\2"+
+    "\1\47\1\2\1\50\1\2\2\50\2\51\2\52\4\2"+
+    "\2\53\1\2\1\54\1\55\1\54\1\56\1\57\1\60"+
+    "\1\4\1\6\1\60\1\61\1\62\1\63\1\64\1\16"+
+    "\1\17\1\20\1\21\1\22\1\24\1\25\1\26\1\27"+
+    "\1\30\1\31\1\32\1\33\1\34\1\65\1\66\1\67"+
+    "\1\70\2\2\3\71\2\70\1\72\1\1\1\0\1\73"+
+    "\1\74\1\1\1\75\2\0\1\76\6\5\1\77\1\100"+
+    "\2\0\3\5\1\101\2\5\2\0\1\102\3\0\1\103"+
+    "\1\0\1\104\1\105\1\106\7\5\1\107\12\5\1\110"+
+    "\12\5\1\111\1\112\1\113\1\114\1\115\1\116\1\5"+
+    "\12\0\1\5\1\117\1\120\1\117\1\121\1\0\1\122"+
+    "\1\123\1\124\1\125\1\126\1\127\1\130\1\131\1\132"+
+    "\1\133\1\134\1\135\1\136\4\0\2\102\2\137\1\140"+
+    "\1\141\1\137\3\0\1\102\3\142\3\0\1\50\2\0"+
+    "\1\143\2\0\1\144\10\0\1\145\2\0\1\146\1\0"+
+    "\1\147\1\150\2\0\1\151\2\0\1\152\1\153\1\154"+
+    "\2\0\1\75\1\0\1\155\7\5\2\75\1\156\1\5"+
+    "\1\157\2\5\1\0\1\160\6\5\1\161\3\5\1\162"+
+    "\2\5\1\163\1\5\1\164\1\165\23\5\1\166\1\167"+
+    "\12\0\10\5\1\170\1\171\1\172\2\0\1\173\1\0"+
+    "\1\174\1\0\2\127\2\135\1\0\1\175\1\44\1\175"+
+    "\1\46\1\175\1\176\1\0\1\177\1\0\1\200\1\50"+
+    "\1\0\1\201\1\0\1\201\1\0\2\150\1\202\2\0"+
+    "\6\5\1\203\1\204\1\5\1\205\23\5\1\206\12\5"+
+    "\1\207\1\5\1\210\5\5\12\0\11\5\5\0\1\211"+
+    "\3\0\1\44\1\46\1\176\3\0\1\5\1\212\5\5"+
+    "\1\213\1\5\1\214\1\215\4\5\1\216\1\5\1\217"+
+    "\1\220\3\5\1\221\2\5\1\222\1\5\1\223\2\5"+
+    "\1\224\1\225\1\226\4\5\1\227\1\230\2\5\1\231"+
+    "\2\5\5\0\1\232\6\0\11\5\2\233\5\0\3\234"+
+    "\2\235\1\0\2\5\1\236\2\5\1\237\7\5\1\240"+
+    "\7\5\1\241\1\242\1\243\1\5\1\0\1\244\1\245"+
+    "\2\5\4\0\1\246\5\0\1\247\11\5\6\0\1\250"+
+    "\6\5\1\251\3\5\1\252\1\253\1\254\1\5\1\255"+
+    "\3\5\1\256\1\0\1\257\1\5\1\260\3\0\1\261"+
+    "\1\0\1\5\1\262\7\5\2\263\4\0\3\5\1\264"+
+    "\1\265\5\5\1\266\1\5\1\267\1\270\1\5\1\0"+
+    "\1\5\1\271\1\272\1\5\1\273\3\5\1\274\2\5"+
+    "\5\0\2\5\1\275\1\276\1\5\1\277\2\5\1\300"+
+    "\1\5\1\0\1\301\1\302\2\5\1\303\2\5\5\0"+
+    "\1\304\1\305\1\5\1\306\1\307\1\5\1\310\2\5"+
+    "\1\311\1\5\10\0\5\5\7\0\1\312\1\313\1\314"+
+    "\2\5\1\0\1\315\2\0\1\316\1\5\5\0\1\5"+
+    "\1\317\3\0\1\5\7\0\1\320\7\0\1\74\1\0";
 
   private static int [] zzUnpackAction() {
-    int [] result = new int[785];
+    int [] result = new int[790];
     int offset = 0;
     offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
     return result;
@@ -269,97 +269,97 @@ private static int zzUnpackAction(String packed, int offset, int [] result) {
     "\0\u0fac\0\u0ff0\0\u1034\0\u1078\0\u10bc\0\u0550\0\u0550\0\u0550"+
     "\0\u0550\0\u0550\0\u0550\0\u1100\0\u0550\0\u1144\0\u1188\0\u11cc"+
     "\0\u0550\0\u1210\0\u1254\0\u1298\0\u12dc\0\u0550\0\u1320\0\u1364"+
-    "\0\u13a8\0\u13ec\0\u1430\0\u1474\0\u0550\0\u14b8\0\u0550\0\u14fc"+
-    "\0\u1540\0\u1584\0\u0550\0\u15c8\0\u0550\0\u0550\0\u160c\0\u1650"+
-    "\0\u0550\0\u1694\0\u16d8\0\u0550\0\u0550\0\u171c\0\u0550\0\u0550"+
+    "\0\u13a8\0\u13ec\0\u1430\0\u1474\0\u14b8\0\u0550\0\u14fc\0\u1540"+
+    "\0\u1584\0\u15c8\0\u160c\0\u0550\0\u1650\0\u1694\0\u0550\0\u16d8"+
+    "\0\u171c\0\u0550\0\u1760\0\u17a4\0\u0550\0\u0550\0\u17e8\0\u0550"+
     "\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550"+
     "\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550"+
-    "\0\u0550\0\u0550\0\u1760\0\u17a4\0\u17e8\0\u182c\0\u1870\0\u0550"+
-    "\0\u18b4\0\u0550\0\u18f8\0\u0550\0\u0484\0\u193c\0\u1980\0\u19c4"+
-    "\0\u1a08\0\u1a4c\0\u1a90\0\u1ad4\0\u0550\0\u1b18\0\u1b5c\0\u1ba0"+
-    "\0\u1be4\0\u1c28\0\u1c6c\0\u0550\0\u0550\0\u1cb0\0\u1cf4\0\u1d38"+
-    "\0\u1d7c\0\u1dc0\0\u07b4\0\u1e04\0\u1e48\0\u1e8c\0\u1100\0\u1ed0"+
-    "\0\u0880\0\u1f14\0\u1f58\0\u0550\0\u1f9c\0\u1fe0\0\u0550\0\u07b4"+
-    "\0\u2024\0\u2068\0\u20ac\0\u20f0\0\u2134\0\u2178\0\u21bc\0\u07b4"+
-    "\0\u2200\0\u2244\0\u2288\0\u22cc\0\u2310\0\u2354\0\u2398\0\u23dc"+
-    "\0\u2420\0\u2464\0\u07b4\0\u24a8\0\u24ec\0\u2530\0\u2574\0\u25b8"+
-    "\0\u25fc\0\u2640\0\u2684\0\u26c8\0\u270c\0\u0550\0\u0550\0\u0550"+
-    "\0\u0550\0\u2750\0\u0550\0\u2794\0\u27d8\0\u281c\0\u0e14\0\u2860"+
-    "\0\u28a4\0\u28e8\0\u292c\0\u2970\0\u29b4\0\u29f8\0\u2a3c\0\u2a80"+
-    "\0\u2ac4\0\u0550\0\u2b08\0\u2b4c\0\u0550\0\u2b90\0\u0550\0\u2bd4"+
-    "\0\u0550\0\u2c18\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550\0\u2c5c"+
-    "\0\u0550\0\u2ca0\0\u1188\0\u2ce4\0\u2d28\0\u2d6c\0\u2db0\0\u2ce4"+
-    "\0\u0550\0\u0550\0\u0550\0\u2d28\0\u1298\0\u2df4\0\u2e38\0\u2e7c"+
-    "\0\u2df4\0\u0550\0\u2e38\0\u13a8\0\u2ec0\0\u2f04\0\u2f48\0\u2f8c"+
-    "\0\u2fd0\0\u2ec0\0\u2f04\0\u14b8\0\u0550\0\u3014\0\u14fc\0\u1584"+
-    "\0\u1540\0\u3058\0\u309c\0\u30e0\0\u15c8\0\u0550\0\u3124\0\u0550"+
-    "\0\u3168\0\u31ac\0\u31f0\0\u0550\0\u17e8\0\u3234\0\u0550\0\u0550"+
-    "\0\u0550\0\u3278\0\u32bc\0\u3300\0\u3300\0\u0550\0\u3344\0\u3388"+
-    "\0\u33cc\0\u3410\0\u3454\0\u3498\0\u34dc\0\u1cb0\0\u1cf4\0\u07b4"+
-    "\0\u3520\0\u07b4\0\u3564\0\u35a8\0\u35ec\0\u0550\0\u3630\0\u3674"+
-    "\0\u36b8\0\u36fc\0\u3740\0\u3784\0\u07b4\0\u37c8\0\u380c\0\u3850"+
-    "\0\u07b4\0\u3894\0\u38d8\0\u391c\0\u3960\0\u07b4\0\u07b4\0\u39a4"+
-    "\0\u39e8\0\u3a2c\0\u3a70\0\u3ab4\0\u3af8\0\u3b3c\0\u3b80\0\u3bc4"+
-    "\0\u3c08\0\u3c4c\0\u3c90\0\u3cd4\0\u3d18\0\u3d5c\0\u3da0\0\u3de4"+
-    "\0\u3e28\0\u3e6c\0\u0550\0\u07b4\0\u3eb0\0\u3ef4\0\u3f38\0\u3f7c"+
-    "\0\u3fc0\0\u4004\0\u4048\0\u408c\0\u40d0\0\u4114\0\u4158\0\u419c"+
-    "\0\u41e0\0\u4224\0\u4268\0\u42ac\0\u42f0\0\u4334\0\u0550\0\u0550"+
-    "\0\u0550\0\u4378\0\u43bc\0\u0550\0\u4400\0\u4444\0\u4488\0\u0550"+
-    "\0\u44cc\0\u0550\0\u4510\0\u4554\0\u0550\0\u4598\0\u1144\0\u45dc"+
-    "\0\u1254\0\u0550\0\u4620\0\u13ec\0\u4664\0\u46a8\0\u1364\0\u0550"+
-    "\0\u46ec\0\u1584\0\u4730\0\u31ac\0\u31f0\0\u0550\0\u4774\0\u47b8"+
-    "\0\u47fc\0\u4840\0\u4884\0\u48c8\0\u490c\0\u4950\0\u07b4\0\u4994"+
-    "\0\u49d8\0\u07b4\0\u4a1c\0\u4a60\0\u4aa4\0\u4ae8\0\u4b2c\0\u4b70"+
-    "\0\u4bb4\0\u4bf8\0\u4c3c\0\u4c80\0\u4cc4\0\u4d08\0\u4d4c\0\u4d90"+
-    "\0\u4dd4\0\u4e18\0\u4e5c\0\u4ea0\0\u4ee4\0\u07b4\0\u4f28\0\u4f6c"+
-    "\0\u4fb0\0\u4ff4\0\u5038\0\u507c\0\u50c0\0\u5104\0\u5148\0\u518c"+
-    "\0\u07b4\0\u51d0\0\u07b4\0\u5214\0\u5258\0\u529c\0\u52e0\0\u5324"+
-    "\0\u5368\0\u53ac\0\u53f0\0\u5434\0\u5478\0\u54bc\0\u5500\0\u5544"+
-    "\0\u5588\0\u55cc\0\u5610\0\u5654\0\u5698\0\u56dc\0\u5720\0\u5764"+
-    "\0\u57a8\0\u57ec\0\u5830\0\u5874\0\u58b8\0\u58fc\0\u5940\0\u5984"+
-    "\0\u0550\0\u59c8\0\u5a0c\0\u5a50\0\u5a94\0\u5ad8\0\u5b1c\0\u5b60"+
-    "\0\u5ba4\0\u5be8\0\u07b4\0\u5c2c\0\u5c70\0\u5cb4\0\u5cf8\0\u5d3c"+
-    "\0\u07b4\0\u5d80\0\u07b4\0\u07b4\0\u5dc4\0\u5e08\0\u5e4c\0\u5e90"+
-    "\0\u07b4\0\u5ed4\0\u07b4\0\u07b4\0\u5f18\0\u5f5c\0\u5fa0\0\u5fe4"+
-    "\0\u6028\0\u606c\0\u07b4\0\u60b0\0\u07b4\0\u60f4\0\u6138\0\u07b4"+
-    "\0\u07b4\0\u07b4\0\u617c\0\u61c0\0\u6204\0\u6248\0\u628c\0\u07b4"+
-    "\0\u62d0\0\u6314\0\u07b4\0\u6358\0\u639c\0\u63e0\0\u6424\0\u6468"+
-    "\0\u64ac\0\u64f0\0\u0550\0\u6534\0\u6578\0\u65bc\0\u6600\0\u6644"+
-    "\0\u6688\0\u66cc\0\u6710\0\u6754\0\u6798\0\u67dc\0\u6820\0\u6864"+
-    "\0\u68a8\0\u68ec\0\u0550\0\u6930\0\u6974\0\u69b8\0\u69fc\0\u6a40"+
-    "\0\u6a84\0\u0550\0\u1144\0\u1254\0\u1364\0\u0550\0\u6ac8\0\u6b0c"+
-    "\0\u6b50\0\u6b94\0\u6bd8\0\u6c1c\0\u6c60\0\u07b4\0\u6ca4\0\u6ce8"+
-    "\0\u6d2c\0\u6d70\0\u6db4\0\u6df8\0\u6e3c\0\u07b4\0\u6e80\0\u6ec4"+
-    "\0\u6f08\0\u6f4c\0\u6f90\0\u6fd4\0\u7018\0\u07b4\0\u07b4\0\u07b4"+
-    "\0\u705c\0\u70a0\0\u07b4\0\u07b4\0\u70e4\0\u7128\0\u716c\0\u71b0"+
-    "\0\u71f4\0\u7238\0\u0550\0\u727c\0\u72c0\0\u7304\0\u7348\0\u738c"+
-    "\0\u0550\0\u73d0\0\u7414\0\u7458\0\u749c\0\u74e0\0\u7524\0\u7568"+
-    "\0\u75ac\0\u75f0\0\u7634\0\u7678\0\u76bc\0\u7700\0\u7744\0\u7788"+
-    "\0\u07b4\0\u77cc\0\u7810\0\u7854\0\u7898\0\u78dc\0\u7920\0\u7964"+
-    "\0\u79a8\0\u79ec\0\u7a30\0\u07b4\0\u07b4\0\u07b4\0\u7a74\0\u07b4"+
-    "\0\u7ab8\0\u7afc\0\u7b40\0\u7b84\0\u7bc8\0\u07b4\0\u7c0c\0\u0550"+
-    "\0\u7c50\0\u7c94\0\u7cd8\0\u0550\0\u7d1c\0\u7d60\0\u07b4\0\u7da4"+
-    "\0\u7de8\0\u7e2c\0\u7e70\0\u7eb4\0\u7ef8\0\u7f3c\0\u0550\0\u7f80"+
-    "\0\u7fc4\0\u8008\0\u804c\0\u8090\0\u80d4\0\u8118\0\u815c\0\u07b4"+
-    "\0\u07b4\0\u81a0\0\u81e4\0\u8228\0\u826c\0\u82b0\0\u07b4\0\u82f4"+
-    "\0\u07b4\0\u07b4\0\u8338\0\u837c\0\u83c0\0\u0550\0\u0550\0\u8404"+
-    "\0\u07b4\0\u8448\0\u848c\0\u84d0\0\u07b4\0\u8514\0\u8558\0\u859c"+
-    "\0\u85e0\0\u8624\0\u8668\0\u86ac\0\u86f0\0\u8734\0\u07b4\0\u07b4"+
-    "\0\u8778\0\u07b4\0\u87bc\0\u8800\0\u07b4\0\u8844\0\u8888\0\u07b4"+
-    "\0\u07b4\0\u88cc\0\u8910\0\u07b4\0\u8954\0\u8998\0\u89dc\0\u8a20"+
-    "\0\u8a64\0\u8aa8\0\u8aec\0\u07b4\0\u07b4\0\u8b30\0\u07b4\0\u07b4"+
-    "\0\u8b74\0\u0550\0\u8bb8\0\u8bfc\0\u07b4\0\u8c40\0\u8c84\0\u8cc8"+
-    "\0\u8d0c\0\u8d50\0\u8d94\0\u8dd8\0\u8e1c\0\u8e60\0\u8ea4\0\u8ee8"+
-    "\0\u8f2c\0\u8f70\0\u8fb4\0\u8ff8\0\u903c\0\u9080\0\u90c4\0\u9108"+
-    "\0\u914c\0\u9190\0\u07b4\0\u07b4\0\u07b4\0\u91d4\0\u9218\0\u925c"+
-    "\0\u0550\0\u92a0\0\u92e4\0\u07b4\0\u9328\0\u936c\0\u93b0\0\u93f4"+
-    "\0\u9438\0\u947c\0\u94c0\0\u936c\0\u9504\0\u9548\0\u958c\0\u95d0"+
-    "\0\u9614\0\u9658\0\u969c\0\u96e0\0\u9724\0\u9768\0\u97ac\0\u0550"+
-    "\0\u97f0\0\u9834\0\u9878\0\u98bc\0\u9900\0\u9944\0\u9988\0\u0550"+
-    "\0\u99cc";
+    "\0\u0550\0\u0550\0\u0550\0\u182c\0\u1870\0\u18b4\0\u18f8\0\u193c"+
+    "\0\u0550\0\u1980\0\u0550\0\u19c4\0\u0550\0\u0484\0\u1a08\0\u1a4c"+
+    "\0\u1a90\0\u1ad4\0\u1b18\0\u1b5c\0\u1ba0\0\u0550\0\u1be4\0\u1c28"+
+    "\0\u1c6c\0\u1cb0\0\u1cf4\0\u1d38\0\u0550\0\u0550\0\u1d7c\0\u1dc0"+
+    "\0\u1e04\0\u1e48\0\u1e8c\0\u07b4\0\u1ed0\0\u1f14\0\u1f58\0\u1100"+
+    "\0\u1f9c\0\u0880\0\u1fe0\0\u2024\0\u0550\0\u2068\0\u20ac\0\u0550"+
+    "\0\u07b4\0\u20f0\0\u2134\0\u2178\0\u21bc\0\u2200\0\u2244\0\u2288"+
+    "\0\u07b4\0\u22cc\0\u2310\0\u2354\0\u2398\0\u23dc\0\u2420\0\u2464"+
+    "\0\u24a8\0\u24ec\0\u2530\0\u07b4\0\u2574\0\u25b8\0\u25fc\0\u2640"+
+    "\0\u2684\0\u26c8\0\u270c\0\u2750\0\u2794\0\u27d8\0\u0550\0\u0550"+
+    "\0\u0550\0\u0550\0\u281c\0\u0550\0\u2860\0\u28a4\0\u28e8\0\u0e14"+
+    "\0\u292c\0\u2970\0\u29b4\0\u29f8\0\u2a3c\0\u2a80\0\u2ac4\0\u2b08"+
+    "\0\u2b4c\0\u2b90\0\u0550\0\u2bd4\0\u2c18\0\u0550\0\u2c5c\0\u0550"+
+    "\0\u2ca0\0\u0550\0\u2ce4\0\u0550\0\u0550\0\u0550\0\u0550\0\u0550"+
+    "\0\u2d28\0\u0550\0\u2d6c\0\u1188\0\u2db0\0\u2df4\0\u2e38\0\u2e7c"+
+    "\0\u2db0\0\u0550\0\u0550\0\u0550\0\u2df4\0\u1298\0\u2ec0\0\u2f04"+
+    "\0\u2f48\0\u2ec0\0\u0550\0\u2f04\0\u2f8c\0\u2fd0\0\u3014\0\u3058"+
+    "\0\u309c\0\u14fc\0\u0550\0\u30e0\0\u1540\0\u0550\0\u3124\0\u1584"+
+    "\0\u160c\0\u15c8\0\u3168\0\u31ac\0\u31f0\0\u1650\0\u0550\0\u3234"+
+    "\0\u1694\0\u0550\0\u3278\0\u0550\0\u32bc\0\u3300\0\u3344\0\u0550"+
+    "\0\u18b4\0\u3388\0\u0550\0\u0550\0\u0550\0\u33cc\0\u3410\0\u3454"+
+    "\0\u3454\0\u0550\0\u3498\0\u34dc\0\u3520\0\u3564\0\u35a8\0\u35ec"+
+    "\0\u3630\0\u1d7c\0\u1dc0\0\u07b4\0\u3674\0\u07b4\0\u36b8\0\u36fc"+
+    "\0\u3740\0\u0550\0\u3784\0\u37c8\0\u380c\0\u3850\0\u3894\0\u38d8"+
+    "\0\u07b4\0\u391c\0\u3960\0\u39a4\0\u07b4\0\u39e8\0\u3a2c\0\u3a70"+
+    "\0\u3ab4\0\u07b4\0\u07b4\0\u3af8\0\u3b3c\0\u3b80\0\u3bc4\0\u3c08"+
+    "\0\u3c4c\0\u3c90\0\u3cd4\0\u3d18\0\u3d5c\0\u3da0\0\u3de4\0\u3e28"+
+    "\0\u3e6c\0\u3eb0\0\u3ef4\0\u3f38\0\u3f7c\0\u3fc0\0\u0550\0\u07b4"+
+    "\0\u4004\0\u4048\0\u408c\0\u40d0\0\u4114\0\u4158\0\u419c\0\u41e0"+
+    "\0\u4224\0\u4268\0\u42ac\0\u42f0\0\u4334\0\u4378\0\u43bc\0\u4400"+
+    "\0\u4444\0\u4488\0\u0550\0\u0550\0\u0550\0\u44cc\0\u4510\0\u0550"+
+    "\0\u4554\0\u4598\0\u45dc\0\u0550\0\u4620\0\u0550\0\u4664\0\u46a8"+
+    "\0\u0550\0\u46ec\0\u1144\0\u4730\0\u1254\0\u4774\0\u47b8\0\u0550"+
+    "\0\u47fc\0\u0550\0\u4840\0\u4884\0\u0550\0\u48c8\0\u160c\0\u490c"+
+    "\0\u3300\0\u3344\0\u0550\0\u4950\0\u4994\0\u49d8\0\u4a1c\0\u4a60"+
+    "\0\u4aa4\0\u4ae8\0\u4b2c\0\u07b4\0\u4b70\0\u4bb4\0\u07b4\0\u4bf8"+
+    "\0\u4c3c\0\u4c80\0\u4cc4\0\u4d08\0\u4d4c\0\u4d90\0\u4dd4\0\u4e18"+
+    "\0\u4e5c\0\u4ea0\0\u4ee4\0\u4f28\0\u4f6c\0\u4fb0\0\u4ff4\0\u5038"+
+    "\0\u507c\0\u50c0\0\u07b4\0\u5104\0\u5148\0\u518c\0\u51d0\0\u5214"+
+    "\0\u5258\0\u529c\0\u52e0\0\u5324\0\u5368\0\u07b4\0\u53ac\0\u07b4"+
+    "\0\u53f0\0\u5434\0\u5478\0\u54bc\0\u5500\0\u5544\0\u5588\0\u55cc"+
+    "\0\u5610\0\u5654\0\u5698\0\u56dc\0\u5720\0\u5764\0\u57a8\0\u57ec"+
+    "\0\u5830\0\u5874\0\u58b8\0\u58fc\0\u5940\0\u5984\0\u59c8\0\u5a0c"+
+    "\0\u5a50\0\u5a94\0\u5ad8\0\u5b1c\0\u5b60\0\u0550\0\u5ba4\0\u5be8"+
+    "\0\u5c2c\0\u5c70\0\u5cb4\0\u0550\0\u5cf8\0\u5d3c\0\u5d80\0\u5dc4"+
+    "\0\u07b4\0\u5e08\0\u5e4c\0\u5e90\0\u5ed4\0\u5f18\0\u07b4\0\u5f5c"+
+    "\0\u07b4\0\u07b4\0\u5fa0\0\u5fe4\0\u6028\0\u606c\0\u07b4\0\u60b0"+
+    "\0\u07b4\0\u07b4\0\u60f4\0\u6138\0\u617c\0\u61c0\0\u6204\0\u6248"+
+    "\0\u07b4\0\u628c\0\u07b4\0\u62d0\0\u6314\0\u07b4\0\u07b4\0\u07b4"+
+    "\0\u6358\0\u639c\0\u63e0\0\u6424\0\u6468\0\u07b4\0\u64ac\0\u64f0"+
+    "\0\u07b4\0\u6534\0\u6578\0\u65bc\0\u6600\0\u6644\0\u6688\0\u66cc"+
+    "\0\u0550\0\u6710\0\u6754\0\u6798\0\u67dc\0\u6820\0\u6864\0\u68a8"+
+    "\0\u68ec\0\u6930\0\u6974\0\u69b8\0\u69fc\0\u6a40\0\u6a84\0\u6ac8"+
+    "\0\u0550\0\u6b0c\0\u6b50\0\u6b94\0\u6bd8\0\u6c1c\0\u6c60\0\u0550"+
+    "\0\u1144\0\u1254\0\u0550\0\u6ca4\0\u6ce8\0\u6d2c\0\u6d70\0\u6db4"+
+    "\0\u6df8\0\u6e3c\0\u07b4\0\u6e80\0\u6ec4\0\u6f08\0\u6f4c\0\u6f90"+
+    "\0\u6fd4\0\u7018\0\u07b4\0\u705c\0\u70a0\0\u70e4\0\u7128\0\u716c"+
+    "\0\u71b0\0\u71f4\0\u07b4\0\u07b4\0\u07b4\0\u7238\0\u727c\0\u07b4"+
+    "\0\u07b4\0\u72c0\0\u7304\0\u7348\0\u738c\0\u73d0\0\u7414\0\u0550"+
+    "\0\u7458\0\u749c\0\u74e0\0\u7524\0\u7568\0\u0550\0\u75ac\0\u75f0"+
+    "\0\u7634\0\u7678\0\u76bc\0\u7700\0\u7744\0\u7788\0\u77cc\0\u7810"+
+    "\0\u7854\0\u7898\0\u78dc\0\u7920\0\u7964\0\u07b4\0\u79a8\0\u79ec"+
+    "\0\u7a30\0\u7a74\0\u7ab8\0\u7afc\0\u7b40\0\u7b84\0\u7bc8\0\u7c0c"+
+    "\0\u07b4\0\u07b4\0\u07b4\0\u7c50\0\u07b4\0\u7c94\0\u7cd8\0\u7d1c"+
+    "\0\u7d60\0\u7da4\0\u07b4\0\u7de8\0\u0550\0\u7e2c\0\u7e70\0\u7eb4"+
+    "\0\u0550\0\u7ef8\0\u7f3c\0\u07b4\0\u7f80\0\u7fc4\0\u8008\0\u804c"+
+    "\0\u8090\0\u80d4\0\u8118\0\u0550\0\u815c\0\u81a0\0\u81e4\0\u8228"+
+    "\0\u826c\0\u82b0\0\u82f4\0\u8338\0\u07b4\0\u07b4\0\u837c\0\u83c0"+
+    "\0\u8404\0\u8448\0\u848c\0\u07b4\0\u84d0\0\u07b4\0\u07b4\0\u8514"+
+    "\0\u8558\0\u859c\0\u0550\0\u0550\0\u85e0\0\u07b4\0\u8624\0\u8668"+
+    "\0\u86ac\0\u07b4\0\u86f0\0\u8734\0\u8778\0\u87bc\0\u8800\0\u8844"+
+    "\0\u8888\0\u88cc\0\u8910\0\u07b4\0\u07b4\0\u8954\0\u07b4\0\u8998"+
+    "\0\u89dc\0\u07b4\0\u8a20\0\u8a64\0\u07b4\0\u07b4\0\u8aa8\0\u8aec"+
+    "\0\u07b4\0\u8b30\0\u8b74\0\u8bb8\0\u8bfc\0\u8c40\0\u8c84\0\u8cc8"+
+    "\0\u07b4\0\u07b4\0\u8d0c\0\u07b4\0\u07b4\0\u8d50\0\u0550\0\u8d94"+
+    "\0\u8dd8\0\u07b4\0\u8e1c\0\u8e60\0\u8ea4\0\u8ee8\0\u8f2c\0\u8f70"+
+    "\0\u8fb4\0\u8ff8\0\u903c\0\u9080\0\u90c4\0\u9108\0\u914c\0\u9190"+
+    "\0\u91d4\0\u9218\0\u925c\0\u92a0\0\u92e4\0\u9328\0\u936c\0\u07b4"+
+    "\0\u07b4\0\u07b4\0\u93b0\0\u93f4\0\u9438\0\u0550\0\u947c\0\u94c0"+
+    "\0\u07b4\0\u9504\0\u9548\0\u958c\0\u95d0\0\u9614\0\u9658\0\u969c"+
+    "\0\u9548\0\u96e0\0\u9724\0\u9768\0\u97ac\0\u97f0\0\u9834\0\u9878"+
+    "\0\u98bc\0\u9900\0\u9944\0\u9988\0\u0550\0\u99cc\0\u9a10\0\u9a54"+
+    "\0\u9a98\0\u9adc\0\u9b20\0\u9b64\0\u0550\0\u9ba8";
 
   private static int [] zzUnpackRowMap() {
-    int [] result = new int[785];
+    int [] result = new int[790];
     int offset = 0;
     offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
     return result;
@@ -392,847 +392,857 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) {
     "\1\104\1\105\1\106\1\107\1\110\1\111\1\112\1\113"+
     "\1\57\1\114\1\115\15\116\1\117\3\116\1\120\1\121"+
     "\1\116\1\122\57\116\15\123\1\124\3\123\1\125\1\123"+
-    "\1\126\1\127\57\123\15\130\1\131\1\132\1\130\1\132"+
-    "\1\133\2\130\1\134\57\130\3\135\1\136\2\135\3\136"+
-    "\1\135\2\136\13\135\22\136\3\135\1\136\2\135\3\136"+
-    "\17\135\1\136\2\135\104\137\3\140\1\141\2\140\3\141"+
-    "\2\140\1\141\2\140\1\142\1\140\1\142\6\140\22\141"+
-    "\3\140\1\141\2\140\3\141\17\140\1\141\2\140\3\143"+
-    "\1\144\2\143\3\144\1\143\2\144\13\143\22\144\3\143"+
-    "\1\144\2\143\3\144\17\143\1\144\2\143\104\145\3\146"+
-    "\1\147\2\146\3\147\1\146\2\147\2\146\3\40\6\146"+
-    "\22\147\1\150\2\146\1\147\2\146\3\147\17\146\1\147"+
-    "\2\146\3\151\1\152\2\151\3\152\1\151\2\152\13\151"+
-    "\22\152\3\151\1\152\2\151\3\152\17\151\1\152\2\151"+
-    "\1\25\1\153\1\154\1\36\1\155\1\156\3\36\1\153"+
-    "\2\36\1\25\4\157\1\41\1\160\1\161\1\162\1\45"+
-    "\1\163\22\36\1\164\1\165\1\166\1\36\1\167\1\73"+
-    "\3\36\1\170\1\171\1\172\1\173\1\174\1\175\1\176"+
-    "\1\177\1\200\1\106\1\107\1\201\1\111\1\112\1\202"+
-    "\1\36\2\157\64\203\1\204\17\203\64\205\1\206\17\205"+
-    "\16\207\1\210\1\207\1\211\31\207\1\212\13\207\1\213"+
-    "\3\207\1\213\11\207\26\0\1\214\55\0\104\215\63\23"+
-    "\1\216\103\23\1\0\2\23\1\217\3\23\1\220\6\23"+
-    "\1\221\2\23\105\0\1\26\1\222\1\223\1\0\1\26"+
-    "\3\0\1\26\73\0\1\222\1\224\2\0\1\222\3\0"+
-    "\1\222\14\0\1\225\56\0\1\36\1\0\1\36\1\0"+
-    "\1\36\1\226\6\36\12\0\5\36\1\227\1\230\4\36"+
-    "\1\231\1\232\5\36\3\0\1\233\2\0\3\36\17\0"+
-    "\1\36\6\0\1\234\21\0\1\235\56\0\1\26\1\222"+
-    "\1\223\1\0\1\26\1\236\1\0\1\237\1\26\73\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\7\36\1\240"+
-    "\12\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\3\36\1\241\4\36\12\0"+
-    "\5\36\1\242\2\36\1\243\1\244\10\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\243\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\5\0\1\42\4\0\11\36\1\245\10\36"+
-    "\3\0\1\36\2\0\3\36\1\0\1\246\15\0\1\36"+
-    "\1\247\2\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\20\0"+
-    "\3\40\66\0\1\250\2\0\3\250\1\0\2\250\13\0"+
-    "\22\250\3\0\1\250\2\0\3\250\17\0\1\250\2\0"+
-    "\15\251\1\252\3\251\1\253\1\254\1\251\1\255\57\251"+
-    "\26\0\1\256\23\0\1\257\32\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\3\36\1\260\1\36\1\261\2\36"+
-    "\1\262\3\36\1\263\5\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\262\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\11\36\1\264\3\36\1\265\4\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\266"+
-    "\1\0\10\36\12\0\1\267\6\36\1\270\12\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\1\271\3\36\1\272\2\36"+
-    "\1\273\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\5\36"+
-    "\1\274\2\36\1\275\11\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\275\3\0\1\36\1\0\1\276\1\0\2\36"+
-    "\1\277\5\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\2\36"+
-    "\1\300\5\36\12\0\7\36\1\301\3\36\1\302\6\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\11\36\1\303\10\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\1\36\1\304\14\36"+
-    "\1\305\3\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\306\1\0\10\36\12\0\22\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\1\307\21\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\1\310\21\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\15\36\1\311\4\36\3\0\1\36"+
+    "\1\126\1\127\57\123\15\130\1\131\1\132\1\130\1\133"+
+    "\1\134\2\130\1\135\57\130\3\136\1\137\2\136\3\137"+
+    "\1\136\2\137\13\136\22\137\3\136\1\137\2\136\3\137"+
+    "\17\136\1\137\2\136\3\25\1\140\2\25\3\140\1\25"+
+    "\2\140\13\25\22\140\3\25\1\140\2\25\3\140\17\25"+
+    "\1\140\2\25\3\141\1\142\2\141\3\142\2\141\1\142"+
+    "\2\141\1\143\1\141\1\143\6\141\22\142\3\141\1\142"+
+    "\2\141\3\142\17\141\1\142\2\141\3\144\1\145\2\144"+
+    "\3\145\1\144\2\145\13\144\22\145\3\144\1\145\2\144"+
+    "\3\145\17\144\1\145\2\144\3\25\1\146\2\25\3\146"+
+    "\1\25\2\146\13\25\22\146\3\25\1\146\2\25\3\146"+
+    "\17\25\1\146\2\25\3\147\1\150\2\147\3\150\1\147"+
+    "\2\150\2\147\3\40\6\147\22\150\1\151\2\147\1\150"+
+    "\2\147\3\150\17\147\1\150\2\147\3\152\1\153\2\152"+
+    "\3\153\1\152\2\153\13\152\22\153\3\152\1\153\2\152"+
+    "\3\153\17\152\1\153\2\152\1\25\1\154\1\155\1\36"+
+    "\1\156\1\157\3\36\1\154\2\36\1\25\4\160\1\41"+
+    "\1\161\1\162\1\163\1\45\1\164\22\36\1\165\1\166"+
+    "\1\167\1\36\1\170\1\73\3\36\1\171\1\172\1\173"+
+    "\1\174\1\175\1\176\1\177\1\200\1\201\1\106\1\107"+
+    "\1\202\1\111\1\112\1\203\1\36\2\160\64\204\1\205"+
+    "\17\204\64\206\1\207\17\206\16\210\1\211\1\210\1\212"+
+    "\31\210\1\213\13\210\1\214\3\210\1\214\11\210\26\0"+
+    "\1\215\55\0\104\216\63\23\1\217\103\23\1\0\2\23"+
+    "\1\220\3\23\1\221\6\23\1\222\2\23\105\0\1\26"+
+    "\1\223\1\224\1\0\1\26\3\0\1\26\73\0\1\223"+
+    "\1\225\2\0\1\223\3\0\1\223\14\0\1\226\56\0"+
+    "\1\36\1\0\1\36\1\0\1\36\1\227\6\36\12\0"+
+    "\5\36\1\230\1\231\4\36\1\232\1\233\5\36\3\0"+
+    "\1\234\2\0\3\36\17\0\1\36\6\0\1\235\21\0"+
+    "\1\236\56\0\1\26\1\223\1\224\1\0\1\26\1\237"+
+    "\1\0\1\240\1\26\73\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\7\36\1\241\12\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\3\36\1\242\4\36\12\0\5\36\1\243\2\36\1\244"+
+    "\1\245\10\36\3\0\1\36\2\0\3\36\17\0\1\244"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\5\0\1\42"+
+    "\4\0\11\36\1\246\10\36\3\0\1\36\2\0\3\36"+
+    "\1\0\1\247\15\0\1\36\1\250\2\0\1\36\1\0"+
+    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\20\0\3\40\66\0\1\251\2\0"+
+    "\3\251\1\0\2\251\13\0\22\251\3\0\1\251\2\0"+
+    "\3\251\17\0\1\251\2\0\15\252\1\253\3\252\1\254"+
+    "\1\255\1\252\1\256\57\252\26\0\1\257\23\0\1\260"+
+    "\32\0\1\36\1\0\1\36\1\0\10\36\12\0\3\36"+
+    "\1\261\1\36\1\262\2\36\1\263\3\36\1\264\5\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\263\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\11\36\1\265\3\36"+
+    "\1\266\4\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\267\1\0\10\36\12\0\1\270"+
+    "\6\36\1\271\12\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\1\272\3\36\1\273\2\36\1\274\12\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\7\36\1\312\3\36\1\313\6\36"+
+    "\1\0\10\36\12\0\5\36\1\275\2\36\1\276\11\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\276\3\0\1\36"+
+    "\1\0\1\277\1\0\2\36\1\300\5\36\12\0\22\36"+
     "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\4\36\1\314\4\36"+
-    "\1\315\10\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\30\0\1\316\22\0\1\317\1\320\57\0\1\321\23\0"+
-    "\1\322\104\0\1\323\31\0\1\36\1\0\1\36\1\0"+
-    "\2\36\1\324\5\36\12\0\22\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\11\0\1\325\1\326\6\0\1\327"+
-    "\7\0\1\330\1\0\1\331\1\332\1\333\2\0\1\334"+
-    "\1\335\1\336\40\0\1\335\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\1\36"+
-    "\1\337\1\36\17\0\1\36\30\0\1\340\103\0\1\341"+
-    "\23\0\1\342\10\0\1\343\1\0\1\344\44\0\1\345"+
-    "\35\0\1\346\45\0\1\347\35\0\1\350\1\115\44\0"+
-    "\1\351\23\0\1\352\57\0\1\353\40\0\1\354\42\0"+
-    "\1\355\41\0\1\356\41\0\1\357\127\0\1\360\17\0"+
-    "\1\361\11\0\15\247\1\362\64\247\1\254\1\247\15\116"+
-    "\1\363\3\116\1\364\1\0\1\116\1\365\166\116\1\366"+
-    "\2\116\3\366\1\116\1\367\1\366\1\116\1\363\3\116"+
-    "\1\370\1\371\1\116\1\372\2\116\22\366\3\116\1\366"+
-    "\2\116\3\366\17\116\1\366\17\116\1\363\3\116\1\373"+
-    "\1\371\1\116\1\374\57\116\15\123\1\375\3\123\1\376"+
-    "\1\123\1\0\1\377\166\123\1\366\2\123\3\366\1\123"+
-    "\1\u0100\1\366\1\123\1\375\3\123\1\u0101\1\123\1\u0102"+
-    "\1\372\2\123\22\366\3\123\1\366\2\123\3\366\17\123"+
-    "\1\366\17\123\1\375\3\123\1\373\1\123\1\u0102\1\u0103"+
-    "\57\123\15\130\1\u0104\1\132\1\130\1\132\1\u0105\2\130"+
-    "\1\u0106\75\130\1\132\1\130\1\132\66\130\1\u0107\2\130"+
-    "\3\u0107\1\130\1\u0108\1\u0107\1\130\1\u0104\1\132\1\130"+
-    "\1\132\1\u0105\2\130\1\u0106\2\130\22\u0107\3\130\1\u0107"+
-    "\2\130\3\u0107\17\130\1\u0107\5\130\1\366\2\130\3\366"+
-    "\1\130\1\u0109\1\366\1\130\1\u0104\1\132\1\130\1\132"+
-    "\1\u010a\2\130\1\372\2\130\22\366\3\130\1\366\2\130"+
-    "\3\366\17\130\1\366\17\130\1\u0104\1\132\1\130\1\132"+
-    "\1\373\2\130\1\u010b\57\130\1\0\1\u010c\1\0\1\u010c"+
-    "\1\0\10\u010c\1\0\1\u010d\1\0\1\u010d\4\0\1\u010e"+
-    "\1\0\22\u010c\3\0\1\u010c\2\0\3\u010c\17\0\1\u010c"+
-    "\2\0\16\u010f\1\u0110\1\u010f\1\u0110\64\u010f\1\u0111\1\u010f"+
-    "\1\u0111\1\u010f\5\u0111\1\u010f\1\u0111\2\u010f\1\0\1\u010f"+
-    "\1\0\4\u010f\1\u0112\1\u010f\22\u0111\3\u010f\1\u0111\2\u010f"+
-    "\3\u0111\17\u010f\1\u0111\5\u010f\1\u0113\2\u010f\3\u0113\1\u010f"+
-    "\1\u0114\1\u0113\2\u010f\1\u0110\1\u010f\1\u0110\6\u010f\22\u0113"+
-    "\3\u010f\1\u0113\2\u010f\3\u0113\17\u010f\1\u0113\2\u010f\1\0"+
-    "\1\u0115\1\0\1\u0115\1\0\10\u0115\1\0\1\u0116\1\0"+
-    "\1\u0116\4\0\1\u0117\1\0\22\u0115\3\0\1\u0115\2\0"+
-    "\3\u0115\17\0\1\u0115\3\0\1\147\1\0\1\147\1\0"+
-    "\10\147\12\0\22\147\3\0\1\147\2\0\3\147\17\0"+
-    "\1\147\54\0\1\u0118\32\0\1\152\1\0\1\152\1\0"+
-    "\10\152\12\0\22\152\3\0\1\152\2\0\3\152\17\0"+
-    "\1\152\3\0\1\153\3\0\1\153\3\0\1\153\73\0"+
-    "\1\u0119\3\0\1\u0119\1\u011a\1\0\1\u011b\1\u0119\72\0"+
-    "\64\203\1\0\17\203\65\0\1\u011c\16\0\64\u011d\1\u011e"+
-    "\103\u011d\1\u011e\1\u011f\16\u011d\16\207\1\210\1\207\1\211"+
-    "\31\207\1\210\13\207\1\210\3\207\1\210\11\207\16\0"+
-    "\1\210\137\0\1\u0120\31\0\63\23\1\0\2\23\1\0"+
-    "\3\23\1\0\6\23\1\0\2\23\26\0\1\u0121\103\0"+
-    "\1\u0121\21\0\1\u0122\70\0\1\u0123\47\0\1\222\1\0"+
-    "\1\223\1\0\1\222\3\0\1\222\73\0\1\u0124\2\0"+
-    "\1\u0125\1\u0124\3\0\1\u0124\37\0\1\u0125\34\0\1\u0126"+
-    "\102\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u0127"+
-    "\1\u0128\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\1\0\1\36\1\0\2\36\1\301\5\36\12\0\7\36"+
+    "\1\302\3\36\1\303\6\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
+    "\12\0\11\36\1\304\10\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
+    "\12\0\1\36\1\305\14\36\1\306\3\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\307"+
+    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
+    "\12\0\1\310\21\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\1\311\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\15\36"+
+    "\1\312\4\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
+    "\1\313\3\36\1\314\6\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
+    "\12\0\4\36\1\315\4\36\1\316\10\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\30\0\1\317\22\0\1\320"+
+    "\1\321\57\0\1\322\23\0\1\323\104\0\1\324\31\0"+
+    "\1\36\1\0\1\36\1\0\2\36\1\325\5\36\12\0"+
+    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\11\0"+
+    "\1\326\1\327\6\0\1\330\7\0\1\331\1\0\1\332"+
+    "\1\333\1\334\2\0\1\335\1\336\1\337\40\0\1\336"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
+    "\3\0\1\36\2\0\1\36\1\340\1\36\17\0\1\36"+
+    "\30\0\1\341\103\0\1\342\23\0\1\343\10\0\1\344"+
+    "\1\0\1\345\44\0\1\346\35\0\1\347\45\0\1\350"+
+    "\35\0\1\351\1\115\44\0\1\352\23\0\1\353\57\0"+
+    "\1\354\40\0\1\355\42\0\1\356\41\0\1\357\41\0"+
+    "\1\360\127\0\1\361\17\0\1\362\11\0\15\250\1\363"+
+    "\64\250\1\255\1\250\15\116\1\364\3\116\1\365\1\0"+
+    "\1\116\1\366\166\116\1\367\2\116\3\367\1\116\1\370"+
+    "\1\367\1\116\1\364\3\116\1\371\1\372\1\116\1\373"+
+    "\2\116\22\367\3\116\1\367\2\116\3\367\17\116\1\367"+
+    "\17\116\1\364\3\116\1\374\1\372\1\116\1\375\57\116"+
+    "\15\123\1\376\3\123\1\377\1\123\1\0\1\u0100\166\123"+
+    "\1\367\2\123\3\367\1\123\1\u0101\1\367\1\123\1\376"+
+    "\3\123\1\u0102\1\123\1\u0103\1\373\2\123\22\367\3\123"+
+    "\1\367\2\123\3\367\17\123\1\367\17\123\1\376\3\123"+
+    "\1\374\1\123\1\u0103\1\u0104\57\123\15\130\1\u0105\1\0"+
+    "\1\130\1\0\1\u0106\2\130\1\u0107\166\130\1\u0108\2\130"+
+    "\3\u0108\1\130\2\u0108\1\130\1\u0105\1\0\1\130\1\0"+
+    "\1\u0106\2\130\1\u0107\2\130\22\u0108\3\130\1\u0108\2\130"+
+    "\3\u0108\17\130\1\u0108\5\130\1\u0108\2\130\3\u0108\1\130"+
+    "\2\u0108\1\130\1\u0105\1\u0109\1\130\1\0\1\u0106\2\130"+
+    "\1\u0107\2\130\22\u0108\3\130\1\u0108\2\130\3\u0108\17\130"+
+    "\1\u0108\2\130\3\0\1\367\2\0\3\367\1\0\2\367"+
+    "\10\0\1\373\2\0\22\367\3\0\1\367\2\0\3\367"+
+    "\17\0\1\367\23\0\1\374\63\0\1\u010a\1\0\1\u010a"+
+    "\1\0\10\u010a\1\0\1\u010b\1\0\1\u010b\4\0\1\u010c"+
+    "\1\0\22\u010a\3\0\1\u010a\2\0\3\u010a\17\0\1\u010a"+
+    "\3\0\1\u010d\1\0\1\u010d\1\0\10\u010d\1\0\1\u010e"+
+    "\1\0\1\u010e\4\0\1\u010f\1\0\22\u010d\3\0\1\u010d"+
+    "\2\0\3\u010d\17\0\1\u010d\2\0\16\u0110\1\u0111\1\u0110"+
+    "\1\u0111\64\u0110\1\u0112\1\u0110\1\u0112\1\u0110\5\u0112\1\u0110"+
+    "\1\u0112\2\u0110\1\0\1\u0110\1\0\4\u0110\1\u0113\1\u0110"+
+    "\22\u0112\3\u0110\1\u0112\2\u0110\3\u0112\17\u0110\1\u0112\5\u0110"+
+    "\1\u0114\2\u0110\3\u0114\1\u0110\1\u0115\1\u0114\2\u0110\1\u0111"+
+    "\1\u0110\1\u0111\6\u0110\22\u0114\3\u0110\1\u0114\2\u0110\3\u0114"+
+    "\17\u0110\1\u0114\2\u0110\1\0\1\u0116\1\0\1\u0116\1\0"+
+    "\10\u0116\1\0\1\u0117\1\0\1\u0117\4\0\1\u0118\1\0"+
+    "\22\u0116\3\0\1\u0116\2\0\3\u0116\17\0\1\u0116\3\0"+
+    "\1\u0119\1\0\1\u0119\1\0\10\u0119\1\0\1\u011a\1\0"+
+    "\1\u011a\4\0\1\u011b\1\0\22\u0119\3\0\1\u0119\2\0"+
+    "\3\u0119\17\0\1\u0119\3\0\1\150\1\0\1\150\1\0"+
+    "\10\150\12\0\22\150\3\0\1\150\2\0\3\150\17\0"+
+    "\1\150\54\0\1\u011c\32\0\1\153\1\0\1\153\1\0"+
+    "\10\153\12\0\22\153\3\0\1\153\2\0\3\153\17\0"+
+    "\1\153\3\0\1\154\3\0\1\154\3\0\1\154\73\0"+
+    "\1\u011d\3\0\1\u011d\1\u011e\1\0\1\u011f\1\u011d\72\0"+
+    "\64\204\1\0\17\204\65\0\1\u0120\16\0\64\u0121\1\u0122"+
+    "\103\u0121\1\u0122\1\u0123\16\u0121\16\210\1\211\1\210\1\212"+
+    "\31\210\1\211\13\210\1\211\3\210\1\211\11\210\16\0"+
+    "\1\211\137\0\1\u0124\31\0\63\23\1\0\2\23\1\0"+
+    "\3\23\1\0\6\23\1\0\2\23\26\0\1\u0125\103\0"+
+    "\1\u0125\21\0\1\u0126\70\0\1\u0127\47\0\1\223\1\0"+
+    "\1\224\1\0\1\223\3\0\1\223\73\0\1\u0128\2\0"+
+    "\1\u0129\1\u0128\3\0\1\u0128\37\0\1\u0129\34\0\1\u012a"+
+    "\102\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u012b"+
+    "\1\u012c\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
     "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\2\36"+
-    "\1\u0129\17\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\1\u012d\17\36\3\0\1\36\2\0\3\36\17\0\1\36"+
     "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\15\36"+
-    "\1\u012a\4\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\1\u012e\4\36\3\0\1\36\2\0\3\36\17\0\1\36"+
     "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\10\36"+
-    "\1\u012b\11\36\3\0\1\36\2\0\3\36\17\0\1\u012b"+
+    "\1\u012f\11\36\3\0\1\36\2\0\3\36\17\0\1\u012f"+
     "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\21\36"+
-    "\1\u012c\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\2\36\1\u012d\5\36\12\0"+
+    "\1\u0130\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\2\36\1\u0131\5\36\12\0"+
     "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\u012e\1\0\1\u012e\1\0\1\u012e\1\0\3\u012e\17\0"+
-    "\2\u012e\2\0\1\u012e\53\0\1\u012f\3\0\1\u012f\73\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\11\36\1\u0130"+
+    "\1\u0132\1\0\1\u0132\1\0\1\u0132\1\0\3\u0132\17\0"+
+    "\2\u0132\2\0\1\u0132\53\0\1\u0133\3\0\1\u0133\73\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\11\36\1\u0134"+
     "\10\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\10\36\1\u0131"+
-    "\11\36\3\0\1\36\2\0\3\36\17\0\1\u0131\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u0132"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\10\36\1\u0135"+
+    "\11\36\3\0\1\36\2\0\3\36\17\0\1\u0135\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u0136"+
     "\17\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\11\36\1\u0133"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\11\36\1\u0137"+
     "\10\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\u0134\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\65\0\1\u0135\21\0"+
-    "\1\250\1\0\1\250\1\0\10\250\12\0\22\250\3\0"+
-    "\1\250\2\0\3\250\17\0\1\250\2\0\107\251\1\0"+
-    "\2\251\3\0\2\251\1\0\1\251\1\252\3\251\1\253"+
-    "\1\254\1\251\1\0\2\251\22\0\3\251\1\0\2\251"+
-    "\3\0\17\251\1\0\17\251\1\252\3\251\1\0\1\254"+
-    "\1\251\1\255\57\251\26\0\1\u0136\56\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\1\36\1\u0137\4\36\1\u0138"+
-    "\1\36\1\u0139\11\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\u0139\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\10\36\1\u013a\11\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\u013a\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\21\36\1\u013b\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u013c\5\36"+
-    "\12\0\12\36\1\u013d\7\36\3\0\1\36\2\0\3\36"+
+    "\1\36\1\0\1\u0138\1\0\10\36\12\0\22\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\36\65\0\1\u0139\21\0"+
+    "\1\251\1\0\1\251\1\0\10\251\12\0\22\251\3\0"+
+    "\1\251\2\0\3\251\17\0\1\251\2\0\107\252\1\0"+
+    "\2\252\3\0\2\252\1\0\1\252\1\253\3\252\1\254"+
+    "\1\255\1\252\1\0\2\252\22\0\3\252\1\0\2\252"+
+    "\3\0\17\252\1\0\17\252\1\253\3\252\1\0\1\255"+
+    "\1\252\1\256\57\252\26\0\1\u013a\56\0\1\36\1\0"+
+    "\1\36\1\0\10\36\12\0\1\36\1\u013b\4\36\1\u013c"+
+    "\1\36\1\u013d\11\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\u013d\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\10\36\1\u013e\11\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\u013e\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\21\36\1\u013f\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u0140\5\36"+
+    "\12\0\12\36\1\u0141\7\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\11\36\1\u013e\10\36\3\0\1\36\2\0\3\36"+
+    "\12\0\11\36\1\u0142\10\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\3\36\1\u013f\2\36\1\u0140\13\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u0141"+
+    "\12\0\3\36\1\u0143\2\36\1\u0144\13\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u0145"+
     "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\5\36\1\u0142\14\36\3\0\1\36\2\0\3\36"+
+    "\12\0\5\36\1\u0146\14\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\5\36\1\u0143\14\36\3\0\1\36\2\0\3\36"+
+    "\12\0\5\36\1\u0147\14\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\11\36\1\u0144\10\36\3\0\1\36\2\0\3\36"+
+    "\12\0\11\36\1\u0148\10\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\10\36\1\u0145\11\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\u0145\3\0\1\36\1\0\1\u0146\1\0\10\36"+
+    "\12\0\10\36\1\u0149\11\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\u0149\3\0\1\36\1\0\1\u014a\1\0\10\36"+
     "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
     "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\16\36"+
-    "\1\u0147\3\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\1\u014b\3\36\3\0\1\36\2\0\3\36\17\0\1\36"+
     "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\14\36"+
-    "\1\u0148\5\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\1\u014c\5\36\3\0\1\36\2\0\3\36\17\0\1\36"+
     "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
-    "\1\u0149\6\36\1\u014a\2\36\1\u014b\6\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\u014a\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\5\36\1\u014c\14\36\3\0\1\36"+
+    "\1\u014d\6\36\1\u014e\2\36\1\u014f\6\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\u014e\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\5\36\1\u0150\14\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\2\36\1\u014d\5\36\12\0\7\36\1\u014e\12\36"+
+    "\1\0\2\36\1\u0151\5\36\12\0\7\36\1\u0152\12\36"+
     "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\2\36\1\u014f\5\36\12\0\22\36"+
+    "\1\0\1\36\1\0\2\36\1\u0153\5\36\12\0\22\36"+
     "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\1\u0150\21\36\3\0"+
+    "\1\0\1\36\1\0\10\36\12\0\1\u0154\21\36\3\0"+
     "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\1\36\1\u0151\20\36\3\0"+
-    "\1\36\2\0\2\36\1\u0152\17\0\1\36\3\0\1\36"+
-    "\1\0\1\u0153\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\1\36\1\0\10\36\12\0\1\36\1\u0155\20\36\3\0"+
+    "\1\36\2\0\2\36\1\u0156\17\0\1\36\3\0\1\36"+
+    "\1\0\1\u0157\1\0\10\36\12\0\22\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\10\36\1\u0154\11\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\u0154\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\1\u0155\21\36\3\0\1\36\2\0"+
+    "\1\0\10\36\12\0\10\36\1\u0158\11\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\u0158\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\1\u0159\21\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\1\36\1\u015a\20\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\7\36\1\u015b\12\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\3\36\1\u015c\4\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\1\u015d\6\36\1\u015e\12\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\30\0\1\u015f\56\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\11\36\1\u0160\10\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\42\0\1\u0161"+
+    "\72\0\1\u0162\6\0\1\u0163\101\0\1\u0164\105\0\1\u0165"+
+    "\107\0\1\u0166\75\0\1\u0167\57\0\1\u0168\123\0\1\u0169"+
+    "\56\0\1\u016a\101\0\1\36\1\0\1\36\1\0\10\36"+
+    "\12\0\1\36\1\u016b\1\u016c\1\u016d\1\36\1\u016e\1\u016f"+
+    "\4\36\1\u0170\1\u0171\1\u0172\4\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\30\0\1\u0173\127\0\1\u0174\57\0"+
+    "\1\u0175\34\0\1\u0176\57\0\1\u0177\41\0\1\u0177\30\0"+
+    "\1\u0178\73\0\3\u0179\43\0\1\u017a\12\0\1\u017b\22\0"+
+    "\1\u017c\1\0\1\u017d\101\0\1\u017e\1\0\1\u017f\63\0"+
+    "\104\250\3\116\1\0\2\116\3\0\2\116\1\0\1\116"+
+    "\1\364\3\116\1\371\1\372\1\116\1\0\2\116\22\0"+
+    "\3\116\1\0\2\116\3\0\17\116\1\0\17\116\1\364"+
+    "\3\116\1\0\1\372\1\116\1\375\57\116\1\0\1\367"+
+    "\1\0\1\367\1\0\10\367\12\0\22\367\1\u0180\2\0"+
+    "\1\367\2\0\3\367\12\0\1\u0181\4\0\1\367\2\0"+
+    "\1\116\1\370\1\116\1\370\1\116\10\370\1\364\3\116"+
+    "\1\365\1\0\1\116\1\366\2\116\22\370\1\u0182\2\116"+
+    "\1\370\2\116\3\370\12\116\1\u0183\4\116\1\370\2\116"+
+    "\3\123\1\0\2\123\3\0\2\123\1\0\1\123\1\376"+
+    "\3\123\1\u0102\1\123\1\u0103\1\0\2\123\22\0\3\123"+
+    "\1\0\2\123\3\0\17\123\1\0\17\123\1\376\3\123"+
+    "\1\0\1\123\1\u0103\1\u0104\60\123\1\u0101\1\123\1\u0101"+
+    "\1\123\10\u0101\1\376\3\123\1\377\1\123\1\0\1\u0100"+
+    "\2\123\22\u0101\1\u0184\2\123\1\u0101\2\123\3\u0101\12\123"+
+    "\1\u0185\4\123\1\u0101\2\123\16\130\1\0\1\130\1\0"+
+    "\66\130\1\u0186\2\130\3\u0186\2\130\1\u0186\1\130\1\u0105"+
+    "\1\0\1\130\1\0\1\u0187\2\130\1\u0188\2\130\22\u0186"+
+    "\3\130\1\u0186\2\130\3\u0186\17\130\1\u0186\17\130\1\u0105"+
+    "\1\0\1\130\1\0\1\u0188\2\130\1\u0189\60\130\1\u0108"+
+    "\1\130\1\u0108\1\130\10\u0108\1\u0105\1\u018a\1\130\1\u018a"+
+    "\1\u0106\2\130\1\u0107\1\u018b\1\130\22\u0108\3\130\1\u0108"+
+    "\2\130\3\u0108\17\130\1\u0108\2\130\3\0\1\u018c\2\0"+
+    "\3\u018c\1\0\2\u018c\13\0\22\u018c\3\0\1\u018c\2\0"+
+    "\3\u018c\17\0\1\u018c\20\0\1\u010b\1\0\1\u010b\101\0"+
+    "\1\u010e\1\0\1\u010e\63\0\16\u0110\1\0\1\u0110\1\0"+
+    "\64\u0110\1\u0114\1\u0110\1\u0114\1\u0110\5\u0114\1\u0115\1\u0114"+
+    "\1\u0115\1\u0110\1\u018d\1\u0110\1\u018d\4\u0110\1\u018e\1\u0110"+
+    "\22\u0114\3\u0110\1\u0114\2\u0110\3\u0114\17\u0110\1\u0114\3\u0110"+
+    "\1\u0115\1\u0110\1\u0115\1\u0110\10\u0115\1\u0110\1\u018f\1\u0110"+
+    "\1\u018f\4\u0110\1\u0190\1\u0110\22\u0115\3\u0110\1\u0115\2\u0110"+
+    "\3\u0115\17\u0110\1\u0115\2\u0110\16\0\1\u0117\1\0\1\u0117"+
+    "\101\0\1\u011a\1\0\1\u011a\64\0\1\u011d\3\0\1\u011d"+
+    "\3\0\1\u011d\73\0\1\u0191\1\0\1\u0191\1\0\1\u0191"+
+    "\1\0\3\u0191\17\0\2\u0191\2\0\1\u0191\53\0\1\u0192"+
+    "\3\0\1\u0192\72\0\64\u0121\1\u0122\1\u0193\16\u0121\44\0"+
+    "\1\u0194\77\0\1\u0195\44\0\1\u0128\3\0\1\u0128\3\0"+
+    "\1\u0128\73\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\1\36\1\u0145\20\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\u0196\1\0\10\36\12\0"+
+    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\1\u0197\1\36"+
+    "\1\u0198\1\u0199\4\36\1\u019a\5\36\1\u019b\3\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\u019a\3\0\1\36\1\0"+
+    "\1\36\1\0\10\36\12\0\7\36\1\u019c\12\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
+    "\1\u019d\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\1\36\1\u019e\20\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\13\36\1\u019f\6\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\1\36\1\u01a0\20\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\2\36\1\u01a1\5\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\2\36\1\u01a2\5\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\65\0\1\u0176\21\0\1\36\1\0"+
+    "\1\u01a3\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\13\36\1\u01a4\6\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\1\36\1\u01a5\20\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u01a6\1\0"+
+    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\13\36\1\u01a7\6\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\1\u01a8\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
+    "\1\u01a9\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u01aa\5\36"+
+    "\12\0\1\u01ab\21\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\13\36\1\u01ac\6\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\2\36\1\u01ad"+
+    "\5\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\6\36\1\u01ae\13\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\u01af\1\0\10\36\12\0"+
+    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\u01b0\1\0\10\36\12\0\22\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
+    "\1\u01b1\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\6\36\1\u01b2\13\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u01b3\1\0"+
+    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\13\36\1\u01b4\6\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\1\36\1\u01b5\6\36\1\u01b6\11\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\u01b6\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\10\36\1\u01b7\11\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\u01b7\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\5\36\1\u01b8\14\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\1\36\1\u01b9\20\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\1\36\1\u01ba\20\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\4\36\1\u01bb\15\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\4\36\1\u01bc\15\36\3\0\1\36\2\0"+
     "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\1\36\1\u0156\20\36\3\0\1\36\2\0"+
+    "\10\36\12\0\13\36\1\u01bd\6\36\3\0\1\36\2\0"+
     "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\7\36\1\u0157\12\36\3\0\1\36\2\0"+
+    "\10\36\12\0\1\36\1\u01be\20\36\3\0\1\36\2\0"+
     "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\3\36\1\u0158\4\36\12\0\22\36\3\0\1\36\2\0"+
+    "\10\36\12\0\13\36\1\u01bf\6\36\3\0\1\36\2\0"+
     "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\1\u0159\6\36\1\u015a\12\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\30\0\1\u015b\56\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\11\36\1\u015c\10\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\42\0\1\u015d"+
-    "\72\0\1\u015e\6\0\1\u015f\101\0\1\u0160\105\0\1\u0161"+
-    "\107\0\1\u0162\75\0\1\u0163\57\0\1\u0164\123\0\1\u0165"+
-    "\56\0\1\u0166\101\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u0167\1\u0168\1\u0169\1\36\1\u016a\1\u016b"+
-    "\4\36\1\u016c\1\u016d\1\u016e\4\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\30\0\1\u016f\127\0\1\u0170\57\0"+
-    "\1\u0171\34\0\1\u0172\57\0\1\u0173\41\0\1\u0173\30\0"+
-    "\1\u0174\73\0\3\u0175\43\0\1\u0176\12\0\1\u0177\22\0"+
-    "\1\u0178\1\0\1\u0179\101\0\1\u017a\1\0\1\u017b\63\0"+
-    "\104\247\3\116\1\0\2\116\3\0\2\116\1\0\1\116"+
-    "\1\363\3\116\1\370\1\371\1\116\1\0\2\116\22\0"+
-    "\3\116\1\0\2\116\3\0\17\116\1\0\17\116\1\363"+
-    "\3\116\1\0\1\371\1\116\1\374\57\116\1\0\1\366"+
-    "\1\0\1\366\1\0\10\366\12\0\22\366\1\u017c\2\0"+
-    "\1\366\2\0\3\366\12\0\1\u017d\4\0\1\366\2\0"+
-    "\1\116\1\367\1\116\1\367\1\116\10\367\1\363\3\116"+
-    "\1\364\1\0\1\116\1\365\2\116\22\367\1\u017e\2\116"+
-    "\1\367\2\116\3\367\12\116\1\u017f\4\116\1\367\2\116"+
-    "\3\123\1\0\2\123\3\0\2\123\1\0\1\123\1\375"+
-    "\3\123\1\u0101\1\123\1\u0102\1\0\2\123\22\0\3\123"+
-    "\1\0\2\123\3\0\17\123\1\0\17\123\1\375\3\123"+
-    "\1\0\1\123\1\u0102\1\u0103\60\123\1\u0100\1\123\1\u0100"+
-    "\1\123\10\u0100\1\375\3\123\1\376\1\123\1\0\1\377"+
-    "\2\123\22\u0100\1\u0180\2\123\1\u0100\2\123\3\u0100\12\123"+
-    "\1\u0181\4\123\1\u0100\2\123\3\130\1\0\2\130\3\0"+
-    "\2\130\1\0\1\130\1\u0104\1\132\1\130\1\132\1\u010a"+
-    "\2\130\1\0\2\130\22\0\3\130\1\0\2\130\3\0"+
-    "\17\130\1\0\17\130\1\u0104\1\132\1\130\1\132\1\0"+
-    "\2\130\1\u010b\60\130\1\u0107\1\130\1\u0107\1\130\5\u0107"+
-    "\1\u0108\1\u0107\1\u0108\1\u0104\1\u0182\1\130\1\u0182\1\u0105"+
-    "\2\130\1\u0106\1\u0183\1\130\22\u0107\3\130\1\u0107\2\130"+
-    "\3\u0107\17\130\1\u0107\3\130\1\u0108\1\130\1\u0108\1\130"+
-    "\10\u0108\1\u0104\1\u0184\1\130\1\u0184\1\u0105\2\130\1\u0106"+
-    "\1\u0185\1\130\22\u0108\3\130\1\u0108\2\130\3\u0108\17\130"+
-    "\1\u0108\3\130\1\u0109\1\130\1\u0109\1\130\10\u0109\1\u0104"+
-    "\1\132\1\130\1\132\1\u0105\2\130\1\u0106\2\130\22\u0109"+
-    "\1\u0186\2\130\1\u0109\2\130\3\u0109\12\130\1\u0187\4\130"+
-    "\1\u0109\2\130\16\0\1\u010d\1\0\1\u010d\63\0\16\u010f"+
-    "\1\0\1\u010f\1\0\64\u010f\1\u0113\1\u010f\1\u0113\1\u010f"+
-    "\5\u0113\1\u0114\1\u0113\1\u0114\1\u010f\1\u0188\1\u010f\1\u0188"+
-    "\4\u010f\1\u0189\1\u010f\22\u0113\3\u010f\1\u0113\2\u010f\3\u0113"+
-    "\17\u010f\1\u0113\3\u010f\1\u0114\1\u010f\1\u0114\1\u010f\10\u0114"+
-    "\1\u010f\1\u018a\1\u010f\1\u018a\4\u010f\1\u018b\1\u010f\22\u0114"+
-    "\3\u010f\1\u0114\2\u010f\3\u0114\17\u010f\1\u0114\2\u010f\16\0"+
-    "\1\u0116\1\0\1\u0116\64\0\1\u0119\3\0\1\u0119\3\0"+
-    "\1\u0119\73\0\1\u018c\1\0\1\u018c\1\0\1\u018c\1\0"+
-    "\3\u018c\17\0\2\u018c\2\0\1\u018c\53\0\1\u018d\3\0"+
-    "\1\u018d\72\0\64\u011d\1\u011e\1\u018e\16\u011d\44\0\1\u018f"+
-    "\77\0\1\u0190\44\0\1\u0124\3\0\1\u0124\3\0\1\u0124"+
-    "\73\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
-    "\1\u0141\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\u0191\1\0\10\36\12\0\22\36"+
+    "\10\36\12\0\7\36\1\u01c0\12\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\3\36\1\u01c1\4\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\13\36\1\u01c2\6\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\5\36\1\u01c3\14\36\3\0\1\u01c4\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\1\36\1\u01c5\20\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\42\0\1\u01c6\77\0\1\u01c7\105\0"+
+    "\1\u01c8\75\0\1\u01c9\106\0\1\u01ca\106\0\1\u01cb\104\0"+
+    "\1\u01cc\41\0\1\u01cc\61\0\1\u01cd\64\0\1\u01ce\52\0"+
+    "\1\u01cf\75\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\11\36\1\u01d0\10\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\1\u01d1\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u01d2"+
+    "\3\36\1\u01d3\15\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\2\36\1\u01d4"+
+    "\5\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\13\36\1\u01d5\6\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\1\u01d6\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\u01d7\1\0\10\36\12\0\22\36"+
     "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\1\u0192\1\36\1\u0193"+
-    "\1\u0194\4\36\1\u0195\5\36\1\u0196\3\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\u0195\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\7\36\1\u0197\12\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u0198"+
-    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u0199\20\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\13\36\1\u019a\6\36\3\0\1\36\2\0\3\36"+
+    "\1\0\1\36\1\0\2\36\1\u01d8\5\36\12\0\22\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\5\0\1\u01d9"+
+    "\2\0\3\u01d9\1\0\2\u01d9\3\0\1\u0176\2\0\1\u01da"+
+    "\4\0\22\u01d9\3\0\1\u01d9\2\0\3\u01d9\17\0\1\u01d9"+
+    "\1\u01db\36\0\1\u01dc\64\0\3\u0179\56\0\1\u017b\22\0"+
+    "\3\u01dd\44\0\1\u01de\11\0\1\u01df\60\0\1\u01e0\45\0"+
+    "\1\u017c\103\0\1\u017e\137\0\1\u01e1\31\0\15\116\1\364"+
+    "\3\116\1\365\1\0\1\116\1\366\25\116\1\u01e2\31\116"+
+    "\15\123\1\376\3\123\1\377\1\123\1\0\1\u0100\25\123"+
+    "\1\u01e3\31\123\1\0\1\u0186\1\0\1\u0186\1\0\10\u0186"+
+    "\12\0\22\u0186\3\0\1\u0186\2\0\3\u0186\12\0\1\u01e4"+
+    "\4\0\1\u0186\2\0\3\130\1\0\2\130\3\0\2\130"+
+    "\1\0\1\130\1\u0105\1\0\1\130\1\0\1\u0187\2\130"+
+    "\1\0\2\130\22\0\3\130\1\0\2\130\3\0\17\130"+
+    "\1\0\17\130\1\u0105\1\0\1\130\2\0\2\130\1\u0189"+
+    "\74\130\1\u0105\1\u018a\1\130\1\u018a\1\u0106\2\130\1\u0107"+
+    "\57\130\1\0\1\u018c\1\0\1\u018c\1\0\10\u018c\1\0"+
+    "\1\u018a\1\0\1\u018a\4\0\1\u01e5\1\0\22\u018c\3\0"+
+    "\1\u018c\2\0\3\u018c\17\0\1\u018c\2\0\16\u0110\1\u018d"+
+    "\1\u0110\1\u018d\101\u0110\1\u018f\1\u0110\1\u018f\63\u0110\50\0"+
+    "\1\u01e6\62\0\1\u01e7\55\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\5\36\1\u01e8\14\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\3\36\1\u01e9\16\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u01ea\1\0"+
+    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\7\36\1\u01eb\12\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\16\36\1\u01ec\3\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\15\36\1\u01ed\4\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\1\u01ee\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\12\36"+
+    "\1\u01ef\7\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\11\36"+
+    "\1\u01f0\10\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\12\36"+
+    "\1\u01f1\7\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\17\36"+
+    "\1\u01f2\2\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\11\36"+
+    "\1\u01f3\10\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\4\36"+
+    "\1\u01f4\15\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\u01f5\1\0\2\36\1\u01f6\5\36"+
+    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
+    "\1\u01f7\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\u01f8\1\0\10\36\12\0\22\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\1\36\1\u01f9\20\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\16\36\1\u01fa\3\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\4\36\1\u01fb\15\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\5\36\1\u01fc\14\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\2\36\1\u01fd\5\36\12\0\22\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\13\36\1\u01fe\6\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\1\36\1\u01ff\20\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\2\36\1\u0200\5\36\12\0\22\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\1\36\1\u0201\20\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\10\36\1\u0202\11\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\u0202\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\15\36\1\u0203\4\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\2\36\1\u0204\5\36\12\0\22\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\1\u0205\21\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
+    "\1\36\1\0\10\36\12\0\1\36\1\u0206\20\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
+    "\1\36\1\0\10\36\12\0\10\36\1\u0207\11\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\u0207\3\0\1\36\1\0"+
+    "\1\u0208\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\1\u0209\21\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u019b\20\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\2\36"+
-    "\1\u019c\5\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\2\36"+
-    "\1\u019d\5\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\65\0\1\u0172\21\0\1\36\1\0\1\u019e"+
-    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
+    "\12\0\6\36\1\u020a\13\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\13\36\1\u019f\6\36\3\0\1\36\2\0\3\36"+
+    "\12\0\11\36\1\u020b\10\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u01a0\20\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\u01a1\1\0\10\36"+
-    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\13\36"+
-    "\1\u01a2\6\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u01a3"+
-    "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\7\36\1\u01a4"+
-    "\12\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\2\36\1\u01a5\5\36\12\0"+
-    "\1\u01a6\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\13\36"+
-    "\1\u01a7\6\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u01a8\5\36"+
-    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\12\0\1\u020c\21\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\2\36\1\u020d\17\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\u020e\1\0\10\36\12\0"+
+    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\2\36\1\u020f\5\36\12\0"+
+    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\1\u0210\21\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\1\36\1\u0211\20\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\2\36\1\u0212\5\36\12\0\22\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\u0213\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\11\0\1\u0214\103\0\1\u0215"+
+    "\136\0\1\u0216\44\0\1\u0217\13\0\1\u0218\36\0\1\u0219"+
+    "\35\0\1\u021a\102\0\1\u021b\77\0\1\u021c\103\0\1\u021d"+
+    "\127\0\1\u021e\116\0\1\u021f\42\0\1\36\1\0\1\36"+
+    "\1\0\2\36\1\u0220\5\36\12\0\22\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\11\36\1\u0221\10\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\13\36\1\u0222\6\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\5\36\1\u0223\14\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\14\36\1\u0224\5\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\2\36\1\u0225\5\36\12\0\22\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\5\36\1\u0226\14\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\1\36\1\u0227\20\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\13\36\1\u0228\6\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\u01d9\1\0\1\u01d9"+
+    "\1\0\10\u01d9\1\0\1\u0229\1\0\1\u022a\6\0\22\u01d9"+
+    "\3\0\1\u01d9\2\0\3\u01d9\17\0\1\u01d9\5\0\1\u022b"+
+    "\2\0\3\u022b\1\0\2\u022b\13\0\22\u022b\3\0\1\u022b"+
+    "\2\0\3\u022b\17\0\1\u022b\5\0\1\u022c\2\0\3\u022c"+
+    "\1\0\2\u022c\13\0\22\u022c\3\0\1\u022c\2\0\3\u022c"+
+    "\17\0\1\u022c\42\0\1\u022d\61\0\3\u01dd\56\0\1\u01df"+
+    "\60\0\1\u022e\36\0\1\u022f\77\0\1\u0230\2\0\3\u0230"+
+    "\2\0\1\u0230\13\0\22\u0230\3\0\1\u0230\2\0\3\u0230"+
+    "\17\0\1\u0230\2\0\3\116\1\u0231\2\116\3\u0231\2\116"+
+    "\1\u0231\1\116\1\364\3\116\1\365\1\0\1\116\1\366"+
+    "\2\116\22\u0231\3\116\1\u0231\2\116\3\u0231\17\116\1\u0231"+
+    "\2\116\3\123\1\u0232\2\123\3\u0232\2\123\1\u0232\1\123"+
+    "\1\376\3\123\1\377\1\123\1\0\1\u0100\2\123\22\u0232"+
+    "\3\123\1\u0232\2\123\3\u0232\17\123\1\u0232\2\123\16\0"+
+    "\1\u018a\1\0\1\u018a\101\0\2\u0233\1\u0234\133\0\1\u0235"+
+    "\34\0\1\36\1\0\1\36\1\0\10\36\12\0\2\36"+
+    "\1\u0236\17\36\3\0\1\36\2\0\3\36\17\0\1\36"+
     "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\6\36"+
-    "\1\u01a9\13\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\u01aa\1\0\10\36\12\0\22\36"+
+    "\1\u0237\13\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\11\36"+
+    "\1\u0238\10\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u0239"+
+    "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\1\u023a\21\36"+
     "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\u01ab\1\0\10\36\12\0\22\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u01ac"+
-    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\6\36\1\u01ad\13\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\u01ae\1\0\10\36"+
-    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\13\36"+
-    "\1\u01af\6\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
-    "\1\u01b0\6\36\1\u01b1\11\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\u01b1\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\10\36\1\u01b2\11\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\u01b2\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\5\36\1\u01b3\14\36\3\0\1\36\2\0\3\36"+
+    "\1\0\1\36\1\0\10\36\12\0\3\36\1\u023b\16\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\2\36\1\u023c\5\36\12\0\22\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\3\36\1\u023d\16\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\2\36\1\u023e\17\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\2\36\1\u023f\5\36\12\0\22\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\5\36\1\u0240\14\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\14\36\1\u0241\5\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\13\36\1\u0242\6\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\u0243\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\11\36\1\u0244\10\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\13\36\1\u0245\6\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\1\u0246\21\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\6\36\1\u0247\13\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\21\36\1\u0248\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\3\36"+
+    "\1\u0249\4\36\12\0\22\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u01b4\20\36\3\0\1\36\2\0\3\36"+
+    "\12\0\5\36\1\u024a\14\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u01b5\20\36\3\0\1\36\2\0\3\36"+
+    "\12\0\6\36\1\u024b\13\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\4\36\1\u01b6\15\36\3\0\1\36\2\0\3\36"+
+    "\12\0\15\36\1\u024c\4\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\4\36\1\u01b7\15\36\3\0\1\36\2\0\3\36"+
+    "\12\0\5\36\1\u024d\14\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\13\36\1\u01b8\6\36\3\0\1\36\2\0\3\36"+
+    "\12\0\11\36\1\u024e\10\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u01b9\20\36\3\0\1\36\2\0\3\36"+
+    "\1\0\3\u024f\6\0\22\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\13\36\1\u01ba\6\36\3\0\1\36\2\0\3\36"+
+    "\12\0\13\36\1\u0250\6\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\7\36\1\u01bb\12\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\3\36"+
-    "\1\u01bc\4\36\12\0\22\36\3\0\1\36\2\0\3\36"+
+    "\12\0\6\36\1\u0251\13\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\13\36\1\u01bd\6\36\3\0\1\36\2\0\3\36"+
+    "\12\0\1\36\1\u0252\20\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\5\36\1\u01be\14\36\3\0\1\u01bf\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u01c0\20\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\42\0\1\u01c1\77\0\1\u01c2\105\0\1\u01c3"+
-    "\75\0\1\u01c4\106\0\1\u01c5\106\0\1\u01c6\104\0\1\u01c7"+
-    "\41\0\1\u01c7\61\0\1\u01c8\64\0\1\u01c9\52\0\1\u01ca"+
-    "\75\0\1\36\1\0\1\36\1\0\10\36\12\0\11\36"+
-    "\1\u01cb\10\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u01cc"+
-    "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\1\u01cd\3\36"+
-    "\1\u01ce\15\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u01cf\5\36"+
-    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\13\36"+
-    "\1\u01d0\6\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u01d1"+
+    "\12\0\6\36\1\u0253\13\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\43\0\1\u0254\102\0\1\u0255\46\0\1\u0256"+
+    "\13\0\1\u0257\36\0\1\u0258\74\0\1\u0259\53\0\1\u0218"+
+    "\36\0\1\u0219\67\0\1\u025a\71\0\1\u021f\103\0\1\u025b"+
+    "\110\0\1\u025c\102\0\1\u025d\66\0\1\u021f\36\0\1\u025e"+
+    "\26\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u025f"+
     "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\u01d2\1\0\10\36\12\0\22\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
+    "\1\36\2\0\1\36\1\u0260\1\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\u0261\1\0\10\36\12\0\22\36\3\0"+
     "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\2\36\1\u01d3\5\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\5\0\1\u01d4\2\0"+
-    "\3\u01d4\1\0\2\u01d4\3\0\1\u0172\2\0\1\u01d5\4\0"+
-    "\22\u01d4\3\0\1\u01d4\2\0\3\u01d4\17\0\1\u01d4\1\u01d6"+
-    "\36\0\1\u01d7\64\0\3\u0175\56\0\1\u0177\22\0\3\u01d8"+
-    "\44\0\1\u01d9\11\0\1\u01da\60\0\1\u01db\45\0\1\u0178"+
-    "\103\0\1\u017a\137\0\1\u01dc\31\0\15\116\1\363\3\116"+
-    "\1\364\1\0\1\116\1\365\25\116\1\u01dd\31\116\15\123"+
-    "\1\375\3\123\1\376\1\123\1\0\1\377\25\123\1\u01de"+
-    "\31\123\15\130\1\u0104\1\u0182\1\130\1\u0182\1\u0105\2\130"+
-    "\1\u0106\74\130\1\u0104\1\u0184\1\130\1\u0184\1\u0105\2\130"+
-    "\1\u0106\74\130\1\u0104\1\132\1\130\1\132\1\u0105\2\130"+
-    "\1\u0106\25\130\1\u01df\31\130\16\u010f\1\u0188\1\u010f\1\u0188"+
-    "\101\u010f\1\u018a\1\u010f\1\u018a\63\u010f\50\0\1\u01e0\62\0"+
-    "\1\u01e1\55\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\5\36\1\u01e2\14\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\1\0\10\36\12\0\6\36\1\u0262\13\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
+    "\1\u0263\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
+    "\10\36\12\0\10\36\1\u0264\11\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\u0264\3\0\1\36\1\0\1\u0265\1\0"+
+    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
     "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\3\36\1\u01e3\16\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\36\3\0\1\36\1\0\1\u01e4\1\0\10\36\12\0"+
-    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\7\36\1\u01e5"+
-    "\12\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\16\36\1\u01e6"+
-    "\3\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\15\36\1\u01e7"+
-    "\4\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\1\u01e8\21\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\12\36\1\u01e9\7\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\11\36\1\u01ea\10\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\12\36\1\u01eb\7\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\17\36\1\u01ec\2\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\11\36\1\u01ed\10\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\4\36\1\u01ee\15\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\u01ef\1\0\2\36\1\u01f0\5\36\12\0\22\36"+
+    "\15\36\1\u0266\4\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\1\36\1\u0267\20\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\20\0\1\u0229\66\0\1\u022b\1\0\1\u022b\1\0"+
+    "\10\u022b\5\0\1\u0268\4\0\22\u022b\3\0\1\u022b\2\0"+
+    "\3\u022b\17\0\1\u022b\3\0\1\u022c\1\0\1\u022c\1\0"+
+    "\10\u022c\12\0\22\u022c\3\0\1\u022c\2\0\3\u022c\17\0"+
+    "\1\u022c\1\u0269\30\0\1\u026a\63\0\1\u026b\134\0\1\u026c"+
+    "\61\0\1\u0233\115\0\1\u026d\54\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\10\36\1\u026e\11\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\u026e\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\13\36\1\u026f\6\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u0270"+
+    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
+    "\12\0\1\36\1\u0271\20\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
+    "\12\0\13\36\1\u0272\6\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
+    "\12\0\6\36\1\u0273\13\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\2\36"+
+    "\1\u0274\5\36\12\0\22\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\u0275\1\0\10\36"+
+    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\2\36"+
+    "\1\u0276\17\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\6\36"+
+    "\1\u0277\13\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\u0278\1\0\10\36\12\0\22\36"+
     "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\1\36\1\u01f1\20\36"+
+    "\1\0\1\36\1\0\10\36\12\0\1\36\1\u0279\20\36"+
     "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\u01f2\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\1\0\1\u027a\1\0\10\36\12\0\22\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\1\36\1\u01f3\20\36\3\0\1\36"+
+    "\1\0\10\36\12\0\12\36\1\u027b\7\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\16\36\1\u01f4\3\36\3\0\1\36"+
+    "\1\0\10\36\12\0\7\36\1\u027c\12\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\4\36\1\u01f5\15\36\3\0\1\36"+
+    "\1\0\10\36\12\0\15\36\1\u027d\4\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\5\36\1\u01f6\14\36\3\0\1\36"+
+    "\1\0\2\36\1\u027e\5\36\12\0\22\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\2\36\1\u01f7\5\36\12\0\22\36\3\0\1\36"+
+    "\1\0\10\36\12\0\13\36\1\u027f\6\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\13\36\1\u01f8\6\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\1\36\1\u01f9\20\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\2\36\1\u01fa\5\36\12\0\22\36\3\0\1\36"+
+    "\1\0\10\36\12\0\4\36\1\u0280\15\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u0281"+
+    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\20\0\3\u024f\11\0\1\u0282\52\0\1\36"+
+    "\1\0\1\u0283\1\0\10\36\12\0\22\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\1\36\1\u01fb\20\36\3\0\1\36"+
+    "\1\0\10\36\12\0\1\36\1\u0284\20\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\21\0\1\u0254\36\0\1\u0285"+
+    "\66\0\1\u0286\51\0\1\u0287\113\0\1\u0257\36\0\1\u0258"+
+    "\30\0\1\u0288\103\0\1\u021f\117\0\1\u025b\36\0\1\u0289"+
+    "\55\0\1\u028a\122\0\1\u0286\35\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\1\36\1\u028b\20\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\10\36\1\u01fc\11\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\u01fc\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\15\36\1\u01fd\4\36\3\0\1\36"+
+    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\1\36"+
+    "\1\u028c\1\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\1\36"+
+    "\1\u028d\1\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\1\36\1\u028e\20\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\2\36\1\u01fe\5\36\12\0\22\36\3\0\1\36"+
+    "\1\0\10\36\12\0\10\36\1\u028f\11\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\u028f\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\10\36\1\u0290\11\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\u0290\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\1\36"+
+    "\1\u0291\1\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\7\36\1\u0292\12\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\1\u01ff\21\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\1\36\1\u0200\20\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\10\36\1\u0201\11\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\u0201\3\0\1\36\1\0\1\u0202\1\0"+
-    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\1\u0203\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\6\36"+
-    "\1\u0204\13\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\11\36"+
-    "\1\u0205\10\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u0206"+
-    "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u0207"+
-    "\17\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\u0208\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\2\36\1\u0209\5\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\1\u020a\21\36\3\0\1\36"+
+    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\1\36"+
+    "\1\u0293\1\36\17\0\1\36\20\0\1\u0229\1\0\1\u022a"+
+    "\101\0\1\u0294\1\0\1\u0295\133\0\1\u0296\73\0\1\u0297"+
+    "\61\0\3\u0298\101\0\3\u0299\64\0\1\36\1\0\1\36"+
+    "\1\0\2\36\1\u029a\5\36\12\0\22\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\1\36\1\u020b\20\36\3\0\1\36"+
+    "\1\0\2\36\1\u029b\5\36\12\0\22\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\2\36\1\u020c\5\36\12\0\22\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u020d"+
+    "\1\0\10\36\12\0\6\36\1\u029c\13\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u029d"+
     "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\11\0\1\u020e\103\0\1\u020f\136\0\1\u0210"+
-    "\44\0\1\u0211\13\0\1\u0212\36\0\1\u0213\35\0\1\u0214"+
-    "\102\0\1\u0215\77\0\1\u0216\103\0\1\u0217\127\0\1\u0218"+
-    "\116\0\1\u0219\42\0\1\36\1\0\1\36\1\0\2\36"+
-    "\1\u021a\5\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\11\36\1\u021b\10\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\13\36\1\u021c\6\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\5\36\1\u021d\14\36\3\0\1\36\2\0\3\36"+
+    "\12\0\1\36\1\u029e\20\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\14\36\1\u021e\5\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\2\36"+
-    "\1\u021f\5\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\5\36\1\u0220\14\36\3\0\1\36\2\0\3\36"+
+    "\12\0\6\36\1\u029f\13\36\3\0\1\36\2\0\3\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u0221\20\36\3\0\1\36\2\0\3\36"+
+    "\12\0\22\36\3\0\1\36\2\0\1\36\1\u02a0\1\36"+
     "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\13\36\1\u0222\6\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\u01d4\1\0\1\u01d4\1\0\10\u01d4"+
-    "\1\0\1\u0223\1\0\1\u0224\6\0\22\u01d4\3\0\1\u01d4"+
-    "\2\0\3\u01d4\17\0\1\u01d4\5\0\1\u0225\2\0\3\u0225"+
-    "\1\0\2\u0225\13\0\22\u0225\3\0\1\u0225\2\0\3\u0225"+
-    "\17\0\1\u0225\5\0\1\u0226\2\0\3\u0226\1\0\2\u0226"+
-    "\13\0\22\u0226\3\0\1\u0226\2\0\3\u0226\17\0\1\u0226"+
-    "\42\0\1\u0227\61\0\3\u01d8\56\0\1\u01da\60\0\1\u0228"+
-    "\36\0\1\u0229\77\0\1\u022a\2\0\3\u022a\2\0\1\u022a"+
-    "\13\0\22\u022a\3\0\1\u022a\2\0\3\u022a\17\0\1\u022a"+
-    "\2\0\3\116\1\u022b\2\116\3\u022b\2\116\1\u022b\1\116"+
-    "\1\363\3\116\1\364\1\0\1\116\1\365\2\116\22\u022b"+
-    "\3\116\1\u022b\2\116\3\u022b\17\116\1\u022b\2\116\3\123"+
-    "\1\u022c\2\123\3\u022c\2\123\1\u022c\1\123\1\375\3\123"+
-    "\1\376\1\123\1\0\1\377\2\123\22\u022c\3\123\1\u022c"+
-    "\2\123\3\u022c\17\123\1\u022c\2\123\3\130\1\u022d\2\130"+
-    "\3\u022d\2\130\1\u022d\1\130\1\u0104\1\132\1\130\1\132"+
-    "\1\u0105\2\130\1\u0106\2\130\22\u022d\3\130\1\u022d\2\130"+
-    "\3\u022d\17\130\1\u022d\2\130\16\0\2\u022e\1\u022f\133\0"+
-    "\1\u0230\34\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\2\36\1\u0231\17\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\6\36\1\u0232\13\36\3\0\1\36\2\0\3\36\17\0"+
+    "\12\0\7\36\1\u02a1\12\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\3\0\1\36\1\0\1\u02a2\1\0\10\36"+
+    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\5\36"+
+    "\1\u02a3\14\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\5\36"+
+    "\1\u02a4\14\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\6\36"+
+    "\1\u02a5\13\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\u02a6\1\0\10\36\12\0\22\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\u02a7\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\1\36"+
+    "\1\u02a8\1\36\17\0\1\36\42\0\1\u02a9\44\0\1\36"+
+    "\1\0\1\u02aa\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\21\0\1\u0286\36\0\1\u02ab"+
+    "\61\0\1\u0257\107\0\1\u0218\62\0\1\u028a\36\0\1\u02ac"+
+    "\26\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
+    "\3\0\1\36\2\0\1\36\1\u02ad\1\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
+    "\3\0\1\36\2\0\1\36\1\u02ae\1\36\17\0\1\36"+
+    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u02af"+
+    "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\21\36\1\u02b0"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\2\0\1\36\1\u02b1\1\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\2\0\1\36\1\u02b2\1\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\2\36\1\u02b3\17\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\6\36\1\u02b4\13\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\20\0\1\u0294"+
+    "\115\0\1\u02b5\71\0\3\u02b6\66\0\1\u02b7\2\0\3\u02b7"+
+    "\1\0\2\u02b7\2\0\3\u0298\1\u02b8\5\0\22\u02b7\3\0"+
+    "\1\u02b7\2\0\3\u02b7\17\0\1\u02b7\20\0\3\u0299\21\0"+
+    "\1\u02b9\42\0\1\36\1\0\1\36\1\0\10\36\12\0"+
+    "\11\36\1\u02ba\10\36\3\0\1\36\2\0\3\36\17\0"+
     "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\11\36\1\u0233\10\36\3\0\1\36\2\0\3\36\17\0"+
+    "\6\36\1\u02bb\13\36\3\0\1\36\2\0\3\36\17\0"+
     "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\1\u0234\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\u0235"+
-    "\21\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\3\36\1\u0236"+
-    "\16\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\2\36\1\u0237\5\36\12\0"+
+    "\15\36\1\u02bc\4\36\3\0\1\36\2\0\3\36\17\0"+
+    "\1\36\3\0\1\36\1\0\1\u02bd\1\0\10\36\12\0"+
     "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\3\36\1\u0238"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\7\36\1\u02be"+
+    "\12\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\3\36\1\u02bf"+
     "\16\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u0239"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\7\36\1\u02c0"+
+    "\12\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\1\36\1\u02c1"+
+    "\20\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\u02c2\1\0\10\36\12\0\22\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
+    "\1\36\1\0\10\36\12\0\7\36\1\u02c3\12\36\3\0"+
+    "\1\36\2\0\3\36\17\0\1\36\40\0\1\u02c4\46\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u02c5"+
     "\17\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\2\36\1\u023a\5\36\12\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
+    "\1\36\2\0\1\36\1\u02c6\1\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\7\36\1\u02c7"+
+    "\12\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\2\36\1\u02c8\5\36\12\0"+
     "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\5\36\1\u023b"+
-    "\14\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\14\36\1\u023c"+
-    "\5\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\13\36\1\u023d"+
-    "\6\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\u023e\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\11\36\1\u023f\10\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\13\36\1\u0240\6\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\1\u0241\21\36\3\0\1\36"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
+    "\1\36\2\0\1\36\1\u02c9\1\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
+    "\1\36\2\0\1\36\1\u02ca\1\36\17\0\1\36\3\0"+
+    "\1\36\1\0\1\36\1\0\10\36\12\0\7\36\1\u02cb"+
+    "\12\36\3\0\1\36\2\0\3\36\17\0\1\36\20\0"+
+    "\3\u02b5\31\0\1\361\34\0\1\u02cc\2\0\3\u02cc\1\0"+
+    "\2\u02cc\1\0\1\u02cd\3\u02b6\6\0\22\u02cc\3\0\1\u02cc"+
+    "\2\0\3\u02cc\17\0\1\u02cc\3\0\1\u02b7\1\0\1\u02b7"+
+    "\1\0\10\u02b7\1\0\3\u02ce\6\0\22\u02b7\3\0\1\u02b7"+
+    "\2\0\3\u02b7\12\0\1\u02cf\4\0\1\u02b7\5\0\1\u02b7"+
+    "\2\0\3\u02b7\1\0\2\u02b7\13\0\22\u02b7\3\0\1\u02b7"+
+    "\2\0\3\u02b7\17\0\1\u02b7\11\0\1\u02d0\75\0\1\36"+
+    "\1\0\1\u02d1\1\0\10\36\12\0\22\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\6\36\1\u0242\13\36\3\0\1\36"+
+    "\1\0\10\36\12\0\15\36\1\u02d2\4\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\21\36\1\u0243\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\3\36\1\u0244\4\36\12\0\22\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\5\36\1\u0245\14\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\6\36\1\u0246\13\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\15\36\1\u0247\4\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\5\36\1\u0248\14\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\11\36\1\u0249\10\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\1\0\3\u024a\6\0\22\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\13\36\1\u024b\6\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\6\36\1\u024c\13\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\1\36\1\u024d\20\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\6\36\1\u024e\13\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\43\0\1\u024f\102\0\1\u0250\46\0"+
-    "\1\u0251\13\0\1\u0252\36\0\1\u0253\74\0\1\u0254\53\0"+
-    "\1\u0212\36\0\1\u0213\67\0\1\u0255\71\0\1\u0219\103\0"+
-    "\1\u0256\110\0\1\u0257\102\0\1\u0258\66\0\1\u0219\36\0"+
-    "\1\u0259\26\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\1\u025a\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
-    "\3\0\1\36\2\0\1\36\1\u025b\1\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\u025c\1\0\10\36\12\0\22\36"+
+    "\1\0\10\36\12\0\5\36\1\u02d3\14\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\3\36\1\u02d4\16\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\10\36\1\u02d5\11\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\u02d5\3\0\1\36\1\0\1\36"+
+    "\1\0\10\36\12\0\5\36\1\u02d6\14\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\45\0\1\u02d7\41\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\5\36\1\u02d8\14\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\6\36\1\u02d9\13\36"+
     "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\6\36\1\u025d\13\36"+
+    "\1\0\1\36\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\2\0\1\36\1\u02da\1\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\14\36\1\u02db\5\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\u02cc"+
+    "\1\0\1\u02cc\1\0\10\u02cc\1\u02cd\3\u02dc\6\0\22\u02cc"+
+    "\3\0\1\u02cc\2\0\3\u02cc\6\0\1\u02dd\3\0\1\u02de"+
+    "\4\0\1\u02cc\5\0\1\u02cc\2\0\3\u02cc\1\0\2\u02cc"+
+    "\13\0\22\u02cc\3\0\1\u02cc\2\0\3\u02cc\17\0\1\u02cc"+
+    "\5\0\1\u02df\2\0\3\u02df\1\0\2\u02df\1\0\1\u02e0"+
+    "\3\u02ce\6\0\22\u02df\3\0\1\u02df\2\0\3\u02df\17\0"+
+    "\1\u02df\5\0\1\u02e1\2\0\3\u02e1\1\0\2\u02e1\6\0"+
+    "\1\u02cf\4\0\22\u02e1\3\0\1\u02e1\2\0\3\u02e1\13\0"+
+    "\1\u02e2\3\0\1\u02e1\1\u02cf\35\0\1\u02e3\50\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\6\36\1\u02e4\13\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\6\36\1\u02e5\13\36"+
     "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\u025e\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\2\0\1\36\1\u02e6\1\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\u02e7\1\0\10\36\12\0\22\36\3\0\1\36"+
     "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\36"+
-    "\1\0\10\36\12\0\10\36\1\u025f\11\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\u025f\3\0\1\36\1\0\1\u0260"+
-    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\15\36\1\u0261\4\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\36\1\u0262\20\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\20\0\1\u0223\66\0\1\u0225\1\0\1\u0225"+
-    "\1\0\10\u0225\5\0\1\u0263\4\0\22\u0225\3\0\1\u0225"+
-    "\2\0\3\u0225\17\0\1\u0225\3\0\1\u0226\1\0\1\u0226"+
-    "\1\0\10\u0226\12\0\22\u0226\3\0\1\u0226\2\0\3\u0226"+
-    "\17\0\1\u0226\1\u0264\30\0\1\u0265\63\0\1\u0266\134\0"+
-    "\1\u0267\61\0\1\u022e\115\0\1\u0268\54\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\10\36\1\u0269\11\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\u0269\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\13\36\1\u026a\6\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\u026b\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\1\36\1\u026c\20\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\13\36\1\u026d\6\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\6\36\1\u026e\13\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\2\36\1\u026f\5\36\12\0\22\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u0270\1\0"+
+    "\1\0\10\36\12\0\21\36\1\u02e8\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\20\0\3\u02dc\1\u02e9\65\0\1\u02cc"+
+    "\2\0\3\u02cc\1\0\2\u02cc\1\0\1\u02cd\11\0\22\u02cc"+
+    "\3\0\1\u02cc\2\0\3\u02cc\17\0\1\u02cc\77\0\1\u02ea"+
+    "\7\0\1\u02df\1\0\1\u02df\1\0\10\u02df\1\u02e0\3\u02eb"+
+    "\6\0\22\u02df\3\0\1\u02df\2\0\3\u02df\2\0\1\u02ec"+
+    "\3\0\1\u02ed\3\0\1\u02ee\4\0\1\u02df\5\0\1\u02df"+
+    "\2\0\3\u02df\1\0\2\u02df\13\0\22\u02df\3\0\1\u02df"+
+    "\2\0\3\u02df\17\0\1\u02df\3\0\1\u02e1\1\0\1\u02e1"+
+    "\1\0\10\u02e1\5\0\1\u02cf\4\0\22\u02e1\3\0\1\u02e1"+
+    "\2\0\3\u02e1\13\0\1\u02e2\3\0\1\u02e1\1\u02cf\17\0"+
+    "\3\u02ce\53\0\1\u02cf\56\0\1\u02ef\35\0\1\36\1\0"+
+    "\1\u02f0\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
+    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u02f1\1\0"+
     "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
     "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\2\36\1\u0271\17\36\3\0\1\36\2\0\3\36\17\0"+
+    "\22\36\3\0\1\36\2\0\1\36\1\u02f2\1\36\17\0"+
     "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\6\36\1\u0272\13\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\36\3\0\1\36\1\0\1\u0273\1\0\10\36\12\0"+
-    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\1\36\1\u0274"+
-    "\20\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\u0275\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\12\36\1\u0276\7\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\7\36\1\u0277\12\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\15\36\1\u0278\4\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\2\36\1\u0279\5\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\13\36\1\u027a\6\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\4\36\1\u027b\15\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\u027c\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\20\0\3\u024a\11\0\1\u027d\52\0"+
-    "\1\36\1\0\1\u027e\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\1\36\1\u027f\20\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\21\0\1\u024f\36\0"+
-    "\1\u0280\66\0\1\u0281\51\0\1\u0282\113\0\1\u0252\36\0"+
-    "\1\u0253\30\0\1\u0283\103\0\1\u0219\117\0\1\u0256\36\0"+
-    "\1\u0284\55\0\1\u0285\122\0\1\u0281\35\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\1\36\1\u0286\20\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
-    "\1\36\1\u0287\1\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
-    "\1\36\1\u0288\1\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\1\36\1\u0289\20\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\10\36\1\u028a\11\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\u028a\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\10\36\1\u028b\11\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\u028b\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
-    "\1\36\1\u028c\1\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\7\36\1\u028d\12\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
-    "\1\36\1\u028e\1\36\17\0\1\36\20\0\1\u0223\1\0"+
-    "\1\u0224\101\0\1\u028f\1\0\1\u0290\133\0\1\u0291\73\0"+
-    "\1\u0292\61\0\3\u0293\101\0\3\u0294\64\0\1\36\1\0"+
-    "\1\36\1\0\2\36\1\u0295\5\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\2\36\1\u0296\5\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\6\36\1\u0297\13\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\u0298\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\1\36\1\u0299\20\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\6\36\1\u029a\13\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\22\36\3\0\1\36\2\0\1\36\1\u029b"+
-    "\1\36\17\0\1\36\3\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\7\36\1\u029c\12\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\3\0\1\36\1\0\1\u029d\1\0"+
-    "\10\36\12\0\22\36\3\0\1\36\2\0\3\36\17\0"+
+    "\22\36\3\0\1\36\2\0\1\36\1\u02f3\1\36\17\0"+
     "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\5\36\1\u029e\14\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\5\36\1\u029f\14\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\6\36\1\u02a0\13\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\36\3\0\1\36\1\0\1\u02a1\1\0\10\36\12\0"+
-    "\22\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\u02a2\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\2\0"+
-    "\1\36\1\u02a3\1\36\17\0\1\36\42\0\1\u02a4\44\0"+
-    "\1\36\1\0\1\u02a5\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\21\0\1\u0281\36\0"+
-    "\1\u02a6\61\0\1\u0252\107\0\1\u0212\62\0\1\u0285\36\0"+
-    "\1\u02a7\26\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\22\36\3\0\1\36\2\0\1\36\1\u02a8\1\36\17\0"+
-    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\22\36\3\0\1\36\2\0\1\36\1\u02a9\1\36\17\0"+
-    "\1\36\3\0\1\36\1\0\1\36\1\0\10\36\12\0"+
-    "\1\u02aa\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\21\36"+
-    "\1\u02ab\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\1\36\1\u02ac\1\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\1\36\1\u02ad\1\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\2\36\1\u02ae"+
-    "\17\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u02af"+
-    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\20\0"+
-    "\1\u028f\115\0\1\u02b0\71\0\3\u02b1\66\0\1\u02b2\2\0"+
-    "\3\u02b2\1\0\2\u02b2\2\0\3\u0293\1\u02b3\5\0\22\u02b2"+
-    "\3\0\1\u02b2\2\0\3\u02b2\17\0\1\u02b2\20\0\3\u0294"+
-    "\21\0\1\u02b4\42\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\11\36\1\u02b5\10\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\6\36\1\u02b6\13\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\15\36\1\u02b7\4\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\u02b8\1\0\10\36"+
-    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
-    "\1\u02b9\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\3\36"+
-    "\1\u02ba\16\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
-    "\1\u02bb\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\1\36"+
-    "\1\u02bc\20\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\u02bd\1\0\10\36\12\0\22\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\3\0\1\36"+
-    "\1\0\1\36\1\0\10\36\12\0\7\36\1\u02be\12\36"+
-    "\3\0\1\36\2\0\3\36\17\0\1\36\40\0\1\u02bf"+
-    "\46\0\1\36\1\0\1\36\1\0\10\36\12\0\2\36"+
-    "\1\u02c0\17\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
-    "\3\0\1\36\2\0\1\36\1\u02c1\1\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
-    "\1\u02c2\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\2\36\1\u02c3\5\36"+
-    "\12\0\22\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
-    "\3\0\1\36\2\0\1\36\1\u02c4\1\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\22\36"+
-    "\3\0\1\36\2\0\1\36\1\u02c5\1\36\17\0\1\36"+
-    "\3\0\1\36\1\0\1\36\1\0\10\36\12\0\7\36"+
-    "\1\u02c6\12\36\3\0\1\36\2\0\3\36\17\0\1\36"+
-    "\20\0\3\u02b0\31\0\1\360\34\0\1\u02c7\2\0\3\u02c7"+
-    "\1\0\2\u02c7\1\0\1\u02c8\3\u02b1\6\0\22\u02c7\3\0"+
-    "\1\u02c7\2\0\3\u02c7\17\0\1\u02c7\3\0\1\u02b2\1\0"+
-    "\1\u02b2\1\0\10\u02b2\1\0\3\u02c9\6\0\22\u02b2\3\0"+
-    "\1\u02b2\2\0\3\u02b2\12\0\1\u02ca\4\0\1\u02b2\5\0"+
-    "\1\u02b2\2\0\3\u02b2\1\0\2\u02b2\13\0\22\u02b2\3\0"+
-    "\1\u02b2\2\0\3\u02b2\17\0\1\u02b2\11\0\1\u02cb\75\0"+
-    "\1\36\1\0\1\u02cc\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\15\36\1\u02cd\4\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\5\36\1\u02ce\14\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\3\36\1\u02cf\16\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\10\36\1\u02d0\11\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\u02d0\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\5\36\1\u02d1\14\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\45\0\1\u02d2\41\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\5\36\1\u02d3"+
-    "\14\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u02d4"+
-    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\1\36\1\u02d5\1\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\14\36\1\u02d6"+
-    "\5\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\u02c7\1\0\1\u02c7\1\0\10\u02c7\1\u02c8\3\u02d7\6\0"+
-    "\22\u02c7\3\0\1\u02c7\2\0\3\u02c7\6\0\1\u02d8\3\0"+
-    "\1\u02d9\4\0\1\u02c7\5\0\1\u02c7\2\0\3\u02c7\1\0"+
-    "\2\u02c7\13\0\22\u02c7\3\0\1\u02c7\2\0\3\u02c7\17\0"+
-    "\1\u02c7\5\0\1\u02da\2\0\3\u02da\1\0\2\u02da\1\0"+
-    "\1\u02db\3\u02c9\6\0\22\u02da\3\0\1\u02da\2\0\3\u02da"+
-    "\17\0\1\u02da\5\0\1\u02dc\2\0\3\u02dc\1\0\2\u02dc"+
-    "\6\0\1\u02ca\4\0\22\u02dc\3\0\1\u02dc\2\0\3\u02dc"+
-    "\13\0\1\u02dd\3\0\1\u02dc\1\u02ca\35\0\1\u02de\50\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u02df"+
-    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\6\36\1\u02e0"+
-    "\13\36\3\0\1\36\2\0\3\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\1\36\1\u02e1\1\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\u02e2\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\3\0\1\36\1\0"+
-    "\1\36\1\0\10\36\12\0\21\36\1\u02e3\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\20\0\3\u02d7\1\u02e4\65\0"+
-    "\1\u02c7\2\0\3\u02c7\1\0\2\u02c7\1\0\1\u02c8\11\0"+
-    "\22\u02c7\3\0\1\u02c7\2\0\3\u02c7\17\0\1\u02c7\77\0"+
-    "\1\u02e5\7\0\1\u02da\1\0\1\u02da\1\0\10\u02da\1\u02db"+
-    "\3\u02e6\6\0\22\u02da\3\0\1\u02da\2\0\3\u02da\2\0"+
-    "\1\u02e7\3\0\1\u02e8\3\0\1\u02e9\4\0\1\u02da\5\0"+
-    "\1\u02da\2\0\3\u02da\1\0\2\u02da\13\0\22\u02da\3\0"+
-    "\1\u02da\2\0\3\u02da\17\0\1\u02da\3\0\1\u02dc\1\0"+
-    "\1\u02dc\1\0\10\u02dc\5\0\1\u02ca\4\0\22\u02dc\3\0"+
-    "\1\u02dc\2\0\3\u02dc\13\0\1\u02dd\3\0\1\u02dc\1\u02ca"+
-    "\17\0\3\u02c9\53\0\1\u02ca\56\0\1\u02ea\35\0\1\36"+
-    "\1\0\1\u02eb\1\0\10\36\12\0\22\36\3\0\1\36"+
-    "\2\0\3\36\17\0\1\36\3\0\1\36\1\0\1\u02ec"+
-    "\1\0\10\36\12\0\22\36\3\0\1\36\2\0\3\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\22\36\3\0\1\36\2\0\1\36\1\u02ed\1\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\22\36\3\0\1\36\2\0\1\36\1\u02ee\1\36"+
-    "\17\0\1\36\3\0\1\36\1\0\1\36\1\0\10\36"+
-    "\12\0\1\u02ef\21\36\3\0\1\36\2\0\3\36\17\0"+
-    "\1\36\5\0\1\u02f0\2\0\3\u02f0\1\0\2\u02f0\13\0"+
-    "\22\u02f0\3\0\1\u02f0\2\0\3\u02f0\17\0\1\u02f0\20\0"+
-    "\3\u02d7\47\0\1\u02d8\3\0\1\u02d9\25\0\3\u02e6\43\0"+
-    "\1\u02e7\104\0\1\u02f1\21\0\1\u02da\2\0\3\u02da\1\0"+
-    "\2\u02da\1\0\1\u02db\11\0\22\u02da\3\0\1\u02da\2\0"+
-    "\3\u02da\17\0\1\u02da\77\0\1\u02f2\41\0\1\u02f3\51\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\1\36\1\u02f4\1\36\17\0\1\36\3\0"+
-    "\1\36\1\0\1\36\1\0\10\36\12\0\13\36\1\u02f5"+
-    "\6\36\3\0\1\36\2\0\3\36\17\0\1\36\2\0"+
-    "\1\u02f6\1\u02f0\1\u02f6\1\u02f0\1\u02f6\10\u02f0\1\u02f6\3\u02f7"+
-    "\6\u02f6\22\u02f0\3\u02f6\1\u02f0\2\u02f6\3\u02f0\2\u02f6\1\u02f8"+
-    "\7\u02f6\1\u02f9\4\u02f6\1\u02f0\2\u02f6\16\0\3\u02e6\43\0"+
-    "\1\u02e7\3\0\1\u02e8\3\0\1\u02e9\16\0\1\u02fa\75\0"+
-    "\1\36\1\0\1\u02fb\1\0\10\36\12\0\22\36\3\0"+
-    "\1\36\2\0\3\36\17\0\1\36\2\0\16\u02f6\1\0"+
-    "\1\u02f6\1\0\43\u02f6\1\u02f8\35\u02f6\3\u02f7\43\u02f6\1\u02f8"+
-    "\35\u02f6\1\0\1\u02f6\1\0\43\u02f6\1\u02f8\1\u02fc\21\u02f6"+
-    "\1\u02fd\2\u02f6\3\u02fd\1\u02f6\2\u02fd\2\u02f6\1\0\1\u02f6"+
-    "\1\0\1\u02f6\1\u02f9\4\u02f6\22\u02fd\3\u02f6\1\u02fd\2\u02f6"+
-    "\3\u02fd\2\u02f6\1\u02f8\10\u02f6\1\u02fe\3\u02f6\1\u02fd\1\u02f9"+
-    "\1\u02f6\47\0\1\u02ff\35\0\1\36\1\0\1\36\1\0"+
-    "\10\36\12\0\11\36\1\u0300\10\36\3\0\1\36\2\0"+
-    "\3\36\17\0\1\36\2\0\1\u02f6\1\u02fd\1\u02f6\1\u02fd"+
-    "\1\u02f6\10\u02fd\1\u02f6\1\0\1\u02f6\1\0\1\u02f6\1\u02f9"+
-    "\4\u02f6\22\u02fd\3\u02f6\1\u02fd\2\u02f6\3\u02fd\2\u02f6\1\u02f8"+
-    "\10\u02f6\1\u02fe\3\u02f6\1\u02fd\1\u02f9\17\u02f6\3\u02f7\43\u02f6"+
-    "\1\u02f8\7\u02f6\1\u02f9\7\u02f6\3\0\1\u0301\101\0\1\36"+
+    "\1\u02f4\21\36\3\0\1\36\2\0\3\36\17\0\1\36"+
+    "\5\0\1\u02f5\2\0\3\u02f5\1\0\2\u02f5\13\0\22\u02f5"+
+    "\3\0\1\u02f5\2\0\3\u02f5\17\0\1\u02f5\20\0\3\u02dc"+
+    "\47\0\1\u02dd\3\0\1\u02de\25\0\3\u02eb\43\0\1\u02ec"+
+    "\104\0\1\u02f6\21\0\1\u02df\2\0\3\u02df\1\0\2\u02df"+
+    "\1\0\1\u02e0\11\0\22\u02df\3\0\1\u02df\2\0\3\u02df"+
+    "\17\0\1\u02df\77\0\1\u02f7\41\0\1\u02f8\51\0\1\36"+
     "\1\0\1\36\1\0\10\36\12\0\22\36\3\0\1\36"+
-    "\1\u0302\1\0\3\36\17\0\1\36\20\0\3\u0301\5\0"+
-    "\1\u0303\133\0\1\u0304\43\0\3\u0303\1\0\1\u0305\25\0"+
-    "\1\u0306\31\0\1\u0307\26\0\1\u0308\126\0\1\u0309\77\0"+
-    "\1\u030a\107\0\1\u030b\77\0\1\u030c\107\0\1\u030d\77\0"+
-    "\1\u030e\107\0\1\u030f\51\0\3\u030d\31\0\1\u0310\101\0"+
-    "\1\u0311\55\0\1\u030d\163\0\1\u030d\1\0";
+    "\2\0\1\36\1\u02f9\1\36\17\0\1\36\3\0\1\36"+
+    "\1\0\1\36\1\0\10\36\12\0\13\36\1\u02fa\6\36"+
+    "\3\0\1\36\2\0\3\36\17\0\1\36\2\0\1\u02fb"+
+    "\1\u02f5\1\u02fb\1\u02f5\1\u02fb\10\u02f5\1\u02fb\3\u02fc\6\u02fb"+
+    "\22\u02f5\3\u02fb\1\u02f5\2\u02fb\3\u02f5\2\u02fb\1\u02fd\7\u02fb"+
+    "\1\u02fe\4\u02fb\1\u02f5\2\u02fb\16\0\3\u02eb\43\0\1\u02ec"+
+    "\3\0\1\u02ed\3\0\1\u02ee\16\0\1\u02ff\75\0\1\36"+
+    "\1\0\1\u0300\1\0\10\36\12\0\22\36\3\0\1\36"+
+    "\2\0\3\36\17\0\1\36\2\0\16\u02fb\1\0\1\u02fb"+
+    "\1\0\43\u02fb\1\u02fd\35\u02fb\3\u02fc\43\u02fb\1\u02fd\35\u02fb"+
+    "\1\0\1\u02fb\1\0\43\u02fb\1\u02fd\1\u0301\21\u02fb\1\u0302"+
+    "\2\u02fb\3\u0302\1\u02fb\2\u0302\2\u02fb\1\0\1\u02fb\1\0"+
+    "\1\u02fb\1\u02fe\4\u02fb\22\u0302\3\u02fb\1\u0302\2\u02fb\3\u0302"+
+    "\2\u02fb\1\u02fd\10\u02fb\1\u0303\3\u02fb\1\u0302\1\u02fe\1\u02fb"+
+    "\47\0\1\u0304\35\0\1\36\1\0\1\36\1\0\10\36"+
+    "\12\0\11\36\1\u0305\10\36\3\0\1\36\2\0\3\36"+
+    "\17\0\1\36\2\0\1\u02fb\1\u0302\1\u02fb\1\u0302\1\u02fb"+
+    "\10\u0302\1\u02fb\1\0\1\u02fb\1\0\1\u02fb\1\u02fe\4\u02fb"+
+    "\22\u0302\3\u02fb\1\u0302\2\u02fb\3\u0302\2\u02fb\1\u02fd\10\u02fb"+
+    "\1\u0303\3\u02fb\1\u0302\1\u02fe\17\u02fb\3\u02fc\43\u02fb\1\u02fd"+
+    "\7\u02fb\1\u02fe\7\u02fb\3\0\1\u0306\101\0\1\36\1\0"+
+    "\1\36\1\0\10\36\12\0\22\36\3\0\1\36\1\u0307"+
+    "\1\0\3\36\17\0\1\36\20\0\3\u0306\5\0\1\u0308"+
+    "\133\0\1\u0309\43\0\3\u0308\1\0\1\u030a\25\0\1\u030b"+
+    "\31\0\1\u030c\26\0\1\u030d\126\0\1\u030e\77\0\1\u030f"+
+    "\107\0\1\u0310\77\0\1\u0311\107\0\1\u0312\77\0\1\u0313"+
+    "\107\0\1\u0314\51\0\3\u0312\31\0\1\u0315\101\0\1\u0316"+
+    "\55\0\1\u0312\163\0\1\u0312\1\0";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[39440];
+    int [] result = new int[39916];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -1270,34 +1280,35 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) {
   private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
 
   private static final String ZZ_ATTRIBUTE_PACKED_0 =
-    "\4\0\1\1\15\0\2\1\1\11\11\1\1\11\3\1"+
-    "\3\11\25\1\1\11\12\1\6\11\1\1\1\11\3\1"+
-    "\1\11\4\1\1\11\6\1\1\11\1\1\1\11\3\1"+
-    "\1\11\1\1\2\11\2\1\1\11\2\1\2\11\1\1"+
-    "\24\11\5\1\1\11\1\1\1\11\1\1\1\11\1\1"+
-    "\1\0\4\1\2\0\1\11\6\1\2\11\2\0\6\1"+
-    "\2\0\1\1\3\0\1\11\1\0\1\1\1\11\36\1"+
-    "\4\11\1\1\1\11\1\1\12\0\3\1\1\11\1\1"+
-    "\1\0\1\11\1\1\1\11\1\1\1\11\1\1\5\11"+
-    "\1\1\1\11\4\0\3\1\3\11\1\1\3\0\2\1"+
-    "\1\11\1\1\3\0\5\1\1\0\1\11\10\0\1\11"+
+    "\22\0\2\1\1\11\11\1\1\11\3\1\3\11\25\1"+
+    "\1\11\12\1\6\11\1\1\1\11\3\1\1\11\4\1"+
+    "\1\11\7\1\1\11\5\1\1\11\2\1\1\11\2\1"+
+    "\1\11\2\1\2\11\1\1\24\11\5\1\1\11\1\1"+
+    "\1\11\1\1\1\11\1\1\1\0\4\1\2\0\1\11"+
+    "\6\1\2\11\2\0\6\1\2\0\1\1\3\0\1\11"+
+    "\1\0\1\1\1\11\36\1\4\11\1\1\1\11\1\1"+
+    "\12\0\3\1\1\11\1\1\1\0\1\11\1\1\1\11"+
+    "\1\1\1\11\1\1\5\11\1\1\1\11\4\0\3\1"+
+    "\3\11\1\1\3\0\2\1\1\11\1\1\3\0\1\1"+
+    "\2\0\1\11\2\0\1\11\10\0\1\11\2\0\1\11"+
     "\1\0\1\11\1\1\2\0\1\11\2\0\3\11\2\0"+
     "\1\1\1\0\1\11\16\1\1\0\1\11\44\1\1\11"+
     "\1\1\12\0\10\1\3\11\2\0\1\11\1\0\1\1"+
-    "\1\0\1\11\1\1\1\11\1\1\1\0\1\11\4\1"+
-    "\1\11\5\1\1\11\1\0\1\1\1\0\2\1\1\11"+
-    "\2\0\60\1\12\0\11\1\5\0\1\11\3\0\3\1"+
-    "\2\0\54\1\5\0\1\11\6\0\11\1\1\11\1\1"+
-    "\5\0\1\11\3\1\1\11\1\1\1\0\31\1\1\0"+
-    "\4\1\4\0\1\11\5\0\1\11\11\1\6\0\24\1"+
-    "\1\0\2\1\1\11\3\0\1\11\1\0\11\1\1\11"+
-    "\1\1\4\0\17\1\1\0\1\1\2\11\10\1\5\0"+
-    "\12\1\1\0\7\1\5\0\6\1\1\11\4\1\10\0"+
-    "\5\1\7\0\5\1\1\0\1\11\2\0\2\1\5\0"+
-    "\2\1\3\0\1\1\7\0\1\11\7\0\1\11\1\0";
+    "\1\0\1\11\1\1\1\11\1\1\1\0\1\11\5\1"+
+    "\1\0\1\11\1\0\1\11\1\1\1\0\1\11\1\0"+
+    "\1\1\1\0\2\1\1\11\2\0\60\1\12\0\11\1"+
+    "\5\0\1\11\3\0\2\1\1\11\3\0\54\1\5\0"+
+    "\1\11\6\0\11\1\1\11\1\1\5\0\1\11\2\1"+
+    "\1\11\1\1\1\0\31\1\1\0\4\1\4\0\1\11"+
+    "\5\0\1\11\11\1\6\0\24\1\1\0\2\1\1\11"+
+    "\3\0\1\11\1\0\11\1\1\11\1\1\4\0\17\1"+
+    "\1\0\1\1\2\11\10\1\5\0\12\1\1\0\7\1"+
+    "\5\0\6\1\1\11\4\1\10\0\5\1\7\0\5\1"+
+    "\1\0\1\11\2\0\2\1\5\0\2\1\3\0\1\1"+
+    "\7\0\1\11\7\0\1\11\1\0";
 
   private static int [] zzUnpackAttribute() {
-    int [] result = new int[785];
+    int [] result = new int[790];
     int offset = 0;
     offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
     return result;
@@ -1367,8 +1378,14 @@ the source of the yytext() string */
   /* user code: */
     private final List commentList = new ArrayList();
     private String heredoc = null;
+    private int heredocBodyStart = -1;
+    private int heredocBodyLength = 0;
+    private final StringBuilder heredocBody = new StringBuilder();
     private String nowdoc = null;
     private int nowdoc_len  = 0;
+    private int nowdocBodyStart = -1;
+    private int nowdocBodyLength = 0;
+    private final StringBuilder nowdocBody = new StringBuilder();
     private String comment = null;
     private boolean asp_tags = false;
     private boolean short_tags_allowed = true;
@@ -1518,6 +1535,41 @@ private Symbol createSymbol(int symbolNumber) {
         return symbol;
     }
 
+    private void updateNowdocBodyInfo() {
+        if (nowdocBodyStart == -1) {
+            nowdocBodyStart = getTokenStartPosition();
+        }
+        nowdocBody.append(yytext());
+        nowdocBodyLength += getTokenLength();
+    }
+
+    private Symbol createFullNowdocBodySymbol() {
+        Symbol symbol = new Symbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE, nowdocBodyStart, nowdocBodyStart + nowdocBodyLength);
+        symbol.value = nowdocBody.toString();
+        return symbol;
+    }
+
+    private void updateHeredocBodyInfo() {
+        if (heredocBodyStart == -1) {
+            heredocBodyStart = getTokenStartPosition();
+        }
+        heredocBody.append(yytext());
+        heredocBodyLength += getTokenLength();
+    }
+
+    private void resetHeredocBodyInfo() {
+        heredocBodyStart = -1;
+        heredocBodyLength = 0;
+        heredocBody.delete(0, heredocBody.length());
+    }
+
+    private Symbol createFullHeredocBodySymbol() {
+        Symbol symbol = new Symbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE, heredocBodyStart, heredocBodyStart + heredocBodyLength);
+        symbol.value = heredocBody.toString();
+        resetHeredocBodyInfo();
+        return symbol;
+    }
+
     public int[] getParamenters(){
     	return new int[]{zzMarkedPos, zzPushbackPos, zzCurrentPos, zzStartRead, zzEndRead, yyline};
     }
@@ -1910,16 +1962,16 @@ else if (zzAtEOF) {
       zzMarkedPos = zzMarkedPosL;
 
       switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-        case 205:
+        case 207:
           { comment = yytext();
     handleVarComment();
           }
-        case 207: break;
-        case 188:
+        case 209: break;
+        case 190:
           { return createFullSymbol(ASTPHP5Symbols.T_INTERFACE);
           }
-        case 208: break;
-        case 153:
+        case 210: break;
+        case 155:
           { int removeChars = (yytext().charAt(0) == 'b')?4:3;
     heredoc = yytext().substring(removeChars).trim();    // for 'b<<<' or '<<<'
     if (heredoc.charAt(0) == '"') {
@@ -1928,51 +1980,51 @@ else if (zzAtEOF) {
     yybegin(ST_START_HEREDOC);
     return createSymbol(ASTPHP5Symbols.T_START_HEREDOC);
           }
-        case 209: break;
-        case 27:
+        case 211: break;
+        case 26:
           { return createSymbol(ASTPHP5Symbols.T_OR);
           }
-        case 210: break;
-        case 151:
+        case 212: break;
+        case 153:
           { return createFullSymbol(ASTPHP5Symbols.T_PRINT);
           }
-        case 211: break;
-        case 175:
+        case 213: break;
+        case 177:
           { return createSymbol(ASTPHP5Symbols.T_UNSET_CAST);
           }
-        case 212: break;
-        case 36:
+        case 214: break;
+        case 35:
           { handleCommentStart();
 	yybegin(ST_ONE_LINE_COMMENT);
 //	yymore();
           }
-        case 213: break;
-        case 2:
+        case 215: break;
+        case 1:
           { return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
           }
-        case 214: break;
-        case 22:
+        case 216: break;
+        case 21:
           { return createSymbol(ASTPHP5Symbols.T_RGREATER);
           }
-        case 215: break;
+        case 217: break;
         case 125:
           { yypushback(1);
 	pushState(ST_VAR_OFFSET);
 	return createFullSymbol(ASTPHP5Symbols.T_VARIABLE);
           }
-        case 216: break;
-        case 162:
+        case 218: break;
+        case 164:
           { return createFullSymbol(ASTPHP5Symbols.T_GLOBAL);
           }
-        case 217: break;
-        case 57:
+        case 219: break;
+        case 56:
           { //	yymore();
           }
-        case 218: break;
-        case 23:
+        case 220: break;
+        case 22:
           { return createSymbol(ASTPHP5Symbols.T_TIMES);
           }
-        case 219: break;
+        case 221: break;
         case 108:
           { String text = yytext();
     if ((text.charAt(1)=='%' && asp_tags)
@@ -1983,213 +2035,204 @@ else if (zzAtEOF) {
         return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
     }
           }
-        case 220: break;
-        case 74:
+        case 222: break;
+        case 73:
           { return createSymbol(ASTPHP5Symbols.T_MINUS_EQUAL);
           }
-        case 221: break;
-        case 92:
+        case 223: break;
+        case 91:
           { return createSymbol(ASTPHP5Symbols.T_BOOLEAN_OR);
           }
-        case 222: break;
-        case 13:
+        case 224: break;
+        case 12:
           { pushState(ST_IN_SCRIPTING);
     bracket++;
     return createSymbol(ASTPHP5Symbols.T_CURLY_OPEN);
           }
-        case 223: break;
-        case 41:
+        case 225: break;
+        case 42:
           { yypushback(1);
 	yybegin(ST_HEREDOC);
           }
-        case 224: break;
-        case 20:
+        case 226: break;
+        case 19:
           { return createSymbol(ASTPHP5Symbols.T_CLOSE_PARENTHESE);
           }
-        case 225: break;
-        case 101:
-          { String text = yytext();
-    int length = text.length() - 1;
-    text = text.trim();
-
-    yypushback(1);
-
-    if (text.endsWith(";")) {
-        text = text.substring(0, text.length() - 1);
-        yypushback(1);
-    }
-    if (text.equals(heredoc)) {
-        heredoc = null;
-        yybegin(ST_IN_SCRIPTING);
-        return createSymbol(ASTPHP5Symbols.T_END_HEREDOC);
-    } else {
-    	   yybegin(ST_HEREDOC);
-    }
-          }
-        case 226: break;
-        case 45:
+        case 227: break;
+        case 44:
           { yypushback(yylength());
     popState();
           }
-        case 227: break;
-        case 21:
+        case 228: break;
+        case 20:
           { return createSymbol(ASTPHP5Symbols.T_NOT);
           }
-        case 228: break;
-        case 154:
+        case 229: break;
+        case 156:
           { yypushback(3);
 	pushState(ST_LOOKING_FOR_PROPERTY);
 	return createFullSymbol(ASTPHP5Symbols.T_VARIABLE);
           }
-        case 229: break;
-        case 29:
+        case 230: break;
+        case 28:
           { return createSymbol(ASTPHP5Symbols.T_QUESTION_MARK);
           }
-        case 230: break;
+        case 231: break;
         case 119:
           { return createFullSymbol(ASTPHP5Symbols.T_VAR);
           }
-        case 231: break;
-        case 202:
-          { return createFullSymbol(ASTPHP5Symbols.T_FUNC_C);
-          }
         case 232: break;
-        case 141:
-          { return createFullSymbol(ASTPHP5Symbols.T_TRAIT);
+        case 204:
+          { return createFullSymbol(ASTPHP5Symbols.T_FUNC_C);
           }
         case 233: break;
-        case 159:
-          { return createFullSymbol(ASTPHP5Symbols.T_STATIC);
+        case 143:
+          { return createFullSymbol(ASTPHP5Symbols.T_TRAIT);
           }
         case 234: break;
-        case 131:
-          { return createFullSymbol(ASTPHP5Symbols.T_EVAL);
+        case 128:
+          { /* <ST_HEREDOC> {NEWLINE}{LABEL}";"?[\n\r] */
+        int trailingNewLineLength = 1;
+        int labelLength = yylength() - trailingNewLineLength;
+        int back = trailingNewLineLength;
+
+        if (yytext().charAt(labelLength-1) == ';') {
+           labelLength--;
+           back++;
+        }
+        if (labelLength > heredoc.length()
+                && yytext().substring(labelLength - heredoc.length(), labelLength).equals(heredoc)) {
+            back += heredoc.length();
+            yypushback(back);
+            yybegin(ST_END_HEREDOC);
+        } else {
+            yypushback(trailingNewLineLength);
+        }
+        updateHeredocBodyInfo();
+        if (yystate() == ST_END_HEREDOC) {
+            return createFullHeredocBodySymbol();
+        }
           }
         case 235: break;
         case 161:
-          { return createFullSymbol(ASTPHP5Symbols.T_RETURN);
+          { return createFullSymbol(ASTPHP5Symbols.T_STATIC);
           }
         case 236: break;
-        case 144:
-          { return createFullSymbol(ASTPHP5Symbols.T_UNSET);
+        case 133:
+          { return createFullSymbol(ASTPHP5Symbols.T_EVAL);
           }
         case 237: break;
-        case 85:
-          { return createSymbol(ASTPHP5Symbols.T_DIV_EQUAL);
+        case 163:
+          { return createFullSymbol(ASTPHP5Symbols.T_RETURN);
           }
         case 238: break;
-        case 126:
-          { String text = yytext();
-
-    if (text.charAt(text.length() - 2)== ';') {
-		text = text.substring(0, text.length() - 2);
-        	yypushback(1);
-    } else {
-		text = text.substring(0, text.length() - 1);
-    }
-
-	int textLength = text.length();
-	int heredocLength = heredoc.length();
-	if (textLength > heredocLength && text.substring(textLength - heredocLength, textLength).equals(heredoc)) {
-		yypushback(2);
-        	yybegin(ST_END_HEREDOC);
-        	// we need to remove the closing label from the symbol value.
-                /*<ST_HEREDOC>{HEREDOC_CHARS}*{HEREDOC_NEWLINE}+{LABEL}";"?[\n\r]*/
-        	Symbol sym = createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
-        	String value = (String)sym.value;
-        	sym.value = value.substring(0, value.length() - heredocLength + 1);
-	   	return sym;
-	}
-	yypushback(1);
+        case 146:
+          { return createFullSymbol(ASTPHP5Symbols.T_UNSET);
           }
         case 239: break;
-        case 46:
+        case 84:
+          { return createSymbol(ASTPHP5Symbols.T_DIV_EQUAL);
+          }
+        case 240: break;
+        case 45:
           { popState();
     return createFullSymbol(ASTPHP5Symbols.T_STRING);
           }
-        case 240: break;
-        case 199:
+        case 241: break;
+        case 201:
           { return createFullSymbol(ASTPHP5Symbols.T_METHOD_C);
           }
-        case 241: break;
-        case 195:
+        case 242: break;
+        case 197:
           { return createFullSymbol(ASTPHP5Symbols.T_ENDFOREACH);
           }
-        case 242: break;
-        case 170:
+        case 243: break;
+        case 172:
           { return createFullSymbol(ASTPHP5Symbols.T_FINALLY);
           }
-        case 243: break;
-        case 81:
+        case 244: break;
+        case 80:
           { return createSymbol(ASTPHP5Symbols.T_IS_SMALLER_OR_EQUAL);
           }
-        case 244: break;
-        case 68:
+        case 245: break;
+        case 67:
           { return createFullSymbol(ASTPHP5Symbols.T_CONSTANT_ENCAPSED_STRING);
           }
-        case 245: break;
+        case 246: break;
         case 111:
           { return createFullSymbol(ASTPHP5Symbols.T_LOGICAL_AND);
           }
-        case 246: break;
-        case 146:
-          { return createFullSymbol(ASTPHP5Symbols.T_CONST);
-          }
         case 247: break;
-        case 134:
-          { return createFullSymbol(ASTPHP5Symbols.T_GOTO);
+        case 148:
+          { return createFullSymbol(ASTPHP5Symbols.T_CONST);
           }
         case 248: break;
-        case 102:
-          { String text = yytext();
-    int length = text.length() - 1;
-    text = text.trim();
-
-    yypushback(1);
-
-    if (text.endsWith(";")) {
-        text = text.substring(0, text.length() - 1);
-        yypushback(1);
-    }
-    if (text.equals(nowdoc)) {
-        nowdoc = null;
-        yybegin(ST_IN_SCRIPTING);
-        return createSymbol(ASTPHP5Symbols.T_END_NOWDOC);
-    } else {
-        yybegin(ST_NOWDOC);
-    }
+        case 136:
+          { return createFullSymbol(ASTPHP5Symbols.T_GOTO);
           }
         case 249: break;
         case 114:
           { return createFullSymbol(ASTPHP5Symbols.T_EXIT);
           }
         case 250: break;
-        case 38:
+        case 37:
           { yybegin(ST_IN_SCRIPTING);
     return createSymbol(ASTPHP5Symbols.T_QUATE);
           }
         case 251: break;
-        case 181:
-          { return createFullSymbol(ASTPHP5Symbols.T_CALLABLE);
+        case 100:
+          { /* <ST_END_HEREDOC>{LABEL}";"?[\n\r] { */
+    heredoc=null;
+    resetHeredocBodyInfo();
+    yybegin(ST_IN_SCRIPTING);
+    int back = 1;
+    // mark just the label
+    if (yytext().charAt(yylength() - 2)==';') {
+        back++;
+    }
+    yypushback(back);
+    return createSymbol(ASTPHP5Symbols.T_END_HEREDOC);
           }
         case 252: break;
-        case 120:
-          { return createSymbol(ASTPHP5Symbols.T_IS_NOT_IDENTICAL);
+        case 127:
+          { /* <ST_HEREDOC> {HEREDOC_CHARS}("{$" | "${") */
+        yypushback(2);
+        updateHeredocBodyInfo();
+        return createFullHeredocBodySymbol();
           }
         case 253: break;
-        case 44:
-          { nowdoc=null;
-    nowdoc_len=0;
-    yybegin(ST_IN_SCRIPTING);
-    return createSymbol(ASTPHP5Symbols.T_END_NOWDOC);
+        case 183:
+          { return createFullSymbol(ASTPHP5Symbols.T_CALLABLE);
           }
         case 254: break;
-        case 158:
+        case 120:
+          { return createSymbol(ASTPHP5Symbols.T_IS_NOT_IDENTICAL);
+          }
+        case 255: break;
+        case 101:
+          { int length = yylength() - 1;
+    yypushback(1);
+
+    if (yytext().charAt(length - 1) == ';') {
+        length--;
+        yypushback(1);
+    }
+    if (length == nowdoc.length() && yytext().substring(0, length).equals(nowdoc)) {
+        nowdoc = null;
+        yybegin(ST_IN_SCRIPTING);
+        return createSymbol(ASTPHP5Symbols.T_END_NOWDOC);
+    } else {
+        yybegin(ST_NOWDOC);
+        updateNowdocBodyInfo();
+    }
+          }
+        case 256: break;
+        case 160:
           { /* not a keyword, hust for recognize constans.*/
     return createFullSymbol(ASTPHP5Symbols.T_DEFINE);
           }
-        case 255: break;
-        case 58:
+        case 257: break;
+        case 57:
           { String yytext = yytext();
 	switch (yytext.charAt(yytext.length() - 1)) {
 		case '?':
@@ -2203,215 +2246,245 @@ else if (zzAtEOF) {
 	}
 //	yymore();
           }
-        case 256: break;
-        case 91:
+        case 258: break;
+        case 90:
           { return createSymbol(ASTPHP5Symbols.T_OR_EQUAL);
           }
-        case 257: break;
-        case 139:
+        case 259: break;
+        case 141:
           { return createFullSymbol(ASTPHP5Symbols.T_BREAK);
           }
-        case 258: break;
-        case 206:
+        case 260: break;
+        case 208:
           { yybegin(ST_HALTED_COMPILER);
 	return createSymbol(ASTPHP5Symbols.T_HALT_COMPILER);
           }
-        case 259: break;
-        case 59:
+        case 261: break;
+        case 58:
           { yybegin(ST_IN_SCRIPTING);
     return createSymbol(ASTPHP5Symbols.T_ECHO);
           }
-        case 260: break;
-        case 160:
+        case 262: break;
+        case 162:
           { return createFullSymbol(ASTPHP5Symbols.T_SWITCH);
           }
-        case 261: break;
-        case 54:
+        case 263: break;
+        case 53:
           { popState();
 	return createSymbol(ASTPHP5Symbols.T_CLOSE_RECT);
           }
-        case 262: break;
-        case 33:
+        case 264: break;
+        case 32:
           { return createSymbol(ASTPHP5Symbols.T_TILDA);
           }
-        case 263: break;
-        case 71:
+        case 265: break;
+        case 70:
           { return createFullSymbol(ASTPHP5Symbols.T_IF);
           }
-        case 264: break;
-        case 172:
+        case 266: break;
+        case 174:
           { return createFullSymbol(ASTPHP5Symbols.T_REQUIRE);
           }
-        case 265: break;
-        case 18:
+        case 267: break;
+        case 17:
           { return createSymbol(ASTPHP5Symbols.T_NEKUDOTAIM);
           }
-        case 266: break;
-        case 26:
+        case 268: break;
+        case 25:
           { return createSymbol(ASTPHP5Symbols.T_REFERENCE);
           }
-        case 267: break;
-        case 86:
+        case 269: break;
+        case 85:
           { handleCommentStart();
     yybegin(ST_COMMENT);
           }
-        case 268: break;
-        case 42:
-          { heredoc = null;
-	yybegin(ST_IN_SCRIPTING);
-	return createSymbol(ASTPHP5Symbols.T_END_HEREDOC);
-          }
-        case 269: break;
-        case 190:
+        case 270: break;
+        case 192:
           { return createFullSymbol(ASTPHP5Symbols.T_NAMESPACE);
           }
-        case 270: break;
-        case 197:
+        case 271: break;
+        case 199:
           { return createFullSymbol(ASTPHP5Symbols.T_IMPLEMENTS);
           }
-        case 271: break;
-        case 149:
+        case 272: break;
+        case 151:
           { return createFullSymbol(ASTPHP5Symbols.T_YIELD);
           }
-        case 272: break;
-        case 16:
+        case 273: break;
+        case 15:
           { return createSymbol(ASTPHP5Symbols.T_MINUS);
           }
-        case 273: break;
-        case 193:
+        case 274: break;
+        case 195:
           { return createFullSymbol(ASTPHP5Symbols.T_CLASS_C);
           }
-        case 274: break;
+        case 275: break;
         case 106:
           { handlePHPDocEnd();
      yybegin(ST_IN_SCRIPTING);
           }
-        case 275: break;
-        case 204:
+        case 276: break;
+        case 206:
           { return createFullSymbol(ASTPHP5Symbols.T_NS_C);
           }
-        case 276: break;
-        case 152:
+        case 277: break;
+        case 154:
           { return createSymbol(ASTPHP5Symbols.T_INT_CAST);
           }
-        case 277: break;
-        case 157:
+        case 278: break;
+        case 159:
           { return createFullSymbol(ASTPHP5Symbols.T_ELSEIF);
           }
-        case 278: break;
-        case 95:
+        case 279: break;
+        case 94:
           { return createSymbol(ASTPHP5Symbols.T_COALESCE);
           }
-        case 279: break;
-        case 194:
+        case 280: break;
+        case 196:
           { return createFullSymbol(ASTPHP5Symbols.T_ENDDECLARE);
           }
-        case 280: break;
-        case 75:
+        case 281: break;
+        case 74:
           { return createSymbol(ASTPHP5Symbols.T_DEC);
           }
-        case 281: break;
-        case 96:
+        case 282: break;
+        case 95:
           { yypushback(1);
     /*<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}*("{""{"+|"$""$"+|(("{"+|"$"+)[\"]))*/
     return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
           }
-        case 282: break;
-        case 179:
+        case 283: break;
+        case 181:
           { return createFullSymbol(ASTPHP5Symbols.T_ABSTRACT);
           }
-        case 283: break;
-        case 130:
+        case 284: break;
+        case 132:
           { return createFullSymbol(ASTPHP5Symbols.T_ELSE);
           }
-        case 284: break;
-        case 189:
+        case 285: break;
+        case 191:
           { return createFullSymbol(ASTPHP5Symbols.T_INSTEADOF);
           }
-        case 285: break;
-        case 76:
+        case 286: break;
+        case 75:
           { pushState(ST_LOOKING_FOR_PROPERTY);
     return createSymbol(ASTPHP5Symbols.T_OBJECT_OPERATOR);
           }
-        case 286: break;
-        case 14:
+        case 287: break;
+        case 13:
           { return createSymbol(ASTPHP5Symbols.T_SEMICOLON);
           }
-        case 287: break;
-        case 3:
+        case 288: break;
+        case 2:
           { // do nothing
           }
-        case 288: break;
-        case 48:
+        case 289: break;
+        case 47:
           { popState();
     pushState(ST_IN_SCRIPTING);
     return createFullSymbol(ASTPHP5Symbols.T_STRING_VARNAME);
           }
-        case 289: break;
-        case 17:
-          { return createSymbol(ASTPHP5Symbols.T_LGREATER);
-          }
         case 290: break;
-        case 133:
-          { return createFullSymbol(ASTPHP5Symbols.T_LIST);
+        case 16:
+          { return createSymbol(ASTPHP5Symbols.T_LGREATER);
           }
         case 291: break;
+        case 135:
+          { return createFullSymbol(ASTPHP5Symbols.T_LIST);
+          }
+        case 292: break;
         case 105:
           { handleMultilineCommentEnd();
     yybegin(ST_IN_SCRIPTING);
           }
-        case 292: break;
-        case 156:
+        case 293: break;
+        case 158:
           { return createFullSymbol(ASTPHP5Symbols.T_ENDFOR);
           }
-        case 293: break;
-        case 4:
+        case 294: break;
+        case 3:
           { return createFullSymbol(ASTPHP5Symbols.T_LNUMBER);
           }
-        case 294: break;
-        case 99:
+        case 295: break;
+        case 98:
           { yypushback(1);
         /*<ST_BACKQUOTE>{BACKQUOTE_CHARS}*("{""{"+|"$""$"+|(("{"+|"$"+)[`]))*/
 	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
           }
-        case 295: break;
-        case 135:
+        case 296: break;
+        case 41:
+          { /* <ST_HEREDOC> "$" | "{" */
+        updateHeredocBodyInfo();
+          }
+        case 297: break;
+        case 137:
           { handleCommentStart();
           }
-        case 296: break;
-        case 138:
+        case 298: break;
+        case 140:
           { return createFullSymbol(ASTPHP5Symbols.T_ARRAY);
           }
-        case 297: break;
-        case 129:
+        case 299: break;
+        case 131:
           { return createFullSymbol(ASTPHP5Symbols.T_ECHO);
           }
-        case 298: break;
-        case 49:
+        case 300: break;
+        case 48:
           { return createFullSymbol(ASTPHP5Symbols.T_NUM_STRING);
           }
-        case 299: break;
-        case 89:
+        case 301: break;
+        case 88:
           { return createSymbol(ASTPHP5Symbols.T_AND_EQUAL);
           }
-        case 300: break;
-        case 53:
+        case 302: break;
+        case 99:
+          { /* <ST_START_HEREDOC>{LABEL}";"?[\n\r] */
+    int trailingNewLineLength = 1;
+    int labelLength = yylength() - trailingNewLineLength;
+    int back = trailingNewLineLength;
+    String yytext = yytext();
+
+    if (yytext.charAt(labelLength - 1) == ';') {
+        labelLength--;
+        back++;
+    }
+    if (labelLength == heredoc.length()
+            && yytext.substring(labelLength - heredoc.length(), labelLength).equals(heredoc)) {
+        back = back + heredoc.length();
+        yypushback(back);
+        yybegin(ST_END_HEREDOC);
+    } else {
+        yypushback(yylength());
+        yybegin(ST_HEREDOC);
+    }
+          }
+        case 303: break;
+        case 52:
           { bracket++; return createSymbol(ASTPHP5Symbols.T_CURLY_OPEN);
           }
-        case 301: break;
-        case 142:
+        case 304: break;
+        case 144:
           { return createFullSymbol(ASTPHP5Symbols.T_THROW);
           }
-        case 302: break;
-        case 150:
+        case 305: break;
+        case 126:
+          { /* <ST_HEREDOC> {HEREDOC_CHARS}"$"{LABEL}"["? */
+        String text = yytext();
+        int lastIndexOfDollar = text.lastIndexOf('$');
+        yypushback(text.length() - lastIndexOfDollar);
+        updateHeredocBodyInfo();
+        return createFullHeredocBodySymbol();
+          }
+        case 306: break;
+        case 152:
           { return createFullSymbol(ASTPHP5Symbols.T_WHILE);
           }
-        case 303: break;
-        case 187:
+        case 307: break;
+        case 189:
           { return createFullSymbol(ASTPHP5Symbols.T_ENDSWITCH);
           }
-        case 304: break;
-        case 60:
+        case 308: break;
+        case 59:
           { if (asp_tags) {
         yybegin(ST_IN_SCRIPTING);
         //return T_OPEN_TAG;
@@ -2420,45 +2493,45 @@ else if (zzAtEOF) {
         return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
     }
           }
-        case 305: break;
-        case 174:
+        case 309: break;
+        case 176:
           { return createSymbol(ASTPHP5Symbols.T_ARRAY_CAST);
           }
-        case 306: break;
-        case 98:
+        case 310: break;
+        case 97:
           { pushState(ST_IN_SCRIPTING);
     yypushback(yylength()-1);
     bracket++;
     return createSymbol(ASTPHP5Symbols.T_CURLY_OPEN_WITH_DOLAR);
           }
-        case 307: break;
-        case 168:
+        case 311: break;
+        case 170:
           { return createFullSymbol(ASTPHP5Symbols.T_DEFAULT);
           }
-        case 308: break;
-        case 165:
+        case 312: break;
+        case 167:
           { return createSymbol(ASTPHP5Symbols.T_DOUBLE_CAST);
           }
-        case 309: break;
-        case 12:
+        case 313: break;
+        case 11:
           { yybegin(ST_BACKQUOTE);
     return createSymbol(ASTPHP5Symbols.T_BACKQUATE);
           }
-        case 310: break;
-        case 31:
+        case 314: break;
+        case 30:
           { return createSymbol(ASTPHP5Symbols.T_OPEN_RECT);
           }
-        case 311: break;
-        case 145:
+        case 315: break;
+        case 147:
           { return createFullSymbol(ASTPHP5Symbols.T_CATCH);
           }
-        case 312: break;
-        case 97:
+        case 316: break;
+        case 96:
           { pushState(ST_LOOKING_FOR_VARNAME);
     return createSymbol(ASTPHP5Symbols.T_DOLLAR_OPEN_CURLY_BRACES);
           }
-        case 313: break;
-        case 35:
+        case 317: break;
+        case 34:
           { /* This is a temporary fix which is dependant on flex and it's implementation */
     if (!stack.isEmpty()) {
         popState();
@@ -2466,86 +2539,86 @@ else if (zzAtEOF) {
     bracket--;
     return createSymbol(ASTPHP5Symbols.T_CURLY_CLOSE);
           }
-        case 314: break;
-        case 87:
+        case 318: break;
+        case 86:
           { return createSymbol(ASTPHP5Symbols.T_MOD_EQUAL);
           }
-        case 315: break;
-        case 24:
+        case 319: break;
+        case 23:
           { return createSymbol(ASTPHP5Symbols.T_DIV);
           }
-        case 316: break;
-        case 32:
+        case 320: break;
+        case 31:
           { return createSymbol(ASTPHP5Symbols.T_CLOSE_RECT);
           }
-        case 317: break;
+        case 321: break;
         case 121:
           { return createSymbol(ASTPHP5Symbols.T_SPACESHIP);
           }
-        case 318: break;
-        case 7:
+        case 322: break;
+        case 6:
           { return createSymbol(ASTPHP5Symbols.T_PLUS);
           }
-        case 319: break;
-        case 147:
+        case 323: break;
+        case 149:
           { return createFullSymbol(ASTPHP5Symbols.T_CLASS);
           }
-        case 320: break;
+        case 324: break;
         case 115:
           { return createFullSymbol(ASTPHP5Symbols.T_FOR);
           }
-        case 321: break;
-        case 77:
+        case 325: break;
+        case 76:
           { return createSymbol(ASTPHP5Symbols.T_IS_GREATER_OR_EQUAL);
           }
-        case 322: break;
-        case 72:
+        case 326: break;
+        case 71:
           { return createFullSymbol(ASTPHP5Symbols.T_DO);
           }
-        case 323: break;
-        case 39:
+        case 327: break;
+        case 38:
           { /*<ST_BACKQUOTE>{BACKQUOTE_CHARS}+*/
 	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
           }
-        case 324: break;
-        case 37:
+        case 328: break;
+        case 36:
           { /*<ST_DOUBLE_QUOTES>{DOUBLE_QUOTES_CHARS}+*/
 	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
           }
-        case 325: break;
-        case 90:
+        case 329: break;
+        case 89:
           { return createSymbol(ASTPHP5Symbols.T_BOOLEAN_AND);
           }
-        case 326: break;
-        case 6:
+        case 330: break;
+        case 5:
           { return createFullSymbol(ASTPHP5Symbols.T_STRING);
           }
-        case 327: break;
-        case 167:
+        case 331: break;
+        case 169:
           { return createFullSymbol(ASTPHP5Symbols.T_INCLUDE);
           }
-        case 328: break;
-        case 5:
+        case 332: break;
+        case 4:
           { return createSymbol(ASTPHP5Symbols.T_NEKUDA);
           }
-        case 329: break;
-        case 136:
+        case 333: break;
+        case 138:
           { return createFullSymbol(ASTPHP5Symbols.T_ENDIF);
           }
-        case 330: break;
+        case 334: break;
         case 117:
           { return createFullSymbol(ASTPHP5Symbols.T_NEW);
           }
-        case 331: break;
-        case 55:
+        case 335: break;
+        case 54:
           { bracket--; return createSymbol(ASTPHP5Symbols.T_CURLY_CLOSE);
           }
-        case 332: break;
-        case 196:
+        case 336: break;
+        case 198:
           { return createFullSymbol(ASTPHP5Symbols.T_INSTANCEOF);
           }
-        case 333: break;
-        case 177:
+        case 337: break;
+        case 179:
           { int bprefix = (yytext().charAt(0) != '<') ? 1 : 0;
         int startString=3+bprefix;
         /* 3 is <<<, 2 is quotes, 1 is newline */
@@ -2560,62 +2633,62 @@ else if (zzAtEOF) {
         yybegin(ST_START_NOWDOC);
         return createSymbol(ASTPHP5Symbols.T_START_NOWDOC);
           }
-        case 334: break;
-        case 47:
+        case 338: break;
+        case 46:
           { yypushback(yylength());
     popState();
     pushState(ST_IN_SCRIPTING);
           }
-        case 335: break;
-        case 155:
+        case 339: break;
+        case 157:
           { isEndedPhp = false;
     whitespaceEndPosition = getTokenStartPosition() + yylength();
     yybegin(ST_IN_SCRIPTING);
     //return T_OPEN_TAG;
     //return createSymbol(ASTPHP5Symbols.T_OPEN_TAG);
           }
-        case 336: break;
-        case 65:
+        case 340: break;
+        case 64:
           { return createSymbol(ASTPHP5Symbols.T_PLUS_EQUAL);
           }
-        case 337: break;
-        case 9:
+        case 341: break;
+        case 8:
           { whitespaceEndPosition = getTokenStartPosition() + yylength();
           }
-        case 338: break;
-        case 173:
+        case 342: break;
+        case 175:
           { return createFullSymbol(ASTPHP5Symbols.T_PRIVATE);
           }
-        case 339: break;
-        case 201:
+        case 343: break;
+        case 203:
           { return createFullSymbol(ASTPHP5Symbols.T_REQUIRE_ONCE);
           }
-        case 340: break;
-        case 171:
+        case 344: break;
+        case 173:
           { return createFullSymbol(ASTPHP5Symbols.T_FOREACH);
           }
-        case 341: break;
-        case 148:
+        case 345: break;
+        case 150:
           { return createFullSymbol(ASTPHP5Symbols.T_CLONE);
           }
-        case 342: break;
-        case 140:
+        case 346: break;
+        case 142:
           { return createFullSymbol(ASTPHP5Symbols.T_ISSET);
           }
-        case 343: break;
-        case 19:
+        case 347: break;
+        case 18:
           { return createSymbol(ASTPHP5Symbols.T_OPEN_PARENTHESE);
           }
-        case 344: break;
-        case 163:
+        case 348: break;
+        case 165:
           { return createFullSymbol(ASTPHP5Symbols.T_PUBLIC);
           }
-        case 345: break;
+        case 349: break;
         case 118:
           { return createSymbol(ASTPHP5Symbols.T_SR_EQUAL);
           }
-        case 346: break;
-        case 61:
+        case 350: break;
+        case 60:
           { if (short_tags_allowed || yylength()>2) { /* yyleng>2 means it's not <? but <script> */
         yybegin(ST_IN_SCRIPTING);
         //return T_OPEN_TAG;
@@ -2624,105 +2697,104 @@ else if (zzAtEOF) {
         return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
     }
           }
-        case 347: break;
-        case 137:
+        case 351: break;
+        case 139:
           { return createFullSymbol(ASTPHP5Symbols.T_EMPTY);
           }
-        case 348: break;
-        case 80:
+        case 352: break;
+        case 40:
+          { /* <ST_HEREDOC> {HEREDOC_CHARS} */
+        updateHeredocBodyInfo();
+          }
+        case 353: break;
+        case 79:
           { return createSymbol(ASTPHP5Symbols.T_IS_NOT_EQUAL);
           }
-        case 349: break;
-        case 83:
+        case 354: break;
+        case 82:
           { return createSymbol(ASTPHP5Symbols.T_MUL_EQUAL);
           }
-        case 350: break;
+        case 355: break;
         case 124:
           { if (!parsePHPDoc()) {
 handleCommentStart();
 yybegin(ST_DOCBLOCK);
 }
           }
-        case 351: break;
+        case 356: break;
         case 122:
           { return createSymbol(ASTPHP5Symbols.T_SL_EQUAL);
           }
-        case 352: break;
+        case 357: break;
         case 113:
           { return createFullSymbol(ASTPHP5Symbols.T_TRY);
           }
-        case 353: break;
-        case 128:
+        case 358: break;
+        case 145:
+          { return createFullSymbol(ASTPHP5Symbols.T_FINAL);
+          }
+        case 359: break;
+        case 130:
           { int len = yylength();
         yypushback(2); // go back to mark end of comment in the next token
         comment = yytext();
           }
-        case 354: break;
-        case 143:
-          { return createFullSymbol(ASTPHP5Symbols.T_FINAL);
-          }
-        case 355: break;
-        case 184:
+        case 360: break;
+        case 186:
           { return createSymbol(ASTPHP5Symbols.T_OBJECT_CAST);
           }
-        case 356: break;
-        case 100:
-          { yypushback(1);
-    /*<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?("{""{"+|"$""$"+)*/
-    return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
-          }
-        case 357: break;
-        case 164:
+        case 361: break;
+        case 166:
           { return createSymbol(ASTPHP5Symbols.T_BOOL_CAST);
           }
-        case 358: break;
-        case 40:
+        case 362: break;
+        case 39:
           { yybegin(ST_IN_SCRIPTING);
     return createSymbol(ASTPHP5Symbols.T_BACKQUATE);
           }
-        case 359: break;
-        case 8:
+        case 363: break;
+        case 7:
           { return createSymbol(ASTPHP5Symbols.T_NS_SEPARATOR);
           }
-        case 360: break;
-        case 183:
+        case 364: break;
+        case 185:
           { return createSymbol(ASTPHP5Symbols.T_STRING_CAST);
           }
-        case 361: break;
+        case 365: break;
         case 110:
           { return createFullSymbol(ASTPHP5Symbols.T_LOGICAL_XOR);
           }
-        case 362: break;
-        case 50:
+        case 366: break;
+        case 49:
           { yypushback(1);
 	popState();
         /*<ST_VAR_OFFSET>[ \n\r\t\\'#]*/
 	return createSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
           }
-        case 363: break;
-        case 62:
+        case 367: break;
+        case 61:
           { return createFullSymbol(ASTPHP5Symbols.T_DNUMBER);
           }
-        case 364: break;
-        case 25:
+        case 368: break;
+        case 24:
           { return createSymbol(ASTPHP5Symbols.T_PRECENT);
           }
-        case 365: break;
-        case 203:
+        case 369: break;
+        case 205:
           { comment = yytext();
     handleVarComment();
     // if we want to handle the var comment in  ast, then return the T_VAR_Comment symbol
     // but it needs some changes in parser grammar. see issue #154967
     //return createFullSymbol(ASTPHP5Symbols.T_VAR_COMMENT);
           }
-        case 366: break;
-        case 94:
+        case 370: break;
+        case 93:
           { isEndedPhp = true;
     yybegin(YYINITIAL);
     return createSymbol(ASTPHP5Symbols.T_SEMICOLON);  /* implicit ';' at php-end tag */
           }
-        case 367: break;
-        case 88:
+        case 371: break;
+        case 87:
           { if (asp_tags) {
         yybegin(YYINITIAL);
         return createSymbol(ASTPHP5Symbols.T_SEMICOLON);  /* implicit ';' at php-end tag */
@@ -2730,69 +2802,80 @@ else if (zzAtEOF) {
         return createSymbol(ASTPHP5Symbols.T_INLINE_HTML);
     }
           }
-        case 368: break;
-        case 180:
+        case 372: break;
+        case 182:
           { return createFullSymbol(ASTPHP5Symbols.T_FUNCTION);
           }
-        case 369: break;
-        case 178:
+        case 373: break;
+        case 180:
           { return createFullSymbol(ASTPHP5Symbols.T_ENDWHILE);
           }
-        case 370: break;
-        case 28:
+        case 374: break;
+        case 27:
           { return createSymbol(ASTPHP5Symbols.T_KOVA);
           }
-        case 371: break;
-        case 11:
+        case 375: break;
+        case 10:
           { yybegin(ST_DOUBLE_QUOTES);
     return createSymbol(ASTPHP5Symbols.T_QUATE);
           }
-        case 372: break;
-        case 182:
+        case 376: break;
+        case 184:
           { return createFullSymbol(ASTPHP5Symbols.T_CONTINUE);
           }
-        case 373: break;
-        case 1:
-          { /*<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?*/
-	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
-          }
-        case 374: break;
+        case 377: break;
         case 112:
           { return createSymbol(ASTPHP5Symbols.T_IS_IDENTICAL);
           }
-        case 375: break;
-        case 70:
+        case 378: break;
+        case 69:
           { return createSymbol(ASTPHP5Symbols.T_DOUBLE_ARROW);
           }
-        case 376: break;
-        case 192:
+        case 379: break;
+        case 194:
           { return createFullSymbol(ASTPHP5Symbols.T_TRAIT_C);
           }
-        case 377: break;
-        case 79:
+        case 380: break;
+        case 102:
+          { /* <ST_END_NOWDOC>{LABEL}";"?[\n\r] */
+    nowdoc=null;
+    nowdoc_len=0;
+    nowdocBody.delete(0, nowdocBody.length());
+    nowdocBodyStart = -1;
+    nowdocBodyLength = 0;
+    yybegin(ST_IN_SCRIPTING);
+    int back = 1;
+    if (yytext().charAt(yylength() - 2)==';') {
+        back++;
+    }
+    yypushback(back);
+    return createSymbol(ASTPHP5Symbols.T_END_NOWDOC);
+          }
+        case 381: break;
+        case 78:
           { return createSymbol(ASTPHP5Symbols.T_PAAMAYIM_NEKUDOTAYIM);
           }
-        case 378: break;
+        case 382: break;
         case 116:
           { return createFullSymbol(ASTPHP5Symbols.T_USE);
           }
-        case 379: break;
-        case 78:
+        case 383: break;
+        case 77:
           { return createSymbol(ASTPHP5Symbols.T_SR);
           }
-        case 380: break;
-        case 15:
+        case 384: break;
+        case 14:
           { return createSymbol(ASTPHP5Symbols.T_EQUAL);
           }
-        case 381: break;
-        case 30:
+        case 385: break;
+        case 29:
           { return createSymbol(ASTPHP5Symbols.T_COMMA);
           }
-        case 382: break;
-        case 176:
+        case 386: break;
+        case 178:
           { return createFullSymbol(ASTPHP5Symbols.T_DIR);
           }
-        case 383: break;
+        case 387: break;
         case 107:
           { if (asp_tags || yytext().charAt(0)!='%') { /* asp comment? */
         isEndedPhp = true;
@@ -2802,140 +2885,142 @@ else if (zzAtEOF) {
 		//return T_COMMENT;
 	}
           }
-        case 384: break;
-        case 191:
+        case 388: break;
+        case 193:
           { return createFullSymbol(ASTPHP5Symbols.T_PROTECTED);
           }
-        case 385: break;
-        case 63:
+        case 389: break;
+        case 62:
           { return createSymbol(ASTPHP5Symbols.T_CONCAT_EQUAL);
           }
-        case 386: break;
+        case 390: break;
         case 104:
           { /* treat numbers (almost) as strings inside encapsulated strings */
     return createFullSymbol(ASTPHP5Symbols.T_NUM_STRING);
           }
-        case 387: break;
-        case 10:
+        case 391: break;
+        case 9:
           { return createSymbol(ASTPHP5Symbols.T_DOLLAR);
           }
-        case 388: break;
-        case 64:
+        case 392: break;
+        case 63:
           { return createSymbol(ASTPHP5Symbols.T_INC);
           }
-        case 389: break;
+        case 393: break;
         case 43:
           { yypushback(1);
 	yybegin(ST_NOWDOC);
           }
-        case 390: break;
-        case 73:
+        case 394: break;
+        case 72:
           { return createFullSymbol(ASTPHP5Symbols.T_LOGICAL_OR);
           }
-        case 391: break;
-        case 82:
+        case 395: break;
+        case 81:
           { return createSymbol(ASTPHP5Symbols.T_SL);
           }
-        case 392: break;
-        case 127:
-          { String text = yytext();
-
-    if (text.charAt(text.length() - 2)== ';') {
-        text = text.substring(0, text.length() - 2);
-        yypushback(1);
-    } else {
-        text = text.substring(0, text.length() - 1);
-    }
-
-    int textLength = text.length();
-    int nowdocLength = nowdoc.length();
-    if (textLength > nowdocLength && text.substring(textLength - nowdocLength, textLength).equals(nowdoc)) {
-        yypushback(2);
-        yybegin(ST_END_NOWDOC);
-        Symbol sym = createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
-        String value = (String)sym.value;
-        sym.value = value.substring(0, value.length() - nowdocLength + 1);
-        return sym;
-    }
-    yypushback(1);
-          }
-        case 393: break;
-        case 66:
+        case 396: break;
+        case 65:
           { return createFullSymbol(ASTPHP5Symbols.T_AS);
           }
-        case 394: break;
-        case 200:
+        case 397: break;
+        case 202:
           { return createFullSymbol(ASTPHP5Symbols.T_INCLUDE_ONCE);
           }
-        case 395: break;
+        case 398: break;
         case 123:
           { return createSymbol(ASTPHP5Symbols.T_POW_EQUAL);
           }
-        case 396: break;
-        case 69:
+        case 399: break;
+        case 68:
           { return createSymbol(ASTPHP5Symbols.T_IS_EQUAL);
           }
-        case 397: break;
-        case 34:
+        case 400: break;
+        case 33:
           { return createSymbol(ASTPHP5Symbols.T_AT);
           }
-        case 398: break;
-        case 51:
+        case 401: break;
+        case 50:
           { return createSymbol(ASTPHP5Symbols.T_QUATE);
           }
-        case 399: break;
-        case 186:
+        case 402: break;
+        case 188:
           { return createFullSymbol(ASTPHP5Symbols.T_LINE);
           }
-        case 400: break;
-        case 166:
+        case 403: break;
+        case 168:
           { return createFullSymbol(ASTPHP5Symbols.T_EXTENDS);
           }
-        case 401: break;
-        case 67:
+        case 404: break;
+        case 129:
+          { /* <ST_NOWDOC>{NOWDOC_CHARS}*{NEWLINE}+{LABEL}";"?[\n\r] */
+    String text = yytext();
+
+    if (text.charAt(text.length() - 2)== ';') {
+        text = text.substring(0, text.length() - 2);
+        yypushback(1);
+    } else {
+        text = text.substring(0, text.length() - 1);
+    }
+
+    int textLength = text.length();
+    if (textLength > nowdoc_len && text.substring(textLength - nowdoc_len, textLength).equals(nowdoc)) {
+        yypushback(nowdoc_len + 1);
+        updateNowdocBodyInfo();
+        yybegin(ST_END_NOWDOC);
+        if (nowdocBodyLength > 0) {
+            return createFullNowdocBodySymbol();
+        }
+    } else {
+        yypushback(1);
+        updateNowdocBodyInfo();
+    }
+          }
+        case 405: break;
+        case 66:
           { return createFullSymbol(ASTPHP5Symbols.T_VARIABLE);
           }
-        case 402: break;
-        case 198:
+        case 406: break;
+        case 200:
           { return createSymbol(ASTPHP5Symbols.T_YIELD_FROM);
           }
-        case 403: break;
-        case 169:
+        case 407: break;
+        case 171:
           { return createFullSymbol(ASTPHP5Symbols.T_DECLARE);
           }
-        case 404: break;
-        case 93:
+        case 408: break;
+        case 92:
           { return createSymbol(ASTPHP5Symbols.T_XOR_EQUAL);
           }
-        case 405: break;
-        case 84:
+        case 409: break;
+        case 83:
           { return createSymbol(ASTPHP5Symbols.T_POW);
           }
-        case 406: break;
-        case 132:
+        case 410: break;
+        case 134:
           { return createFullSymbol(ASTPHP5Symbols.T_CASE);
           }
-        case 407: break;
-        case 185:
+        case 411: break;
+        case 187:
           { return createFullSymbol(ASTPHP5Symbols.T_FILE);
           }
-        case 408: break;
+        case 412: break;
         case 103:
           { return createSymbol(ASTPHP5Symbols.T_OBJECT_OPERATOR);
           }
-        case 409: break;
+        case 413: break;
         case 109:
           { return createSymbol(ASTPHP5Symbols.T_ELLIPSIS);
           }
-        case 410: break;
-        case 52:
+        case 414: break;
+        case 51:
           { return createSymbol(ASTPHP5Symbols.T_BACKQUATE);
           }
-        case 411: break;
-        case 56:
+        case 415: break;
+        case 55:
           {
           }
-        case 412: break;
+        case 416: break;
         default:
           if (zzInput == YYEOF && (zzStartRead == zzCurrentPos || zzLexicalState == ST_DOCBLOCK)) {
             zzAtEOF = true;
@@ -2950,7 +3035,7 @@ else if (zzAtEOF) {
                 return createSymbol(ASTPHP5Symbols.EOF);
               }
             }
-            case 786: break;
+            case 791: break;
             default:
               {     return createSymbol(ASTPHP5Symbols.EOF);
  }
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc00.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc00.pass
index c479ea0154..0afb5bea2f 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc00.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc00.pass
@@ -42,11 +42,11 @@
         <token id='T_VARIABLE' start='69' end='73'>
             <text>$age</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='73' end='84'>
-            <text>&lt;br&gt;\nHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='73' end='78'>
+            <text>&lt;br&gt;\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='84' end='85'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='78' end='85'>
+            <text>HEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='85' end='86'>
             <text>;</text>
@@ -72,11 +72,11 @@
         <token id='T_START_HEREDOC' start='108' end='124'>
             <text>&lt;&lt;&lt;ENDOFHEREDOC\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='124' end='190'>
-            <text>This is another heredoc test.\nWith another line in it.\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='124' end='179'>
+            <text>This is another heredoc test.\nWith another line in it.\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='190' end='191'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='179' end='191'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='191' end='192'>
             <text>;</text>
@@ -90,11 +90,11 @@
         <token id='T_START_HEREDOC' start='200' end='216'>
             <text>&lt;&lt;&lt;ENDOFHEREDOC\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='303' end='335'>
-            <text>\nNow let&apos;s finish it\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='216' end='324'>
+            <text>This is a heredoc test.\nNOTREALLYEND;\nAnother line\nNOTENDEITHER;\nENDOFHEREDOCWILLBESOON\nNow let&apos;s finish it\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='335' end='336'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='324' end='336'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='336' end='337'>
             <text>;</text>
@@ -158,7 +158,7 @@
                         <Variable start='69' end='73' isDollared='true'>
                             <Identifier start='70' end='73' name='age'/>
                         </Variable>
-                        <Scalar start='73' end='84' type='STRING' value='&lt;br&gt;\n'/>
+                        <Scalar start='73' end='78' type='STRING' value='&lt;br&gt;\n'/>
                     </Expressions>
                 </Quote>
             </EchoStatement>
@@ -177,7 +177,7 @@
                     </Variable>
                     <Quote start='108' end='191' type='HEREDOC'>
                         <Expressions>
-                            <Scalar start='124' end='190' type='STRING' value='This is another heredoc test.\nWith another line in it.\n'/>
+                            <Scalar start='124' end='179' type='STRING' value='This is another heredoc test.\nWith another line in it.\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
@@ -189,7 +189,7 @@
                     </Variable>
                     <Quote start='200' end='336' type='HEREDOC'>
                         <Expressions>
-                            <Scalar start='303' end='335' type='STRING' value='\nNow let&apos;s finish it\n'/>
+                            <Scalar start='216' end='324' type='STRING' value='This is a heredoc test.\nNOTREALLYEND;\nAnother line\nNOTENDEITHER;\nENDOFHEREDOCWILLBESOON\nNow let&apos;s finish it\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc01.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc01.pass
index 24ad23ee2a..4f78dbda52 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc01.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc01.pass
@@ -30,14 +30,11 @@
         <token id='T_START_HEREDOC' start='31' end='42'>
             <text>&lt;&lt;&lt;HEREDOC\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='42' end='49'>
-            <text>Name: \n</text>
-        </token>
         <token id='EOF' start='49' end='49'>
             <text></text>
         </token>
     </scanner>
-    <Program start='0' end='48'>
+    <Program start='0' end='42'>
         <Comments>
         </Comments>
         <Statements>
@@ -57,7 +54,7 @@
                     <Scalar start='22' end='24' type='INT' value='10'/>
                 </Assignment>
             </ExpressionStatement>
-            <ASTError start='26' end='48'/>
+            <ASTError start='26' end='42'/>
         </Statements>
     </Program>
 </testresult>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_001.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_001.pass
index e2e6cb675b..344c5ca546 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_001.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_001.pass
@@ -18,11 +18,11 @@
         <token id='T_START_HEREDOC' start='80' end='96'>
             <text>&lt;&lt;&lt;ENDOFHEREDOC\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='96' end='132'>
-            <text>This is a heredoc test.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='96' end='121'>
+            <text>This is a heredoc test.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='132' end='133'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='121' end='133'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='133' end='134'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_HEREDOC' start='141' end='157'>
             <text>&lt;&lt;&lt;ENDOFHEREDOC\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='157' end='199'>
-            <text>This is another heredoc test.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='157' end='188'>
+            <text>This is another heredoc test.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='199' end='200'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='188' end='200'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='200' end='201'>
             <text>;</text>
@@ -94,7 +94,7 @@
                     <Parameters>
                         <Quote start='80' end='133' type='HEREDOC'>
                             <Expressions>
-                                <Scalar start='96' end='132' type='STRING' value='This is a heredoc test.\n\n'/>
+                                <Scalar start='96' end='121' type='STRING' value='This is a heredoc test.\n\n'/>
                             </Expressions>
                         </Quote>
                     </Parameters>
@@ -107,7 +107,7 @@
                     </Variable>
                     <Quote start='141' end='200' type='HEREDOC'>
                         <Expressions>
-                            <Scalar start='157' end='199' type='STRING' value='This is another heredoc test.\n\n'/>
+                            <Scalar start='157' end='188' type='STRING' value='This is another heredoc test.\n\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_002.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_002.pass
index d83d2edbda..d0bfa152ba 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_002.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_002.pass
@@ -18,11 +18,11 @@
         <token id='T_START_HEREDOC' start='87' end='104'>
             <text>b&lt;&lt;&lt;ENDOFHEREDOC\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='104' end='140'>
-            <text>This is a heredoc test.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='104' end='129'>
+            <text>This is a heredoc test.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='140' end='141'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='129' end='141'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='141' end='142'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_HEREDOC' start='149' end='166'>
             <text>b&lt;&lt;&lt;ENDOFHEREDOC\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='166' end='208'>
-            <text>This is another heredoc test.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='166' end='197'>
+            <text>This is another heredoc test.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='208' end='209'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='197' end='209'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='209' end='210'>
             <text>;</text>
@@ -94,7 +94,7 @@
                     <Parameters>
                         <Quote start='87' end='141' type='HEREDOC'>
                             <Expressions>
-                                <Scalar start='104' end='140' type='STRING' value='This is a heredoc test.\n\n'/>
+                                <Scalar start='104' end='129' type='STRING' value='This is a heredoc test.\n\n'/>
                             </Expressions>
                         </Quote>
                     </Parameters>
@@ -107,7 +107,7 @@
                     </Variable>
                     <Quote start='149' end='209' type='HEREDOC'>
                         <Expressions>
-                            <Scalar start='166' end='208' type='STRING' value='This is another heredoc test.\n\n'/>
+                            <Scalar start='166' end='197' type='STRING' value='This is another heredoc test.\n\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_003.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_003.pass
index d387ff9380..cdc62b2646 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_003.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_003.pass
@@ -24,11 +24,11 @@
         <token id='T_VARIABLE' start='140' end='142'>
             <text>$a</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='142' end='156'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='142' end='145'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='156' end='157'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='145' end='157'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='157' end='158'>
             <text>;</text>
@@ -48,11 +48,11 @@
         <token id='T_VARIABLE' start='203' end='205'>
             <text>$b</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='205' end='219'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='205' end='208'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='219' end='220'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='208' end='220'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='220' end='221'>
             <text>;</text>
@@ -110,7 +110,7 @@
                                 <Variable start='140' end='142' isDollared='true'>
                                     <Identifier start='141' end='142' name='a'/>
                                 </Variable>
-                                <Scalar start='142' end='156' type='STRING' value='.\n\n'/>
+                                <Scalar start='142' end='145' type='STRING' value='.\n\n'/>
                             </Expressions>
                         </Quote>
                     </Parameters>
@@ -127,7 +127,7 @@
                             <Variable start='203' end='205' isDollared='true'>
                                 <Identifier start='204' end='205' name='b'/>
                             </Variable>
-                            <Scalar start='205' end='219' type='STRING' value='.\n\n'/>
+                            <Scalar start='205' end='208' type='STRING' value='.\n\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_004.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_004.pass
index cdf6f46f80..9341b4f6df 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_004.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_004.pass
@@ -30,11 +30,11 @@
         <token id='T_CURLY_CLOSE' start='143' end='144'>
             <text>}</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='144' end='158'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='144' end='147'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='158' end='159'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='147' end='159'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='159' end='160'>
             <text>;</text>
@@ -60,11 +60,11 @@
         <token id='T_CURLY_CLOSE' start='208' end='209'>
             <text>}</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='209' end='223'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='209' end='212'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='223' end='224'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='212' end='224'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='224' end='225'>
             <text>;</text>
@@ -124,7 +124,7 @@
                                         <Identifier start='142' end='143' name='a'/>
                                     </Variable>
                                 </ReflectionVariable>
-                                <Scalar start='144' end='158' type='STRING' value='.\n\n'/>
+                                <Scalar start='144' end='147' type='STRING' value='.\n\n'/>
                             </Expressions>
                         </Quote>
                     </Parameters>
@@ -143,7 +143,7 @@
                                     <Identifier start='207' end='208' name='b'/>
                                 </Variable>
                             </ReflectionVariable>
-                            <Scalar start='209' end='223' type='STRING' value='.\n\n'/>
+                            <Scalar start='209' end='212' type='STRING' value='.\n\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_005.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_005.pass
index 53a99e7409..2a513cd5ab 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_005.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_005.pass
@@ -54,11 +54,11 @@
         <token id='T_STRING' start='177' end='178'>
             <text>d</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='178' end='192'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='178' end='181'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='192' end='193'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='181' end='193'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='193' end='194'>
             <text>;</text>
@@ -108,11 +108,11 @@
         <token id='T_STRING' start='266' end='267'>
             <text>d</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='267' end='281'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='267' end='270'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='281' end='282'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='270' end='282'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='282' end='283'>
             <text>;</text>
@@ -162,13 +162,13 @@
             <ASTError start='163' end='163'/>
             <ASTError start='163' end='173'/>
             <ASTError start='173' end='178'/>
-            <ASTError start='178' end='192'/>
+            <ASTError start='178' end='181'/>
             <EmptyStatement start='193' end='194'/>
             <ASTError start='196' end='252'/>
             <ASTError start='252' end='252'/>
             <ASTError start='252' end='262'/>
             <ASTError start='262' end='267'/>
-            <ASTError start='267' end='281'/>
+            <ASTError start='267' end='270'/>
             <EmptyStatement start='282' end='283'/>
             <ExpressionStatement start='285' end='298'>
                 <FunctionInvocation start='285' end='297'>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_006.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_006.pass
index e6ada70ee7..4836202e3a 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_006.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_006.pass
@@ -81,11 +81,11 @@
         <token id='T_CURLY_CLOSE' start='183' end='184'>
             <text>}</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='184' end='198'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='184' end='187'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='198' end='199'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='187' end='199'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='199' end='200'>
             <text>;</text>
@@ -162,11 +162,11 @@
         <token id='T_CURLY_CLOSE' start='280' end='281'>
             <text>}</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='281' end='295'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='281' end='284'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='295' end='296'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='284' end='296'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='296' end='297'>
             <text>;</text>
@@ -260,7 +260,7 @@
                                         </Field>
                                     </FieldAccess>
                                 </ReflectionVariable>
-                                <Scalar start='184' end='198' type='STRING' value='.\n\n'/>
+                                <Scalar start='184' end='187' type='STRING' value='.\n\n'/>
                             </Expressions>
                         </Quote>
                     </Parameters>
@@ -313,7 +313,7 @@
                                     </Field>
                                 </FieldAccess>
                             </ReflectionVariable>
-                            <Scalar start='281' end='295' type='STRING' value='.\n\n'/>
+                            <Scalar start='281' end='284' type='STRING' value='.\n\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_007.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_007.pass
index 3c7d5d4cfa..5c3b61b16d 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_007.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_007.pass
@@ -75,11 +75,11 @@
         <token id='T_CURLY_CLOSE' start='194' end='195'>
             <text>}</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='195' end='209'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='195' end='198'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='209' end='210'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='198' end='210'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='210' end='211'>
             <text>;</text>
@@ -150,11 +150,11 @@
         <token id='T_CURLY_CLOSE' start='289' end='290'>
             <text>}</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='290' end='304'>
-            <text>.\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='290' end='293'>
+            <text>.\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='304' end='305'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='293' end='305'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='305' end='306'>
             <text>;</text>
@@ -246,7 +246,7 @@
                                         </Field>
                                     </FieldAccess>
                                 </ReflectionVariable>
-                                <Scalar start='195' end='209' type='STRING' value='.\n\n'/>
+                                <Scalar start='195' end='198' type='STRING' value='.\n\n'/>
                             </Expressions>
                         </Quote>
                     </Parameters>
@@ -297,7 +297,7 @@
                                     </Field>
                                 </FieldAccess>
                             </ReflectionVariable>
-                            <Scalar start='290' end='304' type='STRING' value='.\n\n'/>
+                            <Scalar start='290' end='293' type='STRING' value='.\n\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_009.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_009.pass
index 4ae40adcbf..1aaa45130a 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_009.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_009.pass
@@ -24,11 +24,11 @@
         <token id='T_VARIABLE' start='187' end='200'>
             <text>$ENDOFHEREDOC</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='200' end='214'>
-            <text>;\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='200' end='203'>
+            <text>;\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='214' end='215'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='203' end='215'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='215' end='216'>
             <text>;</text>
@@ -48,11 +48,11 @@
         <token id='T_VARIABLE' start='309' end='322'>
             <text>$ENDOFHEREDOC</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='322' end='336'>
-            <text>;\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='322' end='325'>
+            <text>;\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='336' end='337'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='325' end='337'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='337' end='338'>
             <text>;</text>
@@ -110,7 +110,7 @@
                                 <Variable start='187' end='200' isDollared='true'>
                                     <Identifier start='188' end='200' name='ENDOFHEREDOC'/>
                                 </Variable>
-                                <Scalar start='200' end='214' type='STRING' value=';\n\n'/>
+                                <Scalar start='200' end='203' type='STRING' value=';\n\n'/>
                             </Expressions>
                         </Quote>
                     </Parameters>
@@ -127,7 +127,7 @@
                             <Variable start='309' end='322' isDollared='true'>
                                 <Identifier start='310' end='322' name='ENDOFHEREDOC'/>
                             </Variable>
-                            <Scalar start='322' end='336' type='STRING' value=';\n\n'/>
+                            <Scalar start='322' end='325' type='STRING' value=';\n\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_010.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_010.pass
index f07eb453a4..3cf28eb9ab 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_010.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_010.pass
@@ -75,11 +75,11 @@
         <token id='T_CURLY_CLOSE' start='232' end='233'>
             <text>}</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='233' end='258'>
-            <text>ENDOFHEREDOC\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='233' end='247'>
+            <text>ENDOFHEREDOC\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='258' end='259'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='247' end='259'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='259' end='260'>
             <text>;</text>
@@ -138,11 +138,11 @@
         <token id='T_CURLY_CLOSE' start='356' end='357'>
             <text>}</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='357' end='382'>
-            <text>ENDOFHEREDOC\n\nENDOFHEREDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='357' end='371'>
+            <text>ENDOFHEREDOC\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='382' end='383'>
-            <text>C</text>
+        <token id='T_END_HEREDOC' start='371' end='383'>
+            <text>ENDOFHEREDOC</text>
         </token>
         <token id='T_SEMICOLON' start='383' end='384'>
             <text>;</text>
@@ -227,7 +227,7 @@
                                         <Identifier start='223' end='232' name='fooledYou'/>
                                     </Variable>
                                 </ReflectionVariable>
-                                <Scalar start='233' end='258' type='STRING' value='ENDOFHEREDOC\n\n'/>
+                                <Scalar start='233' end='247' type='STRING' value='ENDOFHEREDOC\n\n'/>
                             </Expressions>
                         </Quote>
                     </Parameters>
@@ -263,7 +263,7 @@
                                     <Identifier start='347' end='356' name='fooledYou'/>
                                 </Variable>
                             </ReflectionVariable>
-                            <Scalar start='357' end='382' type='STRING' value='ENDOFHEREDOC\n\n'/>
+                            <Scalar start='357' end='371' type='STRING' value='ENDOFHEREDOC\n\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_011.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_011.pass
index a6d445017b..2e97254ee4 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_011.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_011.pass
@@ -33,11 +33,11 @@
         <token id='T_START_HEREDOC' start='118' end='138'>
             <text>&lt;&lt;&lt;THISMUSTNOTERROR\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='138' end='188'>
-            <text>If you see this, everything is ok.\nTHISMUSTNOTERRO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='138' end='173'>
+            <text>If you see this, everything is ok.\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='188' end='189'>
-            <text>R</text>
+        <token id='T_END_HEREDOC' start='173' end='189'>
+            <text>THISMUSTNOTERROR</text>
         </token>
         <token id='T_SEMICOLON' start='189' end='190'>
             <text>;</text>
@@ -105,7 +105,7 @@
                         <Initializers>
                             <Quote start='118' end='189' type='HEREDOC'>
                                 <Expressions>
-                                    <Scalar start='138' end='188' type='STRING' value='If you see this, everything is ok.\n'/>
+                                    <Scalar start='138' end='173' type='STRING' value='If you see this, everything is ok.\n'/>
                                 </Expressions>
                             </Quote>
                         </Initializers>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_012.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_012.pass
index 5533e29a13..6f02b6fdae 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_012.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_012.pass
@@ -30,11 +30,11 @@
         <token id='T_VARIABLE' start='92' end='97'>
             <text>$test</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='97' end='104'>
-            <text>\nMYLABE</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='97' end='98'>
+            <text>\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='104' end='105'>
-            <text>L</text>
+        <token id='T_END_HEREDOC' start='98' end='105'>
+            <text>MYLABEL</text>
         </token>
         <token id='T_SEMICOLON' start='105' end='106'>
             <text>;</text>
@@ -82,7 +82,7 @@
                             <Variable start='92' end='97' isDollared='true'>
                                 <Identifier start='93' end='97' name='test'/>
                             </Variable>
-                            <Scalar start='97' end='104' type='STRING' value='\n'/>
+                            <Scalar start='97' end='98' type='STRING' value='\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_013.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_013.pass
index 05ba7268b5..19affe4646 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_013.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_013.pass
@@ -33,11 +33,11 @@
         <token id='T_VARIABLE' start='115' end='120'>
             <text>$test</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='120' end='127'>
-            <text>\nMYLABE</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='120' end='121'>
+            <text>\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='127' end='128'>
-            <text>L</text>
+        <token id='T_END_HEREDOC' start='121' end='128'>
+            <text>MYLABEL</text>
         </token>
         <token id='T_SEMICOLON' start='128' end='129'>
             <text>;</text>
@@ -82,7 +82,7 @@
                         <Variable start='115' end='120' isDollared='true'>
                             <Identifier start='116' end='120' name='test'/>
                         </Variable>
-                        <Scalar start='120' end='127' type='STRING' value='\n'/>
+                        <Scalar start='120' end='121' type='STRING' value='\n'/>
                     </Expressions>
                 </Quote>
             </ExpressionStatement>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_015.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_015.pass
index 139b08b138..fb6a93dc9d 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_015.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/heredoc_015.pass
@@ -24,11 +24,11 @@
         <token id='T_START_HEREDOC' start='100' end='120'>
             <text>&lt;&lt;&lt;THISMUSTNOTERROR\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='120' end='170'>
-            <text>If you see this, everything is ok.\nTHISMUSTNOTERRO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='120' end='155'>
+            <text>If you see this, everything is ok.\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='170' end='171'>
-            <text>R</text>
+        <token id='T_END_HEREDOC' start='155' end='171'>
+            <text>THISMUSTNOTERROR</text>
         </token>
         <token id='T_SEMICOLON' start='171' end='172'>
             <text>;</text>
@@ -114,7 +114,7 @@
                         <InitialValues>
                             <Quote start='100' end='171' type='HEREDOC'>
                                 <Expressions>
-                                    <Scalar start='120' end='170' type='STRING' value='If you see this, everything is ok.\n'/>
+                                    <Scalar start='120' end='155' type='STRING' value='If you see this, everything is ok.\n'/>
                                 </Expressions>
                             </Quote>
                         </InitialValues>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowDoc.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowDoc.pass
index 1f74cc3ed0..f8af012f03 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowDoc.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowDoc.pass
@@ -6,11 +6,11 @@
         <token id='T_START_NOWDOC' start='11' end='20'>
             <text>&lt;&lt;&lt;&apos;EOT&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='20' end='153'>
-            <text>My name is "$name".I am printing some $foo-&gt;foo.\nNow, I am printing some {$foo-&gt;bar[1]}.\nThis should not print a capital &apos;A&apos;: \x41\nEO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='20' end='151'>
+            <text>My name is "$name".I am printing some $foo-&gt;foo.\nNow, I am printing some {$foo-&gt;bar[1]}.\nThis should not print a capital &apos;A&apos;: \x41\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='153' end='154'>
-            <text>T</text>
+        <token id='T_END_NOWDOC' start='151' end='154'>
+            <text>EOT</text>
         </token>
         <token id='T_SEMICOLON' start='154' end='155'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc01.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc01.pass
index 3d5a3f8d92..0d85be9578 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc01.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc01.pass
@@ -9,11 +9,11 @@
         <token id='T_START_NOWDOC' start='236' end='249'>
             <text>&lt;&lt;&lt; &apos;NOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='249' end='272'>
-            <text>nowdoc text $text\nNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='249' end='267'>
+            <text>nowdoc text $text\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='272' end='273'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='267' end='273'>
+            <text>NOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='273' end='274'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc02.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc02.pass
index 410fb9bb35..5ef3a323b4 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc02.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc02.pass
@@ -9,11 +9,11 @@
         <token id='T_START_NOWDOC' start='236' end='249'>
             <text>&lt;&lt;&lt; &apos;NOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='272' end='278'>
-            <text>\nNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='249' end='273'>
+            <text>simpletextwithoutspaces\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='278' end='279'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='273' end='279'>
+            <text>NOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='279' end='280'>
             <text>;</text>
@@ -46,7 +46,7 @@
         <Statements>
             <InLineHtml start='0' end='213'/>
             <EchoStatement start='231' end='280'>
-                <Scalar start='236' end='279' type='STRING' value='\n'/>
+                <Scalar start='236' end='279' type='STRING' value='simpletextwithoutspaces\n'/>
             </EchoStatement>
             <ExpressionStatement start='306' end='318'>
                 <Assignment start='306' end='317' operator='EQUAL'>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_001.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_001.pass
index 2cefba7189..d4f185febe 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_001.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_001.pass
@@ -18,11 +18,11 @@
         <token id='T_START_NOWDOC' start='79' end='96'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='96' end='130'>
-            <text>This is a nowdoc test.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='96' end='120'>
+            <text>This is a nowdoc test.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='130' end='131'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='120' end='131'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='131' end='132'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_NOWDOC' start='139' end='156'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='156' end='220'>
-            <text>This is another nowdoc test.\nWith another line in it.\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='156' end='210'>
+            <text>This is another nowdoc test.\nWith another line in it.\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='220' end='221'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='210' end='221'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='221' end='222'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_002.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_002.pass
index 113456acd1..08c9410394 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_002.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_002.pass
@@ -18,11 +18,11 @@
         <token id='T_START_NOWDOC' start='86' end='104'>
             <text>b&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='104' end='138'>
-            <text>This is a nowdoc test.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='104' end='128'>
+            <text>This is a nowdoc test.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='138' end='139'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='128' end='139'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='139' end='140'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_NOWDOC' start='147' end='165'>
             <text>b&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='165' end='205'>
-            <text>This is another nowdoc test.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='165' end='195'>
+            <text>This is another nowdoc test.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='205' end='206'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='195' end='206'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='206' end='207'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_003.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_003.pass
index aa36a92c20..46812065d4 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_003.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_003.pass
@@ -18,11 +18,11 @@
         <token id='T_START_NOWDOC' start='101' end='118'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='118' end='154'>
-            <text>This is nowdoc test #$a.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='118' end='144'>
+            <text>This is nowdoc test #$a.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='154' end='155'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='144' end='155'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='155' end='156'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_NOWDOC' start='163' end='180'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='180' end='216'>
-            <text>This is nowdoc test #$b.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='180' end='206'>
+            <text>This is nowdoc test #$b.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='216' end='217'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='206' end='217'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='217' end='218'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_004.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_004.pass
index 7b6d9bc753..ae85eb3e34 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_004.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_004.pass
@@ -18,11 +18,11 @@
         <token id='T_START_NOWDOC' start='101' end='118'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='118' end='156'>
-            <text>This is nowdoc test #{$a}.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='118' end='146'>
+            <text>This is nowdoc test #{$a}.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='156' end='157'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='146' end='157'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='157' end='158'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_NOWDOC' start='165' end='182'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='182' end='220'>
-            <text>This is nowdoc test #{$b}.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='182' end='210'>
+            <text>This is nowdoc test #{$b}.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='220' end='221'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='210' end='221'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='221' end='222'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_005.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_005.pass
index 1714f9252d..c74e7a9e27 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_005.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_005.pass
@@ -18,11 +18,11 @@
         <token id='T_START_NOWDOC' start='111' end='128'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='128' end='190'>
-            <text>This is nowdoc test #s $a, $b, $c[&apos;c&apos;], and $d-&gt;d.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='128' end='180'>
+            <text>This is nowdoc test #s $a, $b, $c[&apos;c&apos;], and $d-&gt;d.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='190' end='191'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='180' end='191'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='191' end='192'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_NOWDOC' start='199' end='216'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='216' end='278'>
-            <text>This is nowdoc test #s $a, $b, $c[&apos;c&apos;], and $d-&gt;d.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='216' end='268'>
+            <text>This is nowdoc test #s $a, $b, $c[&apos;c&apos;], and $d-&gt;d.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='278' end='279'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='268' end='279'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='279' end='280'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_006.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_006.pass
index 449d4d817e..718a34ab68 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_006.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_006.pass
@@ -18,11 +18,11 @@
         <token id='T_START_NOWDOC' start='109' end='126'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='126' end='196'>
-            <text>This is nowdoc test #s {$a}, {$b}, {$c[&apos;c&apos;]}, and {$d-&gt;d}.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='126' end='186'>
+            <text>This is nowdoc test #s {$a}, {$b}, {$c[&apos;c&apos;]}, and {$d-&gt;d}.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='196' end='197'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='186' end='197'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='197' end='198'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_NOWDOC' start='205' end='222'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='222' end='292'>
-            <text>This is nowdoc test #s {$a}, {$b}, {$c[&apos;c&apos;]}, and {$d-&gt;d}.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='222' end='282'>
+            <text>This is nowdoc test #s {$a}, {$b}, {$c[&apos;c&apos;]}, and {$d-&gt;d}.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='292' end='293'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='282' end='293'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='293' end='294'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_007.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_007.pass
index e2264f9168..31ecb59b6a 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_007.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_007.pass
@@ -18,11 +18,11 @@
         <token id='T_START_NOWDOC' start='143' end='160'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='160' end='228'>
-            <text>This is nowdoc test #s $a, {$b}, {$c[&apos;c&apos;]}, and {$d-&gt;d}.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='160' end='218'>
+            <text>This is nowdoc test #s $a, {$b}, {$c[&apos;c&apos;]}, and {$d-&gt;d}.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='228' end='229'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='218' end='229'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='229' end='230'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_NOWDOC' start='237' end='254'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='254' end='322'>
-            <text>This is nowdoc test #s $a, {$b}, {$c[&apos;c&apos;]}, and {$d-&gt;d}.\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='254' end='312'>
+            <text>This is nowdoc test #s $a, {$b}, {$c[&apos;c&apos;]}, and {$d-&gt;d}.\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='322' end='323'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='312' end='323'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='323' end='324'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_009.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_009.pass
index 04d13c7fc6..43eab520c5 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_009.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_009.pass
@@ -18,11 +18,11 @@
         <token id='T_START_NOWDOC' start='99' end='116'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='116' end='207'>
-            <text>ENDOFNOWDOC    ;\n    ENDOFNOWDOC;\nENDOFNOWDOC    \n    ENDOFNOWDOC\n$ENDOFNOWDOC;\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='116' end='197'>
+            <text>ENDOFNOWDOC    ;\n    ENDOFNOWDOC;\nENDOFNOWDOC    \n    ENDOFNOWDOC\n$ENDOFNOWDOC;\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='207' end='208'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='197' end='208'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='208' end='209'>
             <text>;</text>
@@ -36,11 +36,11 @@
         <token id='T_START_NOWDOC' start='216' end='233'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='233' end='324'>
-            <text>ENDOFNOWDOC    ;\n    ENDOFNOWDOC;\nENDOFNOWDOC    \n    ENDOFNOWDOC\n$ENDOFNOWDOC;\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='233' end='314'>
+            <text>ENDOFNOWDOC    ;\n    ENDOFNOWDOC;\nENDOFNOWDOC    \n    ENDOFNOWDOC\n$ENDOFNOWDOC;\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='324' end='325'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='314' end='325'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='325' end='326'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_010.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_010.pass
index 957262c0e1..06448ebea8 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_010.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_010.pass
@@ -30,11 +30,11 @@
         <token id='T_START_NOWDOC' start='141' end='158'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='158' end='253'>
-            <text>{$fooledYou}ENDOFNOWDOC{$fooledYou}\nENDOFNOWDOC{$fooledYou}\n{$fooledYou}ENDOFNOWDOC\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='158' end='243'>
+            <text>{$fooledYou}ENDOFNOWDOC{$fooledYou}\nENDOFNOWDOC{$fooledYou}\n{$fooledYou}ENDOFNOWDOC\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='253' end='254'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='243' end='254'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='254' end='255'>
             <text>;</text>
@@ -48,11 +48,11 @@
         <token id='T_START_NOWDOC' start='262' end='279'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='279' end='374'>
-            <text>{$fooledYou}ENDOFNOWDOC{$fooledYou}\nENDOFNOWDOC{$fooledYou}\n{$fooledYou}ENDOFNOWDOC\n\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='279' end='364'>
+            <text>{$fooledYou}ENDOFNOWDOC{$fooledYou}\nENDOFNOWDOC{$fooledYou}\n{$fooledYou}ENDOFNOWDOC\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='374' end='375'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='364' end='375'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='375' end='376'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_011.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_011.pass
index 34baa5fa96..0c734f93f9 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_011.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_011.pass
@@ -33,11 +33,11 @@
         <token id='T_START_NOWDOC' start='121' end='143'>
             <text>&lt;&lt;&lt;&apos;THISMUSTNOTERROR&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='143' end='200'>
-            <text>If you DON&apos;T see this, something&apos;s wrong.\nTHISMUSTNOTERRO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='143' end='185'>
+            <text>If you DON&apos;T see this, something&apos;s wrong.\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='200' end='201'>
-            <text>R</text>
+        <token id='T_END_NOWDOC' start='185' end='201'>
+            <text>THISMUSTNOTERROR</text>
         </token>
         <token id='T_SEMICOLON' start='201' end='202'>
             <text>;</text>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_012.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_012.pass
index 51f866294c..1ccc198dcc 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_012.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_012.pass
@@ -21,11 +21,11 @@
         <token id='T_START_NOWDOC' start='76' end='93'>
             <text>&lt;&lt;&lt;&apos;ENDOFNOWDOC&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='178' end='209'>
-            <text>\nNow let&apos;s finish it\nENDOFNOWDO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='93' end='199'>
+            <text>This is a nowdoc test.\nNOTREALLYEND;\nAnother line\nNOTENDEITHER;\nENDOFNOWDOCWILLBESOON\nNow let&apos;s finish it\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='209' end='210'>
-            <text>C</text>
+        <token id='T_END_NOWDOC' start='199' end='210'>
+            <text>ENDOFNOWDOC</text>
         </token>
         <token id='T_SEMICOLON' start='210' end='211'>
             <text>;</text>
@@ -79,7 +79,7 @@
                     <Variable start='71' end='73' isDollared='true'>
                         <Identifier start='72' end='73' name='x'/>
                     </Variable>
-                    <Scalar start='76' end='210' type='STRING' value='\nNow let&apos;s finish it\n'/>
+                    <Scalar start='76' end='210' type='STRING' value='This is a nowdoc test.\nNOTREALLYEND;\nAnother line\nNOTENDEITHER;\nENDOFNOWDOCWILLBESOON\nNow let&apos;s finish it\n'/>
                 </Assignment>
             </ExpressionStatement>
             <ExpressionStatement start='212' end='227'>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_013.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_013.pass
index 3942c8b366..722e174dd4 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_013.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_013.pass
@@ -12,11 +12,11 @@
         <token id='T_START_NOWDOC' start='248' end='257'>
             <text>&lt;&lt;&lt;&apos;EOF&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='298' end='314'>
-            <text>\n  $y = 2;\n?&gt;\nEO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='257' end='312'>
+            <text>&lt;?php\n  $x = &lt;&lt;&lt;&apos;EOT&apos;\nsome string    \nEOT\n  $y = 2;\n?&gt;\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='314' end='315'>
-            <text>F</text>
+        <token id='T_END_NOWDOC' start='312' end='315'>
+            <text>EOF</text>
         </token>
         <token id='T_SEMICOLON' start='315' end='316'>
             <text>;</text>
@@ -116,7 +116,7 @@
                     <Variable start='240' end='245' isDollared='true'>
                         <Identifier start='241' end='245' name='code'/>
                     </Variable>
-                    <Scalar start='248' end='315' type='STRING' value='\n  $y = 2;\n?&gt;\n'/>
+                    <Scalar start='248' end='315' type='STRING' value='&lt;?php\n  $x = &lt;&lt;&lt;&apos;EOT&apos;\nsome string    \nEOT\n  $y = 2;\n?&gt;\n'/>
                 </Assignment>
             </ExpressionStatement>
             <ExpressionStatement start='317' end='341'>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_014.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_014.pass
index 86ed95dfea..b04860f2fc 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_014.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_014.pass
@@ -12,11 +12,11 @@
         <token id='T_START_NOWDOC' start='232' end='241'>
             <text>&lt;&lt;&lt;&apos;EOF&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='266' end='282'>
-            <text>\n  $y = 2;\n?&gt;\nEO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='241' end='280'>
+            <text>&lt;?php\n  $x = &lt;&lt;&lt;&apos;EOT&apos;\nEOT\n  $y = 2;\n?&gt;\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='282' end='283'>
-            <text>F</text>
+        <token id='T_END_NOWDOC' start='280' end='283'>
+            <text>EOF</text>
         </token>
         <token id='T_SEMICOLON' start='283' end='284'>
             <text>;</text>
@@ -116,7 +116,7 @@
                     <Variable start='224' end='229' isDollared='true'>
                         <Identifier start='225' end='229' name='code'/>
                     </Variable>
-                    <Scalar start='232' end='283' type='STRING' value='\n  $y = 2;\n?&gt;\n'/>
+                    <Scalar start='232' end='283' type='STRING' value='&lt;?php\n  $x = &lt;&lt;&lt;&apos;EOT&apos;\nEOT\n  $y = 2;\n?&gt;\n'/>
                 </Assignment>
             </ExpressionStatement>
             <ExpressionStatement start='285' end='309'>
diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_015.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_015.pass
index cf55fc0bd6..366c5da5ec 100644
--- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_015.pass
+++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/parser/ASTPHP5ParserTest/parser/nowdoc_015.pass
@@ -210,11 +210,11 @@
         <token id='T_START_HEREDOC' start='349' end='356'>
             <text>&lt;&lt;&lt;EOF\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='360' end='363'>
-            <text>\nEO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='356' end='361'>
+            <text>test\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='363' end='364'>
-            <text>F</text>
+        <token id='T_END_HEREDOC' start='361' end='364'>
+            <text>EOF</text>
         </token>
         <token id='T_SEMICOLON' start='364' end='365'>
             <text>;</text>
@@ -264,11 +264,11 @@
         <token id='T_START_NOWDOC' start='422' end='431'>
             <text>&lt;&lt;&lt;&apos;EOF&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='435' end='438'>
-            <text>\nEO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='431' end='436'>
+            <text>test\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='438' end='439'>
-            <text>F</text>
+        <token id='T_END_NOWDOC' start='436' end='439'>
+            <text>EOF</text>
         </token>
         <token id='T_SEMICOLON' start='439' end='440'>
             <text>;</text>
@@ -318,11 +318,11 @@
         <token id='T_START_HEREDOC' start='497' end='504'>
             <text>&lt;&lt;&lt;EOF\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='522' end='527'>
-            <text>\n\n\nEO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='504' end='525'>
+            <text>test1\ntest2\n\ntest3\n\n\n</text>
         </token>
-        <token id='T_END_HEREDOC' start='527' end='528'>
-            <text>F</text>
+        <token id='T_END_HEREDOC' start='525' end='528'>
+            <text>EOF</text>
         </token>
         <token id='T_SEMICOLON' start='528' end='529'>
             <text>;</text>
@@ -372,11 +372,11 @@
         <token id='T_START_NOWDOC' start='586' end='595'>
             <text>&lt;&lt;&lt;&apos;EOF&apos;\n</text>
         </token>
-        <token id='T_ENCAPSED_AND_WHITESPACE' start='613' end='618'>
-            <text>\n\n\nEO</text>
+        <token id='T_ENCAPSED_AND_WHITESPACE' start='595' end='616'>
+            <text>test1\ntest2\n\ntest3\n\n\n</text>
         </token>
-        <token id='T_END_NOWDOC' start='618' end='619'>
-            <text>F</text>
+        <token id='T_END_NOWDOC' start='616' end='619'>
+            <text>EOF</text>
         </token>
         <token id='T_SEMICOLON' start='619' end='620'>
             <text>;</text>
@@ -620,7 +620,7 @@
                     </Variable>
                     <Quote start='349' end='364' type='HEREDOC'>
                         <Expressions>
-                            <Scalar start='360' end='363' type='STRING' value='\n'/>
+                            <Scalar start='356' end='361' type='STRING' value='test\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
@@ -659,7 +659,7 @@
                     <Variable start='417' end='419' isDollared='true'>
                         <Identifier start='418' end='419' name='x'/>
                     </Variable>
-                    <Scalar start='422' end='439' type='STRING' value='\n'/>
+                    <Scalar start='422' end='439' type='STRING' value='test\n'/>
                 </Assignment>
             </ExpressionStatement>
             <ExpressionStatement start='441' end='454'>
@@ -698,7 +698,7 @@
                     </Variable>
                     <Quote start='497' end='528' type='HEREDOC'>
                         <Expressions>
-                            <Scalar start='522' end='527' type='STRING' value='\n\n\n'/>
+                            <Scalar start='504' end='525' type='STRING' value='test1\ntest2\n\ntest3\n\n\n'/>
                         </Expressions>
                     </Quote>
                 </Assignment>
@@ -737,7 +737,7 @@
                     <Variable start='581' end='583' isDollared='true'>
                         <Identifier start='582' end='583' name='x'/>
                     </Variable>
-                    <Scalar start='586' end='619' type='STRING' value='\n\n\n'/>
+                    <Scalar start='586' end='619' type='STRING' value='test1\ntest2\n\ntest3\n\n\n'/>
                 </Assignment>
             </ExpressionStatement>
             <ExpressionStatement start='621' end='634'>
diff --git a/php/php.editor/tools/ASTPHP5Scanner.flex b/php/php.editor/tools/ASTPHP5Scanner.flex
index 2606e154ba..a2618c0e99 100644
--- a/php/php.editor/tools/ASTPHP5Scanner.flex
+++ b/php/php.editor/tools/ASTPHP5Scanner.flex
@@ -72,8 +72,14 @@ import org.netbeans.modules.web.common.api.ByteStack;
 %{
     private final List commentList = new ArrayList();
     private String heredoc = null;
+    private int heredocBodyStart = -1;
+    private int heredocBodyLength = 0;
+    private final StringBuilder heredocBody = new StringBuilder();
     private String nowdoc = null;
     private int nowdoc_len  = 0;
+    private int nowdocBodyStart = -1;
+    private int nowdocBodyLength = 0;
+    private final StringBuilder nowdocBody = new StringBuilder();
     private String comment = null;
     private boolean asp_tags = false;
     private boolean short_tags_allowed = true;
@@ -223,6 +229,41 @@ import org.netbeans.modules.web.common.api.ByteStack;
         return symbol;
     }
 
+    private void updateNowdocBodyInfo() {
+        if (nowdocBodyStart == -1) {
+            nowdocBodyStart = getTokenStartPosition();
+        }
+        nowdocBody.append(yytext());
+        nowdocBodyLength += getTokenLength();
+    }
+
+    private Symbol createFullNowdocBodySymbol() {
+        Symbol symbol = new Symbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE, nowdocBodyStart, nowdocBodyStart + nowdocBodyLength);
+        symbol.value = nowdocBody.toString();
+        return symbol;
+    }
+
+    private void updateHeredocBodyInfo() {
+        if (heredocBodyStart == -1) {
+            heredocBodyStart = getTokenStartPosition();
+        }
+        heredocBody.append(yytext());
+        heredocBodyLength += getTokenLength();
+    }
+
+    private void resetHeredocBodyInfo() {
+        heredocBodyStart = -1;
+        heredocBodyLength = 0;
+        heredocBody.delete(0, heredocBody.length());
+    }
+
+    private Symbol createFullHeredocBodySymbol() {
+        Symbol symbol = new Symbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE, heredocBodyStart, heredocBodyStart + heredocBodyLength);
+        symbol.value = heredocBody.toString();
+        resetHeredocBodyInfo();
+        return symbol;
+    }
+
     public int[] getParamenters(){
     	return new int[]{zzMarkedPos, zzPushbackPos, zzCurrentPos, zzStartRead, zzEndRead, yyline};
     }
@@ -279,13 +320,12 @@ NEWLINE=("\r"|"\n"|"\r\n")
 DOUBLE_QUOTES_LITERAL_DOLLAR=("$"+([^a-zA-Z_\x7f-\xff$\"\\{]|("\\"{ANY_CHAR})))
 BACKQUOTE_LITERAL_DOLLAR=("$"+([^a-zA-Z_\x7f-\xff$`\\{]|("\\"{ANY_CHAR})))
 HEREDOC_LITERAL_DOLLAR=("$"+([^a-zA-Z_\x7f-\xff$\n\r\\{]|("\\"[^\n\r])))
-HEREDOC_NEWLINE=((({LABEL}";"?((("{"+|"$"+)"\\"?)|"\\"))|(("{"*|"$"*)"\\"?)){NEWLINE})
 HEREDOC_CURLY_OR_ESCAPE_OR_DOLLAR=(("{"+[^$\n\r\\{])|("{"*"\\"[^\n\r])|{HEREDOC_LITERAL_DOLLAR})
 HEREDOC_NON_LABEL=([^a-zA-Z_\x7f-\xff$\n\r\\{]|{HEREDOC_CURLY_OR_ESCAPE_OR_DOLLAR})
 HEREDOC_LABEL_NO_NEWLINE=({LABEL}([^a-zA-Z0-9_\x7f-\xff;$\n\r\\{]|(";"[^$\n\r\\{])|(";"?{HEREDOC_CURLY_OR_ESCAPE_OR_DOLLAR})))
 DOUBLE_QUOTES_CHARS=("{"*([^$\"\\{]|("\\"{ANY_CHAR}))|{DOUBLE_QUOTES_LITERAL_DOLLAR})
 BACKQUOTE_CHARS=("{"*([^$`\\{]|("\\"{ANY_CHAR}))|{BACKQUOTE_LITERAL_DOLLAR})
-HEREDOC_CHARS=("{"*([^$\n\r\\{]|("\\"[^\n\r]))|{HEREDOC_LITERAL_DOLLAR}|({HEREDOC_NEWLINE}+({HEREDOC_NON_LABEL}|{HEREDOC_LABEL_NO_NEWLINE})))
+HEREDOC_CHARS=([^$\\{]|("\\"{ANY_CHAR}))({HEREDOC_LABEL_NO_NEWLINE} | {HEREDOC_NON_LABEL} | {LABEL})*
 NOWDOC_CHARS=({NEWLINE}*(([^a-zA-Z_\x7f-\xff\n\r][^\n\r]*)|({LABEL}[^a-zA-Z0-9_\x7f-\xff;\n\r][^\n\r]*)|({LABEL}[;][^\n\r]+)))
 
 %%
@@ -1128,27 +1168,26 @@ yybegin(ST_DOCBLOCK);
 }
 
 <ST_START_NOWDOC>{LABEL}";"?[\r\n] {
-    String text = yytext();
-    int length = text.length() - 1;
-    text = text.trim();
-
+    int length = yylength() - 1;
     yypushback(1);
 
-    if (text.endsWith(";")) {
-        text = text.substring(0, text.length() - 1);
+    if (yytext().charAt(length - 1) == ';') {
+        length--;
         yypushback(1);
     }
-    if (text.equals(nowdoc)) {
+    if (length == nowdoc.length() && yytext().substring(0, length).equals(nowdoc)) {
         nowdoc = null;
         yybegin(ST_IN_SCRIPTING);
         return createSymbol(ASTPHP5Symbols.T_END_NOWDOC);
     } else {
         yybegin(ST_NOWDOC);
+        updateNowdocBodyInfo();
     }
 }
 
 
 <ST_NOWDOC>{NOWDOC_CHARS}*{NEWLINE}+{LABEL}";"?[\n\r] {
+    /* <ST_NOWDOC>{NOWDOC_CHARS}*{NEWLINE}+{LABEL}";"?[\n\r] */
     String text = yytext();
 
     if (text.charAt(text.length() - 2)== ';') {
@@ -1159,22 +1198,32 @@ yybegin(ST_DOCBLOCK);
     }
 
     int textLength = text.length();
-    int nowdocLength = nowdoc.length();
-    if (textLength > nowdocLength && text.substring(textLength - nowdocLength, textLength).equals(nowdoc)) {
-        yypushback(2);
+    if (textLength > nowdoc_len && text.substring(textLength - nowdoc_len, textLength).equals(nowdoc)) {
+        yypushback(nowdoc_len + 1);
+        updateNowdocBodyInfo();
         yybegin(ST_END_NOWDOC);
-        Symbol sym = createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
-        String value = (String)sym.value;
-        sym.value = value.substring(0, value.length() - nowdocLength + 1);
-        return sym;
+        if (nowdocBodyLength > 0) {
+            return createFullNowdocBodySymbol();
+        }
+    } else {
+        yypushback(1);
+        updateNowdocBodyInfo();
     }
-    yypushback(1);
 }
 
-<ST_END_NOWDOC>{ANY_CHAR} {
+<ST_END_NOWDOC>{LABEL}";"?[\n\r] {
+    /* <ST_END_NOWDOC>{LABEL}";"?[\n\r] */
     nowdoc=null;
     nowdoc_len=0;
+    nowdocBody.delete(0, nowdocBody.length());
+    nowdocBodyStart = -1;
+    nowdocBodyLength = 0;
     yybegin(ST_IN_SCRIPTING);
+    int back = 1;
+    if (yytext().charAt(yylength() - 2)==';') {
+        back++;
+    }
+    yypushback(back);
     return createSymbol(ASTPHP5Symbols.T_END_NOWDOC);
 }
 
@@ -1199,55 +1248,91 @@ yybegin(ST_DOCBLOCK);
 }
 
 <ST_START_HEREDOC>{LABEL}";"?[\n\r] {
-    String text = yytext();
-    int length = text.length() - 1;
-    text = text.trim();
-
-    yypushback(1);
-
-    if (text.endsWith(";")) {
-        text = text.substring(0, text.length() - 1);
-        yypushback(1);
+    /* <ST_START_HEREDOC>{LABEL}";"?[\n\r] */
+    int trailingNewLineLength = 1;
+    int labelLength = yylength() - trailingNewLineLength;
+    int back = trailingNewLineLength;
+    String yytext = yytext();
+
+    if (yytext.charAt(labelLength - 1) == ';') {
+        labelLength--;
+        back++;
     }
-    if (text.equals(heredoc)) {
-        heredoc = null;
-        yybegin(ST_IN_SCRIPTING);
-        return createSymbol(ASTPHP5Symbols.T_END_HEREDOC);
+    if (labelLength == heredoc.length()
+            && yytext.substring(labelLength - heredoc.length(), labelLength).equals(heredoc)) {
+        back = back + heredoc.length();
+        yypushback(back);
+        yybegin(ST_END_HEREDOC);
     } else {
-    	   yybegin(ST_HEREDOC);
+        yypushback(yylength());
+        yybegin(ST_HEREDOC);
     }
 }
 
-<ST_HEREDOC>{HEREDOC_CHARS}*{HEREDOC_NEWLINE}+{LABEL}";"?[\n\r] {
-    	String text = yytext();
+<ST_HEREDOC> {
+    {NEWLINE}{LABEL}";"?[\n\r] {
+        /* <ST_HEREDOC> {NEWLINE}{LABEL}";"?[\n\r] */
+        int trailingNewLineLength = 1;
+        int labelLength = yylength() - trailingNewLineLength;
+        int back = trailingNewLineLength;
 
-    if (text.charAt(text.length() - 2)== ';') {
-		text = text.substring(0, text.length() - 2);
-        	yypushback(1);
-    } else {
-		text = text.substring(0, text.length() - 1);
+        if (yytext().charAt(labelLength-1) == ';') {
+           labelLength--;
+           back++;
+        }
+        if (labelLength > heredoc.length()
+                && yytext().substring(labelLength - heredoc.length(), labelLength).equals(heredoc)) {
+            back += heredoc.length();
+            yypushback(back);
+            yybegin(ST_END_HEREDOC);
+        } else {
+            yypushback(trailingNewLineLength);
+        }
+        updateHeredocBodyInfo();
+        if (yystate() == ST_END_HEREDOC) {
+            return createFullHeredocBodySymbol();
+        }
     }
 
-	int textLength = text.length();
-	int heredocLength = heredoc.length();
-	if (textLength > heredocLength && text.substring(textLength - heredocLength, textLength).equals(heredoc)) {
-		yypushback(2);
-        	yybegin(ST_END_HEREDOC);
-        	// we need to remove the closing label from the symbol value.
-                /*<ST_HEREDOC>{HEREDOC_CHARS}*{HEREDOC_NEWLINE}+{LABEL}";"?[\n\r]*/
-        	Symbol sym = createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
-        	String value = (String)sym.value;
-        	sym.value = value.substring(0, value.length() - heredocLength + 1);
-	   	return sym;
-	}
-	yypushback(1);
+    {HEREDOC_CHARS} {
+        /* <ST_HEREDOC> {HEREDOC_CHARS} */
+        updateHeredocBodyInfo();
+    }
+
+    {HEREDOC_CHARS}("{$" | "${") {
+        /* <ST_HEREDOC> {HEREDOC_CHARS}("{$" | "${") */
+        yypushback(2);
+        updateHeredocBodyInfo();
+        return createFullHeredocBodySymbol();
+    }
+
+    {HEREDOC_CHARS}"$"{LABEL}"["? {
+        /* <ST_HEREDOC> {HEREDOC_CHARS}"$"{LABEL}"["? */
+        String text = yytext();
+        int lastIndexOfDollar = text.lastIndexOf('$');
+        yypushback(text.length() - lastIndexOfDollar);
+        updateHeredocBodyInfo();
+        return createFullHeredocBodySymbol();
+    }
 
+    "$" | "{" {
+        /* <ST_HEREDOC> "$" | "{" */
+        updateHeredocBodyInfo();
+    }
 }
 
-<ST_END_HEREDOC>{ANY_CHAR} {
-     heredoc = null;
-	yybegin(ST_IN_SCRIPTING);
-	return createSymbol(ASTPHP5Symbols.T_END_HEREDOC);
+<ST_END_HEREDOC>{LABEL}";"?[\n\r] {
+    /* <ST_END_HEREDOC>{LABEL}";"?[\n\r] { */
+    heredoc=null;
+    resetHeredocBodyInfo();
+    yybegin(ST_IN_SCRIPTING);
+    int back = 1;
+    // mark just the label
+    if (yytext().charAt(yylength() - 2)==';') {
+        back++;
+    }
+    yypushback(back);
+    return createSymbol(ASTPHP5Symbols.T_END_HEREDOC);
 }
 
 <ST_DOUBLE_QUOTES,ST_BACKQUOTE,ST_HEREDOC>"{$" {
@@ -1287,21 +1372,6 @@ but jflex doesn't support a{n,} so we changed a{2,} to aa+
 	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
 }
 
-<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)? {
-        /*<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?*/
-	return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
-}
-
-/*
-The original parsing rule was {HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?("{"{2,}|"$"{2,})
-but jflex doesn't support a{n,} so we changed a{2,} to aa+
-*/
-<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?("{""{"+|"$""$"+) {
-    yypushback(1);
-    /*<ST_HEREDOC>{HEREDOC_CHARS}*({HEREDOC_NEWLINE}+({LABEL}";"?)?)?("{""{"+|"$""$"+)*/
-    return createFullSymbol(ASTPHP5Symbols.T_ENCAPSED_AND_WHITESPACE);
-}
-
 <ST_DOUBLE_QUOTES>[\"] {
     yybegin(ST_IN_SCRIPTING);
     return createSymbol(ASTPHP5Symbols.T_QUATE);


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists