http2 add hpack decode support

Signed-off-by: Andy Green <andy.green@linaro.org>
diff --git a/lib/hpack.c b/lib/hpack.c
new file mode 100644
index 0000000..0d19815
--- /dev/null
+++ b/lib/hpack.c
@@ -0,0 +1,239 @@
+/*
+ * Official static header table for HPACK
+ *        +-------+-----------------------------+---------------+
+          | 1     | :authority                  |               |
+          | 2     | :method                     | GET           |
+          | 3     | :method                     | POST          |
+          | 4     | :path                       | /             |
+          | 5     | :path                       | /index.html   |
+          | 6     | :scheme                     | http          |
+          | 7     | :scheme                     | https         |
+          | 8     | :status                     | 200           |
+          | 9     | :status                     | 204           |
+          | 10    | :status                     | 206           |
+          | 11    | :status                     | 304           |
+          | 12    | :status                     | 400           |
+          | 13    | :status                     | 404           |
+          | 14    | :status                     | 500           |
+          | 15    | accept-charset              |               |
+          | 16    | accept-encoding             | gzip, deflate |
+          | 17    | accept-language             |               |
+          | 18    | accept-ranges               |               |
+          | 19    | accept                      |               |
+          | 20    | access-control-allow-origin |               |
+          | 21    | age                         |               |
+          | 22    | allow                       |               |
+          | 23    | authorization               |               |
+          | 24    | cache-control               |               |
+          | 25    | content-disposition         |               |
+          | 26    | content-encoding            |               |
+          | 27    | content-language            |               |
+          | 28    | content-length              |               |
+          | 29    | content-location            |               |
+          | 30    | content-range               |               |
+          | 31    | content-type                |               |
+          | 32    | cookie                      |               |
+          | 33    | date                        |               |
+          | 34    | etag                        |               |
+          | 35    | expect                      |               |
+          | 36    | expires                     |               |
+          | 37    | from                        |               |
+          | 38    | host                        |               |
+          | 39    | if-match                    |               |
+          | 40    | if-modified-since           |               |
+          | 41    | if-none-match               |               |
+          | 42    | if-range                    |               |
+          | 43    | if-unmodified-since         |               |
+          | 44    | last-modified               |               |
+          | 45    | link                        |               |
+          | 46    | location                    |               |
+          | 47    | max-forwards                |               |
+          | 48    | proxy-authenticate          |               |
+          | 49    | proxy-authorization         |               |
+          | 50    | range                       |               |
+          | 51    | referer                     |               |
+          | 52    | refresh                     |               |
+          | 53    | retry-after                 |               |
+          | 54    | server                      |               |
+          | 55    | set-cookie                  |               |
+          | 56    | strict-transport-security   |               |
+          | 57    | transfer-encoding           |               |
+          | 58    | user-agent                  |               |
+          | 59    | vary                        |               |
+          | 60    | via                         |               |
+          | 61    | www-authenticate            |               |
+          +-------+-----------------------------+---------------+
+*/
+
+static const unsigned char static_token[] = {
+	0,
+	WSI_TOKEN_HTTP_COLON_AUTHORITY,
+	WSI_TOKEN_HTTP_COLON_METHOD,
+	WSI_TOKEN_HTTP_COLON_METHOD,
+	WSI_TOKEN_HTTP_COLON_PATH,
+	WSI_TOKEN_HTTP_COLON_PATH,
+	WSI_TOKEN_HTTP_COLON_SCHEME,
+	WSI_TOKEN_HTTP_COLON_SCHEME,
+	WSI_TOKEN_HTTP_COLON_STATUS,
+	WSI_TOKEN_HTTP_COLON_STATUS,
+	WSI_TOKEN_HTTP_COLON_STATUS,
+	WSI_TOKEN_HTTP_COLON_STATUS,
+	WSI_TOKEN_HTTP_COLON_STATUS,
+	WSI_TOKEN_HTTP_COLON_STATUS,
+	WSI_TOKEN_HTTP_COLON_STATUS,
+	WSI_TOKEN_HTTP_ACCEPT_CHARSET,
+	WSI_TOKEN_HTTP_ACCEPT_ENCODING,
+	WSI_TOKEN_HTTP_ACCEPT_LANGUAGE,
+	WSI_TOKEN_HTTP_ACCEPT_RANGES,
+	WSI_TOKEN_HTTP_ACCEPT,
+	WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN,
+	WSI_TOKEN_HTTP_AGE,
+	WSI_TOKEN_HTTP_ALLOW,
+	WSI_TOKEN_HTTP_AUTHORIZATION,
+	WSI_TOKEN_HTTP_CACHE_CONTROL,
+	WSI_TOKEN_HTTP_CONTENT_DISPOSITION,
+	WSI_TOKEN_HTTP_CONTENT_ENCODING,
+	WSI_TOKEN_HTTP_CONTENT_LANGUAGE,
+	WSI_TOKEN_HTTP_CONTENT_LENGTH,
+	WSI_TOKEN_HTTP_CONTENT_LOCATION,
+	WSI_TOKEN_HTTP_CONTENT_RANGE,
+	WSI_TOKEN_HTTP_CONTENT_TYPE,
+	WSI_TOKEN_HTTP_COOKIE,
+	WSI_TOKEN_HTTP_DATE,
+	WSI_TOKEN_HTTP_ETAG,
+	WSI_TOKEN_HTTP_EXPECT,
+	WSI_TOKEN_HTTP_EXPIRES,
+	WSI_TOKEN_HTTP_FROM,
+	WSI_TOKEN_HTTP_HOST,
+	WSI_TOKEN_HTTP_IF_MATCH,
+	WSI_TOKEN_HTTP_IF_MODIFIED_SINCE,
+	WSI_TOKEN_HTTP_IF_NONE_MATCH,
+	WSI_TOKEN_HTTP_IF_RANGE,
+	WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE,
+	WSI_TOKEN_HTTP_LAST_MODIFIED,
+	WSI_TOKEN_HTTP_LINK,
+	WSI_TOKEN_HTTP_LOCATION,
+	WSI_TOKEN_HTTP_MAX_FORWARDS,
+	WSI_TOKEN_HTTP_PROXY_AUTHENTICATE,
+	WSI_TOKEN_HTTP_PROXY_AUTHORIZATION,
+	WSI_TOKEN_HTTP_RANGE,
+	WSI_TOKEN_HTTP_REFERER,
+	WSI_TOKEN_HTTP_REFRESH,
+	WSI_TOKEN_HTTP_RETRY_AFTER,
+	WSI_TOKEN_HTTP_SERVER,
+	WSI_TOKEN_HTTP_SET_COOKIE,
+	WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY,
+	WSI_TOKEN_HTTP_TRANSFER_ENCODING,
+	WSI_TOKEN_HTTP_USER_AGENT,
+	WSI_TOKEN_HTTP_VARY,
+	WSI_TOKEN_HTTP_VIA,
+	WSI_TOKEN_HTTP_WWW_AUTHENTICATE,
+};
+
+static const char * const http2_canned[] = {
+	"",
+	"",
+	"GET",
+	"POST",
+	"/",
+	"/index.html",
+	"http",
+	"https",
+	"200",
+	"204",
+	"206",
+	"300",
+	"304",
+	"400",
+	"404",
+	"500",
+	"",
+	"gzip, deflate"
+};
+
+#include "huftable.h"
+
+int lextable_decode(int pos, char c)
+{
+	int q = pos + !!c;
+
+	if (lextable_terms[q >> 3] & (1 << (q & 7))) /* terminal */
+		return lextable[q] | 0x8000;
+
+	return pos + (lextable[q] << 1);
+}
+
+static int lws_add_header(int header, const char *payload, int len)
+{
+	wsi->u.ah.frag_index[header]
+}
+
+int lws_hpack_interpret(struct libwebsocket *wsi, unsigned char c)
+{
+	switch (wsi->u.http2.hpack) {
+	case HPKS_TYPE:
+		if (c & 0x80) { /* indexed header field only */
+			wsi->u.http2.header_index = c & 0x7f;
+			/* stay at same state */
+			break;
+		}
+		if (c & 0x40) { /* literal header incr idx */
+			if (c == 0x40) { /* literal name */
+				wsi->u.http2.header_index = 0;
+				wsi->u.http2.hpack
+				wsi->u.http2.hpack = HPKS_HLEN;
+				break;
+			}
+			/* indexed name */
+			wsi->u.http2.header_index = c & 0x3f;
+			wsi->u.http2.hpack = HPKS_HLEN;
+			break;
+		}
+		switch(c & 0xf0) {
+		case 0: /* literal header without indexing */
+			if (c == 0) { /* literal name */
+				wsi->u.http2.hpack = HPKS_NAME_HLEN;
+				break;
+			}
+			/* indexed name */
+			wsi->u.http2.header_index = c & 0xf;
+			wsi->u.http2.hpack = HPKS_VALUE_HLEN;
+			break;
+		case 0x10: /* literal header never indexed */
+			if (c == 0x10) { /* literal name */
+				wsi->u.http2.header_index = 0;
+				wsi->u.http2.hpack = HPKS_NAME_HLEN;
+				break;
+			}
+			/* indexed name */
+			wsi->u.http2.header_index = c & 0xf;
+			wsi->u.http2.hpack = HPKS_NAME_HLEN;
+			break;
+		case 0x20:
+		case 0x30: /* header table size update */
+			/* = c & 0x1f */
+			/* stay at same state */
+			break;
+		}
+		break;	
+	case HPKS_HLEN:
+		wsi->u.http2.huff = !!(c & 0x80);
+		wsi->u.http2.hpack_len = c & 0x7f;
+		if (wsi->u.http2.hpack_len < 127) {
+			wsi->u.http2.hpack = HPKS_NAME_DATA;
+			break;
+		}
+		wsi->u.http2.hpack_m = 0;
+		wsi->u.http2.hpack = HPKS_NAME_HLEN_EXT;
+		break;
+	case HPKS_HLEN_EXT:
+		wsi->u.http2.hpack_len += (c & 0x7f) << wsi->u.http2.hpack_m;
+		wsi->u.http2.hpack_m += 7;
+		if (!(c & 0x80))
+			wsi->u.http2.hpack = HPKS_NAME_DATA;
+		break;
+
+	case HPKS_DATA:
+
+	}
+}
diff --git a/lib/http2.c b/lib/http2.c
index 74f196a..b9bed87 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -32,6 +32,7 @@
 	/* LWS_HTTP2_SETTINGS__MAX_HEADER_LIST_SIZE */		  ~0,
 }};
 
+
 void lws_http2_init(struct http2_settings *settings)
 {
 	memcpy(settings, lws_http2_default_settings.setting, sizeof(*settings));
@@ -193,16 +194,20 @@
 	case WSI_STATE_HTTP2_ESTABLISHED_PRE_SETTINGS:
 	case WSI_STATE_HTTP2_ESTABLISHED:
 		if (wsi->u.http2.frame_state == LWS_HTTP2_FRAME_HEADER_LENGTH) { // payload
+			/* applies to wsi->u.http2.stream_wsi which may be wsi*/
 			switch(wsi->u.http2.type) {
 			case LWS_HTTP2_FRAME_TYPE_SETTINGS:
-				wsi->u.http2.one_setting[wsi->u.http2.count % LWS_HTTP2_SETTINGS_LENGTH] = c;
+				wsi->u.http2.stream_wsi->u.http2.one_setting[wsi->u.http2.count % LWS_HTTP2_SETTINGS_LENGTH] = c;
 				if (wsi->u.http2.count % LWS_HTTP2_SETTINGS_LENGTH == LWS_HTTP2_SETTINGS_LENGTH - 1)
 					if (lws_http2_interpret_settings_payload(
-					     &wsi->u.http2.peer_settings,
+					     &wsi->u.http2.stream_wsi->u.http2.peer_settings,
 					     wsi->u.http2.one_setting,
 					     LWS_HTTP2_SETTINGS_LENGTH))
 						return 1;
 				break;
+			case LWS_HTTP2_FRAME_TYPE_HEADERS:
+				
+				break;
 			}
 			wsi->u.http2.count++;
 			if (wsi->u.http2.count == wsi->u.http2.length) {
@@ -238,6 +243,7 @@
 		case 8:
 			wsi->u.http2.stream_id <<= 8;
 			wsi->u.http2.stream_id |= c;
+			wsi->u.http2.stream_wsi = wsi;
 			break;
 		}
 		if (wsi->u.http2.frame_state == LWS_HTTP2_FRAME_HEADER_LENGTH) { /* frame header complete */
@@ -258,10 +264,14 @@
 				}
 				break;
 			case LWS_HTTP2_FRAME_TYPE_HEADERS:
-				wsi_new = lws_http2_wsi_from_id(wsi, wsi->u.http2.stream_id);
-				if (!wsi_new) {
-					wsi_new = lws_create_server_child_wsi(context, wsi, wsi->u.http2.stream_id);
-				}
+				if (!wsi->u.http2.stream_id)
+					return 1;
+				wsi->u.http2.stream_wsi = lws_http2_wsi_from_id(wsi, wsi->u.http2.stream_id);
+				if (!wsi->u.http2.stream_wsi)
+					wsi->u.http2.stream_wsi = lws_create_server_child_wsi(context, wsi, wsi->u.http2.stream_id);
+
+				if (!wsi->u.http2.stream_wsi)
+					return 1;
 			}
 			if (wsi->u.http2.length == 0)
 				wsi->u.http2.frame_state = 0;
diff --git a/lib/lextable.h b/lib/lextable.h
index 2d048c6..3714e4c 100644
--- a/lib/lextable.h
+++ b/lib/lextable.h
@@ -1,351 +1,732 @@
-/* pos 0000:   0 */    0x67 /* 'g' */, 0x25, 0x00  /* (to 0x0025 state   1) */,
-                       0x70 /* 'p' */, 0x27, 0x00  /* (to 0x002A state   5) */,
-                       0x6F /* 'o' */, 0x30, 0x00  /* (to 0x0036 state  10) */,
-                       0x68 /* 'h' */, 0x3C, 0x00  /* (to 0x0045 state  18) */,
-                       0x63 /* 'c' */, 0x45, 0x00  /* (to 0x0051 state  23) */,
-                       0x75 /* 'u' */, 0x60, 0x00  /* (to 0x006F state  34) */,
-                       0x73 /* 's' */, 0x6D, 0x00  /* (to 0x007F state  48) */,
-                       0x0D /* '.' */, 0x97, 0x00  /* (to 0x00AC state  68) */,
-                       0x61 /* 'a' */, 0xE9, 0x00  /* (to 0x0101 state 129) */,
-                       0x69 /* 'i' */, 0x1C, 0x01  /* (to 0x0137 state 163) */,
-                       0x64 /* 'd' */, 0x9B, 0x01  /* (to 0x01B9 state 265) */,
-                       0x72 /* 'r' */, 0x9E, 0x01  /* (to 0x01BF state 270) */,
+/* pos 0000:   0 */    0x67 /* 'g' */, 0x3D, 0x00  /* (to 0x003D state   1) */,
+                       0x70 /* 'p' */, 0x3F, 0x00  /* (to 0x0042 state   5) */,
+                       0x6F /* 'o' */, 0x48, 0x00  /* (to 0x004E state  10) */,
+                       0x68 /* 'h' */, 0x54, 0x00  /* (to 0x005D state  18) */,
+                       0x63 /* 'c' */, 0x5D, 0x00  /* (to 0x0069 state  23) */,
+                       0x75 /* 'u' */, 0x78, 0x00  /* (to 0x0087 state  34) */,
+                       0x73 /* 's' */, 0x8B, 0x00  /* (to 0x009D state  48) */,
+                       0x0D /* '.' */, 0xC4, 0x00  /* (to 0x00D9 state  68) */,
+                       0x61 /* 'a' */, 0x16, 0x01  /* (to 0x012E state 129) */,
+                       0x69 /* 'i' */, 0x55, 0x01  /* (to 0x0170 state 163) */,
+                       0x64 /* 'd' */, 0xFB, 0x01  /* (to 0x0219 state 265) */,
+                       0x72 /* 'r' */, 0xFE, 0x01  /* (to 0x021F state 270) */,
+                       0x3A /* ':' */, 0x2F, 0x02  /* (to 0x0253 state 299) */,
+                       0x65 /* 'e' */, 0xB6, 0x02  /* (to 0x02DD state 405) */,
+                       0x66 /* 'f' */, 0xD2, 0x02  /* (to 0x02FC state 421) */,
+                       0x6C /* 'l' */, 0xF4, 0x02  /* (to 0x0321 state 454) */,
+                       0x6D /* 'm' */, 0x17, 0x03  /* (to 0x0347 state 480) */,
+                       0x74 /* 't' */, 0x80, 0x03  /* (to 0x03B3 state 574) */,
+                       0x76 /* 'v' */, 0x9B, 0x03  /* (to 0x03D1 state 602) */,
+                       0x77 /* 'w' */, 0xA8, 0x03  /* (to 0x03E1 state 610) */,
                        0x08, /* fail */
-/* pos 0025:   1 */    0xE5 /* 'e' -> */,
-/* pos 0026:   2 */    0xF4 /* 't' -> */,
-/* pos 0027:   3 */    0xA0 /* ' ' -> */,
-/* pos 0028:   4 */    0x00, 0x00                  /* - terminal marker  0 - */,
-/* pos 002a:   5 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x0031 state   6) */,
-                       0x72 /* 'r' */, 0x4A, 0x01  /* (to 0x0177 state 211) */,
+/* pos 003d:   1 */    0xE5 /* 'e' -> */,
+/* pos 003e:   2 */    0xF4 /* 't' -> */,
+/* pos 003f:   3 */    0xA0 /* ' ' -> */,
+/* pos 0040:   4 */    0x00, 0x00                  /* - terminal marker  0 - */,
+/* pos 0042:   5 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x0049 state   6) */,
+                       0x72 /* 'r' */, 0x7D, 0x01  /* (to 0x01C2 state 211) */,
                        0x08, /* fail */
-/* pos 0031:   6 */    0xF3 /* 's' -> */,
-/* pos 0032:   7 */    0xF4 /* 't' -> */,
-/* pos 0033:   8 */    0xA0 /* ' ' -> */,
-/* pos 0034:   9 */    0x00, 0x01                  /* - terminal marker  1 - */,
-/* pos 0036:  10 */    0x70 /* 'p' */, 0x07, 0x00  /* (to 0x003D state  11) */,
-                       0x72 /* 'r' */, 0x3F, 0x00  /* (to 0x0078 state  42) */,
+/* pos 0049:   6 */    0xF3 /* 's' -> */,
+/* pos 004a:   7 */    0xF4 /* 't' -> */,
+/* pos 004b:   8 */    0xA0 /* ' ' -> */,
+/* pos 004c:   9 */    0x00, 0x01                  /* - terminal marker  1 - */,
+/* pos 004e:  10 */    0x70 /* 'p' */, 0x07, 0x00  /* (to 0x0055 state  11) */,
+                       0x72 /* 'r' */, 0x45, 0x00  /* (to 0x0096 state  42) */,
                        0x08, /* fail */
-/* pos 003d:  11 */    0xF4 /* 't' -> */,
-/* pos 003e:  12 */    0xE9 /* 'i' -> */,
-/* pos 003f:  13 */    0xEF /* 'o' -> */,
-/* pos 0040:  14 */    0xEE /* 'n' -> */,
-/* pos 0041:  15 */    0xF3 /* 's' -> */,
-/* pos 0042:  16 */    0xA0 /* ' ' -> */,
-/* pos 0043:  17 */    0x00, 0x02                  /* - terminal marker  2 - */,
-/* pos 0045:  18 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x004C state  19) */,
-                       0x74 /* 't' */, 0x9E, 0x00  /* (to 0x00E6 state 110) */,
+/* pos 0055:  11 */    0xF4 /* 't' -> */,
+/* pos 0056:  12 */    0xE9 /* 'i' -> */,
+/* pos 0057:  13 */    0xEF /* 'o' -> */,
+/* pos 0058:  14 */    0xEE /* 'n' -> */,
+/* pos 0059:  15 */    0xF3 /* 's' -> */,
+/* pos 005a:  16 */    0xA0 /* ' ' -> */,
+/* pos 005b:  17 */    0x00, 0x02                  /* - terminal marker  2 - */,
+/* pos 005d:  18 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x0064 state  19) */,
+                       0x74 /* 't' */, 0xB3, 0x00  /* (to 0x0113 state 110) */,
                        0x08, /* fail */
-/* pos 004c:  19 */    0xF3 /* 's' -> */,
-/* pos 004d:  20 */    0xF4 /* 't' -> */,
-/* pos 004e:  21 */    0xBA /* ':' -> */,
-/* pos 004f:  22 */    0x00, 0x03                  /* - terminal marker  3 - */,
-/* pos 0051:  23 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x0058 state  24) */,
-                       0x61 /* 'a' */, 0x2A, 0x01  /* (to 0x017E state 217) */,
+/* pos 0064:  19 */    0xF3 /* 's' -> */,
+/* pos 0065:  20 */    0xF4 /* 't' -> */,
+/* pos 0066:  21 */    0xBA /* ':' -> */,
+/* pos 0067:  22 */    0x00, 0x03                  /* - terminal marker  3 - */,
+/* pos 0069:  23 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x0070 state  24) */,
+                       0x61 /* 'a' */, 0x63, 0x01  /* (to 0x01CF state 217) */,
                        0x08, /* fail */
-/* pos 0058:  24 */    0x6E /* 'n' */, 0x07, 0x00  /* (to 0x005F state  25) */,
-                       0x6F /* 'o' */, 0x3F, 0x01  /* (to 0x019A state 243) */,
+/* pos 0070:  24 */    0x6E /* 'n' */, 0x07, 0x00  /* (to 0x0077 state  25) */,
+                       0x6F /* 'o' */, 0x78, 0x01  /* (to 0x01EB state 243) */,
                        0x08, /* fail */
-/* pos 005f:  25 */    0x6E /* 'n' */, 0x07, 0x00  /* (to 0x0066 state  26) */,
-                       0x74 /* 't' */, 0x3E, 0x01  /* (to 0x01A0 state 248) */,
+/* pos 0077:  25 */    0x6E /* 'n' */, 0x07, 0x00  /* (to 0x007E state  26) */,
+                       0x74 /* 't' */, 0x77, 0x01  /* (to 0x01F1 state 248) */,
                        0x08, /* fail */
-/* pos 0066:  26 */    0xE5 /* 'e' -> */,
-/* pos 0067:  27 */    0xE3 /* 'c' -> */,
-/* pos 0068:  28 */    0xF4 /* 't' -> */,
-/* pos 0069:  29 */    0xE9 /* 'i' -> */,
-/* pos 006a:  30 */    0xEF /* 'o' -> */,
-/* pos 006b:  31 */    0xEE /* 'n' -> */,
-/* pos 006c:  32 */    0xBA /* ':' -> */,
-/* pos 006d:  33 */    0x00, 0x04                  /* - terminal marker  4 - */,
-/* pos 006f:  34 */    0xF0 /* 'p' -> */,
-/* pos 0070:  35 */    0xE7 /* 'g' -> */,
-/* pos 0071:  36 */    0xF2 /* 'r' -> */,
-/* pos 0072:  37 */    0xE1 /* 'a' -> */,
-/* pos 0073:  38 */    0xE4 /* 'd' -> */,
-/* pos 0074:  39 */    0xE5 /* 'e' -> */,
-/* pos 0075:  40 */    0xBA /* ':' -> */,
-/* pos 0076:  41 */    0x00, 0x05                  /* - terminal marker  5 - */,
-/* pos 0078:  42 */    0xE9 /* 'i' -> */,
-/* pos 0079:  43 */    0xE7 /* 'g' -> */,
-/* pos 007a:  44 */    0xE9 /* 'i' -> */,
-/* pos 007b:  45 */    0xEE /* 'n' -> */,
-/* pos 007c:  46 */    0xBA /* ':' -> */,
-/* pos 007d:  47 */    0x00, 0x06                  /* - terminal marker  6 - */,
-/* pos 007f:  48 */    0xE5 /* 'e' -> */,
-/* pos 0080:  49 */    0xE3 /* 'c' -> */,
-/* pos 0081:  50 */    0xAD /* '-' -> */,
-/* pos 0082:  51 */    0xF7 /* 'w' -> */,
-/* pos 0083:  52 */    0xE5 /* 'e' -> */,
-/* pos 0084:  53 */    0xE2 /* 'b' -> */,
-/* pos 0085:  54 */    0xF3 /* 's' -> */,
-/* pos 0086:  55 */    0xEF /* 'o' -> */,
-/* pos 0087:  56 */    0xE3 /* 'c' -> */,
-/* pos 0088:  57 */    0xEB /* 'k' -> */,
-/* pos 0089:  58 */    0xE5 /* 'e' -> */,
-/* pos 008a:  59 */    0xF4 /* 't' -> */,
-/* pos 008b:  60 */    0xAD /* '-' -> */,
-/* pos 008c:  61 */    0x64 /* 'd' */, 0x19, 0x00  /* (to 0x00A5 state  62) */,
-                       0x65 /* 'e' */, 0x20, 0x00  /* (to 0x00AF state  70) */,
-                       0x6B /* 'k' */, 0x29, 0x00  /* (to 0x00BB state  81) */,
-                       0x70 /* 'p' */, 0x38, 0x00  /* (to 0x00CD state  88) */,
-                       0x61 /* 'a' */, 0x3F, 0x00  /* (to 0x00D7 state  97) */,
-                       0x6E /* 'n' */, 0x44, 0x00  /* (to 0x00DF state 104) */,
-                       0x76 /* 'v' */, 0x38, 0x01  /* (to 0x01D6 state 284) */,
-                       0x6F /* 'o' */, 0x3E, 0x01  /* (to 0x01DF state 292) */,
+/* pos 007e:  26 */    0xE5 /* 'e' -> */,
+/* pos 007f:  27 */    0xE3 /* 'c' -> */,
+/* pos 0080:  28 */    0xF4 /* 't' -> */,
+/* pos 0081:  29 */    0xE9 /* 'i' -> */,
+/* pos 0082:  30 */    0xEF /* 'o' -> */,
+/* pos 0083:  31 */    0xEE /* 'n' -> */,
+/* pos 0084:  32 */    0xBA /* ':' -> */,
+/* pos 0085:  33 */    0x00, 0x04                  /* - terminal marker  4 - */,
+/* pos 0087:  34 */    0x70 /* 'p' */, 0x07, 0x00  /* (to 0x008E state  35) */,
+                       0x73 /* 's' */, 0x3C, 0x03  /* (to 0x03C6 state 592) */,
                        0x08, /* fail */
-/* pos 00a5:  62 */    0xF2 /* 'r' -> */,
-/* pos 00a6:  63 */    0xE1 /* 'a' -> */,
-/* pos 00a7:  64 */    0xE6 /* 'f' -> */,
-/* pos 00a8:  65 */    0xF4 /* 't' -> */,
-/* pos 00a9:  66 */    0xBA /* ':' -> */,
-/* pos 00aa:  67 */    0x00, 0x07                  /* - terminal marker  7 - */,
-/* pos 00ac:  68 */    0x8A /* '.' -> */,
-/* pos 00ad:  69 */    0x00, 0x08                  /* - terminal marker  8 - */,
-/* pos 00af:  70 */    0xF8 /* 'x' -> */,
-/* pos 00b0:  71 */    0xF4 /* 't' -> */,
-/* pos 00b1:  72 */    0xE5 /* 'e' -> */,
-/* pos 00b2:  73 */    0xEE /* 'n' -> */,
-/* pos 00b3:  74 */    0xF3 /* 's' -> */,
-/* pos 00b4:  75 */    0xE9 /* 'i' -> */,
-/* pos 00b5:  76 */    0xEF /* 'o' -> */,
-/* pos 00b6:  77 */    0xEE /* 'n' -> */,
-/* pos 00b7:  78 */    0xF3 /* 's' -> */,
-/* pos 00b8:  79 */    0xBA /* ':' -> */,
-/* pos 00b9:  80 */    0x00, 0x09                  /* - terminal marker  9 - */,
-/* pos 00bb:  81 */    0xE5 /* 'e' -> */,
-/* pos 00bc:  82 */    0xF9 /* 'y' -> */,
-/* pos 00bd:  83 */    0x31 /* '1' */, 0x0A, 0x00  /* (to 0x00C7 state  84) */,
-                       0x32 /* '2' */, 0x0A, 0x00  /* (to 0x00CA state  86) */,
-                       0x3A /* ':' */, 0x11, 0x01  /* (to 0x01D4 state 283) */,
+/* pos 008e:  35 */    0xE7 /* 'g' -> */,
+/* pos 008f:  36 */    0xF2 /* 'r' -> */,
+/* pos 0090:  37 */    0xE1 /* 'a' -> */,
+/* pos 0091:  38 */    0xE4 /* 'd' -> */,
+/* pos 0092:  39 */    0xE5 /* 'e' -> */,
+/* pos 0093:  40 */    0xBA /* ':' -> */,
+/* pos 0094:  41 */    0x00, 0x05                  /* - terminal marker  5 - */,
+/* pos 0096:  42 */    0xE9 /* 'i' -> */,
+/* pos 0097:  43 */    0xE7 /* 'g' -> */,
+/* pos 0098:  44 */    0xE9 /* 'i' -> */,
+/* pos 0099:  45 */    0xEE /* 'n' -> */,
+/* pos 009a:  46 */    0xBA /* ':' -> */,
+/* pos 009b:  47 */    0x00, 0x06                  /* - terminal marker  6 - */,
+/* pos 009d:  48 */    0x65 /* 'e' */, 0x07, 0x00  /* (to 0x00A4 state  49) */,
+                       0x74 /* 't' */, 0xF9, 0x02  /* (to 0x0399 state 549) */,
                        0x08, /* fail */
-/* pos 00c7:  84 */    0xBA /* ':' -> */,
-/* pos 00c8:  85 */    0x00, 0x0A                  /* - terminal marker 10 - */,
-/* pos 00ca:  86 */    0xBA /* ':' -> */,
-/* pos 00cb:  87 */    0x00, 0x0B                  /* - terminal marker 11 - */,
-/* pos 00cd:  88 */    0xF2 /* 'r' -> */,
-/* pos 00ce:  89 */    0xEF /* 'o' -> */,
-/* pos 00cf:  90 */    0xF4 /* 't' -> */,
-/* pos 00d0:  91 */    0xEF /* 'o' -> */,
-/* pos 00d1:  92 */    0xE3 /* 'c' -> */,
-/* pos 00d2:  93 */    0xEF /* 'o' -> */,
-/* pos 00d3:  94 */    0xEC /* 'l' -> */,
-/* pos 00d4:  95 */    0xBA /* ':' -> */,
-/* pos 00d5:  96 */    0x00, 0x0C                  /* - terminal marker 12 - */,
-/* pos 00d7:  97 */    0xE3 /* 'c' -> */,
-/* pos 00d8:  98 */    0xE3 /* 'c' -> */,
-/* pos 00d9:  99 */    0xE5 /* 'e' -> */,
-/* pos 00da: 100 */    0xF0 /* 'p' -> */,
-/* pos 00db: 101 */    0xF4 /* 't' -> */,
-/* pos 00dc: 102 */    0xBA /* ':' -> */,
-/* pos 00dd: 103 */    0x00, 0x0D                  /* - terminal marker 13 - */,
-/* pos 00df: 104 */    0xEF /* 'o' -> */,
-/* pos 00e0: 105 */    0xEE /* 'n' -> */,
-/* pos 00e1: 106 */    0xE3 /* 'c' -> */,
-/* pos 00e2: 107 */    0xE5 /* 'e' -> */,
-/* pos 00e3: 108 */    0xBA /* ':' -> */,
-/* pos 00e4: 109 */    0x00, 0x0E                  /* - terminal marker 14 - */,
-/* pos 00e6: 110 */    0xF4 /* 't' -> */,
-/* pos 00e7: 111 */    0xF0 /* 'p' -> */,
-/* pos 00e8: 112 */    0x2F /* '/' */, 0x07, 0x00  /* (to 0x00EF state 113) */,
-                       0x32 /* '2' */, 0x0A, 0x00  /* (to 0x00F5 state 118) */,
+/* pos 00a4:  49 */    0x63 /* 'c' */, 0x0A, 0x00  /* (to 0x00AE state  50) */,
+                       0x72 /* 'r' */, 0xE2, 0x02  /* (to 0x0389 state 535) */,
+                       0x74 /* 't' */, 0xE5, 0x02  /* (to 0x038F state 540) */,
                        0x08, /* fail */
-/* pos 00ef: 113 */    0xB1 /* '1' -> */,
-/* pos 00f0: 114 */    0xAE /* '.' -> */,
-/* pos 00f1: 115 */    0xB1 /* '1' -> */,
-/* pos 00f2: 116 */    0xA0 /* ' ' -> */,
-/* pos 00f3: 117 */    0x00, 0x0F                  /* - terminal marker 15 - */,
-/* pos 00f5: 118 */    0xAD /* '-' -> */,
-/* pos 00f6: 119 */    0xF3 /* 's' -> */,
-/* pos 00f7: 120 */    0xE5 /* 'e' -> */,
-/* pos 00f8: 121 */    0xF4 /* 't' -> */,
-/* pos 00f9: 122 */    0xF4 /* 't' -> */,
-/* pos 00fa: 123 */    0xE9 /* 'i' -> */,
-/* pos 00fb: 124 */    0xEE /* 'n' -> */,
-/* pos 00fc: 125 */    0xE7 /* 'g' -> */,
-/* pos 00fd: 126 */    0xF3 /* 's' -> */,
-/* pos 00fe: 127 */    0xBA /* ':' -> */,
-/* pos 00ff: 128 */    0x00, 0x10                  /* - terminal marker 16 - */,
-/* pos 0101: 129 */    0x63 /* 'c' */, 0x07, 0x00  /* (to 0x0108 state 130) */,
-                       0x75 /* 'u' */, 0x88, 0x00  /* (to 0x018C state 230) */,
+/* pos 00ae:  50 */    0xAD /* '-' -> */,
+/* pos 00af:  51 */    0xF7 /* 'w' -> */,
+/* pos 00b0:  52 */    0xE5 /* 'e' -> */,
+/* pos 00b1:  53 */    0xE2 /* 'b' -> */,
+/* pos 00b2:  54 */    0xF3 /* 's' -> */,
+/* pos 00b3:  55 */    0xEF /* 'o' -> */,
+/* pos 00b4:  56 */    0xE3 /* 'c' -> */,
+/* pos 00b5:  57 */    0xEB /* 'k' -> */,
+/* pos 00b6:  58 */    0xE5 /* 'e' -> */,
+/* pos 00b7:  59 */    0xF4 /* 't' -> */,
+/* pos 00b8:  60 */    0xAD /* '-' -> */,
+/* pos 00b9:  61 */    0x64 /* 'd' */, 0x19, 0x00  /* (to 0x00D2 state  62) */,
+                       0x65 /* 'e' */, 0x20, 0x00  /* (to 0x00DC state  70) */,
+                       0x6B /* 'k' */, 0x29, 0x00  /* (to 0x00E8 state  81) */,
+                       0x70 /* 'p' */, 0x38, 0x00  /* (to 0x00FA state  88) */,
+                       0x61 /* 'a' */, 0x3F, 0x00  /* (to 0x0104 state  97) */,
+                       0x6E /* 'n' */, 0x44, 0x00  /* (to 0x010C state 104) */,
+                       0x76 /* 'v' */, 0x77, 0x01  /* (to 0x0242 state 284) */,
+                       0x6F /* 'o' */, 0x7D, 0x01  /* (to 0x024B state 292) */,
                        0x08, /* fail */
-/* pos 0108: 130 */    0xE3 /* 'c' -> */,
-/* pos 0109: 131 */    0xE5 /* 'e' -> */,
-/* pos 010a: 132 */    0x70 /* 'p' */, 0x07, 0x00  /* (to 0x0111 state 133) */,
-                       0x73 /* 's' */, 0x0E, 0x00  /* (to 0x011B state 136) */,
+/* pos 00d2:  62 */    0xF2 /* 'r' -> */,
+/* pos 00d3:  63 */    0xE1 /* 'a' -> */,
+/* pos 00d4:  64 */    0xE6 /* 'f' -> */,
+/* pos 00d5:  65 */    0xF4 /* 't' -> */,
+/* pos 00d6:  66 */    0xBA /* ':' -> */,
+/* pos 00d7:  67 */    0x00, 0x07                  /* - terminal marker  7 - */,
+/* pos 00d9:  68 */    0x8A /* '.' -> */,
+/* pos 00da:  69 */    0x00, 0x08                  /* - terminal marker  8 - */,
+/* pos 00dc:  70 */    0xF8 /* 'x' -> */,
+/* pos 00dd:  71 */    0xF4 /* 't' -> */,
+/* pos 00de:  72 */    0xE5 /* 'e' -> */,
+/* pos 00df:  73 */    0xEE /* 'n' -> */,
+/* pos 00e0:  74 */    0xF3 /* 's' -> */,
+/* pos 00e1:  75 */    0xE9 /* 'i' -> */,
+/* pos 00e2:  76 */    0xEF /* 'o' -> */,
+/* pos 00e3:  77 */    0xEE /* 'n' -> */,
+/* pos 00e4:  78 */    0xF3 /* 's' -> */,
+/* pos 00e5:  79 */    0xBA /* ':' -> */,
+/* pos 00e6:  80 */    0x00, 0x09                  /* - terminal marker  9 - */,
+/* pos 00e8:  81 */    0xE5 /* 'e' -> */,
+/* pos 00e9:  82 */    0xF9 /* 'y' -> */,
+/* pos 00ea:  83 */    0x31 /* '1' */, 0x0A, 0x00  /* (to 0x00F4 state  84) */,
+                       0x32 /* '2' */, 0x0A, 0x00  /* (to 0x00F7 state  86) */,
+                       0x3A /* ':' */, 0x50, 0x01  /* (to 0x0240 state 283) */,
                        0x08, /* fail */
-/* pos 0111: 133 */    0xF4 /* 't' -> */,
-/* pos 0112: 134 */    0x3A /* ':' */, 0x07, 0x00  /* (to 0x0119 state 135) */,
-                       0x2D /* '-' */, 0x47, 0x00  /* (to 0x015C state 192) */,
+/* pos 00f4:  84 */    0xBA /* ':' -> */,
+/* pos 00f5:  85 */    0x00, 0x0A                  /* - terminal marker 10 - */,
+/* pos 00f7:  86 */    0xBA /* ':' -> */,
+/* pos 00f8:  87 */    0x00, 0x0B                  /* - terminal marker 11 - */,
+/* pos 00fa:  88 */    0xF2 /* 'r' -> */,
+/* pos 00fb:  89 */    0xEF /* 'o' -> */,
+/* pos 00fc:  90 */    0xF4 /* 't' -> */,
+/* pos 00fd:  91 */    0xEF /* 'o' -> */,
+/* pos 00fe:  92 */    0xE3 /* 'c' -> */,
+/* pos 00ff:  93 */    0xEF /* 'o' -> */,
+/* pos 0100:  94 */    0xEC /* 'l' -> */,
+/* pos 0101:  95 */    0xBA /* ':' -> */,
+/* pos 0102:  96 */    0x00, 0x0C                  /* - terminal marker 12 - */,
+/* pos 0104:  97 */    0xE3 /* 'c' -> */,
+/* pos 0105:  98 */    0xE3 /* 'c' -> */,
+/* pos 0106:  99 */    0xE5 /* 'e' -> */,
+/* pos 0107: 100 */    0xF0 /* 'p' -> */,
+/* pos 0108: 101 */    0xF4 /* 't' -> */,
+/* pos 0109: 102 */    0xBA /* ':' -> */,
+/* pos 010a: 103 */    0x00, 0x0D                  /* - terminal marker 13 - */,
+/* pos 010c: 104 */    0xEF /* 'o' -> */,
+/* pos 010d: 105 */    0xEE /* 'n' -> */,
+/* pos 010e: 106 */    0xE3 /* 'c' -> */,
+/* pos 010f: 107 */    0xE5 /* 'e' -> */,
+/* pos 0110: 108 */    0xBA /* ':' -> */,
+/* pos 0111: 109 */    0x00, 0x0E                  /* - terminal marker 14 - */,
+/* pos 0113: 110 */    0xF4 /* 't' -> */,
+/* pos 0114: 111 */    0xF0 /* 'p' -> */,
+/* pos 0115: 112 */    0x2F /* '/' */, 0x07, 0x00  /* (to 0x011C state 113) */,
+                       0x32 /* '2' */, 0x0A, 0x00  /* (to 0x0122 state 118) */,
                        0x08, /* fail */
-/* pos 0119: 135 */    0x00, 0x11                  /* - terminal marker 17 - */,
-/* pos 011b: 136 */    0xF3 /* 's' -> */,
-/* pos 011c: 137 */    0xAD /* '-' -> */,
-/* pos 011d: 138 */    0xE3 /* 'c' -> */,
-/* pos 011e: 139 */    0xEF /* 'o' -> */,
-/* pos 011f: 140 */    0xEE /* 'n' -> */,
-/* pos 0120: 141 */    0xF4 /* 't' -> */,
-/* pos 0121: 142 */    0xF2 /* 'r' -> */,
-/* pos 0122: 143 */    0xEF /* 'o' -> */,
-/* pos 0123: 144 */    0xEC /* 'l' -> */,
-/* pos 0124: 145 */    0xAD /* '-' -> */,
-/* pos 0125: 146 */    0xF2 /* 'r' -> */,
-/* pos 0126: 147 */    0xE5 /* 'e' -> */,
-/* pos 0127: 148 */    0xF1 /* 'q' -> */,
-/* pos 0128: 149 */    0xF5 /* 'u' -> */,
-/* pos 0129: 150 */    0xE5 /* 'e' -> */,
-/* pos 012a: 151 */    0xF3 /* 's' -> */,
-/* pos 012b: 152 */    0xF4 /* 't' -> */,
-/* pos 012c: 153 */    0xAD /* '-' -> */,
-/* pos 012d: 154 */    0xE8 /* 'h' -> */,
-/* pos 012e: 155 */    0xE5 /* 'e' -> */,
-/* pos 012f: 156 */    0xE1 /* 'a' -> */,
-/* pos 0130: 157 */    0xE4 /* 'd' -> */,
-/* pos 0131: 158 */    0xE5 /* 'e' -> */,
-/* pos 0132: 159 */    0xF2 /* 'r' -> */,
-/* pos 0133: 160 */    0xF3 /* 's' -> */,
-/* pos 0134: 161 */    0xBA /* ':' -> */,
-/* pos 0135: 162 */    0x00, 0x12                  /* - terminal marker 18 - */,
-/* pos 0137: 163 */    0xE6 /* 'f' -> */,
-/* pos 0138: 164 */    0xAD /* '-' -> */,
-/* pos 0139: 165 */    0x6D /* 'm' */, 0x07, 0x00  /* (to 0x0140 state 166) */,
-                       0x6E /* 'n' */, 0x14, 0x00  /* (to 0x0150 state 181) */,
+/* pos 011c: 113 */    0xB1 /* '1' -> */,
+/* pos 011d: 114 */    0xAE /* '.' -> */,
+/* pos 011e: 115 */    0xB1 /* '1' -> */,
+/* pos 011f: 116 */    0xA0 /* ' ' -> */,
+/* pos 0120: 117 */    0x00, 0x0F                  /* - terminal marker 15 - */,
+/* pos 0122: 118 */    0xAD /* '-' -> */,
+/* pos 0123: 119 */    0xF3 /* 's' -> */,
+/* pos 0124: 120 */    0xE5 /* 'e' -> */,
+/* pos 0125: 121 */    0xF4 /* 't' -> */,
+/* pos 0126: 122 */    0xF4 /* 't' -> */,
+/* pos 0127: 123 */    0xE9 /* 'i' -> */,
+/* pos 0128: 124 */    0xEE /* 'n' -> */,
+/* pos 0129: 125 */    0xE7 /* 'g' -> */,
+/* pos 012a: 126 */    0xF3 /* 's' -> */,
+/* pos 012b: 127 */    0xBA /* ':' -> */,
+/* pos 012c: 128 */    0x00, 0x10                  /* - terminal marker 16 - */,
+/* pos 012e: 129 */    0x63 /* 'c' */, 0x0D, 0x00  /* (to 0x013B state 130) */,
+                       0x75 /* 'u' */, 0xAC, 0x00  /* (to 0x01DD state 230) */,
+                       0x67 /* 'g' */, 0x79, 0x01  /* (to 0x02AD state 363) */,
+                       0x6C /* 'l' */, 0x7A, 0x01  /* (to 0x02B1 state 366) */,
                        0x08, /* fail */
-/* pos 0140: 166 */    0xEF /* 'o' -> */,
-/* pos 0141: 167 */    0xE4 /* 'd' -> */,
-/* pos 0142: 168 */    0xE9 /* 'i' -> */,
-/* pos 0143: 169 */    0xE6 /* 'f' -> */,
-/* pos 0144: 170 */    0xE9 /* 'i' -> */,
-/* pos 0145: 171 */    0xE5 /* 'e' -> */,
-/* pos 0146: 172 */    0xE4 /* 'd' -> */,
-/* pos 0147: 173 */    0xAD /* '-' -> */,
-/* pos 0148: 174 */    0xF3 /* 's' -> */,
-/* pos 0149: 175 */    0xE9 /* 'i' -> */,
-/* pos 014a: 176 */    0xEE /* 'n' -> */,
-/* pos 014b: 177 */    0xE3 /* 'c' -> */,
-/* pos 014c: 178 */    0xE5 /* 'e' -> */,
-/* pos 014d: 179 */    0xBA /* ':' -> */,
-/* pos 014e: 180 */    0x00, 0x13                  /* - terminal marker 19 - */,
-/* pos 0150: 181 */    0xEF /* 'o' -> */,
-/* pos 0151: 182 */    0xEE /* 'n' -> */,
-/* pos 0152: 183 */    0xE5 /* 'e' -> */,
-/* pos 0153: 184 */    0xAD /* '-' -> */,
-/* pos 0154: 185 */    0xED /* 'm' -> */,
-/* pos 0155: 186 */    0xE1 /* 'a' -> */,
-/* pos 0156: 187 */    0xF4 /* 't' -> */,
-/* pos 0157: 188 */    0xE3 /* 'c' -> */,
-/* pos 0158: 189 */    0xE8 /* 'h' -> */,
-/* pos 0159: 190 */    0xBA /* ':' -> */,
-/* pos 015a: 191 */    0x00, 0x14                  /* - terminal marker 20 - */,
-/* pos 015c: 192 */    0x65 /* 'e' */, 0x07, 0x00  /* (to 0x0163 state 193) */,
-                       0x6C /* 'l' */, 0x0E, 0x00  /* (to 0x016D state 202) */,
+/* pos 013b: 130 */    0xE3 /* 'c' -> */,
+/* pos 013c: 131 */    0xE5 /* 'e' -> */,
+/* pos 013d: 132 */    0x70 /* 'p' */, 0x07, 0x00  /* (to 0x0144 state 133) */,
+                       0x73 /* 's' */, 0x0E, 0x00  /* (to 0x014E state 136) */,
                        0x08, /* fail */
-/* pos 0163: 193 */    0xEE /* 'n' -> */,
-/* pos 0164: 194 */    0xE3 /* 'c' -> */,
-/* pos 0165: 195 */    0xEF /* 'o' -> */,
-/* pos 0166: 196 */    0xE4 /* 'd' -> */,
-/* pos 0167: 197 */    0xE9 /* 'i' -> */,
-/* pos 0168: 198 */    0xEE /* 'n' -> */,
-/* pos 0169: 199 */    0xE7 /* 'g' -> */,
-/* pos 016a: 200 */    0xBA /* ':' -> */,
-/* pos 016b: 201 */    0x00, 0x15                  /* - terminal marker 21 - */,
-/* pos 016d: 202 */    0xE1 /* 'a' -> */,
-/* pos 016e: 203 */    0xEE /* 'n' -> */,
-/* pos 016f: 204 */    0xE7 /* 'g' -> */,
-/* pos 0170: 205 */    0xF5 /* 'u' -> */,
-/* pos 0171: 206 */    0xE1 /* 'a' -> */,
-/* pos 0172: 207 */    0xE7 /* 'g' -> */,
-/* pos 0173: 208 */    0xE5 /* 'e' -> */,
-/* pos 0174: 209 */    0xBA /* ':' -> */,
-/* pos 0175: 210 */    0x00, 0x16                  /* - terminal marker 22 - */,
-/* pos 0177: 211 */    0xE1 /* 'a' -> */,
-/* pos 0178: 212 */    0xE7 /* 'g' -> */,
-/* pos 0179: 213 */    0xED /* 'm' -> */,
-/* pos 017a: 214 */    0xE1 /* 'a' -> */,
-/* pos 017b: 215 */    0xBA /* ':' -> */,
-/* pos 017c: 216 */    0x00, 0x17                  /* - terminal marker 23 - */,
-/* pos 017e: 217 */    0xE3 /* 'c' -> */,
-/* pos 017f: 218 */    0xE8 /* 'h' -> */,
-/* pos 0180: 219 */    0xE5 /* 'e' -> */,
-/* pos 0181: 220 */    0xAD /* '-' -> */,
-/* pos 0182: 221 */    0xE3 /* 'c' -> */,
-/* pos 0183: 222 */    0xEF /* 'o' -> */,
-/* pos 0184: 223 */    0xEE /* 'n' -> */,
-/* pos 0185: 224 */    0xF4 /* 't' -> */,
-/* pos 0186: 225 */    0xF2 /* 'r' -> */,
-/* pos 0187: 226 */    0xEF /* 'o' -> */,
-/* pos 0188: 227 */    0xEC /* 'l' -> */,
-/* pos 0189: 228 */    0xBA /* ':' -> */,
-/* pos 018a: 229 */    0x00, 0x18                  /* - terminal marker 24 - */,
-/* pos 018c: 230 */    0xF4 /* 't' -> */,
-/* pos 018d: 231 */    0xE8 /* 'h' -> */,
-/* pos 018e: 232 */    0xEF /* 'o' -> */,
-/* pos 018f: 233 */    0xF2 /* 'r' -> */,
-/* pos 0190: 234 */    0xE9 /* 'i' -> */,
-/* pos 0191: 235 */    0xFA /* 'z' -> */,
-/* pos 0192: 236 */    0xE1 /* 'a' -> */,
-/* pos 0193: 237 */    0xF4 /* 't' -> */,
-/* pos 0194: 238 */    0xE9 /* 'i' -> */,
-/* pos 0195: 239 */    0xEF /* 'o' -> */,
-/* pos 0196: 240 */    0xEE /* 'n' -> */,
-/* pos 0197: 241 */    0xBA /* ':' -> */,
-/* pos 0198: 242 */    0x00, 0x19                  /* - terminal marker 25 - */,
-/* pos 019a: 243 */    0xEB /* 'k' -> */,
-/* pos 019b: 244 */    0xE9 /* 'i' -> */,
-/* pos 019c: 245 */    0xE5 /* 'e' -> */,
-/* pos 019d: 246 */    0xBA /* ':' -> */,
-/* pos 019e: 247 */    0x00, 0x1A                  /* - terminal marker 26 - */,
-/* pos 01a0: 248 */    0xE5 /* 'e' -> */,
-/* pos 01a1: 249 */    0xEE /* 'n' -> */,
-/* pos 01a2: 250 */    0xF4 /* 't' -> */,
-/* pos 01a3: 251 */    0xAD /* '-' -> */,
-/* pos 01a4: 252 */    0x6C /* 'l' */, 0x07, 0x00  /* (to 0x01AB state 253) */,
-                       0x74 /* 't' */, 0x0C, 0x00  /* (to 0x01B3 state 260) */,
+/* pos 0144: 133 */    0xF4 /* 't' -> */,
+/* pos 0145: 134 */    0x3A /* ':' */, 0x07, 0x00  /* (to 0x014C state 135) */,
+                       0x2D /* '-' */, 0x59, 0x00  /* (to 0x01A1 state 192) */,
                        0x08, /* fail */
-/* pos 01ab: 253 */    0xE5 /* 'e' -> */,
-/* pos 01ac: 254 */    0xEE /* 'n' -> */,
-/* pos 01ad: 255 */    0xE7 /* 'g' -> */,
-/* pos 01ae: 256 */    0xF4 /* 't' -> */,
-/* pos 01af: 257 */    0xE8 /* 'h' -> */,
-/* pos 01b0: 258 */    0xBA /* ':' -> */,
-/* pos 01b1: 259 */    0x00, 0x1B                  /* - terminal marker 27 - */,
-/* pos 01b3: 260 */    0xF9 /* 'y' -> */,
-/* pos 01b4: 261 */    0xF0 /* 'p' -> */,
-/* pos 01b5: 262 */    0xE5 /* 'e' -> */,
-/* pos 01b6: 263 */    0xBA /* ':' -> */,
-/* pos 01b7: 264 */    0x00, 0x1C                  /* - terminal marker 28 - */,
-/* pos 01b9: 265 */    0xE1 /* 'a' -> */,
-/* pos 01ba: 266 */    0xF4 /* 't' -> */,
-/* pos 01bb: 267 */    0xE5 /* 'e' -> */,
-/* pos 01bc: 268 */    0xBA /* ':' -> */,
-/* pos 01bd: 269 */    0x00, 0x1D                  /* - terminal marker 29 - */,
-/* pos 01bf: 270 */    0x61 /* 'a' */, 0x07, 0x00  /* (to 0x01C6 state 271) */,
-                       0x65 /* 'e' */, 0x0A, 0x00  /* (to 0x01CC state 276) */,
+/* pos 014c: 135 */    0x00, 0x11                  /* - terminal marker 17 - */,
+/* pos 014e: 136 */    0xF3 /* 's' -> */,
+/* pos 014f: 137 */    0xAD /* '-' -> */,
+/* pos 0150: 138 */    0xE3 /* 'c' -> */,
+/* pos 0151: 139 */    0xEF /* 'o' -> */,
+/* pos 0152: 140 */    0xEE /* 'n' -> */,
+/* pos 0153: 141 */    0xF4 /* 't' -> */,
+/* pos 0154: 142 */    0xF2 /* 'r' -> */,
+/* pos 0155: 143 */    0xEF /* 'o' -> */,
+/* pos 0156: 144 */    0xEC /* 'l' -> */,
+/* pos 0157: 145 */    0xAD /* '-' -> */,
+/* pos 0158: 146 */    0x72 /* 'r' */, 0x07, 0x00  /* (to 0x015F state 147) */,
+                       0x61 /* 'a' */, 0x44, 0x01  /* (to 0x029F state 350) */,
                        0x08, /* fail */
-/* pos 01c6: 271 */    0xEE /* 'n' -> */,
-/* pos 01c7: 272 */    0xE7 /* 'g' -> */,
-/* pos 01c8: 273 */    0xE5 /* 'e' -> */,
-/* pos 01c9: 274 */    0xBA /* ':' -> */,
-/* pos 01ca: 275 */    0x00, 0x1E                  /* - terminal marker 30 - */,
-/* pos 01cc: 276 */    0xE6 /* 'f' -> */,
-/* pos 01cd: 277 */    0xE5 /* 'e' -> */,
-/* pos 01ce: 278 */    0xF2 /* 'r' -> */,
-/* pos 01cf: 279 */    0xE5 /* 'e' -> */,
-/* pos 01d0: 280 */    0xF2 /* 'r' -> */,
-/* pos 01d1: 281 */    0xBA /* ':' -> */,
-/* pos 01d2: 282 */    0x00, 0x1F                  /* - terminal marker 31 - */,
-/* pos 01d4: 283 */    0x00, 0x20                  /* - terminal marker 32 - */,
-/* pos 01d6: 284 */    0xE5 /* 'e' -> */,
-/* pos 01d7: 285 */    0xF2 /* 'r' -> */,
-/* pos 01d8: 286 */    0xF3 /* 's' -> */,
-/* pos 01d9: 287 */    0xE9 /* 'i' -> */,
-/* pos 01da: 288 */    0xEF /* 'o' -> */,
-/* pos 01db: 289 */    0xEE /* 'n' -> */,
-/* pos 01dc: 290 */    0xBA /* ':' -> */,
-/* pos 01dd: 291 */    0x00, 0x21                  /* - terminal marker 33 - */,
-/* pos 01df: 292 */    0xF2 /* 'r' -> */,
-/* pos 01e0: 293 */    0xE9 /* 'i' -> */,
-/* pos 01e1: 294 */    0xE7 /* 'g' -> */,
-/* pos 01e2: 295 */    0xE9 /* 'i' -> */,
-/* pos 01e3: 296 */    0xEE /* 'n' -> */,
-/* pos 01e4: 297 */    0xBA /* ':' -> */,
-/* pos 01e5: 298 */    0x00, 0x22                  /* - terminal marker 34 - */,
-/* total size 487 bytes */
+/* pos 015f: 147 */    0xE5 /* 'e' -> */,
+/* pos 0160: 148 */    0xF1 /* 'q' -> */,
+/* pos 0161: 149 */    0xF5 /* 'u' -> */,
+/* pos 0162: 150 */    0xE5 /* 'e' -> */,
+/* pos 0163: 151 */    0xF3 /* 's' -> */,
+/* pos 0164: 152 */    0xF4 /* 't' -> */,
+/* pos 0165: 153 */    0xAD /* '-' -> */,
+/* pos 0166: 154 */    0xE8 /* 'h' -> */,
+/* pos 0167: 155 */    0xE5 /* 'e' -> */,
+/* pos 0168: 156 */    0xE1 /* 'a' -> */,
+/* pos 0169: 157 */    0xE4 /* 'd' -> */,
+/* pos 016a: 158 */    0xE5 /* 'e' -> */,
+/* pos 016b: 159 */    0xF2 /* 'r' -> */,
+/* pos 016c: 160 */    0xF3 /* 's' -> */,
+/* pos 016d: 161 */    0xBA /* ':' -> */,
+/* pos 016e: 162 */    0x00, 0x12                  /* - terminal marker 18 - */,
+/* pos 0170: 163 */    0xE6 /* 'f' -> */,
+/* pos 0171: 164 */    0xAD /* '-' -> */,
+/* pos 0172: 165 */    0x6D /* 'm' */, 0x0D, 0x00  /* (to 0x017F state 166) */,
+                       0x6E /* 'n' */, 0x20, 0x00  /* (to 0x0195 state 181) */,
+                       0x72 /* 'r' */, 0x90, 0x01  /* (to 0x0308 state 431) */,
+                       0x75 /* 'u' */, 0x94, 0x01  /* (to 0x030F state 437) */,
+                       0x08, /* fail */
+/* pos 017f: 166 */    0x6F /* 'o' */, 0x07, 0x00  /* (to 0x0186 state 167) */,
+                       0x61 /* 'a' */, 0x80, 0x01  /* (to 0x0302 state 426) */,
+                       0x08, /* fail */
+/* pos 0186: 167 */    0xE4 /* 'd' -> */,
+/* pos 0187: 168 */    0xE9 /* 'i' -> */,
+/* pos 0188: 169 */    0xE6 /* 'f' -> */,
+/* pos 0189: 170 */    0xE9 /* 'i' -> */,
+/* pos 018a: 171 */    0xE5 /* 'e' -> */,
+/* pos 018b: 172 */    0xE4 /* 'd' -> */,
+/* pos 018c: 173 */    0xAD /* '-' -> */,
+/* pos 018d: 174 */    0xF3 /* 's' -> */,
+/* pos 018e: 175 */    0xE9 /* 'i' -> */,
+/* pos 018f: 176 */    0xEE /* 'n' -> */,
+/* pos 0190: 177 */    0xE3 /* 'c' -> */,
+/* pos 0191: 178 */    0xE5 /* 'e' -> */,
+/* pos 0192: 179 */    0xBA /* ':' -> */,
+/* pos 0193: 180 */    0x00, 0x13                  /* - terminal marker 19 - */,
+/* pos 0195: 181 */    0xEF /* 'o' -> */,
+/* pos 0196: 182 */    0xEE /* 'n' -> */,
+/* pos 0197: 183 */    0xE5 /* 'e' -> */,
+/* pos 0198: 184 */    0xAD /* '-' -> */,
+/* pos 0199: 185 */    0xED /* 'm' -> */,
+/* pos 019a: 186 */    0xE1 /* 'a' -> */,
+/* pos 019b: 187 */    0xF4 /* 't' -> */,
+/* pos 019c: 188 */    0xE3 /* 'c' -> */,
+/* pos 019d: 189 */    0xE8 /* 'h' -> */,
+/* pos 019e: 190 */    0xBA /* ':' -> */,
+/* pos 019f: 191 */    0x00, 0x14                  /* - terminal marker 20 - */,
+/* pos 01a1: 192 */    0x65 /* 'e' */, 0x0D, 0x00  /* (to 0x01AE state 193) */,
+                       0x6C /* 'l' */, 0x14, 0x00  /* (to 0x01B8 state 202) */,
+                       0x63 /* 'c' */, 0xE7, 0x00  /* (to 0x028E state 335) */,
+                       0x72 /* 'r' */, 0xED, 0x00  /* (to 0x0297 state 343) */,
+                       0x08, /* fail */
+/* pos 01ae: 193 */    0xEE /* 'n' -> */,
+/* pos 01af: 194 */    0xE3 /* 'c' -> */,
+/* pos 01b0: 195 */    0xEF /* 'o' -> */,
+/* pos 01b1: 196 */    0xE4 /* 'd' -> */,
+/* pos 01b2: 197 */    0xE9 /* 'i' -> */,
+/* pos 01b3: 198 */    0xEE /* 'n' -> */,
+/* pos 01b4: 199 */    0xE7 /* 'g' -> */,
+/* pos 01b5: 200 */    0xBA /* ':' -> */,
+/* pos 01b6: 201 */    0x00, 0x15                  /* - terminal marker 21 - */,
+/* pos 01b8: 202 */    0xE1 /* 'a' -> */,
+/* pos 01b9: 203 */    0xEE /* 'n' -> */,
+/* pos 01ba: 204 */    0xE7 /* 'g' -> */,
+/* pos 01bb: 205 */    0xF5 /* 'u' -> */,
+/* pos 01bc: 206 */    0xE1 /* 'a' -> */,
+/* pos 01bd: 207 */    0xE7 /* 'g' -> */,
+/* pos 01be: 208 */    0xE5 /* 'e' -> */,
+/* pos 01bf: 209 */    0xBA /* ':' -> */,
+/* pos 01c0: 210 */    0x00, 0x16                  /* - terminal marker 22 - */,
+/* pos 01c2: 211 */    0x61 /* 'a' */, 0x07, 0x00  /* (to 0x01C9 state 212) */,
+                       0x6F /* 'o' */, 0x90, 0x01  /* (to 0x0355 state 493) */,
+                       0x08, /* fail */
+/* pos 01c9: 212 */    0xE7 /* 'g' -> */,
+/* pos 01ca: 213 */    0xED /* 'm' -> */,
+/* pos 01cb: 214 */    0xE1 /* 'a' -> */,
+/* pos 01cc: 215 */    0xBA /* ':' -> */,
+/* pos 01cd: 216 */    0x00, 0x17                  /* - terminal marker 23 - */,
+/* pos 01cf: 217 */    0xE3 /* 'c' -> */,
+/* pos 01d0: 218 */    0xE8 /* 'h' -> */,
+/* pos 01d1: 219 */    0xE5 /* 'e' -> */,
+/* pos 01d2: 220 */    0xAD /* '-' -> */,
+/* pos 01d3: 221 */    0xE3 /* 'c' -> */,
+/* pos 01d4: 222 */    0xEF /* 'o' -> */,
+/* pos 01d5: 223 */    0xEE /* 'n' -> */,
+/* pos 01d6: 224 */    0xF4 /* 't' -> */,
+/* pos 01d7: 225 */    0xF2 /* 'r' -> */,
+/* pos 01d8: 226 */    0xEF /* 'o' -> */,
+/* pos 01d9: 227 */    0xEC /* 'l' -> */,
+/* pos 01da: 228 */    0xBA /* ':' -> */,
+/* pos 01db: 229 */    0x00, 0x18                  /* - terminal marker 24 - */,
+/* pos 01dd: 230 */    0xF4 /* 't' -> */,
+/* pos 01de: 231 */    0xE8 /* 'h' -> */,
+/* pos 01df: 232 */    0xEF /* 'o' -> */,
+/* pos 01e0: 233 */    0xF2 /* 'r' -> */,
+/* pos 01e1: 234 */    0xE9 /* 'i' -> */,
+/* pos 01e2: 235 */    0xFA /* 'z' -> */,
+/* pos 01e3: 236 */    0xE1 /* 'a' -> */,
+/* pos 01e4: 237 */    0xF4 /* 't' -> */,
+/* pos 01e5: 238 */    0xE9 /* 'i' -> */,
+/* pos 01e6: 239 */    0xEF /* 'o' -> */,
+/* pos 01e7: 240 */    0xEE /* 'n' -> */,
+/* pos 01e8: 241 */    0xBA /* ':' -> */,
+/* pos 01e9: 242 */    0x00, 0x19                  /* - terminal marker 25 - */,
+/* pos 01eb: 243 */    0xEB /* 'k' -> */,
+/* pos 01ec: 244 */    0xE9 /* 'i' -> */,
+/* pos 01ed: 245 */    0xE5 /* 'e' -> */,
+/* pos 01ee: 246 */    0xBA /* ':' -> */,
+/* pos 01ef: 247 */    0x00, 0x1A                  /* - terminal marker 26 - */,
+/* pos 01f1: 248 */    0xE5 /* 'e' -> */,
+/* pos 01f2: 249 */    0xEE /* 'n' -> */,
+/* pos 01f3: 250 */    0xF4 /* 't' -> */,
+/* pos 01f4: 251 */    0xAD /* '-' -> */,
+/* pos 01f5: 252 */    0x6C /* 'l' */, 0x0D, 0x00  /* (to 0x0202 state 253) */,
+                       0x74 /* 't' */, 0x1B, 0x00  /* (to 0x0213 state 260) */,
+                       0x64 /* 'd' */, 0xBC, 0x00  /* (to 0x02B7 state 371) */,
+                       0x72 /* 'r' */, 0xD8, 0x00  /* (to 0x02D6 state 399) */,
+                       0x08, /* fail */
+/* pos 0202: 253 */    0x65 /* 'e' */, 0x0A, 0x00  /* (to 0x020C state 254) */,
+                       0x61 /* 'a' */, 0xBF, 0x00  /* (to 0x02C4 state 383) */,
+                       0x6F /* 'o' */, 0xC5, 0x00  /* (to 0x02CD state 391) */,
+                       0x08, /* fail */
+/* pos 020c: 254 */    0xEE /* 'n' -> */,
+/* pos 020d: 255 */    0xE7 /* 'g' -> */,
+/* pos 020e: 256 */    0xF4 /* 't' -> */,
+/* pos 020f: 257 */    0xE8 /* 'h' -> */,
+/* pos 0210: 258 */    0xBA /* ':' -> */,
+/* pos 0211: 259 */    0x00, 0x1B                  /* - terminal marker 27 - */,
+/* pos 0213: 260 */    0xF9 /* 'y' -> */,
+/* pos 0214: 261 */    0xF0 /* 'p' -> */,
+/* pos 0215: 262 */    0xE5 /* 'e' -> */,
+/* pos 0216: 263 */    0xBA /* ':' -> */,
+/* pos 0217: 264 */    0x00, 0x1C                  /* - terminal marker 28 - */,
+/* pos 0219: 265 */    0xE1 /* 'a' -> */,
+/* pos 021a: 266 */    0xF4 /* 't' -> */,
+/* pos 021b: 267 */    0xE5 /* 'e' -> */,
+/* pos 021c: 268 */    0xBA /* ':' -> */,
+/* pos 021d: 269 */    0x00, 0x1D                  /* - terminal marker 29 - */,
+/* pos 021f: 270 */    0x61 /* 'a' */, 0x07, 0x00  /* (to 0x0226 state 271) */,
+                       0x65 /* 'e' */, 0x0A, 0x00  /* (to 0x022C state 276) */,
+                       0x08, /* fail */
+/* pos 0226: 271 */    0xEE /* 'n' -> */,
+/* pos 0227: 272 */    0xE7 /* 'g' -> */,
+/* pos 0228: 273 */    0xE5 /* 'e' -> */,
+/* pos 0229: 274 */    0xBA /* ':' -> */,
+/* pos 022a: 275 */    0x00, 0x1E                  /* - terminal marker 30 - */,
+/* pos 022c: 276 */    0x66 /* 'f' */, 0x07, 0x00  /* (to 0x0233 state 277) */,
+                       0x74 /* 't' */, 0x4F, 0x01  /* (to 0x037E state 525) */,
+                       0x08, /* fail */
+/* pos 0233: 277 */    0x65 /* 'e' */, 0x07, 0x00  /* (to 0x023A state 278) */,
+                       0x72 /* 'r' */, 0x42, 0x01  /* (to 0x0378 state 520) */,
+                       0x08, /* fail */
+/* pos 023a: 278 */    0xF2 /* 'r' -> */,
+/* pos 023b: 279 */    0xE5 /* 'e' -> */,
+/* pos 023c: 280 */    0xF2 /* 'r' -> */,
+/* pos 023d: 281 */    0xBA /* ':' -> */,
+/* pos 023e: 282 */    0x00, 0x1F                  /* - terminal marker 31 - */,
+/* pos 0240: 283 */    0x00, 0x20                  /* - terminal marker 32 - */,
+/* pos 0242: 284 */    0xE5 /* 'e' -> */,
+/* pos 0243: 285 */    0xF2 /* 'r' -> */,
+/* pos 0244: 286 */    0xF3 /* 's' -> */,
+/* pos 0245: 287 */    0xE9 /* 'i' -> */,
+/* pos 0246: 288 */    0xEF /* 'o' -> */,
+/* pos 0247: 289 */    0xEE /* 'n' -> */,
+/* pos 0248: 290 */    0xBA /* ':' -> */,
+/* pos 0249: 291 */    0x00, 0x21                  /* - terminal marker 33 - */,
+/* pos 024b: 292 */    0xF2 /* 'r' -> */,
+/* pos 024c: 293 */    0xE9 /* 'i' -> */,
+/* pos 024d: 294 */    0xE7 /* 'g' -> */,
+/* pos 024e: 295 */    0xE9 /* 'i' -> */,
+/* pos 024f: 296 */    0xEE /* 'n' -> */,
+/* pos 0250: 297 */    0xBA /* ':' -> */,
+/* pos 0251: 298 */    0x00, 0x22                  /* - terminal marker 34 - */,
+/* pos 0253: 299 */    0x61 /* 'a' */, 0x0D, 0x00  /* (to 0x0260 state 300) */,
+                       0x6D /* 'm' */, 0x15, 0x00  /* (to 0x026B state 310) */,
+                       0x70 /* 'p' */, 0x1A, 0x00  /* (to 0x0273 state 317) */,
+                       0x73 /* 's' */, 0x1D, 0x00  /* (to 0x0279 state 322) */,
+                       0x08, /* fail */
+/* pos 0260: 300 */    0xF5 /* 'u' -> */,
+/* pos 0261: 301 */    0xF4 /* 't' -> */,
+/* pos 0262: 302 */    0xE8 /* 'h' -> */,
+/* pos 0263: 303 */    0xEF /* 'o' -> */,
+/* pos 0264: 304 */    0xF2 /* 'r' -> */,
+/* pos 0265: 305 */    0xE9 /* 'i' -> */,
+/* pos 0266: 306 */    0xF4 /* 't' -> */,
+/* pos 0267: 307 */    0xF9 /* 'y' -> */,
+/* pos 0268: 308 */    0xBA /* ':' -> */,
+/* pos 0269: 309 */    0x00, 0x23                  /* - terminal marker 35 - */,
+/* pos 026b: 310 */    0xE5 /* 'e' -> */,
+/* pos 026c: 311 */    0xF4 /* 't' -> */,
+/* pos 026d: 312 */    0xE8 /* 'h' -> */,
+/* pos 026e: 313 */    0xEF /* 'o' -> */,
+/* pos 026f: 314 */    0xE4 /* 'd' -> */,
+/* pos 0270: 315 */    0xBA /* ':' -> */,
+/* pos 0271: 316 */    0x00, 0x24                  /* - terminal marker 36 - */,
+/* pos 0273: 317 */    0xE1 /* 'a' -> */,
+/* pos 0274: 318 */    0xF4 /* 't' -> */,
+/* pos 0275: 319 */    0xE8 /* 'h' -> */,
+/* pos 0276: 320 */    0xBA /* ':' -> */,
+/* pos 0277: 321 */    0x00, 0x25                  /* - terminal marker 37 - */,
+/* pos 0279: 322 */    0x63 /* 'c' */, 0x07, 0x00  /* (to 0x0280 state 323) */,
+                       0x74 /* 't' */, 0x0B, 0x00  /* (to 0x0287 state 329) */,
+                       0x08, /* fail */
+/* pos 0280: 323 */    0xE8 /* 'h' -> */,
+/* pos 0281: 324 */    0xE5 /* 'e' -> */,
+/* pos 0282: 325 */    0xED /* 'm' -> */,
+/* pos 0283: 326 */    0xE5 /* 'e' -> */,
+/* pos 0284: 327 */    0xBA /* ':' -> */,
+/* pos 0285: 328 */    0x00, 0x26                  /* - terminal marker 38 - */,
+/* pos 0287: 329 */    0xE1 /* 'a' -> */,
+/* pos 0288: 330 */    0xF4 /* 't' -> */,
+/* pos 0289: 331 */    0xF5 /* 'u' -> */,
+/* pos 028a: 332 */    0xF3 /* 's' -> */,
+/* pos 028b: 333 */    0xBA /* ':' -> */,
+/* pos 028c: 334 */    0x00, 0x27                  /* - terminal marker 39 - */,
+/* pos 028e: 335 */    0xE8 /* 'h' -> */,
+/* pos 028f: 336 */    0xE1 /* 'a' -> */,
+/* pos 0290: 337 */    0xF2 /* 'r' -> */,
+/* pos 0291: 338 */    0xF3 /* 's' -> */,
+/* pos 0292: 339 */    0xE5 /* 'e' -> */,
+/* pos 0293: 340 */    0xF4 /* 't' -> */,
+/* pos 0294: 341 */    0xBA /* ':' -> */,
+/* pos 0295: 342 */    0x00, 0x28                  /* - terminal marker 40 - */,
+/* pos 0297: 343 */    0xE1 /* 'a' -> */,
+/* pos 0298: 344 */    0xEE /* 'n' -> */,
+/* pos 0299: 345 */    0xE7 /* 'g' -> */,
+/* pos 029a: 346 */    0xE5 /* 'e' -> */,
+/* pos 029b: 347 */    0xF3 /* 's' -> */,
+/* pos 029c: 348 */    0xBA /* ':' -> */,
+/* pos 029d: 349 */    0x00, 0x29                  /* - terminal marker 41 - */,
+/* pos 029f: 350 */    0xEC /* 'l' -> */,
+/* pos 02a0: 351 */    0xEC /* 'l' -> */,
+/* pos 02a1: 352 */    0xEF /* 'o' -> */,
+/* pos 02a2: 353 */    0xF7 /* 'w' -> */,
+/* pos 02a3: 354 */    0xAD /* '-' -> */,
+/* pos 02a4: 355 */    0xEF /* 'o' -> */,
+/* pos 02a5: 356 */    0xF2 /* 'r' -> */,
+/* pos 02a6: 357 */    0xE9 /* 'i' -> */,
+/* pos 02a7: 358 */    0xE7 /* 'g' -> */,
+/* pos 02a8: 359 */    0xE9 /* 'i' -> */,
+/* pos 02a9: 360 */    0xEE /* 'n' -> */,
+/* pos 02aa: 361 */    0xBA /* ':' -> */,
+/* pos 02ab: 362 */    0x00, 0x2A                  /* - terminal marker 42 - */,
+/* pos 02ad: 363 */    0xE5 /* 'e' -> */,
+/* pos 02ae: 364 */    0xBA /* ':' -> */,
+/* pos 02af: 365 */    0x00, 0x2B                  /* - terminal marker 43 - */,
+/* pos 02b1: 366 */    0xEC /* 'l' -> */,
+/* pos 02b2: 367 */    0xEF /* 'o' -> */,
+/* pos 02b3: 368 */    0xF7 /* 'w' -> */,
+/* pos 02b4: 369 */    0xBA /* ':' -> */,
+/* pos 02b5: 370 */    0x00, 0x2C                  /* - terminal marker 44 - */,
+/* pos 02b7: 371 */    0xE9 /* 'i' -> */,
+/* pos 02b8: 372 */    0xF3 /* 's' -> */,
+/* pos 02b9: 373 */    0xF0 /* 'p' -> */,
+/* pos 02ba: 374 */    0xEF /* 'o' -> */,
+/* pos 02bb: 375 */    0xF3 /* 's' -> */,
+/* pos 02bc: 376 */    0xE9 /* 'i' -> */,
+/* pos 02bd: 377 */    0xF4 /* 't' -> */,
+/* pos 02be: 378 */    0xE9 /* 'i' -> */,
+/* pos 02bf: 379 */    0xEF /* 'o' -> */,
+/* pos 02c0: 380 */    0xEE /* 'n' -> */,
+/* pos 02c1: 381 */    0xBA /* ':' -> */,
+/* pos 02c2: 382 */    0x00, 0x2D                  /* - terminal marker 45 - */,
+/* pos 02c4: 383 */    0xEE /* 'n' -> */,
+/* pos 02c5: 384 */    0xE7 /* 'g' -> */,
+/* pos 02c6: 385 */    0xF5 /* 'u' -> */,
+/* pos 02c7: 386 */    0xE1 /* 'a' -> */,
+/* pos 02c8: 387 */    0xE7 /* 'g' -> */,
+/* pos 02c9: 388 */    0xE5 /* 'e' -> */,
+/* pos 02ca: 389 */    0xBA /* ':' -> */,
+/* pos 02cb: 390 */    0x00, 0x2E                  /* - terminal marker 46 - */,
+/* pos 02cd: 391 */    0xE3 /* 'c' -> */,
+/* pos 02ce: 392 */    0xE1 /* 'a' -> */,
+/* pos 02cf: 393 */    0xF4 /* 't' -> */,
+/* pos 02d0: 394 */    0xE9 /* 'i' -> */,
+/* pos 02d1: 395 */    0xEF /* 'o' -> */,
+/* pos 02d2: 396 */    0xEE /* 'n' -> */,
+/* pos 02d3: 397 */    0xBA /* ':' -> */,
+/* pos 02d4: 398 */    0x00, 0x2F                  /* - terminal marker 47 - */,
+/* pos 02d6: 399 */    0xE1 /* 'a' -> */,
+/* pos 02d7: 400 */    0xEE /* 'n' -> */,
+/* pos 02d8: 401 */    0xE7 /* 'g' -> */,
+/* pos 02d9: 402 */    0xE5 /* 'e' -> */,
+/* pos 02da: 403 */    0xBA /* ':' -> */,
+/* pos 02db: 404 */    0x00, 0x30                  /* - terminal marker 48 - */,
+/* pos 02dd: 405 */    0x74 /* 't' */, 0x07, 0x00  /* (to 0x02E4 state 406) */,
+                       0x78 /* 'x' */, 0x09, 0x00  /* (to 0x02E9 state 410) */,
+                       0x08, /* fail */
+/* pos 02e4: 406 */    0xE1 /* 'a' -> */,
+/* pos 02e5: 407 */    0xE7 /* 'g' -> */,
+/* pos 02e6: 408 */    0xBA /* ':' -> */,
+/* pos 02e7: 409 */    0x00, 0x31                  /* - terminal marker 49 - */,
+/* pos 02e9: 410 */    0xF0 /* 'p' -> */,
+/* pos 02ea: 411 */    0x65 /* 'e' */, 0x07, 0x00  /* (to 0x02F1 state 412) */,
+                       0x69 /* 'i' */, 0x09, 0x00  /* (to 0x02F6 state 416) */,
+                       0x08, /* fail */
+/* pos 02f1: 412 */    0xE3 /* 'c' -> */,
+/* pos 02f2: 413 */    0xF4 /* 't' -> */,
+/* pos 02f3: 414 */    0xBA /* ':' -> */,
+/* pos 02f4: 415 */    0x00, 0x32                  /* - terminal marker 50 - */,
+/* pos 02f6: 416 */    0xF2 /* 'r' -> */,
+/* pos 02f7: 417 */    0xE5 /* 'e' -> */,
+/* pos 02f8: 418 */    0xF3 /* 's' -> */,
+/* pos 02f9: 419 */    0xBA /* ':' -> */,
+/* pos 02fa: 420 */    0x00, 0x33                  /* - terminal marker 51 - */,
+/* pos 02fc: 421 */    0xF2 /* 'r' -> */,
+/* pos 02fd: 422 */    0xEF /* 'o' -> */,
+/* pos 02fe: 423 */    0xED /* 'm' -> */,
+/* pos 02ff: 424 */    0xBA /* ':' -> */,
+/* pos 0300: 425 */    0x00, 0x34                  /* - terminal marker 52 - */,
+/* pos 0302: 426 */    0xF4 /* 't' -> */,
+/* pos 0303: 427 */    0xE3 /* 'c' -> */,
+/* pos 0304: 428 */    0xE8 /* 'h' -> */,
+/* pos 0305: 429 */    0xBA /* ':' -> */,
+/* pos 0306: 430 */    0x00, 0x35                  /* - terminal marker 53 - */,
+/* pos 0308: 431 */    0xE1 /* 'a' -> */,
+/* pos 0309: 432 */    0xEE /* 'n' -> */,
+/* pos 030a: 433 */    0xE7 /* 'g' -> */,
+/* pos 030b: 434 */    0xE5 /* 'e' -> */,
+/* pos 030c: 435 */    0xBA /* ':' -> */,
+/* pos 030d: 436 */    0x00, 0x36                  /* - terminal marker 54 - */,
+/* pos 030f: 437 */    0xEE /* 'n' -> */,
+/* pos 0310: 438 */    0xED /* 'm' -> */,
+/* pos 0311: 439 */    0xEF /* 'o' -> */,
+/* pos 0312: 440 */    0xE4 /* 'd' -> */,
+/* pos 0313: 441 */    0xE9 /* 'i' -> */,
+/* pos 0314: 442 */    0xE6 /* 'f' -> */,
+/* pos 0315: 443 */    0xE9 /* 'i' -> */,
+/* pos 0316: 444 */    0xE5 /* 'e' -> */,
+/* pos 0317: 445 */    0xE4 /* 'd' -> */,
+/* pos 0318: 446 */    0xAD /* '-' -> */,
+/* pos 0319: 447 */    0xF3 /* 's' -> */,
+/* pos 031a: 448 */    0xE9 /* 'i' -> */,
+/* pos 031b: 449 */    0xEE /* 'n' -> */,
+/* pos 031c: 450 */    0xE3 /* 'c' -> */,
+/* pos 031d: 451 */    0xE5 /* 'e' -> */,
+/* pos 031e: 452 */    0xBA /* ':' -> */,
+/* pos 031f: 453 */    0x00, 0x37                  /* - terminal marker 55 - */,
+/* pos 0321: 454 */    0x61 /* 'a' */, 0x0A, 0x00  /* (to 0x032B state 455) */,
+                       0x69 /* 'i' */, 0x15, 0x00  /* (to 0x0339 state 468) */,
+                       0x6F /* 'o' */, 0x17, 0x00  /* (to 0x033E state 472) */,
+                       0x08, /* fail */
+/* pos 032b: 455 */    0xF3 /* 's' -> */,
+/* pos 032c: 456 */    0xF4 /* 't' -> */,
+/* pos 032d: 457 */    0xAD /* '-' -> */,
+/* pos 032e: 458 */    0xED /* 'm' -> */,
+/* pos 032f: 459 */    0xEF /* 'o' -> */,
+/* pos 0330: 460 */    0xE4 /* 'd' -> */,
+/* pos 0331: 461 */    0xE9 /* 'i' -> */,
+/* pos 0332: 462 */    0xE6 /* 'f' -> */,
+/* pos 0333: 463 */    0xE9 /* 'i' -> */,
+/* pos 0334: 464 */    0xE5 /* 'e' -> */,
+/* pos 0335: 465 */    0xE4 /* 'd' -> */,
+/* pos 0336: 466 */    0xBA /* ':' -> */,
+/* pos 0337: 467 */    0x00, 0x38                  /* - terminal marker 56 - */,
+/* pos 0339: 468 */    0xEE /* 'n' -> */,
+/* pos 033a: 469 */    0xEB /* 'k' -> */,
+/* pos 033b: 470 */    0xBA /* ':' -> */,
+/* pos 033c: 471 */    0x00, 0x39                  /* - terminal marker 57 - */,
+/* pos 033e: 472 */    0xE3 /* 'c' -> */,
+/* pos 033f: 473 */    0xE1 /* 'a' -> */,
+/* pos 0340: 474 */    0xF4 /* 't' -> */,
+/* pos 0341: 475 */    0xE9 /* 'i' -> */,
+/* pos 0342: 476 */    0xEF /* 'o' -> */,
+/* pos 0343: 477 */    0xEE /* 'n' -> */,
+/* pos 0344: 478 */    0xBA /* ':' -> */,
+/* pos 0345: 479 */    0x00, 0x3A                  /* - terminal marker 58 - */,
+/* pos 0347: 480 */    0xE1 /* 'a' -> */,
+/* pos 0348: 481 */    0xF8 /* 'x' -> */,
+/* pos 0349: 482 */    0xAD /* '-' -> */,
+/* pos 034a: 483 */    0xE6 /* 'f' -> */,
+/* pos 034b: 484 */    0xEF /* 'o' -> */,
+/* pos 034c: 485 */    0xF2 /* 'r' -> */,
+/* pos 034d: 486 */    0xF7 /* 'w' -> */,
+/* pos 034e: 487 */    0xE1 /* 'a' -> */,
+/* pos 034f: 488 */    0xF2 /* 'r' -> */,
+/* pos 0350: 489 */    0xE4 /* 'd' -> */,
+/* pos 0351: 490 */    0xF3 /* 's' -> */,
+/* pos 0352: 491 */    0xBA /* ':' -> */,
+/* pos 0353: 492 */    0x00, 0x3B                  /* - terminal marker 59 - */,
+/* pos 0355: 493 */    0xF8 /* 'x' -> */,
+/* pos 0356: 494 */    0xF9 /* 'y' -> */,
+/* pos 0357: 495 */    0xAD /* '-' -> */,
+/* pos 0358: 496 */    0xE1 /* 'a' -> */,
+/* pos 0359: 497 */    0xF5 /* 'u' -> */,
+/* pos 035a: 498 */    0xF4 /* 't' -> */,
+/* pos 035b: 499 */    0xE8 /* 'h' -> */,
+/* pos 035c: 500 */    0x65 /* 'e' */, 0x07, 0x00  /* (to 0x0363 state 501) */,
+                       0x6F /* 'o' */, 0x0E, 0x00  /* (to 0x036D state 510) */,
+                       0x08, /* fail */
+/* pos 0363: 501 */    0xEE /* 'n' -> */,
+/* pos 0364: 502 */    0xF4 /* 't' -> */,
+/* pos 0365: 503 */    0xE9 /* 'i' -> */,
+/* pos 0366: 504 */    0xE3 /* 'c' -> */,
+/* pos 0367: 505 */    0xE1 /* 'a' -> */,
+/* pos 0368: 506 */    0xF4 /* 't' -> */,
+/* pos 0369: 507 */    0xE5 /* 'e' -> */,
+/* pos 036a: 508 */    0xBA /* ':' -> */,
+/* pos 036b: 509 */    0x00, 0x3C                  /* - terminal marker 60 - */,
+/* pos 036d: 510 */    0xF2 /* 'r' -> */,
+/* pos 036e: 511 */    0xE9 /* 'i' -> */,
+/* pos 036f: 512 */    0xFA /* 'z' -> */,
+/* pos 0370: 513 */    0xE1 /* 'a' -> */,
+/* pos 0371: 514 */    0xF4 /* 't' -> */,
+/* pos 0372: 515 */    0xE9 /* 'i' -> */,
+/* pos 0373: 516 */    0xEF /* 'o' -> */,
+/* pos 0374: 517 */    0xEE /* 'n' -> */,
+/* pos 0375: 518 */    0xBA /* ':' -> */,
+/* pos 0376: 519 */    0x00, 0x3D                  /* - terminal marker 61 - */,
+/* pos 0378: 520 */    0xE5 /* 'e' -> */,
+/* pos 0379: 521 */    0xF3 /* 's' -> */,
+/* pos 037a: 522 */    0xE8 /* 'h' -> */,
+/* pos 037b: 523 */    0xBA /* ':' -> */,
+/* pos 037c: 524 */    0x00, 0x3E                  /* - terminal marker 62 - */,
+/* pos 037e: 525 */    0xF2 /* 'r' -> */,
+/* pos 037f: 526 */    0xF9 /* 'y' -> */,
+/* pos 0380: 527 */    0xAD /* '-' -> */,
+/* pos 0381: 528 */    0xE1 /* 'a' -> */,
+/* pos 0382: 529 */    0xE6 /* 'f' -> */,
+/* pos 0383: 530 */    0xF4 /* 't' -> */,
+/* pos 0384: 531 */    0xE5 /* 'e' -> */,
+/* pos 0385: 532 */    0xF2 /* 'r' -> */,
+/* pos 0386: 533 */    0xBA /* ':' -> */,
+/* pos 0387: 534 */    0x00, 0x3F                  /* - terminal marker 63 - */,
+/* pos 0389: 535 */    0xF6 /* 'v' -> */,
+/* pos 038a: 536 */    0xE5 /* 'e' -> */,
+/* pos 038b: 537 */    0xF2 /* 'r' -> */,
+/* pos 038c: 538 */    0xBA /* ':' -> */,
+/* pos 038d: 539 */    0x00, 0x40                  /* - terminal marker 64 - */,
+/* pos 038f: 540 */    0xAD /* '-' -> */,
+/* pos 0390: 541 */    0xE3 /* 'c' -> */,
+/* pos 0391: 542 */    0xEF /* 'o' -> */,
+/* pos 0392: 543 */    0xEF /* 'o' -> */,
+/* pos 0393: 544 */    0xEB /* 'k' -> */,
+/* pos 0394: 545 */    0xE9 /* 'i' -> */,
+/* pos 0395: 546 */    0xE5 /* 'e' -> */,
+/* pos 0396: 547 */    0xBA /* ':' -> */,
+/* pos 0397: 548 */    0x00, 0x41                  /* - terminal marker 65 - */,
+/* pos 0399: 549 */    0xF2 /* 'r' -> */,
+/* pos 039a: 550 */    0xE9 /* 'i' -> */,
+/* pos 039b: 551 */    0xE3 /* 'c' -> */,
+/* pos 039c: 552 */    0xF4 /* 't' -> */,
+/* pos 039d: 553 */    0xAD /* '-' -> */,
+/* pos 039e: 554 */    0xF4 /* 't' -> */,
+/* pos 039f: 555 */    0xF2 /* 'r' -> */,
+/* pos 03a0: 556 */    0xE1 /* 'a' -> */,
+/* pos 03a1: 557 */    0xEE /* 'n' -> */,
+/* pos 03a2: 558 */    0xF3 /* 's' -> */,
+/* pos 03a3: 559 */    0xF0 /* 'p' -> */,
+/* pos 03a4: 560 */    0xEF /* 'o' -> */,
+/* pos 03a5: 561 */    0xF2 /* 'r' -> */,
+/* pos 03a6: 562 */    0xF4 /* 't' -> */,
+/* pos 03a7: 563 */    0xAD /* '-' -> */,
+/* pos 03a8: 564 */    0xF3 /* 's' -> */,
+/* pos 03a9: 565 */    0xE5 /* 'e' -> */,
+/* pos 03aa: 566 */    0xE3 /* 'c' -> */,
+/* pos 03ab: 567 */    0xF5 /* 'u' -> */,
+/* pos 03ac: 568 */    0xF2 /* 'r' -> */,
+/* pos 03ad: 569 */    0xE9 /* 'i' -> */,
+/* pos 03ae: 570 */    0xF4 /* 't' -> */,
+/* pos 03af: 571 */    0xF9 /* 'y' -> */,
+/* pos 03b0: 572 */    0xBA /* ':' -> */,
+/* pos 03b1: 573 */    0x00, 0x42                  /* - terminal marker 66 - */,
+/* pos 03b3: 574 */    0xF2 /* 'r' -> */,
+/* pos 03b4: 575 */    0xE1 /* 'a' -> */,
+/* pos 03b5: 576 */    0xEE /* 'n' -> */,
+/* pos 03b6: 577 */    0xF3 /* 's' -> */,
+/* pos 03b7: 578 */    0xE6 /* 'f' -> */,
+/* pos 03b8: 579 */    0xE5 /* 'e' -> */,
+/* pos 03b9: 580 */    0xF2 /* 'r' -> */,
+/* pos 03ba: 581 */    0xAD /* '-' -> */,
+/* pos 03bb: 582 */    0xE5 /* 'e' -> */,
+/* pos 03bc: 583 */    0xEE /* 'n' -> */,
+/* pos 03bd: 584 */    0xE3 /* 'c' -> */,
+/* pos 03be: 585 */    0xEF /* 'o' -> */,
+/* pos 03bf: 586 */    0xE4 /* 'd' -> */,
+/* pos 03c0: 587 */    0xE9 /* 'i' -> */,
+/* pos 03c1: 588 */    0xEE /* 'n' -> */,
+/* pos 03c2: 589 */    0xE7 /* 'g' -> */,
+/* pos 03c3: 590 */    0xBA /* ':' -> */,
+/* pos 03c4: 591 */    0x00, 0x43                  /* - terminal marker 67 - */,
+/* pos 03c6: 592 */    0xE5 /* 'e' -> */,
+/* pos 03c7: 593 */    0xF2 /* 'r' -> */,
+/* pos 03c8: 594 */    0xAD /* '-' -> */,
+/* pos 03c9: 595 */    0xE1 /* 'a' -> */,
+/* pos 03ca: 596 */    0xE7 /* 'g' -> */,
+/* pos 03cb: 597 */    0xE5 /* 'e' -> */,
+/* pos 03cc: 598 */    0xEE /* 'n' -> */,
+/* pos 03cd: 599 */    0xF4 /* 't' -> */,
+/* pos 03ce: 600 */    0xBA /* ':' -> */,
+/* pos 03cf: 601 */    0x00, 0x44                  /* - terminal marker 68 - */,
+/* pos 03d1: 602 */    0x61 /* 'a' */, 0x07, 0x00  /* (to 0x03D8 state 603) */,
+                       0x69 /* 'i' */, 0x09, 0x00  /* (to 0x03DD state 607) */,
+                       0x08, /* fail */
+/* pos 03d8: 603 */    0xF2 /* 'r' -> */,
+/* pos 03d9: 604 */    0xF9 /* 'y' -> */,
+/* pos 03da: 605 */    0xBA /* ':' -> */,
+/* pos 03db: 606 */    0x00, 0x45                  /* - terminal marker 69 - */,
+/* pos 03dd: 607 */    0xE1 /* 'a' -> */,
+/* pos 03de: 608 */    0xBA /* ':' -> */,
+/* pos 03df: 609 */    0x00, 0x46                  /* - terminal marker 70 - */,
+/* pos 03e1: 610 */    0xF7 /* 'w' -> */,
+/* pos 03e2: 611 */    0xF7 /* 'w' -> */,
+/* pos 03e3: 612 */    0xAD /* '-' -> */,
+/* pos 03e4: 613 */    0xE1 /* 'a' -> */,
+/* pos 03e5: 614 */    0xF5 /* 'u' -> */,
+/* pos 03e6: 615 */    0xF4 /* 't' -> */,
+/* pos 03e7: 616 */    0xE8 /* 'h' -> */,
+/* pos 03e8: 617 */    0xE5 /* 'e' -> */,
+/* pos 03e9: 618 */    0xEE /* 'n' -> */,
+/* pos 03ea: 619 */    0xF4 /* 't' -> */,
+/* pos 03eb: 620 */    0xE9 /* 'i' -> */,
+/* pos 03ec: 621 */    0xE3 /* 'c' -> */,
+/* pos 03ed: 622 */    0xE1 /* 'a' -> */,
+/* pos 03ee: 623 */    0xF4 /* 't' -> */,
+/* pos 03ef: 624 */    0xE5 /* 'e' -> */,
+/* pos 03f0: 625 */    0xBA /* ':' -> */,
+/* pos 03f1: 626 */    0x00, 0x47                  /* - terminal marker 71 - */,
+/* total size 1011 bytes */
diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h
index 777b315..84c1e95 100644
--- a/lib/libwebsockets.h
+++ b/lib/libwebsockets.h
@@ -327,10 +327,48 @@
 	WSI_TOKEN_VERSION,
 	WSI_TOKEN_SWORIGIN,
 
+	WSI_TOKEN_HTTP_COLON_AUTHORITY,
+	WSI_TOKEN_HTTP_COLON_METHOD,
+	WSI_TOKEN_HTTP_COLON_PATH,
+	WSI_TOKEN_HTTP_COLON_SCHEME,
+	WSI_TOKEN_HTTP_COLON_STATUS,
+	
+	WSI_TOKEN_HTTP_ACCEPT_CHARSET,
+	WSI_TOKEN_HTTP_ACCEPT_RANGES,
+	WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN,
+	WSI_TOKEN_HTTP_AGE,
+	WSI_TOKEN_HTTP_ALLOW,
+	WSI_TOKEN_HTTP_CONTENT_DISPOSITION,
+	WSI_TOKEN_HTTP_CONTENT_ENCODING,
+	WSI_TOKEN_HTTP_CONTENT_LANGUAGE,
+	WSI_TOKEN_HTTP_CONTENT_LOCATION,
+	WSI_TOKEN_HTTP_CONTENT_RANGE,
+	WSI_TOKEN_HTTP_ETAG,
+	WSI_TOKEN_HTTP_EXPECT,
+	WSI_TOKEN_HTTP_EXPIRES,
+	WSI_TOKEN_HTTP_FROM,
+	WSI_TOKEN_HTTP_IF_MATCH,
+	WSI_TOKEN_HTTP_IF_RANGE,
+	WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE,
+	WSI_TOKEN_HTTP_LAST_MODIFIED,
+	WSI_TOKEN_HTTP_LINK,
+	WSI_TOKEN_HTTP_LOCATION,
+	WSI_TOKEN_HTTP_MAX_FORWARDS,
+	WSI_TOKEN_HTTP_PROXY_AUTHENTICATE,
+	WSI_TOKEN_HTTP_PROXY_AUTHORIZATION,
+	WSI_TOKEN_HTTP_REFRESH,
+	WSI_TOKEN_HTTP_RETRY_AFTER,
+	WSI_TOKEN_HTTP_SERVER,
+	WSI_TOKEN_HTTP_SET_COOKIE,
+	WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY,
+	WSI_TOKEN_HTTP_TRANSFER_ENCODING,
+	WSI_TOKEN_HTTP_USER_AGENT,
+	WSI_TOKEN_HTTP_VARY,
+	WSI_TOKEN_HTTP_VIA,
+	WSI_TOKEN_HTTP_WWW_AUTHENTICATE,
+	
 	WSI_TOKEN_HTTP_URI_ARGS,
 
-	WSI_TOKEN_MUXURL,
-
 	/* use token storage to stash these */
 
 	_WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
diff --git a/lib/minilex.c b/lib/minilex.c
index f3516d6..9a0a8d1 100644
--- a/lib/minilex.c
+++ b/lib/minilex.c
@@ -57,6 +57,45 @@
 	"sec-websocket-key:",
 	"sec-websocket-version:",
 	"sec-websocket-origin:",
+	
+	":authority:",
+	":method:",
+	":path:",
+	":scheme:",
+	":status:",
+	
+	"accept-charset:",
+	"accept-ranges:",
+	"access-control-allow-origin:",
+	"age:",
+	"allow:",
+	"content-disposition:",
+	"content-language:",
+	"content-location:",
+	"content-range:",
+	"etag:",
+	"expect:",
+	"expires:",
+	"from:",
+	"if-match:",
+	"if-range:",
+	"if-unmodified-since:",
+	"last-modified:",
+	"link:",
+	"location:",
+	"max-forwards:",
+	"proxy-authenticate:",
+	"proxy-authorization:",
+	"refresh:",
+	"retry-after:",
+	"server:",
+	"set-cookie:",
+	"strict-transport-security:",
+	"transfer-encoding:",
+	"user-agent:",
+	"vary:",
+	"via:",
+	"www-authenticate:",
 
 	"", /* not matchable */
 
diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h
index 9c19f22..cac681b 100755
--- a/lib/private-libwebsockets.h
+++ b/lib/private-libwebsockets.h
@@ -614,6 +614,15 @@
 	unsigned int setting[LWS_HTTP2_SETTINGS__COUNT];
 };
 
+enum http2_hpack_state {
+	HPKS_TYPE,
+	
+	HPKS_HLEN,
+	HPKS_HLEN_EXT,
+
+	HPKS_DATA,
+};
+
 struct _lws_http2_related {
 	/* 
 	 * having this first lets us also re-use all HTTP union code
@@ -638,6 +647,14 @@
 	unsigned char flags;
 	unsigned char frame_state;
 
+	/* hpack */
+	enum http2_hpack_state hpack;
+	unsigned int header_index;
+	unsigned int hpack_len;
+	unsigned char hpack_m;
+	unsigned int huff:1;
+	unsigned int value:1;
+	
 	unsigned int tx_credit;
 	unsigned int my_stream_id;
 	unsigned int child_count;