diff --git a/CMark.hsc b/CMark.hsc
--- a/CMark.hsc
+++ b/CMark.hsc
@@ -17,6 +17,7 @@
   , optHardBreaks
   , optSmart
   , optSafe
+  , optUnsafe
   , Node(..)
   , NodeType(..)
   , PosInfo(..)
@@ -208,6 +209,11 @@
 -- and images.
 optSafe :: CMarkOption
 optSafe = CMarkOption #const CMARK_OPT_SAFE
+
+-- | Allow rendering of raw HTML and potentially dangerous URLs in links
+-- and images.
+optUnsafe :: CMarkOption
+optUnsafe = CMarkOption #const CMARK_OPT_UNSAFE
 
 ptrToNodeType :: NodePtr -> IO NodeType
 ptrToNodeType ptr = do
diff --git a/cbits/blocks.c b/cbits/blocks.c
--- a/cbits/blocks.c
+++ b/cbits/blocks.c
@@ -34,6 +34,10 @@
   return (node->flags & CMARK_NODE__LAST_LINE_BLANK) != 0;
 }
 
+static bool S_last_line_checked(const cmark_node *node) {
+  return (node->flags & CMARK_NODE__LAST_LINE_CHECKED) != 0;
+}
+
 static CMARK_INLINE cmark_node_type S_type(const cmark_node *node) {
   return (cmark_node_type)node->type;
 }
@@ -45,6 +49,10 @@
     node->flags &= ~CMARK_NODE__LAST_LINE_BLANK;
 }
 
+static void S_set_last_line_checked(cmark_node *node) {
+  node->flags |= CMARK_NODE__LAST_LINE_CHECKED;
+}
+
 static CMARK_INLINE bool S_is_line_end_char(char c) {
   return (c == '\n' || c == '\r');
 }
@@ -97,6 +105,7 @@
   parser->column = 0;
   parser->first_nonspace = 0;
   parser->first_nonspace_column = 0;
+  parser->thematic_break_kill_pos = 0;
   parser->indent = 0;
   parser->blank = false;
   parser->partially_consumed_tab = false;
@@ -207,26 +216,43 @@
 
 // Check to see if a node ends with a blank line, descending
 // if needed into lists and sublists.
-static bool ends_with_blank_line(cmark_node *node) {
-  cmark_node *cur = node;
-  while (cur != NULL) {
-    if (S_last_line_blank(cur)) {
-      return true;
-    }
-    if (S_type(cur) == CMARK_NODE_LIST || S_type(cur) == CMARK_NODE_ITEM) {
-      cur = cur->last_child;
-    } else {
-      cur = NULL;
-    }
+static bool S_ends_with_blank_line(cmark_node *node) {
+  if (S_last_line_checked(node)) {
+    return(S_last_line_blank(node));
+  } else if ((S_type(node) == CMARK_NODE_LIST ||
+              S_type(node) == CMARK_NODE_ITEM) && node->last_child) {
+    S_set_last_line_checked(node);
+    return(S_ends_with_blank_line(node->last_child));
+  } else {
+    S_set_last_line_checked(node);
+    return (S_last_line_blank(node));
   }
-  return false;
 }
 
+// returns true if content remains after link defs are resolved.
+static bool resolve_reference_link_definitions(
+		cmark_parser *parser,
+                cmark_node *b) {
+  bufsize_t pos;
+  cmark_strbuf *node_content = &b->content;
+  cmark_chunk chunk = {node_content->ptr, node_content->size, 0};
+  while (chunk.len && chunk.data[0] == '[' &&
+         (pos = cmark_parse_reference_inline(parser->mem, &chunk,
+					     parser->refmap))) {
+
+    chunk.data += pos;
+    chunk.len -= pos;
+  }
+  cmark_strbuf_drop(node_content, (node_content->size - chunk.len));
+  return !is_blank(&b->content, 0);
+}
+
 static cmark_node *finalize(cmark_parser *parser, cmark_node *b) {
   bufsize_t pos;
   cmark_node *item;
   cmark_node *subitem;
   cmark_node *parent;
+  bool has_content;
 
   parent = b->parent;
   assert(b->flags &
@@ -255,17 +281,14 @@
 
   switch (S_type(b)) {
   case CMARK_NODE_PARAGRAPH:
-    while (cmark_strbuf_at(node_content, 0) == '[' &&
-           (pos = cmark_parse_reference_inline(parser->mem, node_content,
-                                               parser->refmap))) {
-
-      cmark_strbuf_drop(node_content, pos);
-    }
-    if (is_blank(node_content, 0)) {
+  {
+    has_content = resolve_reference_link_definitions(parser, b);
+    if (!has_content) {
       // remove blank node (former reference def)
       cmark_node_free(b);
     }
     break;
+  }
 
   case CMARK_NODE_CODE_BLOCK:
     if (!b->as.code.fenced) { // indented code
@@ -312,7 +335,8 @@
       // spaces between them:
       subitem = item->first_child;
       while (subitem) {
-        if (ends_with_blank_line(subitem) && (item->next || subitem->next)) {
+        if ((item->next || subitem->next) &&
+            S_ends_with_blank_line(subitem)) {
           b->as.list.tight = false;
           break;
         }
@@ -604,6 +628,40 @@
   }
 }
 
+// Check for thematic break.  On failure, return 0 and update
+// thematic_break_kill_pos with the index at which the
+// parse fails.  On success, return length of match.
+// "...three or more hyphens, asterisks,
+// or underscores on a line by themselves. If you wish, you may use
+// spaces between the hyphens or asterisks."
+static int S_scan_thematic_break(cmark_parser *parser, cmark_chunk *input,
+                                 bufsize_t offset) {
+  bufsize_t i;
+  char c;
+  char nextc = '\0';
+  int count;
+  i = offset;
+  c = peek_at(input, i);
+  if (!(c == '*' || c == '_' || c == '-')) {
+    parser->thematic_break_kill_pos = i;
+    return 0;
+  }
+  count = 1;
+  while ((nextc = peek_at(input, ++i))) {
+    if (nextc == c) {
+      count++;
+    } else if (nextc != ' ' && nextc != '\t') {
+      break;
+    }
+  }
+  if (count >= 3 && (nextc == '\r' || nextc == '\n')) {
+    return (i - offset) + 1;
+  } else {
+    parser->thematic_break_kill_pos = i;
+    return 0;
+  }
+}
+
 // Find first nonspace character from current offset, setting
 // parser->first_nonspace, parser->first_nonspace_column,
 // parser->indent, and parser->blank. Does not advance parser->offset.
@@ -611,22 +669,24 @@
   char c;
   int chars_to_tab = TAB_STOP - (parser->column % TAB_STOP);
 
-  parser->first_nonspace = parser->offset;
-  parser->first_nonspace_column = parser->column;
-  while ((c = peek_at(input, parser->first_nonspace))) {
-    if (c == ' ') {
-      parser->first_nonspace += 1;
-      parser->first_nonspace_column += 1;
-      chars_to_tab = chars_to_tab - 1;
-      if (chars_to_tab == 0) {
+  if (parser->first_nonspace <= parser->offset) {
+    parser->first_nonspace = parser->offset;
+    parser->first_nonspace_column = parser->column;
+    while ((c = peek_at(input, parser->first_nonspace))) {
+      if (c == ' ') {
+        parser->first_nonspace += 1;
+        parser->first_nonspace_column += 1;
+        chars_to_tab = chars_to_tab - 1;
+        if (chars_to_tab == 0) {
+          chars_to_tab = TAB_STOP;
+        }
+      } else if (c == '\t') {
+        parser->first_nonspace += 1;
+        parser->first_nonspace_column += chars_to_tab;
         chars_to_tab = TAB_STOP;
+      } else {
+        break;
       }
-    } else if (c == '\t') {
-      parser->first_nonspace += 1;
-      parser->first_nonspace_column += chars_to_tab;
-      chars_to_tab = TAB_STOP;
-    } else {
-      break;
     }
   }
 
@@ -857,6 +917,7 @@
   bufsize_t matched = 0;
   int lev = 0;
   bool save_partially_consumed_tab;
+  bool has_content;
   int save_offset;
   int save_column;
 
@@ -900,6 +961,7 @@
 
       (*container)->as.heading.level = level;
       (*container)->as.heading.setext = false;
+      (*container)->internal_offset = matched;
 
     } else if (!indented && (matched = scan_open_code_fence(
                                  input, parser->first_nonspace))) {
@@ -928,18 +990,26 @@
     } else if (!indented && cont_type == CMARK_NODE_PARAGRAPH &&
                (lev =
                     scan_setext_heading_line(input, parser->first_nonspace))) {
-      (*container)->type = (uint16_t)CMARK_NODE_HEADING;
-      (*container)->as.heading.level = lev;
-      (*container)->as.heading.setext = true;
-      S_advance_offset(parser, input, input->len - 1 - parser->offset, false);
+      // finalize paragraph, resolving reference links
+      has_content = resolve_reference_link_definitions(parser, *container);
+
+      if (has_content) {
+
+        (*container)->type = (uint16_t)CMARK_NODE_HEADING;
+        (*container)->as.heading.level = lev;
+        (*container)->as.heading.setext = true;
+        S_advance_offset(parser, input, input->len - 1 - parser->offset, false);
+      }
     } else if (!indented &&
                !(cont_type == CMARK_NODE_PARAGRAPH && !all_matched) &&
-               (matched = scan_thematic_break(input, parser->first_nonspace))) {
+	       (parser->thematic_break_kill_pos <= parser->first_nonspace) &&
+               (matched = S_scan_thematic_break(parser, input, parser->first_nonspace))) {
       // it's only now that we know the line is not part of a setext heading:
       *container = add_child(parser, *container, CMARK_NODE_THEMATIC_BREAK,
                              parser->first_nonspace + 1);
       S_advance_offset(parser, input, input->len - 1 - parser->offset, false);
     } else if ((!indented || cont_type == CMARK_NODE_LIST) &&
+	       parser->indent < 4 &&
                (matched = parse_list_marker(
                     parser->mem, input, parser->first_nonspace,
                     (*container)->type == CMARK_NODE_PARAGRAPH, &data))) {
@@ -1154,6 +1224,10 @@
 
   parser->offset = 0;
   parser->column = 0;
+  parser->first_nonspace = 0;
+  parser->first_nonspace_column = 0;
+  parser->thematic_break_kill_pos = 0;
+  parser->indent = 0;
   parser->blank = false;
   parser->partially_consumed_tab = false;
 
diff --git a/cbits/buffer.c b/cbits/buffer.c
--- a/cbits/buffer.c
+++ b/cbits/buffer.c
@@ -10,7 +10,6 @@
 #include "config.h"
 #include "cmark_ctype.h"
 #include "buffer.h"
-#include "memory.h"
 
 /* Used as default value for cmark_strbuf->ptr so that people can always
  * assume ptr is non-NULL and zero terminated even for new cmark_strbufs.
diff --git a/cbits/chunk.h b/cbits/chunk.h
--- a/cbits/chunk.h
+++ b/cbits/chunk.h
@@ -6,7 +6,6 @@
 #include <assert.h>
 #include "cmark.h"
 #include "buffer.h"
-#include "memory.h"
 #include "cmark_ctype.h"
 
 #define CMARK_CHUNK_EMPTY                                                      \
diff --git a/cbits/cmark.h b/cbits/cmark.h
--- a/cbits/cmark.h
+++ b/cbits/cmark.h
@@ -552,13 +552,19 @@
  */
 #define CMARK_OPT_HARDBREAKS (1 << 2)
 
-/** Suppress raw HTML and unsafe links (`javascript:`, `vbscript:`,
- * `file:`, and `data:`, except for `image/png`, `image/gif`,
- * `image/jpeg`, or `image/webp` mime types).  Raw HTML is replaced
- * by a placeholder HTML comment. Unsafe links are replaced by
- * empty strings.
+/** `CMARK_OPT_SAFE` is defined here for API compatibility,
+    but it no longer has any effect. "Safe" mode is now the default:
+    set `CMARK_OPT_UNSAFE` to disable it.
  */
 #define CMARK_OPT_SAFE (1 << 3)
+
+/** Render raw HTML and unsafe links (`javascript:`, `vbscript:`,
+ * `file:`, and `data:`, except for `image/png`, `image/gif`,
+ * `image/jpeg`, or `image/webp` mime types).  By default,
+ * raw HTML is replaced by a placeholder HTML comment. Unsafe
+ * links are replaced by empty strings.
+ */
+#define CMARK_OPT_UNSAFE (1 << 17)
 
 /** Render `softbreak` elements as spaces.
  */
diff --git a/cbits/cmark_export.h b/cbits/cmark_export.h
--- a/cbits/cmark_export.h
+++ b/cbits/cmark_export.h
@@ -39,4 +39,4 @@
 #  endif
 #endif
 
-#endif
+#endif /* CMARK_EXPORT_H */
diff --git a/cbits/cmark_version.h b/cbits/cmark_version.h
--- a/cbits/cmark_version.h
+++ b/cbits/cmark_version.h
@@ -1,7 +1,7 @@
 #ifndef CMARK_VERSION_H
 #define CMARK_VERSION_H
 
-#define CMARK_VERSION ((0 << 16) | (28 << 8)  | 0)
-#define CMARK_VERSION_STRING "0.28.0"
+#define CMARK_VERSION ((0 << 16) | (29 << 8)  | 0)
+#define CMARK_VERSION_STRING "0.29.0"
 
 #endif
diff --git a/cbits/commonmark.c b/cbits/commonmark.c
--- a/cbits/commonmark.c
+++ b/cbits/commonmark.c
@@ -32,7 +32,8 @@
   needs_escaping =
       c < 0x80 && escape != LITERAL &&
       ((escape == NORMAL &&
-        (c == '*' || c == '_' || c == '[' || c == ']' || c == '#' || c == '<' ||
+        (c < 0x20 ||
+	 c == '*' || c == '_' || c == '[' || c == ']' || c == '#' || c == '<' ||
          c == '>' || c == '\\' || c == '`' || c == '!' ||
          (c == '&' && cmark_isalpha(nextc)) || (c == '!' && nextc == '[') ||
          (renderer->begin_content && (c == '-' || c == '+' || c == '=') &&
@@ -48,14 +49,18 @@
         (c == '`' || c == '<' || c == '>' || c == '"' || c == '\\')));
 
   if (needs_escaping) {
-    if (cmark_isspace(c)) {
+    if (escape == URL && cmark_isspace(c)) {
       // use percent encoding for spaces
-      snprintf(encoded, ENCODED_SIZE, "%%%2x", c);
+      snprintf(encoded, ENCODED_SIZE, "%%%2X", c);
       cmark_strbuf_puts(renderer->buffer, encoded);
       renderer->column += 3;
-    } else {
+    } else if (cmark_ispunct(c)) {
       cmark_render_ascii(renderer, "\\");
       cmark_render_code_point(renderer, c);
+    } else { // render as entity
+      snprintf(encoded, ENCODED_SIZE, "&#%d;", c);
+      cmark_strbuf_puts(renderer->buffer, encoded);
+      renderer->column += strlen(encoded);
     }
   } else {
     cmark_render_code_point(renderer, c);
@@ -167,9 +172,11 @@
   int list_number;
   cmark_delim_type list_delim;
   int numticks;
+  bool extra_spaces;
   int i;
   bool entering = (ev_type == CMARK_EVENT_ENTER);
   const char *info, *code, *title;
+  char fencechar[2] = {'\0', '\0'};
   size_t info_len, code_len;
   char listmarker[LISTMARKER_SIZE];
   char *emph_delim;
@@ -277,6 +284,7 @@
     }
     info = cmark_node_get_fence_info(node);
     info_len = strlen(info);
+    fencechar[0] = strchr(info, '`') == NULL ? '`' : '~';
     code = cmark_node_get_literal(node);
     code_len = strlen(code);
     // use indented form if no info, and code doesn't
@@ -296,7 +304,7 @@
         numticks = 3;
       }
       for (i = 0; i < numticks; i++) {
-        LIT("`");
+        LIT(fencechar);
       }
       LIT(" ");
       OUT(info, false, LITERAL);
@@ -304,7 +312,7 @@
       OUT(cmark_node_get_literal(node), false, LITERAL);
       CR();
       for (i = 0; i < numticks; i++) {
-        LIT("`");
+        LIT(fencechar);
       }
     }
     BLANKLINE();
@@ -363,14 +371,17 @@
     code = cmark_node_get_literal(node);
     code_len = strlen(code);
     numticks = shortest_unused_backtick_sequence(code);
+    extra_spaces = code_len == 0 ||
+	    code[0] == '`' || code[code_len - 1] == '`' ||
+	    code[0] == ' ' || code[code_len - 1] == ' ';
     for (i = 0; i < numticks; i++) {
       LIT("`");
     }
-    if (code_len == 0 || code[0] == '`') {
+    if (extra_spaces) {
       LIT(" ");
     }
     OUT(cmark_node_get_literal(node), allow_wrap, LITERAL);
-    if (code_len == 0 || code[code_len - 1] == '`') {
+    if (extra_spaces) {
       LIT(" ");
     }
     for (i = 0; i < numticks; i++) {
diff --git a/cbits/houdini_href_e.c b/cbits/houdini_href_e.c
--- a/cbits/houdini_href_e.c
+++ b/cbits/houdini_href_e.c
@@ -15,7 +15,7 @@
  *	- The characters which are *not* safe to be in
  *	an URL because they are RESERVED characters.
  *
- * We asume (lazily) that any RESERVED char that
+ * We assume (lazily) that any RESERVED char that
  * appears inside an URL is actually meant to
  * have its native function (i.e. as an URL
  * component/separator) and hence needs no escaping.
diff --git a/cbits/html.c b/cbits/html.c
--- a/cbits/html.c
+++ b/cbits/html.c
@@ -170,7 +170,7 @@
 
   case CMARK_NODE_HTML_BLOCK:
     cr(html);
-    if (options & CMARK_OPT_SAFE) {
+    if (!(options & CMARK_OPT_UNSAFE)) {
       cmark_strbuf_puts(html, "<!-- raw HTML omitted -->");
     } else {
       cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);
@@ -242,7 +242,7 @@
     break;
 
   case CMARK_NODE_HTML_INLINE:
-    if (options & CMARK_OPT_SAFE) {
+    if (!(options & CMARK_OPT_UNSAFE)) {
       cmark_strbuf_puts(html, "<!-- raw HTML omitted -->");
     } else {
       cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);
@@ -278,8 +278,8 @@
   case CMARK_NODE_LINK:
     if (entering) {
       cmark_strbuf_puts(html, "<a href=\"");
-      if (!((options & CMARK_OPT_SAFE) &&
-            scan_dangerous_url(&node->as.link.url, 0))) {
+      if ((options & CMARK_OPT_UNSAFE) ||
+            !(scan_dangerous_url(&node->as.link.url, 0))) {
         houdini_escape_href(html, node->as.link.url.data,
                             node->as.link.url.len);
       }
@@ -296,8 +296,8 @@
   case CMARK_NODE_IMAGE:
     if (entering) {
       cmark_strbuf_puts(html, "<img src=\"");
-      if (!((options & CMARK_OPT_SAFE) &&
-            scan_dangerous_url(&node->as.link.url, 0))) {
+      if ((options & CMARK_OPT_UNSAFE) ||
+            !(scan_dangerous_url(&node->as.link.url, 0))) {
         houdini_escape_href(html, node->as.link.url.data,
                             node->as.link.url.len);
       }
diff --git a/cbits/inlines.c b/cbits/inlines.c
--- a/cbits/inlines.c
+++ b/cbits/inlines.c
@@ -22,9 +22,9 @@
 static const char *RIGHTSINGLEQUOTE = "\xE2\x80\x99";
 
 // Macros for creating various kinds of simple.
-#define make_str(mem, s) make_literal(mem, CMARK_NODE_TEXT, s)
-#define make_code(mem, s) make_literal(mem, CMARK_NODE_CODE, s)
-#define make_raw_html(mem, s) make_literal(mem, CMARK_NODE_HTML_INLINE, s)
+#define make_str(subj, sc, ec, s) make_literal(subj, CMARK_NODE_TEXT, sc, ec, s)
+#define make_code(subj, sc, ec, s) make_literal(subj, CMARK_NODE_CODE, sc, ec, s)
+#define make_raw_html(subj, sc, ec, s) make_literal(subj, CMARK_NODE_HTML_INLINE, sc, ec, s)
 #define make_linebreak(mem) make_simple(mem, CMARK_NODE_LINEBREAK)
 #define make_softbreak(mem) make_simple(mem, CMARK_NODE_SOFTBREAK)
 #define make_emph(mem) make_simple(mem, CMARK_NODE_EMPH)
@@ -55,7 +55,10 @@
 typedef struct {
   cmark_mem *mem;
   cmark_chunk input;
+  int line;
   bufsize_t pos;
+  int block_offset;
+  int column_offset;
   cmark_reference_map *refmap;
   delimiter *last_delim;
   bracket *last_bracket;
@@ -72,17 +75,22 @@
 
 static int parse_inline(subject *subj, cmark_node *parent, int options);
 
-static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer,
-                             cmark_reference_map *refmap);
+static void subject_from_buf(cmark_mem *mem, int line_number, int block_offset, subject *e,
+                             cmark_chunk *chunk, cmark_reference_map *refmap);
 static bufsize_t subject_find_special_char(subject *subj, int options);
 
 // Create an inline with a literal string value.
-static CMARK_INLINE cmark_node *make_literal(cmark_mem *mem, cmark_node_type t,
+static CMARK_INLINE cmark_node *make_literal(subject *subj, cmark_node_type t,
+                                             int start_column, int end_column,
                                              cmark_chunk s) {
-  cmark_node *e = (cmark_node *)mem->calloc(1, sizeof(*e));
-  cmark_strbuf_init(mem, &e->content, 0);
-  e->type = t;
+  cmark_node *e = (cmark_node *)subj->mem->calloc(1, sizeof(*e));
+  cmark_strbuf_init(subj->mem, &e->content, 0);
+  e->type = (uint16_t)t;
   e->as.literal = s;
+  e->start_line = e->end_line = subj->line;
+  // columns are 1 based.
+  e->start_column = start_column + 1 + subj->column_offset + subj->block_offset;
+  e->end_column = end_column + 1 + subj->column_offset + subj->block_offset;
   return e;
 }
 
@@ -95,14 +103,15 @@
 }
 
 // Like make_str, but parses entities.
-static cmark_node *make_str_with_entities(cmark_mem *mem,
+static cmark_node *make_str_with_entities(subject *subj,
+                                          int start_column, int end_column,
                                           cmark_chunk *content) {
-  cmark_strbuf unescaped = CMARK_BUF_INIT(mem);
+  cmark_strbuf unescaped = CMARK_BUF_INIT(subj->mem);
 
   if (houdini_unescape_html(&unescaped, content->data, content->len)) {
-    return make_str(mem, cmark_chunk_buf_detach(&unescaped));
+    return make_str(subj, start_column, end_column, cmark_chunk_buf_detach(&unescaped));
   } else {
-    return make_str(mem, *content);
+    return make_str(subj, start_column, end_column, *content);
   }
 }
 
@@ -140,23 +149,28 @@
   return cmark_chunk_buf_detach(&buf);
 }
 
-static CMARK_INLINE cmark_node *make_autolink(cmark_mem *mem, cmark_chunk url,
-                                              int is_email) {
-  cmark_node *link = make_simple(mem, CMARK_NODE_LINK);
-  link->as.link.url = cmark_clean_autolink(mem, &url, is_email);
+static CMARK_INLINE cmark_node *make_autolink(subject *subj,
+                                              int start_column, int end_column,
+                                              cmark_chunk url, int is_email) {
+  cmark_node *link = make_simple(subj->mem, CMARK_NODE_LINK);
+  link->as.link.url = cmark_clean_autolink(subj->mem, &url, is_email);
   link->as.link.title = cmark_chunk_literal("");
-  cmark_node_append_child(link, make_str_with_entities(mem, &url));
+  link->start_line = link->end_line = subj->line;
+  link->start_column = start_column + 1;
+  link->end_column = end_column + 1;
+  cmark_node_append_child(link, make_str_with_entities(subj, start_column + 1, end_column - 1, &url));
   return link;
 }
 
-static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer,
-                             cmark_reference_map *refmap) {
+static void subject_from_buf(cmark_mem *mem, int line_number, int block_offset, subject *e,
+                             cmark_chunk *chunk, cmark_reference_map *refmap) {
   int i;
   e->mem = mem;
-  e->input.data = buffer->ptr;
-  e->input.len = buffer->size;
-  e->input.alloc = 0;
+  e->input = *chunk;
+  e->line = line_number;
   e->pos = 0;
+  e->block_offset = block_offset;
+  e->column_offset = 0;
   e->refmap = refmap;
   e->last_delim = NULL;
   e->last_bracket = NULL;
@@ -223,6 +237,47 @@
   return cmark_chunk_dup(&subj->input, startpos, len);
 }
 
+// Return the number of newlines in a given span of text in a subject.  If
+// the number is greater than zero, also return the number of characters
+// between the last newline and the end of the span in `since_newline`.
+static int count_newlines(subject *subj, bufsize_t from, bufsize_t len, int *since_newline) {
+  int nls = 0;
+  int since_nl = 0;
+
+  while (len--) {
+    if (subj->input.data[from++] == '\n') {
+      ++nls;
+      since_nl = 0;
+    } else {
+      ++since_nl;
+    }
+  }
+
+  if (!nls)
+    return 0;
+
+  *since_newline = since_nl;
+  return nls;
+}
+
+// Adjust `node`'s `end_line`, `end_column`, and `subj`'s `line` and
+// `column_offset` according to the number of newlines in a just-matched span
+// of text in `subj`.
+static void adjust_subj_node_newlines(subject *subj, cmark_node *node, int matchlen, int extra, int options) {
+  if (!(options & CMARK_OPT_SOURCEPOS)) {
+    return;
+  }
+
+  int since_newline;
+  int newlines = count_newlines(subj, subj->pos - matchlen - extra, matchlen, &since_newline);
+  if (newlines) {
+    subj->line += newlines;
+    node->end_line += newlines;
+    node->end_column = since_newline;
+    subj->column_offset = -subj->pos + since_newline + extra;
+  }
+}
+
 // Try to process a backtick code span that began with a
 // span of ticks of length openticklength length (already
 // parsed).  Return 0 if you don't find matching closing
@@ -268,28 +323,67 @@
   return 0;
 }
 
+// Destructively modify string, converting newlines to
+// spaces, then removing a single leading + trailing space,
+// unless the code span consists entirely of space characters.
+static void S_normalize_code(cmark_strbuf *s) {
+  bufsize_t r, w;
+  bool contains_nonspace = false;
+
+  for (r = 0, w = 0; r < s->size; ++r) {
+    switch (s->ptr[r]) {
+    case '\r':
+      if (s->ptr[r + 1] != '\n') {
+	s->ptr[w++] = ' ';
+      }
+      break;
+    case '\n':
+      s->ptr[w++] = ' ';
+      break;
+    default:
+      s->ptr[w++] = s->ptr[r];
+    }
+    if (s->ptr[r] != ' ') {
+      contains_nonspace = true;
+    }
+  }
+
+  // begins and ends with space?
+  if (contains_nonspace &&
+      s->ptr[0] == ' ' && s->ptr[w - 1] == ' ') {
+    cmark_strbuf_drop(s, 1);
+    cmark_strbuf_truncate(s, w - 2);
+  } else {
+    cmark_strbuf_truncate(s, w);
+  }
+
+}
+
+
 // Parse backtick code section or raw backticks, return an inline.
 // Assumes that the subject has a backtick at the current position.
-static cmark_node *handle_backticks(subject *subj) {
+static cmark_node *handle_backticks(subject *subj, int options) {
   cmark_chunk openticks = take_while(subj, isbacktick);
   bufsize_t startpos = subj->pos;
   bufsize_t endpos = scan_to_closing_backticks(subj, openticks.len);
 
   if (endpos == 0) {      // not found
     subj->pos = startpos; // rewind
-    return make_str(subj->mem, openticks);
+    return make_str(subj, subj->pos, subj->pos, openticks);
   } else {
     cmark_strbuf buf = CMARK_BUF_INIT(subj->mem);
 
     cmark_strbuf_set(&buf, subj->input.data + startpos,
                      endpos - startpos - openticks.len);
-    cmark_strbuf_trim(&buf);
-    cmark_strbuf_normalize_whitespace(&buf);
+    S_normalize_code(&buf);
 
-    return make_code(subj->mem, cmark_chunk_buf_detach(&buf));
+    cmark_node *node = make_code(subj, startpos, endpos - openticks.len - 1, cmark_chunk_buf_detach(&buf));
+    adjust_subj_node_newlines(subj, node, endpos - startpos, openticks.len, options);
+    return node;
   }
 }
 
+
 // Scan ***, **, or * and return number scanned, or 0.
 // Advances position.
 static int scan_delims(subject *subj, unsigned char c, bool *can_open,
@@ -345,7 +439,8 @@
     *can_close = right_flanking &&
                  (!left_flanking || cmark_utf8proc_is_punctuation(after_char));
   } else if (c == '\'' || c == '"') {
-    *can_open = left_flanking && !right_flanking;
+    *can_open = left_flanking && !right_flanking &&
+	         before_char != ']' && before_char != ')';
     *can_close = right_flanking;
   } else {
     *can_open = left_flanking;
@@ -443,7 +538,7 @@
     contents = cmark_chunk_dup(&subj->input, subj->pos - numdelims, numdelims);
   }
 
-  inl_text = make_str(subj->mem, contents);
+  inl_text = make_str(subj, subj->pos - numdelims, subj->pos - 1, contents);
 
   if ((can_open || can_close) && (!(c == '\'' || c == '"') || smart)) {
     push_delimiter(subj, c, can_open, can_close, inl_text);
@@ -459,7 +554,7 @@
   advance(subj);
 
   if (!smart || peek_char(subj) != '-') {
-    return make_str(subj->mem, cmark_chunk_literal("-"));
+    return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("-"));
   }
 
   while (smart && peek_char(subj) == '-') {
@@ -492,7 +587,7 @@
     cmark_strbuf_puts(&buf, ENDASH);
   }
 
-  return make_str(subj->mem, cmark_chunk_buf_detach(&buf));
+  return make_str(subj, startpos, subj->pos - 1, cmark_chunk_buf_detach(&buf));
 }
 
 // Assumes we have a period at the current position.
@@ -502,12 +597,12 @@
     advance(subj);
     if (peek_char(subj) == '.') {
       advance(subj);
-      return make_str(subj->mem, cmark_chunk_literal(ELLIPSES));
+      return make_str(subj, subj->pos - 3, subj->pos - 1, cmark_chunk_literal(ELLIPSES));
     } else {
-      return make_str(subj->mem, cmark_chunk_literal(".."));
+      return make_str(subj, subj->pos - 2, subj->pos - 1, cmark_chunk_literal(".."));
     }
   } else {
-    return make_str(subj->mem, cmark_chunk_literal("."));
+    return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("."));
   }
 }
 
@@ -516,7 +611,7 @@
   delimiter *opener;
   delimiter *old_closer;
   bool opener_found;
-  int openers_bottom_index;
+  int openers_bottom_index = 0;
   delimiter *openers_bottom[6] = {stack_bottom, stack_bottom, stack_bottom,
                                   stack_bottom, stack_bottom, stack_bottom};
 
@@ -553,7 +648,8 @@
           // interior closer of size 2 can't match opener of size 1
           // or of size 1 can't match 2
           if (!(closer->can_open || opener->can_close) ||
-              ((opener->length + closer->length) % 3) != 0) {
+	      closer->length % 3 == 0 ||
+              (opener->length + closer->length) % 3 != 0) {
             opener_found = true;
             break;
           }
@@ -615,7 +711,7 @@
   cmark_node *tmp, *tmpnext, *emph;
 
   // calculate the actual number of characters used from this closer
-  use_delims = (closer_num_chars >= 2 && opener_num_chars >=2) ? 2 : 1;
+  use_delims = (closer_num_chars >= 2 && opener_num_chars >= 2) ? 2 : 1;
 
   // remove used characters from associated inlines.
   opener_num_chars -= use_delims;
@@ -643,6 +739,11 @@
   }
   cmark_node_insert_after(opener_inl, emph);
 
+  emph->start_line = opener_inl->start_line;
+  emph->end_line = closer_inl->end_line;
+  emph->start_column = opener_inl->start_column;
+  emph->end_column = closer_inl->end_column;
+
   // if opener has 0 characters, remove it and its associated inline
   if (opener_num_chars == 0) {
     cmark_node_free(opener_inl);
@@ -669,11 +770,11 @@
   if (cmark_ispunct(
           nextchar)) { // only ascii symbols and newline can be escaped
     advance(subj);
-    return make_str(subj->mem, cmark_chunk_dup(&subj->input, subj->pos - 1, 1));
+    return make_str(subj, subj->pos - 2, subj->pos - 1, cmark_chunk_dup(&subj->input, subj->pos - 1, 1));
   } else if (!is_eof(subj) && skip_line_end(subj)) {
     return make_linebreak(subj->mem);
   } else {
-    return make_str(subj->mem, cmark_chunk_literal("\\"));
+    return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("\\"));
   }
 }
 
@@ -689,10 +790,10 @@
                              subj->input.len - subj->pos);
 
   if (len == 0)
-    return make_str(subj->mem, cmark_chunk_literal("&"));
+    return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("&"));
 
   subj->pos += len;
-  return make_str(subj->mem, cmark_chunk_buf_detach(&ent));
+  return make_str(subj, subj->pos - 1 - len, subj->pos - 1, cmark_chunk_buf_detach(&ent));
 }
 
 // Clean a URL: remove surrounding whitespace, and remove \ that escape
@@ -707,7 +808,7 @@
     return result;
   }
 
-  houdini_unescape_html_f(&buf, url->data, url->len);
+    houdini_unescape_html_f(&buf, url->data, url->len);
 
   cmark_strbuf_unescape(&buf);
   return cmark_chunk_buf_detach(&buf);
@@ -739,7 +840,7 @@
 
 // Parse an autolink or HTML tag.
 // Assumes the subject has a '<' character at the current position.
-static cmark_node *handle_pointy_brace(subject *subj) {
+static cmark_node *handle_pointy_brace(subject *subj, int options) {
   bufsize_t matchlen = 0;
   cmark_chunk contents;
 
@@ -751,7 +852,7 @@
     contents = cmark_chunk_dup(&subj->input, subj->pos, matchlen - 1);
     subj->pos += matchlen;
 
-    return make_autolink(subj->mem, contents, 0);
+    return make_autolink(subj, subj->pos - 1 - matchlen, subj->pos - 1, contents, 0);
   }
 
   // next try to match an email autolink
@@ -760,7 +861,7 @@
     contents = cmark_chunk_dup(&subj->input, subj->pos, matchlen - 1);
     subj->pos += matchlen;
 
-    return make_autolink(subj->mem, contents, 1);
+    return make_autolink(subj, subj->pos - 1 - matchlen, subj->pos - 1, contents, 1);
   }
 
   // finally, try to match an html tag
@@ -768,11 +869,13 @@
   if (matchlen > 0) {
     contents = cmark_chunk_dup(&subj->input, subj->pos - 1, matchlen + 1);
     subj->pos += matchlen;
-    return make_raw_html(subj->mem, contents);
+    cmark_node *node = make_raw_html(subj, subj->pos - matchlen - 1, subj->pos - 1, contents);
+    adjust_subj_node_newlines(subj, node, matchlen, 1, options);
+    return node;
   }
 
   // if nothing matches, just return the opening <:
-  return make_str(subj->mem, cmark_chunk_literal("<"));
+  return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("<"));
 }
 
 // Parse a link label.  Returns 1 if successful.
@@ -821,28 +924,35 @@
   return 0;
 }
 
-static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset, cmark_chunk *output) {
+static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset,
+                                        cmark_chunk *output) {
   bufsize_t i = offset;
   size_t nb_p = 0;
 
-  while (i < input->len) {
-    if (input->data[i] == '\\' &&
-        i + 1 < input-> len &&
-        cmark_ispunct(input->data[i+1]))
-      i += 2;
-    else if (input->data[i] == '(') {
-      ++nb_p;
-      ++i;
-    } else if (input->data[i] == ')') {
-      if (nb_p == 0)
+    while (i < input->len) {
+      if (input->data[i] == '\\' &&
+	  i + 1 < input-> len &&
+          cmark_ispunct(input->data[i+1]))
+        i += 2;
+      else if (input->data[i] == '(') {
+        ++nb_p;
+        ++i;
+        if (nb_p > 32)
+          return -1;
+      } else if (input->data[i] == ')') {
+        if (nb_p == 0)
+          break;
+        --nb_p;
+        ++i;
+      } else if (cmark_isspace(input->data[i])) {
+        if (i == offset) {
+	  return -1;
+	}
         break;
-      --nb_p;
-      ++i;
-    } else if (cmark_isspace(input->data[i]))
-      break;
-    else
-      ++i;
-  }
+      } else {
+        ++i;
+      }
+    }
 
   if (i >= input->len)
     return -1;
@@ -854,7 +964,8 @@
   return i - offset;
 }
 
-static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset, cmark_chunk *output) {
+static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset,
+                                      cmark_chunk *output) {
   bufsize_t i = offset;
 
   if (i < input->len && input->data[i] == '<') {
@@ -865,8 +976,8 @@
         break;
       } else if (input->data[i] == '\\')
         i += 2;
-      else if (cmark_isspace(input->data[i]) || input->data[i] == '<')
-        return manual_scan_link_url_2(input, offset, output);
+      else if (input->data[i] == '\n' || input->data[i] == '<')
+        return -1;
       else
         ++i;
     }
@@ -906,13 +1017,13 @@
   opener = subj->last_bracket;
 
   if (opener == NULL) {
-    return make_str(subj->mem, cmark_chunk_literal("]"));
+    return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]"));
   }
 
   if (!opener->active) {
     // take delimiter off stack
     pop_bracket(subj);
-    return make_str(subj->mem, cmark_chunk_literal("]"));
+    return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]"));
   }
 
   // If we got here, we matched a potential link/image text.
@@ -924,7 +1035,8 @@
   // First, look for an inline link.
   if (peek_char(subj) == '(' &&
       ((sps = scan_spacechars(&subj->input, subj->pos + 1)) > -1) &&
-      ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps, &url_chunk)) > -1)) {
+      ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps,
+                                 &url_chunk)) > -1)) {
 
     // try to parse an explicit link:
     endurl = subj->pos + 1 + sps + n;
@@ -988,12 +1100,15 @@
   // If we fall through to here, it means we didn't match a link:
   pop_bracket(subj); // remove this opener from delimiter list
   subj->pos = initial_pos;
-  return make_str(subj->mem, cmark_chunk_literal("]"));
+  return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]"));
 
 match:
   inl = make_simple(subj->mem, is_image ? CMARK_NODE_IMAGE : CMARK_NODE_LINK);
   inl->as.link.url = url;
   inl->as.link.title = title;
+  inl->start_line = inl->end_line = subj->line;
+  inl->start_column = opener->inl_text->start_column;
+  inl->end_column = subj->pos + subj->column_offset + subj->block_offset;
   cmark_node_insert_before(opener->inl_text, inl);
   // Add link text:
   tmp = opener->inl_text->next;
@@ -1040,6 +1155,8 @@
   if (peek_at(subj, subj->pos) == '\n') {
     advance(subj);
   }
+  ++subj->line;
+  subj->column_offset = -subj->pos;
   // skip spaces at beginning of line
   skip_spaces(subj);
   if (nlpos > 1 && peek_at(subj, nlpos - 1) == ' ' &&
@@ -1099,7 +1216,7 @@
   cmark_node *new_inl = NULL;
   cmark_chunk contents;
   unsigned char c;
-  bufsize_t endpos;
+  bufsize_t startpos, endpos;
   c = peek_char(subj);
   if (c == 0) {
     return 0;
@@ -1110,7 +1227,7 @@
     new_inl = handle_newline(subj);
     break;
   case '`':
-    new_inl = handle_backticks(subj);
+    new_inl = handle_backticks(subj, options);
     break;
   case '\\':
     new_inl = handle_backslash(subj);
@@ -1119,7 +1236,7 @@
     new_inl = handle_entity(subj);
     break;
   case '<':
-    new_inl = handle_pointy_brace(subj);
+    new_inl = handle_pointy_brace(subj, options);
     break;
   case '*':
   case '_':
@@ -1135,7 +1252,7 @@
     break;
   case '[':
     advance(subj);
-    new_inl = make_str(subj->mem, cmark_chunk_literal("["));
+    new_inl = make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("["));
     push_bracket(subj, false, new_inl);
     break;
   case ']':
@@ -1145,15 +1262,16 @@
     advance(subj);
     if (peek_char(subj) == '[') {
       advance(subj);
-      new_inl = make_str(subj->mem, cmark_chunk_literal("!["));
+      new_inl = make_str(subj, subj->pos - 2, subj->pos - 1, cmark_chunk_literal("!["));
       push_bracket(subj, true, new_inl);
     } else {
-      new_inl = make_str(subj->mem, cmark_chunk_literal("!"));
+      new_inl = make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("!"));
     }
     break;
   default:
     endpos = subject_find_special_char(subj, options);
     contents = cmark_chunk_dup(&subj->input, subj->pos, endpos - subj->pos);
+    startpos = subj->pos;
     subj->pos = endpos;
 
     // if we're at a newline, strip trailing spaces.
@@ -1161,7 +1279,7 @@
       cmark_chunk_rtrim(&contents);
     }
 
-    new_inl = make_str(subj->mem, contents);
+    new_inl = make_str(subj, startpos, endpos - 1, contents);
   }
   if (new_inl != NULL) {
     cmark_node_append_child(parent, new_inl);
@@ -1174,7 +1292,8 @@
 extern void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent,
                                 cmark_reference_map *refmap, int options) {
   subject subj;
-  subject_from_buf(mem, &subj, &parent->content, refmap);
+  cmark_chunk content = {parent->content.ptr, parent->content.size, 0};
+  subject_from_buf(mem, parent->start_line, parent->start_column - 1 + parent->internal_offset, &subj, &content, refmap);
   cmark_chunk_rtrim(&subj.input);
 
   while (!is_eof(&subj) && parse_inline(&subj, parent, options))
@@ -1202,7 +1321,7 @@
 // Modify refmap if a reference is encountered.
 // Return 0 if no reference found, otherwise position of subject
 // after reference is parsed.
-bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input,
+bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_chunk *input,
                                        cmark_reference_map *refmap) {
   subject subj;
 
@@ -1213,7 +1332,7 @@
   bufsize_t matchlen = 0;
   bufsize_t beforetitle;
 
-  subject_from_buf(mem, &subj, input, NULL);
+  subject_from_buf(mem, -1, 0, &subj, input, NULL);
 
   // parse label:
   if (!link_label(&subj, &lab) || lab.len == 0)
@@ -1228,8 +1347,7 @@
 
   // parse link url:
   spnl(&subj);
-  if ((matchlen = manual_scan_link_url(&subj.input, subj.pos, &url)) > -1 &&
-      url.len > 0) {
+  if ((matchlen = manual_scan_link_url(&subj.input, subj.pos, &url)) > -1) {
     subj.pos += matchlen;
   } else {
     return 0;
@@ -1238,7 +1356,7 @@
   // parse optional link_title
   beforetitle = subj.pos;
   spnl(&subj);
-  matchlen = scan_link_title(&subj.input, subj.pos);
+  matchlen = subj.pos == beforetitle ? 0 : scan_link_title(&subj.input, subj.pos);
   if (matchlen) {
     title = cmark_chunk_dup(&subj.input, subj.pos, matchlen);
     subj.pos += matchlen;
diff --git a/cbits/inlines.h b/cbits/inlines.h
--- a/cbits/inlines.h
+++ b/cbits/inlines.h
@@ -11,7 +11,7 @@
 void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent,
                          cmark_reference_map *refmap, int options);
 
-bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input,
+bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_chunk *input,
                                        cmark_reference_map *refmap);
 
 #ifdef __cplusplus
diff --git a/cbits/iterator.c b/cbits/iterator.c
--- a/cbits/iterator.c
+++ b/cbits/iterator.c
@@ -106,6 +106,7 @@
       while (tmp && tmp->type == CMARK_NODE_TEXT) {
         cmark_iter_next(iter); // advance pointer
         cmark_strbuf_put(&buf, tmp->as.literal.data, tmp->as.literal.len);
+        cur->end_column = tmp->end_column;
         next = tmp->next;
         cmark_node_free(tmp);
         tmp = next;
diff --git a/cbits/iterator.h b/cbits/iterator.h
--- a/cbits/iterator.h
+++ b/cbits/iterator.h
@@ -6,7 +6,6 @@
 #endif
 
 #include "cmark.h"
-#include "memory.h"
 
 typedef struct {
   cmark_event_type ev_type;
diff --git a/cbits/latex.c b/cbits/latex.c
--- a/cbits/latex.c
+++ b/cbits/latex.c
@@ -252,24 +252,24 @@
       CR();
       list_number = cmark_node_get_list_start(node);
       if (list_number > 1) {
-	enumlevel = S_get_enumlevel(node);
-	// latex normally supports only five levels
-	if (enumlevel >= 1 && enumlevel <= 5) {
+        enumlevel = S_get_enumlevel(node);
+        // latex normally supports only five levels
+        if (enumlevel >= 1 && enumlevel <= 5) {
           snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d",
                    list_number);
           LIT("\\setcounter{enum");
-          switch(enumlevel) {
-	  case 1: LIT("i"); break;
-	  case 2: LIT("ii"); break;
-	  case 3: LIT("iii"); break;
-	  case 4: LIT("iv"); break;
-	  case 5: LIT("v"); break;
-	  default: LIT("i"); break;
+          switch (enumlevel) {
+          case 1: LIT("i"); break;
+          case 2: LIT("ii"); break;
+          case 3: LIT("iii"); break;
+          case 4: LIT("iv"); break;
+          case 5: LIT("v"); break;
+          default: LIT("i"); break;
 	  }
           LIT("}{");
           OUT(list_number_string, false, NORMAL);
           LIT("}");
-	}
+        }
         CR();
       }
     } else {
diff --git a/cbits/node.h b/cbits/node.h
--- a/cbits/node.h
+++ b/cbits/node.h
@@ -49,6 +49,7 @@
 enum cmark_node__internal_flags {
   CMARK_NODE__OPEN = (1 << 0),
   CMARK_NODE__LAST_LINE_BLANK = (1 << 1),
+  CMARK_NODE__LAST_LINE_CHECKED = (1 << 2),
 };
 
 struct cmark_node {
@@ -66,6 +67,7 @@
   int start_column;
   int end_line;
   int end_column;
+  int internal_offset;
   uint16_t type;
   uint16_t flags;
 
diff --git a/cbits/parser.h b/cbits/parser.h
--- a/cbits/parser.h
+++ b/cbits/parser.h
@@ -2,9 +2,9 @@
 #define CMARK_AST_H
 
 #include <stdio.h>
+#include "references.h"
 #include "node.h"
 #include "buffer.h"
-#include "memory.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -22,6 +22,7 @@
   bufsize_t column;
   bufsize_t first_nonspace;
   bufsize_t first_nonspace_column;
+  bufsize_t thematic_break_kill_pos;
   int indent;
   bool blank;
   bool partially_consumed_tab;
diff --git a/cbits/references.h b/cbits/references.h
--- a/cbits/references.h
+++ b/cbits/references.h
@@ -1,7 +1,6 @@
 #ifndef CMARK_REFERENCES_H
 #define CMARK_REFERENCES_H
 
-#include "memory.h"
 #include "chunk.h"
 
 #ifdef __cplusplus
diff --git a/cbits/render.c b/cbits/render.c
--- a/cbits/render.c
+++ b/cbits/render.c
@@ -45,6 +45,7 @@
       }
     }
     renderer->column = 0;
+    renderer->last_breakable = 0;
     renderer->begin_line = true;
     renderer->begin_content = true;
     renderer->need_cr -= 1;
@@ -81,21 +82,23 @@
         }
       }
 
-    } else if (c == 10) {
-      cmark_strbuf_putc(renderer->buffer, '\n');
-      renderer->column = 0;
-      renderer->begin_line = true;
-      renderer->begin_content = true;
-      renderer->last_breakable = 0;
     } else if (escape == LITERAL) {
-      cmark_render_code_point(renderer, c);
-      renderer->begin_line = false;
-      // we don't set 'begin_content' to false til we've
-      // finished parsing a digit.  Reason:  in commonmark
-      // we need to escape a potential list marker after
-      // a digit:
-      renderer->begin_content =
-          renderer->begin_content && cmark_isdigit(c) == 1;
+      if (c == 10) {
+        cmark_strbuf_putc(renderer->buffer, '\n');
+        renderer->column = 0;
+        renderer->begin_line = true;
+        renderer->begin_content = true;
+        renderer->last_breakable = 0;
+      } else {
+        cmark_render_code_point(renderer, c);
+        renderer->begin_line = false;
+        // we don't set 'begin_content' to false til we've
+        // finished parsing a digit.  Reason:  in commonmark
+        // we need to escape a potential list marker after
+        // a digit:
+        renderer->begin_content =
+            renderer->begin_content && cmark_isdigit(c) == 1;
+      }
     } else {
       (renderer->outc)(renderer, escape, c, nextc);
       renderer->begin_line = false;
@@ -171,7 +174,7 @@
   }
 
   // ensure final newline
-  if (renderer.buffer->ptr[renderer.buffer->size - 1] != '\n') {
+  if (renderer.buffer->size == 0 || renderer.buffer->ptr[renderer.buffer->size - 1] != '\n') {
     cmark_strbuf_putc(renderer.buffer, '\n');
   }
 
diff --git a/cbits/render.h b/cbits/render.h
--- a/cbits/render.h
+++ b/cbits/render.h
@@ -8,7 +8,6 @@
 #include <stdlib.h>
 #include "buffer.h"
 #include "chunk.h"
-#include "memory.h"
 
 typedef enum { LITERAL, NORMAL, TITLE, URL } cmark_escaping;
 
diff --git a/cbits/scanners.c b/cbits/scanners.c
--- a/cbits/scanners.c
+++ b/cbits/scanners.c
@@ -1,17793 +1,13787 @@
-/* Generated by re2c 0.15.3 */
-#include <stdlib.h>
-#include "chunk.h"
-#include "scanners.h"
-
-bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,
-                   bufsize_t offset) {
-  bufsize_t res;
-  unsigned char *ptr = (unsigned char *)c->data;
-
-  if (ptr == NULL || offset > c->len) {
-    return 0;
-  } else {
-    unsigned char lim = ptr[c->len];
-
-    ptr[c->len] = '\0';
-    res = scanner(ptr + offset);
-    ptr[c->len] = lim;
-  }
-
-  return res;
-}
-
-// Try to match a scheme including colon.
-bufsize_t _scan_scheme(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    yych = *p;
-    if (yych <= '@')
-      goto yy2;
-    if (yych <= 'Z')
-      goto yy4;
-    if (yych <= '`')
-      goto yy2;
-    if (yych <= 'z')
-      goto yy4;
-  yy2:
-    ++p;
-  yy3 : { return 0; }
-  yy4:
-    yych = *(marker = ++p);
-    if (yych <= '/') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy3;
-      } else {
-        if (yych <= ',')
-          goto yy3;
-        if (yych >= '/')
-          goto yy3;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '9')
-          goto yy5;
-        if (yych <= '@')
-          goto yy3;
-      } else {
-        if (yych <= '`')
-          goto yy3;
-        if (yych >= '{')
-          goto yy3;
-      }
-    }
-  yy5:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych == '+')
-          goto yy9;
-      } else {
-        if (yych != '/')
-          goto yy9;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych >= 'A')
-          goto yy9;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych <= 'z')
-          goto yy9;
-      }
-    }
-  yy6:
-    p = marker;
-    goto yy3;
-  yy7:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy9:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy6;
-      } else {
-        if (yych == '/')
-          goto yy6;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy7;
-        if (yych <= '@')
-          goto yy6;
-      } else {
-        if (yych <= '`')
-          goto yy6;
-        if (yych >= '{')
-          goto yy6;
-      }
-    }
-    ++p;
-    if ((yych = *p) == ':')
-      goto yy7;
-    goto yy6;
-  }
-}
-
-// Try to match URI autolink after first <, returning number of chars matched.
-bufsize_t _scan_autolink_uri(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 0,   128, 0,   128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *p;
-    if (yych <= '@')
-      goto yy41;
-    if (yych <= 'Z')
-      goto yy43;
-    if (yych <= '`')
-      goto yy41;
-    if (yych <= 'z')
-      goto yy43;
-  yy41:
-    ++p;
-  yy42 : { return 0; }
-  yy43:
-    yych = *(marker = ++p);
-    if (yych <= '/') {
-      if (yych <= '+') {
-        if (yych <= '*')
-          goto yy42;
-      } else {
-        if (yych <= ',')
-          goto yy42;
-        if (yych >= '/')
-          goto yy42;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '9')
-          goto yy44;
-        if (yych <= '@')
-          goto yy42;
-      } else {
-        if (yych <= '`')
-          goto yy42;
-        if (yych >= '{')
-          goto yy42;
-      }
-    }
-  yy44:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych == '+')
-          goto yy48;
-      } else {
-        if (yych != '/')
-          goto yy48;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych >= 'A')
-          goto yy48;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych <= 'z')
-          goto yy48;
-      }
-    }
-  yy45:
-    p = marker;
-    goto yy42;
-  yy46:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy46;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '<')
-          goto yy45;
-        if (yych <= '>')
-          goto yy85;
-        goto yy45;
-      } else {
-        if (yych <= 0xDF)
-          goto yy78;
-        if (yych <= 0xE0)
-          goto yy79;
-        goto yy80;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy84;
-        if (yych <= 0xEF)
-          goto yy80;
-        goto yy81;
-      } else {
-        if (yych <= 0xF3)
-          goto yy82;
-        if (yych <= 0xF4)
-          goto yy83;
-        goto yy45;
-      }
-    }
-  yy48:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych <= ',') {
-        if (yych != '+')
-          goto yy45;
-      } else {
-        if (yych == '/')
-          goto yy45;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= ':')
-          goto yy46;
-        if (yych <= '@')
-          goto yy45;
-      } else {
-        if (yych <= '`')
-          goto yy45;
-        if (yych >= '{')
-          goto yy45;
-      }
-    }
-    yych = *++p;
-    if (yych == ':')
-      goto yy46;
-    goto yy45;
-  yy78:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy45;
-    if (yych <= 0xBF)
-      goto yy46;
-    goto yy45;
-  yy79:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy45;
-    if (yych <= 0xBF)
-      goto yy78;
-    goto yy45;
-  yy80:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy45;
-    if (yych <= 0xBF)
-      goto yy78;
-    goto yy45;
-  yy81:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy45;
-    if (yych <= 0xBF)
-      goto yy80;
-    goto yy45;
-  yy82:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy45;
-    if (yych <= 0xBF)
-      goto yy80;
-    goto yy45;
-  yy83:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy45;
-    if (yych <= 0x8F)
-      goto yy80;
-    goto yy45;
-  yy84:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy45;
-    if (yych <= 0x9F)
-      goto yy78;
-    goto yy45;
-  yy85:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match email autolink after first <, returning num of chars matched.
-bufsize_t _scan_autolink_email(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   128, 0,   128, 128, 128, 128, 128, 0,   0,
-        128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 0,   0,   0,   128, 0,   128, 0,   128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 0,   0,   0,   128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
-        128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *p;
-    if (yych <= '9') {
-      if (yych <= '\'') {
-        if (yych == '!')
-          goto yy91;
-        if (yych >= '#')
-          goto yy91;
-      } else {
-        if (yych <= ')')
-          goto yy89;
-        if (yych != ',')
-          goto yy91;
-      }
-    } else {
-      if (yych <= '?') {
-        if (yych == '=')
-          goto yy91;
-        if (yych >= '?')
-          goto yy91;
-      } else {
-        if (yych <= 'Z') {
-          if (yych >= 'A')
-            goto yy91;
-        } else {
-          if (yych <= ']')
-            goto yy89;
-          if (yych <= '~')
-            goto yy91;
-        }
-      }
-    }
-  yy89:
-    ++p;
-  yy90 : { return 0; }
-  yy91:
-    yych = *(marker = ++p);
-    if (yych <= ',') {
-      if (yych <= '"') {
-        if (yych == '!')
-          goto yy95;
-        goto yy90;
-      } else {
-        if (yych <= '\'')
-          goto yy95;
-        if (yych <= ')')
-          goto yy90;
-        if (yych <= '+')
-          goto yy95;
-        goto yy90;
-      }
-    } else {
-      if (yych <= '>') {
-        if (yych <= '9')
-          goto yy95;
-        if (yych == '=')
-          goto yy95;
-        goto yy90;
-      } else {
-        if (yych <= 'Z')
-          goto yy95;
-        if (yych <= ']')
-          goto yy90;
-        if (yych <= '~')
-          goto yy95;
-        goto yy90;
-      }
-    }
-  yy92:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy93;
-      if (yych <= '9')
-        goto yy96;
-    } else {
-      if (yych <= 'Z')
-        goto yy96;
-      if (yych <= '`')
-        goto yy93;
-      if (yych <= 'z')
-        goto yy96;
-    }
-  yy93:
-    p = marker;
-    goto yy90;
-  yy94:
-    ++p;
-    yych = *p;
-  yy95:
-    if (yybm[0 + yych] & 128) {
-      goto yy94;
-    }
-    if (yych <= '>')
-      goto yy93;
-    if (yych <= '@')
-      goto yy92;
-    goto yy93;
-  yy96:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy98;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych >= ':')
-          goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy227;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy226;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy226;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy226;
-        goto yy93;
-      }
-    }
-  yy98:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy227;
-      if (yych <= '/')
-        goto yy93;
-      goto yy226;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-        goto yy226;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy226;
-        goto yy93;
-      }
-    }
-  yy99:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy93;
-      if (yych <= '9')
-        goto yy102;
-      goto yy93;
-    } else {
-      if (yych <= 'Z')
-        goto yy102;
-      if (yych <= '`')
-        goto yy93;
-      if (yych <= 'z')
-        goto yy102;
-      goto yy93;
-    }
-  yy100:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy102:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy104;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych >= ':')
-          goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy106;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy105;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy105;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy105;
-        goto yy93;
-      }
-    }
-  yy104:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy106;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy105:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy108;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy107;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy107;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy107;
-        goto yy93;
-      }
-    }
-  yy106:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy108;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy107:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy110;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy109;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy109;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy109;
-        goto yy93;
-      }
-    }
-  yy108:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy110;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy109:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy112;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy111;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy111;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy111;
-        goto yy93;
-      }
-    }
-  yy110:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy112;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy111:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy114;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy113;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy113;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy113;
-        goto yy93;
-      }
-    }
-  yy112:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy114;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy113:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy116;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy115;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy115;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy115;
-        goto yy93;
-      }
-    }
-  yy114:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy116;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy115:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy118;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy117;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy117;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy117;
-        goto yy93;
-      }
-    }
-  yy116:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy118;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy117:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy120;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy119;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy119;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy119;
-        goto yy93;
-      }
-    }
-  yy118:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy120;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy119:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy122;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy121;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy121;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy121;
-        goto yy93;
-      }
-    }
-  yy120:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy122;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy121:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy124;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy123;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy123;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy123;
-        goto yy93;
-      }
-    }
-  yy122:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy124;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy123:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy126;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy125;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy125;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy125;
-        goto yy93;
-      }
-    }
-  yy124:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy126;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy125:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy128;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy127;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy127;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy127;
-        goto yy93;
-      }
-    }
-  yy126:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy128;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy127:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy130;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy129;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy129;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy129;
-        goto yy93;
-      }
-    }
-  yy128:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy130;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy129:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy132;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy131;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy131;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy131;
-        goto yy93;
-      }
-    }
-  yy130:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy132;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy131:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy134;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy133;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy133;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy133;
-        goto yy93;
-      }
-    }
-  yy132:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy134;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy133:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy136;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy135;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy135;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy135;
-        goto yy93;
-      }
-    }
-  yy134:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy136;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy135:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy138;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy137;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy137;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy137;
-        goto yy93;
-      }
-    }
-  yy136:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy138;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy137:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy140;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy139;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy139;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy139;
-        goto yy93;
-      }
-    }
-  yy138:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy140;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy139:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy142;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy141;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy141;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy141;
-        goto yy93;
-      }
-    }
-  yy140:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy142;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy141:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy144;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy143;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy143;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy143;
-        goto yy93;
-      }
-    }
-  yy142:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy144;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy143:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy146;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy145;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy145;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy145;
-        goto yy93;
-      }
-    }
-  yy144:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy146;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy145:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy148;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy147;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy147;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy147;
-        goto yy93;
-      }
-    }
-  yy146:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy148;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy147:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy150;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy149;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy149;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy149;
-        goto yy93;
-      }
-    }
-  yy148:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy150;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy149:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy152;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy151;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy151;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy151;
-        goto yy93;
-      }
-    }
-  yy150:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy152;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy151:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy154;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy153;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy153;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy153;
-        goto yy93;
-      }
-    }
-  yy152:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy154;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy153:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy156;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy155;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy155;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy155;
-        goto yy93;
-      }
-    }
-  yy154:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy156;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy155:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy158;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy157;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy157;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy157;
-        goto yy93;
-      }
-    }
-  yy156:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy158;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy157:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy160;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy159;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy159;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy159;
-        goto yy93;
-      }
-    }
-  yy158:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy160;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy159:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy162;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy161;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy161;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy161;
-        goto yy93;
-      }
-    }
-  yy160:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy162;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy161:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy164;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy163;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy163;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy163;
-        goto yy93;
-      }
-    }
-  yy162:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy164;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy163:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy166;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy165;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy165;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy165;
-        goto yy93;
-      }
-    }
-  yy164:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy166;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy165:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy168;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy167;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy167;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy167;
-        goto yy93;
-      }
-    }
-  yy166:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy168;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy167:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy170;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy169;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy169;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy169;
-        goto yy93;
-      }
-    }
-  yy168:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy170;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy169:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy172;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy171;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy171;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy171;
-        goto yy93;
-      }
-    }
-  yy170:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy172;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy171:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy174;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy173;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy173;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy173;
-        goto yy93;
-      }
-    }
-  yy172:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy174;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy173:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy176;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy175;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy175;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy175;
-        goto yy93;
-      }
-    }
-  yy174:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy176;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy175:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy178;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy177;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy177;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy177;
-        goto yy93;
-      }
-    }
-  yy176:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy178;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy177:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy180;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy179;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy179;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy179;
-        goto yy93;
-      }
-    }
-  yy178:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy180;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy179:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy182;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy181;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy181;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy181;
-        goto yy93;
-      }
-    }
-  yy180:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy182;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy181:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy184;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy183;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy183;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy183;
-        goto yy93;
-      }
-    }
-  yy182:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy184;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy183:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy186;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy185;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy185;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy185;
-        goto yy93;
-      }
-    }
-  yy184:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy186;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy185:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy188;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy187;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy187;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy187;
-        goto yy93;
-      }
-    }
-  yy186:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy188;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy187:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy190;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy189;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy189;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy189;
-        goto yy93;
-      }
-    }
-  yy188:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy190;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy189:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy192;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy191;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy191;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy191;
-        goto yy93;
-      }
-    }
-  yy190:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy192;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy191:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy194;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy193;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy193;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy193;
-        goto yy93;
-      }
-    }
-  yy192:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy194;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy193:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy196;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy195;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy195;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy195;
-        goto yy93;
-      }
-    }
-  yy194:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy196;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy195:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy198;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy197;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy197;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy197;
-        goto yy93;
-      }
-    }
-  yy196:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy198;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy197:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy200;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy199;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy199;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy199;
-        goto yy93;
-      }
-    }
-  yy198:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy200;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy199:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy202;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy201;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy201;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy201;
-        goto yy93;
-      }
-    }
-  yy200:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy202;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy201:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy204;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy203;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy203;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy203;
-        goto yy93;
-      }
-    }
-  yy202:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy204;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy203:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy206;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy205;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy205;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy205;
-        goto yy93;
-      }
-    }
-  yy204:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy206;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy205:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy208;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy207;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy207;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy207;
-        goto yy93;
-      }
-    }
-  yy206:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy208;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy207:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy210;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy209;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy209;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy209;
-        goto yy93;
-      }
-    }
-  yy208:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy210;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy209:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy212;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy211;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy211;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy211;
-        goto yy93;
-      }
-    }
-  yy210:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy212;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy211:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy214;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy213;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy213;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy213;
-        goto yy93;
-      }
-    }
-  yy212:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy214;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy213:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy216;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy215;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy215;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy215;
-        goto yy93;
-      }
-    }
-  yy214:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy216;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy215:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy218;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy217;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy217;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy217;
-        goto yy93;
-      }
-    }
-  yy216:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy218;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy217:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy220;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy219;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy219;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy219;
-        goto yy93;
-      }
-    }
-  yy218:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy220;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy219:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy222;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy221;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy221;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy221;
-        goto yy93;
-      }
-    }
-  yy220:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy222;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy221:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy224;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy223;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy223;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy223;
-        goto yy93;
-      }
-    }
-  yy222:
-    ++p;
-    yych = *p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy224;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy223:
-    ++p;
-    yych = *p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= '-')
-          goto yy93;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy225;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy225;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy225;
-        goto yy93;
-      }
-    }
-  yy224:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy93;
-      if (yych >= ':')
-        goto yy93;
-    } else {
-      if (yych <= 'Z')
-        goto yy225;
-      if (yych <= '`')
-        goto yy93;
-      if (yych >= '{')
-        goto yy93;
-    }
-  yy225:
-    ++p;
-    yych = *p;
-    if (yych == '.')
-      goto yy99;
-    if (yych == '>')
-      goto yy100;
-    goto yy93;
-  yy226:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy229;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy228;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy228;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy228;
-        goto yy93;
-      }
-    }
-  yy227:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy229;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy228:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy231;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy230;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy230;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy230;
-        goto yy93;
-      }
-    }
-  yy229:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy231;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy230:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy233;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy232;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy232;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy232;
-        goto yy93;
-      }
-    }
-  yy231:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy233;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy232:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy235;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy234;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy234;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy234;
-        goto yy93;
-      }
-    }
-  yy233:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy235;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy234:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy237;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy236;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy236;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy236;
-        goto yy93;
-      }
-    }
-  yy235:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy237;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy236:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy239;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy238;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy238;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy238;
-        goto yy93;
-      }
-    }
-  yy237:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy239;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy238:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy241;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy240;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy240;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy240;
-        goto yy93;
-      }
-    }
-  yy239:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy241;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy240:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy243;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy242;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy242;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy242;
-        goto yy93;
-      }
-    }
-  yy241:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy243;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy242:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy245;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy244;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy244;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy244;
-        goto yy93;
-      }
-    }
-  yy243:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy245;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy244:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy247;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy246;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy246;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy246;
-        goto yy93;
-      }
-    }
-  yy245:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy247;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy246:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy249;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy248;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy248;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy248;
-        goto yy93;
-      }
-    }
-  yy247:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy249;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy248:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy251;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy250;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy250;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy250;
-        goto yy93;
-      }
-    }
-  yy249:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy251;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy250:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy253;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy252;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy252;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy252;
-        goto yy93;
-      }
-    }
-  yy251:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy253;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy252:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy255;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy254;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy254;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy254;
-        goto yy93;
-      }
-    }
-  yy253:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy255;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy254:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy257;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy256;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy256;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy256;
-        goto yy93;
-      }
-    }
-  yy255:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy257;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy256:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy259;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy258;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy258;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy258;
-        goto yy93;
-      }
-    }
-  yy257:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy259;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy258:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy261;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy260;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy260;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy260;
-        goto yy93;
-      }
-    }
-  yy259:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy261;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy260:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy263;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy262;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy262;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy262;
-        goto yy93;
-      }
-    }
-  yy261:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy263;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy262:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy265;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy264;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy264;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy264;
-        goto yy93;
-      }
-    }
-  yy263:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy265;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy264:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy267;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy266;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy266;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy266;
-        goto yy93;
-      }
-    }
-  yy265:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy267;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy266:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy269;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy268;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy268;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy268;
-        goto yy93;
-      }
-    }
-  yy267:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy269;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy268:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy271;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy270;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy270;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy270;
-        goto yy93;
-      }
-    }
-  yy269:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy271;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy270:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy273;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy272;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy272;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy272;
-        goto yy93;
-      }
-    }
-  yy271:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy273;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy272:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy275;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy274;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy274;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy274;
-        goto yy93;
-      }
-    }
-  yy273:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy275;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy274:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy277;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy276;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy276;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy276;
-        goto yy93;
-      }
-    }
-  yy275:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy277;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy276:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy279;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy278;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy278;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy278;
-        goto yy93;
-      }
-    }
-  yy277:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy279;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy278:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy281;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy280;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy280;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy280;
-        goto yy93;
-      }
-    }
-  yy279:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy281;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy280:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy283;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy282;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy282;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy282;
-        goto yy93;
-      }
-    }
-  yy281:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy283;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy282:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy285;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy284;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy284;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy284;
-        goto yy93;
-      }
-    }
-  yy283:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy285;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy284:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy287;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy286;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy286;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy286;
-        goto yy93;
-      }
-    }
-  yy285:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy287;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy286:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy289;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy288;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy288;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy288;
-        goto yy93;
-      }
-    }
-  yy287:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy289;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy288:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy291;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy290;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy290;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy290;
-        goto yy93;
-      }
-    }
-  yy289:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy291;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy290:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy293;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy292;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy292;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy292;
-        goto yy93;
-      }
-    }
-  yy291:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy293;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy292:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy295;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy294;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy294;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy294;
-        goto yy93;
-      }
-    }
-  yy293:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy295;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy294:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy297;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy296;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy296;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy296;
-        goto yy93;
-      }
-    }
-  yy295:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy297;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy296:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy299;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy298;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy298;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy298;
-        goto yy93;
-      }
-    }
-  yy297:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy299;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy298:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy301;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy300;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy300;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy300;
-        goto yy93;
-      }
-    }
-  yy299:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy301;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy300:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy303;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy302;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy302;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy302;
-        goto yy93;
-      }
-    }
-  yy301:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy303;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy302:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy305;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy304;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy304;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy304;
-        goto yy93;
-      }
-    }
-  yy303:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy305;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy304:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy307;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy306;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy306;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy306;
-        goto yy93;
-      }
-    }
-  yy305:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy307;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy306:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy309;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy308;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy308;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy308;
-        goto yy93;
-      }
-    }
-  yy307:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy309;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy308:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy311;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy310;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy310;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy310;
-        goto yy93;
-      }
-    }
-  yy309:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy311;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy310:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy313;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy312;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy312;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy312;
-        goto yy93;
-      }
-    }
-  yy311:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy313;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy312:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy315;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy314;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy314;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy314;
-        goto yy93;
-      }
-    }
-  yy313:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy315;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy314:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy317;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy316;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy316;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy316;
-        goto yy93;
-      }
-    }
-  yy315:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy317;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy316:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy319;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy318;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy318;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy318;
-        goto yy93;
-      }
-    }
-  yy317:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy319;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy318:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy321;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy320;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy320;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy320;
-        goto yy93;
-      }
-    }
-  yy319:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy321;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy320:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy323;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy322;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy322;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy322;
-        goto yy93;
-      }
-    }
-  yy321:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy323;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy322:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy325;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy324;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy324;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy324;
-        goto yy93;
-      }
-    }
-  yy323:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy325;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy324:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy327;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy326;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy326;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy326;
-        goto yy93;
-      }
-    }
-  yy325:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy327;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy326:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy329;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy328;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy328;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy328;
-        goto yy93;
-      }
-    }
-  yy327:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy329;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy328:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy331;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy330;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy330;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy330;
-        goto yy93;
-      }
-    }
-  yy329:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy331;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy330:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy333;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy332;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy332;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy332;
-        goto yy93;
-      }
-    }
-  yy331:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy333;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy332:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy335;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy334;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy334;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy334;
-        goto yy93;
-      }
-    }
-  yy333:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy335;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy334:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy337;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy336;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy336;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy336;
-        goto yy93;
-      }
-    }
-  yy335:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy337;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy336:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy339;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy338;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy338;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy338;
-        goto yy93;
-      }
-    }
-  yy337:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy339;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy338:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy341;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy340;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy340;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy340;
-        goto yy93;
-      }
-    }
-  yy339:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy341;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy340:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy343;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy342;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy342;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy342;
-        goto yy93;
-      }
-    }
-  yy341:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy343;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy342:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= ',')
-          goto yy93;
-        if (yych <= '-')
-          goto yy345;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy344;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy344;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy344;
-        goto yy93;
-      }
-    }
-  yy343:
-    yych = *++p;
-    if (yych <= '9') {
-      if (yych == '-')
-        goto yy345;
-      if (yych <= '/')
-        goto yy93;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy93;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych >= '{')
-          goto yy93;
-      }
-    }
-  yy344:
-    yych = *++p;
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych <= '-')
-          goto yy93;
-        goto yy99;
-      } else {
-        if (yych <= '/')
-          goto yy93;
-        if (yych <= '9')
-          goto yy225;
-        goto yy93;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy100;
-        if (yych <= '@')
-          goto yy93;
-        goto yy225;
-      } else {
-        if (yych <= '`')
-          goto yy93;
-        if (yych <= 'z')
-          goto yy225;
-        goto yy93;
-      }
-    }
-  yy345:
-    ++p;
-    if ((yych = *p) <= '@') {
-      if (yych <= '/')
-        goto yy93;
-      if (yych <= '9')
-        goto yy225;
-      goto yy93;
-    } else {
-      if (yych <= 'Z')
-        goto yy225;
-      if (yych <= '`')
-        goto yy93;
-      if (yych <= 'z')
-        goto yy225;
-      goto yy93;
-    }
-  }
-}
-
-// Try to match an HTML tag after first <, returning num of chars matched.
-bufsize_t _scan_html_tag(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        /* table 1 .. 8: 0 */
-        0,   239, 239, 239, 239, 239, 239, 239, 239, 238, 238, 238, 238, 238,
-        239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-        239, 239, 239, 239, 238, 239, 234, 239, 239, 239, 239, 236, 239, 239,
-        239, 239, 239, 207, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-        239, 239, 239, 239, 238, 238, 174, 231, 239, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 239, 239, 111, 239, 239, 238, 239,
-        239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-        239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
-        239, 239, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-        /* table 9 .. 11: 256 */
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   64,  64,  64,  64,  64,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   64,  0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   160, 128, 0,   160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 128, 0,   0,   0,   0,   0,   0,   160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 0,   0,   0,   0,   128, 0,   160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *p;
-    if (yych <= '>') {
-      if (yych <= '!') {
-        if (yych >= '!')
-          goto yy350;
-      } else {
-        if (yych == '/')
-          goto yy351;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '?')
-          goto yy352;
-        if (yych >= 'A')
-          goto yy353;
-      } else {
-        if (yych <= '`')
-          goto yy348;
-        if (yych <= 'z')
-          goto yy353;
-      }
-    }
-  yy348:
-    ++p;
-  yy349 : { return 0; }
-  yy350:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 16) {
-      goto yy426;
-    }
-    if (yych == '-')
-      goto yy428;
-    if (yych <= '@')
-      goto yy349;
-    if (yych <= '[')
-      goto yy425;
-    goto yy349;
-  yy351:
-    yych = *(marker = ++p);
-    if (yych <= '@')
-      goto yy349;
-    if (yych <= 'Z')
-      goto yy421;
-    if (yych <= '`')
-      goto yy349;
-    if (yych <= 'z')
-      goto yy421;
-    goto yy349;
-  yy352:
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy349;
-    if (yych <= 0x7F)
-      goto yy405;
-    if (yych <= 0xC1)
-      goto yy349;
-    if (yych <= 0xF4)
-      goto yy405;
-    goto yy349;
-  yy353:
-    yych = *(marker = ++p);
-    if (yybm[256 + yych] & 64) {
-      goto yy357;
-    }
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych != '-')
-          goto yy349;
-      } else {
-        if (yych <= '/')
-          goto yy359;
-        if (yych >= ':')
-          goto yy349;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy360;
-        if (yych <= '@')
-          goto yy349;
-      } else {
-        if (yych <= '`')
-          goto yy349;
-        if (yych >= '{')
-          goto yy349;
-      }
-    }
-  yy354:
-    ++p;
-    yych = *p;
-    if (yybm[256 + yych] & 64) {
-      goto yy357;
-    }
-    if (yych <= '=') {
-      if (yych <= '.') {
-        if (yych == '-')
-          goto yy354;
-      } else {
-        if (yych <= '/')
-          goto yy359;
-        if (yych <= '9')
-          goto yy354;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy360;
-        if (yych >= 'A')
-          goto yy354;
-      } else {
-        if (yych <= '`')
-          goto yy356;
-        if (yych <= 'z')
-          goto yy354;
-      }
-    }
-  yy356:
-    p = marker;
-    goto yy349;
-  yy357:
-    ++p;
-    yych = *p;
-    if (yybm[256 + yych] & 64) {
-      goto yy357;
-    }
-    if (yych <= '>') {
-      if (yych <= '9') {
-        if (yych != '/')
-          goto yy356;
-      } else {
-        if (yych <= ':')
-          goto yy362;
-        if (yych <= '=')
-          goto yy356;
-        goto yy360;
-      }
-    } else {
-      if (yych <= '^') {
-        if (yych <= '@')
-          goto yy356;
-        if (yych <= 'Z')
-          goto yy362;
-        goto yy356;
-      } else {
-        if (yych == '`')
-          goto yy356;
-        if (yych <= 'z')
-          goto yy362;
-        goto yy356;
-      }
-    }
-  yy359:
-    yych = *++p;
-    if (yych != '>')
-      goto yy356;
-  yy360:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy362:
-    ++p;
-    yych = *p;
-    if (yybm[256 + yych] & 128) {
-      goto yy362;
-    }
-    if (yych <= ',') {
-      if (yych <= '\r') {
-        if (yych <= 0x08)
-          goto yy356;
-      } else {
-        if (yych != ' ')
-          goto yy356;
-      }
-    } else {
-      if (yych <= '<') {
-        if (yych <= '/')
-          goto yy359;
-        goto yy356;
-      } else {
-        if (yych <= '=')
-          goto yy366;
-        if (yych <= '>')
-          goto yy360;
-        goto yy356;
-      }
-    }
-  yy364:
-    ++p;
-    yych = *p;
-    if (yych <= '<') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy356;
-        if (yych <= '\r')
-          goto yy364;
-        if (yych <= 0x1F)
-          goto yy356;
-        goto yy364;
-      } else {
-        if (yych <= '/') {
-          if (yych <= '.')
-            goto yy356;
-          goto yy359;
-        } else {
-          if (yych == ':')
-            goto yy362;
-          goto yy356;
-        }
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '=')
-          goto yy366;
-        if (yych <= '>')
-          goto yy360;
-        if (yych <= '@')
-          goto yy356;
-        goto yy362;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy356;
-          goto yy362;
-        } else {
-          if (yych <= '`')
-            goto yy356;
-          if (yych <= 'z')
-            goto yy362;
-          goto yy356;
-        }
-      }
-    }
-  yy366:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy368;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '"') {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych >= '!')
-          goto yy379;
-      } else {
-        if (yych <= '\'')
-          goto yy377;
-        if (yych <= 0xC1)
-          goto yy356;
-        if (yych <= 0xDF)
-          goto yy370;
-        goto yy371;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy376;
-        goto yy372;
-      } else {
-        if (yych <= 0xF0)
-          goto yy373;
-        if (yych <= 0xF3)
-          goto yy374;
-        if (yych <= 0xF4)
-          goto yy375;
-        goto yy356;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy368;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '\'') {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= ' ')
-          goto yy402;
-        if (yych <= '"')
-          goto yy379;
-        goto yy377;
-      } else {
-        if (yych == '>')
-          goto yy360;
-        if (yych <= 0xC1)
-          goto yy356;
-        goto yy370;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy371;
-        if (yych == 0xED)
-          goto yy376;
-        goto yy372;
-      } else {
-        if (yych <= 0xF0)
-          goto yy373;
-        if (yych <= 0xF3)
-          goto yy374;
-        if (yych <= 0xF4)
-          goto yy375;
-        goto yy356;
-      }
-    }
-  yy368:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy368;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= ' ')
-          goto yy396;
-        goto yy356;
-      } else {
-        if (yych <= '>')
-          goto yy360;
-        if (yych <= 0xC1)
-          goto yy356;
-        if (yych >= 0xE0)
-          goto yy371;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy376;
-        goto yy372;
-      } else {
-        if (yych <= 0xF0)
-          goto yy373;
-        if (yych <= 0xF3)
-          goto yy374;
-        if (yych <= 0xF4)
-          goto yy375;
-        goto yy356;
-      }
-    }
-  yy370:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy368;
-    goto yy356;
-  yy371:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy370;
-    goto yy356;
-  yy372:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy370;
-    goto yy356;
-  yy373:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy372;
-    goto yy356;
-  yy374:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy372;
-    goto yy356;
-  yy375:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy372;
-    goto yy356;
-  yy376:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy370;
-    goto yy356;
-  yy377:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 2) {
-      goto yy377;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= '\'')
-          goto yy388;
-        goto yy356;
-      } else {
-        if (yych <= 0xDF)
-          goto yy389;
-        if (yych <= 0xE0)
-          goto yy390;
-        goto yy391;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy395;
-        if (yych <= 0xEF)
-          goto yy391;
-        goto yy392;
-      } else {
-        if (yych <= 0xF3)
-          goto yy393;
-        if (yych <= 0xF4)
-          goto yy394;
-        goto yy356;
-      }
-    }
-  yy379:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy379;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= '"')
-          goto yy388;
-        goto yy356;
-      } else {
-        if (yych <= 0xDF)
-          goto yy381;
-        if (yych <= 0xE0)
-          goto yy382;
-        goto yy383;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy387;
-        if (yych <= 0xEF)
-          goto yy383;
-        goto yy384;
-      } else {
-        if (yych <= 0xF3)
-          goto yy385;
-        if (yych <= 0xF4)
-          goto yy386;
-        goto yy356;
-      }
-    }
-  yy381:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy379;
-    goto yy356;
-  yy382:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy381;
-    goto yy356;
-  yy383:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy381;
-    goto yy356;
-  yy384:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy383;
-    goto yy356;
-  yy385:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy383;
-    goto yy356;
-  yy386:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy383;
-    goto yy356;
-  yy387:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy381;
-    goto yy356;
-  yy388:
-    ++p;
-    yych = *p;
-    if (yybm[256 + yych] & 64) {
-      goto yy357;
-    }
-    if (yych == '/')
-      goto yy359;
-    if (yych == '>')
-      goto yy360;
-    goto yy356;
-  yy389:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy377;
-    goto yy356;
-  yy390:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy389;
-    goto yy356;
-  yy391:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy389;
-    goto yy356;
-  yy392:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy391;
-    goto yy356;
-  yy393:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy391;
-    goto yy356;
-  yy394:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy391;
-    goto yy356;
-  yy395:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy389;
-    goto yy356;
-  yy396:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy356;
-          if (yych <= 0x08)
-            goto yy368;
-          goto yy396;
-        } else {
-          if (yych == ' ')
-            goto yy396;
-          if (yych <= '!')
-            goto yy368;
-          goto yy356;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy356;
-          if (yych <= '9')
-            goto yy368;
-        } else {
-          if (yych <= ';')
-            goto yy368;
-          if (yych <= '=')
-            goto yy356;
-          if (yych <= '>')
-            goto yy360;
-          goto yy368;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy398;
-          if (yych <= '^')
-            goto yy368;
-          if (yych >= '`')
-            goto yy356;
-        } else {
-          if (yych <= 'z')
-            goto yy398;
-          if (yych <= 0x7F)
-            goto yy368;
-          if (yych <= 0xC1)
-            goto yy356;
-          goto yy370;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy371;
-          if (yych == 0xED)
-            goto yy376;
-          goto yy372;
-        } else {
-          if (yych <= 0xF0)
-            goto yy373;
-          if (yych <= 0xF3)
-            goto yy374;
-          if (yych <= 0xF4)
-            goto yy375;
-          goto yy356;
-        }
-      }
-    }
-  yy398:
-    ++p;
-    yych = *p;
-    if (yych <= '>') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy356;
-          if (yych <= 0x08)
-            goto yy368;
-          if (yych >= 0x0E)
-            goto yy368;
-        } else {
-          if (yych <= ' ')
-            goto yy400;
-          if (yych == '"')
-            goto yy356;
-          goto yy368;
-        }
-      } else {
-        if (yych <= '/') {
-          if (yych <= '\'')
-            goto yy356;
-          if (yych <= ',')
-            goto yy368;
-          if (yych <= '.')
-            goto yy398;
-          goto yy368;
-        } else {
-          if (yych <= ';') {
-            if (yych <= ':')
-              goto yy398;
-            goto yy368;
-          } else {
-            if (yych <= '<')
-              goto yy356;
-            if (yych <= '=')
-              goto yy366;
-            goto yy360;
-          }
-        }
-      }
-    } else {
-      if (yych <= 0xC1) {
-        if (yych <= '_') {
-          if (yych <= '@')
-            goto yy368;
-          if (yych <= 'Z')
-            goto yy398;
-          if (yych <= '^')
-            goto yy368;
-          goto yy398;
-        } else {
-          if (yych <= '`')
-            goto yy356;
-          if (yych <= 'z')
-            goto yy398;
-          if (yych <= 0x7F)
-            goto yy368;
-          goto yy356;
-        }
-      } else {
-        if (yych <= 0xED) {
-          if (yych <= 0xDF)
-            goto yy370;
-          if (yych <= 0xE0)
-            goto yy371;
-          if (yych <= 0xEC)
-            goto yy372;
-          goto yy376;
-        } else {
-          if (yych <= 0xF0) {
-            if (yych <= 0xEF)
-              goto yy372;
-            goto yy373;
-          } else {
-            if (yych <= 0xF3)
-              goto yy374;
-            if (yych <= 0xF4)
-              goto yy375;
-            goto yy356;
-          }
-        }
-      }
-    }
-  yy400:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy356;
-          if (yych <= 0x08)
-            goto yy368;
-          if (yych <= '\r')
-            goto yy400;
-          goto yy368;
-        } else {
-          if (yych <= ' ')
-            goto yy400;
-          if (yych == '"')
-            goto yy356;
-          goto yy368;
-        }
-      } else {
-        if (yych <= ';') {
-          if (yych <= '\'')
-            goto yy356;
-          if (yych == ':')
-            goto yy398;
-          goto yy368;
-        } else {
-          if (yych <= '<')
-            goto yy356;
-          if (yych <= '=')
-            goto yy366;
-          if (yych <= '>')
-            goto yy360;
-          goto yy368;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy398;
-          if (yych <= '^')
-            goto yy368;
-          if (yych <= '_')
-            goto yy398;
-          goto yy356;
-        } else {
-          if (yych <= 'z')
-            goto yy398;
-          if (yych <= 0x7F)
-            goto yy368;
-          if (yych <= 0xC1)
-            goto yy356;
-          goto yy370;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy371;
-          if (yych == 0xED)
-            goto yy376;
-          goto yy372;
-        } else {
-          if (yych <= 0xF0)
-            goto yy373;
-          if (yych <= 0xF3)
-            goto yy374;
-          if (yych <= 0xF4)
-            goto yy375;
-          goto yy356;
-        }
-      }
-    }
-  yy402:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy356;
-          if (yych <= 0x08)
-            goto yy368;
-          goto yy402;
-        } else {
-          if (yych == ' ')
-            goto yy402;
-          if (yych <= '!')
-            goto yy368;
-          goto yy379;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy377;
-          if (yych <= '9')
-            goto yy368;
-          goto yy398;
-        } else {
-          if (yych <= ';')
-            goto yy368;
-          if (yych <= '=')
-            goto yy356;
-          if (yych <= '>')
-            goto yy360;
-          goto yy368;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy398;
-          if (yych <= '^')
-            goto yy368;
-          if (yych <= '_')
-            goto yy398;
-          goto yy356;
-        } else {
-          if (yych <= 'z')
-            goto yy398;
-          if (yych <= 0x7F)
-            goto yy368;
-          if (yych <= 0xC1)
-            goto yy356;
-          goto yy370;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy371;
-          if (yych == 0xED)
-            goto yy376;
-          goto yy372;
-        } else {
-          if (yych <= 0xF0)
-            goto yy373;
-          if (yych <= 0xF3)
-            goto yy374;
-          if (yych <= 0xF4)
-            goto yy375;
-          goto yy356;
-        }
-      }
-    }
-  yy404:
-    ++p;
-    yych = *p;
-  yy405:
-    if (yybm[0 + yych] & 8) {
-      goto yy404;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= '?')
-          goto yy413;
-        goto yy356;
-      } else {
-        if (yych <= 0xDF)
-          goto yy406;
-        if (yych <= 0xE0)
-          goto yy407;
-        goto yy408;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy412;
-        if (yych <= 0xEF)
-          goto yy408;
-        goto yy409;
-      } else {
-        if (yych <= 0xF3)
-          goto yy410;
-        if (yych <= 0xF4)
-          goto yy411;
-        goto yy356;
-      }
-    }
-  yy406:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy404;
-    goto yy356;
-  yy407:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy406;
-    goto yy356;
-  yy408:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy406;
-    goto yy356;
-  yy409:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy408;
-    goto yy356;
-  yy410:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy408;
-    goto yy356;
-  yy411:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy408;
-    goto yy356;
-  yy412:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy406;
-    goto yy356;
-  yy413:
-    ++p;
-    yych = *p;
-    if (yych <= 0xE0) {
-      if (yych <= '>') {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= '=')
-          goto yy404;
-        goto yy360;
-      } else {
-        if (yych <= 0x7F)
-          goto yy404;
-        if (yych <= 0xC1)
-          goto yy356;
-        if (yych >= 0xE0)
-          goto yy415;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy420;
-        goto yy416;
-      } else {
-        if (yych <= 0xF0)
-          goto yy417;
-        if (yych <= 0xF3)
-          goto yy418;
-        if (yych <= 0xF4)
-          goto yy419;
-        goto yy356;
-      }
-    }
-  yy414:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy404;
-    goto yy356;
-  yy415:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy414;
-    goto yy356;
-  yy416:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy414;
-    goto yy356;
-  yy417:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy416;
-    goto yy356;
-  yy418:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy416;
-    goto yy356;
-  yy419:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy416;
-    goto yy356;
-  yy420:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy414;
-    goto yy356;
-  yy421:
-    ++p;
-    yych = *p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy356;
-        if (yych >= 0x0E)
-          goto yy356;
-      } else {
-        if (yych <= ' ')
-          goto yy423;
-        if (yych == '-')
-          goto yy421;
-        goto yy356;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych <= '9')
-          goto yy421;
-        if (yych == '>')
-          goto yy360;
-        goto yy356;
-      } else {
-        if (yych <= 'Z')
-          goto yy421;
-        if (yych <= '`')
-          goto yy356;
-        if (yych <= 'z')
-          goto yy421;
-        goto yy356;
-      }
-    }
-  yy423:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych <= 0x08)
-        goto yy356;
-      if (yych <= '\r')
-        goto yy423;
-      goto yy356;
-    } else {
-      if (yych <= ' ')
-        goto yy423;
-      if (yych == '>')
-        goto yy360;
-      goto yy356;
-    }
-  yy425:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy461;
-    if (yych == 'c')
-      goto yy461;
-    goto yy356;
-  yy426:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy426;
-    }
-    if (yych <= 0x08)
-      goto yy356;
-    if (yych <= '\r')
-      goto yy450;
-    if (yych == ' ')
-      goto yy450;
-    goto yy356;
-  yy428:
-    yych = *++p;
-    if (yych != '-')
-      goto yy356;
-    yych = *++p;
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych != '-')
-          goto yy432;
-      } else {
-        if (yych <= '>')
-          goto yy356;
-        if (yych <= 0xC1)
-          goto yy432;
-        if (yych <= 0xDF)
-          goto yy433;
-        goto yy434;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy439;
-        goto yy435;
-      } else {
-        if (yych <= 0xF0)
-          goto yy436;
-        if (yych <= 0xF3)
-          goto yy437;
-        if (yych <= 0xF4)
-          goto yy438;
-        goto yy432;
-      }
-    }
-    yych = *++p;
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych == '-')
-          goto yy449;
-        goto yy432;
-      } else {
-        if (yych <= '>')
-          goto yy356;
-        if (yych <= 0xC1)
-          goto yy432;
-        if (yych <= 0xDF)
-          goto yy433;
-        goto yy434;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy439;
-        goto yy435;
-      } else {
-        if (yych <= 0xF0)
-          goto yy436;
-        if (yych <= 0xF3)
-          goto yy437;
-        if (yych <= 0xF4)
-          goto yy438;
-        goto yy432;
-      }
-    }
-  yy431:
-    ++p;
-    yych = *p;
-  yy432:
-    if (yybm[0 + yych] & 32) {
-      goto yy431;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= '-')
-          goto yy440;
-        goto yy356;
-      } else {
-        if (yych <= 0xDF)
-          goto yy441;
-        if (yych <= 0xE0)
-          goto yy442;
-        goto yy443;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy447;
-        if (yych <= 0xEF)
-          goto yy443;
-        goto yy444;
-      } else {
-        if (yych <= 0xF3)
-          goto yy445;
-        if (yych <= 0xF4)
-          goto yy446;
-        goto yy356;
-      }
-    }
-  yy433:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy431;
-    goto yy356;
-  yy434:
-    yych = *++p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy433;
-    goto yy356;
-  yy435:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy433;
-    goto yy356;
-  yy436:
-    yych = *++p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy435;
-    goto yy356;
-  yy437:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy435;
-    goto yy356;
-  yy438:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy435;
-    goto yy356;
-  yy439:
-    yych = *++p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy433;
-    goto yy356;
-  yy440:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy431;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= '-')
-          goto yy448;
-        goto yy356;
-      } else {
-        if (yych <= 0xDF)
-          goto yy441;
-        if (yych <= 0xE0)
-          goto yy442;
-        goto yy443;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy447;
-        if (yych <= 0xEF)
-          goto yy443;
-        goto yy444;
-      } else {
-        if (yych <= 0xF3)
-          goto yy445;
-        if (yych <= 0xF4)
-          goto yy446;
-        goto yy356;
-      }
-    }
-  yy441:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy431;
-    goto yy356;
-  yy442:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy441;
-    goto yy356;
-  yy443:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy441;
-    goto yy356;
-  yy444:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy443;
-    goto yy356;
-  yy445:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy443;
-    goto yy356;
-  yy446:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy443;
-    goto yy356;
-  yy447:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy441;
-    goto yy356;
-  yy448:
-    yych = *++p;
-    if (yych == '>')
-      goto yy360;
-    goto yy356;
-  yy449:
-    yych = *++p;
-    if (yych == '>')
-      goto yy360;
-    goto yy356;
-  yy450:
-    ++p;
-    yych = *p;
-    if (yych <= 0xC1) {
-      if (yych <= 0x1F) {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= 0x08)
-          goto yy452;
-        if (yych <= '\r')
-          goto yy450;
-      } else {
-        if (yych <= '=') {
-          if (yych <= ' ')
-            goto yy450;
-        } else {
-          if (yych <= '>')
-            goto yy360;
-          if (yych >= 0x80)
-            goto yy356;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy454;
-        if (yych <= 0xE0)
-          goto yy455;
-        if (yych <= 0xEC)
-          goto yy456;
-        goto yy460;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy456;
-          goto yy457;
-        } else {
-          if (yych <= 0xF3)
-            goto yy458;
-          if (yych <= 0xF4)
-            goto yy459;
-          goto yy356;
-        }
-      }
-    }
-  yy452:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy452;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= '>')
-          goto yy360;
-        goto yy356;
-      } else {
-        if (yych <= 0xDF)
-          goto yy454;
-        if (yych <= 0xE0)
-          goto yy455;
-        goto yy456;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy460;
-        if (yych <= 0xEF)
-          goto yy456;
-        goto yy457;
-      } else {
-        if (yych <= 0xF3)
-          goto yy458;
-        if (yych <= 0xF4)
-          goto yy459;
-        goto yy356;
-      }
-    }
-  yy454:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy452;
-    goto yy356;
-  yy455:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy454;
-    goto yy356;
-  yy456:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy454;
-    goto yy356;
-  yy457:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy456;
-    goto yy356;
-  yy458:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy456;
-    goto yy356;
-  yy459:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy456;
-    goto yy356;
-  yy460:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy454;
-    goto yy356;
-  yy461:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy462;
-    if (yych != 'd')
-      goto yy356;
-  yy462:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy463;
-    if (yych != 'a')
-      goto yy356;
-  yy463:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy464;
-    if (yych != 't')
-      goto yy356;
-  yy464:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy465;
-    if (yych != 'a')
-      goto yy356;
-  yy465:
-    yych = *++p;
-    if (yych != '[')
-      goto yy356;
-  yy466:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy466;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= ']')
-          goto yy475;
-        goto yy356;
-      } else {
-        if (yych <= 0xDF)
-          goto yy468;
-        if (yych <= 0xE0)
-          goto yy469;
-        goto yy470;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy474;
-        if (yych <= 0xEF)
-          goto yy470;
-        goto yy471;
-      } else {
-        if (yych <= 0xF3)
-          goto yy472;
-        if (yych <= 0xF4)
-          goto yy473;
-        goto yy356;
-      }
-    }
-  yy468:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy466;
-    goto yy356;
-  yy469:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy468;
-    goto yy356;
-  yy470:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy468;
-    goto yy356;
-  yy471:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy470;
-    goto yy356;
-  yy472:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy470;
-    goto yy356;
-  yy473:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy470;
-    goto yy356;
-  yy474:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy468;
-    goto yy356;
-  yy475:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy466;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych >= '^')
-          goto yy356;
-      } else {
-        if (yych <= 0xDF)
-          goto yy477;
-        if (yych <= 0xE0)
-          goto yy478;
-        goto yy479;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy483;
-        if (yych <= 0xEF)
-          goto yy479;
-        goto yy480;
-      } else {
-        if (yych <= 0xF3)
-          goto yy481;
-        if (yych <= 0xF4)
-          goto yy482;
-        goto yy356;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yych <= 0xE0) {
-      if (yych <= '>') {
-        if (yych <= 0x00)
-          goto yy356;
-        if (yych <= '=')
-          goto yy466;
-        goto yy360;
-      } else {
-        if (yych <= 0x7F)
-          goto yy466;
-        if (yych <= 0xC1)
-          goto yy356;
-        if (yych <= 0xDF)
-          goto yy484;
-        goto yy485;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy490;
-        goto yy486;
-      } else {
-        if (yych <= 0xF0)
-          goto yy487;
-        if (yych <= 0xF3)
-          goto yy488;
-        if (yych <= 0xF4)
-          goto yy489;
-        goto yy356;
-      }
-    }
-  yy477:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy466;
-    goto yy356;
-  yy478:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy477;
-    goto yy356;
-  yy479:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy477;
-    goto yy356;
-  yy480:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy479;
-    goto yy356;
-  yy481:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy479;
-    goto yy356;
-  yy482:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy479;
-    goto yy356;
-  yy483:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy477;
-    goto yy356;
-  yy484:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy466;
-    goto yy356;
-  yy485:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy484;
-    goto yy356;
-  yy486:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy484;
-    goto yy356;
-  yy487:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy486;
-    goto yy356;
-  yy488:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0xBF)
-      goto yy486;
-    goto yy356;
-  yy489:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x8F)
-      goto yy486;
-    goto yy356;
-  yy490:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy356;
-    if (yych <= 0x9F)
-      goto yy484;
-    goto yy356;
-  }
-}
-
-// Try to match an HTML block tag start line, returning
-// an integer code for the type of block (1-6, matching the spec).
-// #7 is handled by a separate function, below.
-bufsize_t _scan_html_block_start(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-
-  {
-    unsigned char yych;
-    yych = *p;
-    if (yych == '<')
-      goto yy495;
-    ++p;
-  yy494 : { return 0; }
-  yy495:
-    yych = *(marker = ++p);
-    switch (yych) {
-    case '!':
-      goto yy513;
-    case '/':
-      goto yy496;
-    case '?':
-      goto yy514;
-    case 'A':
-    case 'a':
-      goto yy499;
-    case 'B':
-    case 'b':
-      goto yy500;
-    case 'C':
-    case 'c':
-      goto yy501;
-    case 'D':
-    case 'd':
-      goto yy502;
-    case 'F':
-    case 'f':
-      goto yy503;
-    case 'H':
-    case 'h':
-      goto yy504;
-    case 'I':
-    case 'i':
-      goto yy505;
-    case 'L':
-    case 'l':
-      goto yy506;
-    case 'M':
-    case 'm':
-      goto yy507;
-    case 'N':
-    case 'n':
-      goto yy508;
-    case 'O':
-    case 'o':
-      goto yy509;
-    case 'P':
-    case 'p':
-      goto yy498;
-    case 'S':
-    case 's':
-      goto yy510;
-    case 'T':
-    case 't':
-      goto yy511;
-    case 'U':
-    case 'u':
-      goto yy512;
-    default:
-      goto yy494;
-    }
-  yy496:
-    yych = *++p;
-    switch (yych) {
-    case 'A':
-    case 'a':
-      goto yy499;
-    case 'B':
-    case 'b':
-      goto yy500;
-    case 'C':
-    case 'c':
-      goto yy501;
-    case 'D':
-    case 'd':
-      goto yy502;
-    case 'F':
-    case 'f':
-      goto yy503;
-    case 'H':
-    case 'h':
-      goto yy504;
-    case 'I':
-    case 'i':
-      goto yy505;
-    case 'L':
-    case 'l':
-      goto yy506;
-    case 'M':
-    case 'm':
-      goto yy507;
-    case 'N':
-    case 'n':
-      goto yy508;
-    case 'O':
-    case 'o':
-      goto yy509;
-    case 'P':
-    case 'p':
-      goto yy698;
-    case 'S':
-    case 's':
-      goto yy699;
-    case 'T':
-    case 't':
-      goto yy511;
-    case 'U':
-    case 'u':
-      goto yy512;
-    default:
-      goto yy497;
-    }
-  yy497:
-    p = marker;
-    goto yy494;
-  yy498:
-    yych = *++p;
-    if (yych <= '>') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        if (yych <= 0x1F)
-          goto yy497;
-        goto yy530;
-      } else {
-        if (yych == '/')
-          goto yy532;
-        if (yych <= '=')
-          goto yy497;
-        goto yy530;
-      }
-    } else {
-      if (yych <= 'R') {
-        if (yych == 'A')
-          goto yy695;
-        if (yych <= 'Q')
-          goto yy497;
-        goto yy694;
-      } else {
-        if (yych <= 'a') {
-          if (yych <= '`')
-            goto yy497;
-          goto yy695;
-        } else {
-          if (yych == 'r')
-            goto yy694;
-          goto yy497;
-        }
-      }
-    }
-  yy499:
-    yych = *++p;
-    if (yych <= 'S') {
-      if (yych <= 'D') {
-        if (yych <= 'C')
-          goto yy497;
-        goto yy683;
-      } else {
-        if (yych <= 'Q')
-          goto yy497;
-        if (yych <= 'R')
-          goto yy682;
-        goto yy681;
-      }
-    } else {
-      if (yych <= 'q') {
-        if (yych == 'd')
-          goto yy683;
-        goto yy497;
-      } else {
-        if (yych <= 'r')
-          goto yy682;
-        if (yych <= 's')
-          goto yy681;
-        goto yy497;
-      }
-    }
-  yy500:
-    yych = *++p;
-    if (yych <= 'O') {
-      if (yych <= 'K') {
-        if (yych == 'A')
-          goto yy667;
-        goto yy497;
-      } else {
-        if (yych <= 'L')
-          goto yy666;
-        if (yych <= 'N')
-          goto yy497;
-        goto yy665;
-      }
-    } else {
-      if (yych <= 'k') {
-        if (yych == 'a')
-          goto yy667;
-        goto yy497;
-      } else {
-        if (yych <= 'l')
-          goto yy666;
-        if (yych == 'o')
-          goto yy665;
-        goto yy497;
-      }
-    }
-  yy501:
-    yych = *++p;
-    if (yych <= 'O') {
-      if (yych <= 'D') {
-        if (yych == 'A')
-          goto yy652;
-        goto yy497;
-      } else {
-        if (yych <= 'E')
-          goto yy651;
-        if (yych <= 'N')
-          goto yy497;
-        goto yy650;
-      }
-    } else {
-      if (yych <= 'd') {
-        if (yych == 'a')
-          goto yy652;
-        goto yy497;
-      } else {
-        if (yych <= 'e')
-          goto yy651;
-        if (yych == 'o')
-          goto yy650;
-        goto yy497;
-      }
-    }
-  yy502:
-    yych = *++p;
-    switch (yych) {
-    case 'D':
-    case 'L':
-    case 'T':
-    case 'd':
-    case 'l':
-    case 't':
-      goto yy529;
-    case 'E':
-    case 'e':
-      goto yy642;
-    case 'I':
-    case 'i':
-      goto yy641;
-    default:
-      goto yy497;
-    }
-  yy503:
-    yych = *++p;
-    if (yych <= 'R') {
-      if (yych <= 'N') {
-        if (yych == 'I')
-          goto yy617;
-        goto yy497;
-      } else {
-        if (yych <= 'O')
-          goto yy616;
-        if (yych <= 'Q')
-          goto yy497;
-        goto yy615;
-      }
-    } else {
-      if (yych <= 'n') {
-        if (yych == 'i')
-          goto yy617;
-        goto yy497;
-      } else {
-        if (yych <= 'o')
-          goto yy616;
-        if (yych == 'r')
-          goto yy615;
-        goto yy497;
-      }
-    }
-  yy504:
-    yych = *++p;
-    if (yych <= 'S') {
-      if (yych <= 'D') {
-        if (yych <= '0')
-          goto yy497;
-        if (yych <= '6')
-          goto yy529;
-        goto yy497;
-      } else {
-        if (yych <= 'E')
-          goto yy610;
-        if (yych == 'R')
-          goto yy529;
-        goto yy497;
-      }
-    } else {
-      if (yych <= 'q') {
-        if (yych <= 'T')
-          goto yy609;
-        if (yych == 'e')
-          goto yy610;
-        goto yy497;
-      } else {
-        if (yych <= 'r')
-          goto yy529;
-        if (yych == 't')
-          goto yy609;
-        goto yy497;
-      }
-    }
-  yy505:
-    yych = *++p;
-    if (yych == 'F')
-      goto yy605;
-    if (yych == 'f')
-      goto yy605;
-    goto yy497;
-  yy506:
-    yych = *++p;
-    if (yych <= 'I') {
-      if (yych == 'E')
-        goto yy600;
-      if (yych <= 'H')
-        goto yy497;
-      goto yy599;
-    } else {
-      if (yych <= 'e') {
-        if (yych <= 'd')
-          goto yy497;
-        goto yy600;
-      } else {
-        if (yych == 'i')
-          goto yy599;
-        goto yy497;
-      }
-    }
-  yy507:
-    yych = *++p;
-    if (yych <= 'E') {
-      if (yych == 'A')
-        goto yy591;
-      if (yych <= 'D')
-        goto yy497;
-      goto yy590;
-    } else {
-      if (yych <= 'a') {
-        if (yych <= '`')
-          goto yy497;
-        goto yy591;
-      } else {
-        if (yych == 'e')
-          goto yy590;
-        goto yy497;
-      }
-    }
-  yy508:
-    yych = *++p;
-    if (yych <= 'O') {
-      if (yych == 'A')
-        goto yy584;
-      if (yych <= 'N')
-        goto yy497;
-      goto yy583;
-    } else {
-      if (yych <= 'a') {
-        if (yych <= '`')
-          goto yy497;
-        goto yy584;
-      } else {
-        if (yych == 'o')
-          goto yy583;
-        goto yy497;
-      }
-    }
-  yy509:
-    yych = *++p;
-    if (yych <= 'P') {
-      if (yych == 'L')
-        goto yy529;
-      if (yych <= 'O')
-        goto yy497;
-      goto yy575;
-    } else {
-      if (yych <= 'l') {
-        if (yych <= 'k')
-          goto yy497;
-        goto yy529;
-      } else {
-        if (yych == 'p')
-          goto yy575;
-        goto yy497;
-      }
-    }
-  yy510:
-    yych = *++p;
-    switch (yych) {
-    case 'C':
-    case 'c':
-      goto yy552;
-    case 'E':
-    case 'e':
-      goto yy555;
-    case 'O':
-    case 'o':
-      goto yy554;
-    case 'T':
-    case 't':
-      goto yy551;
-    case 'U':
-    case 'u':
-      goto yy553;
-    default:
-      goto yy497;
-    }
-  yy511:
-    yych = *++p;
-    switch (yych) {
-    case 'A':
-    case 'a':
-      goto yy538;
-    case 'B':
-    case 'b':
-      goto yy537;
-    case 'D':
-    case 'd':
-      goto yy529;
-    case 'F':
-    case 'f':
-      goto yy536;
-    case 'H':
-    case 'h':
-      goto yy535;
-    case 'I':
-    case 'i':
-      goto yy534;
-    case 'R':
-    case 'r':
-      goto yy533;
-    default:
-      goto yy497;
-    }
-  yy512:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy529;
-    if (yych == 'l')
-      goto yy529;
-    goto yy497;
-  yy513:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych == '-')
-        goto yy516;
-      goto yy497;
-    } else {
-      if (yych <= 'Z')
-        goto yy517;
-      if (yych <= '[')
-        goto yy519;
-      goto yy497;
-    }
-  yy514:
-    ++p;
-    { return 3; }
-  yy516:
-    yych = *++p;
-    if (yych == '-')
-      goto yy527;
-    goto yy497;
-  yy517:
-    ++p;
-    { return 4; }
-  yy519:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy520;
-    if (yych != 'c')
-      goto yy497;
-  yy520:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy521;
-    if (yych != 'd')
-      goto yy497;
-  yy521:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy522;
-    if (yych != 'a')
-      goto yy497;
-  yy522:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy523;
-    if (yych != 't')
-      goto yy497;
-  yy523:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy524;
-    if (yych != 'a')
-      goto yy497;
-  yy524:
-    yych = *++p;
-    if (yych != '[')
-      goto yy497;
-    ++p;
-    { return 5; }
-  yy527:
-    ++p;
-    { return 2; }
-  yy529:
-    yych = *++p;
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy497;
-      if (yych <= '\r')
-        goto yy530;
-      if (yych <= 0x1F)
-        goto yy497;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      } else {
-        if (yych != '>')
-          goto yy497;
-      }
-    }
-  yy530:
-    ++p;
-    { return 6; }
-  yy532:
-    yych = *++p;
-    if (yych == '>')
-      goto yy530;
-    goto yy497;
-  yy533:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= ' ')
-          goto yy530;
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych == '>')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= 'A')
-          goto yy549;
-        if (yych == 'a')
-          goto yy549;
-        goto yy497;
-      }
-    }
-  yy534:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy547;
-    if (yych == 't')
-      goto yy547;
-    goto yy497;
-  yy535:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= ' ')
-          goto yy530;
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      }
-    } else {
-      if (yych <= 'D') {
-        if (yych == '>')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= 'E')
-          goto yy545;
-        if (yych == 'e')
-          goto yy545;
-        goto yy497;
-      }
-    }
-  yy536:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy543;
-    if (yych == 'o')
-      goto yy543;
-    goto yy497;
-  yy537:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy541;
-    if (yych == 'o')
-      goto yy541;
-    goto yy497;
-  yy538:
-    yych = *++p;
-    if (yych == 'B')
-      goto yy539;
-    if (yych != 'b')
-      goto yy497;
-  yy539:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy540;
-    if (yych != 'l')
-      goto yy497;
-  yy540:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy529;
-    if (yych == 'e')
-      goto yy529;
-    goto yy497;
-  yy541:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy542;
-    if (yych != 'd')
-      goto yy497;
-  yy542:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy529;
-    if (yych == 'y')
-      goto yy529;
-    goto yy497;
-  yy543:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy544;
-    if (yych != 'o')
-      goto yy497;
-  yy544:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy529;
-    if (yych == 't')
-      goto yy529;
-    goto yy497;
-  yy545:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy546;
-    if (yych != 'a')
-      goto yy497;
-  yy546:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy529;
-    if (yych == 'd')
-      goto yy529;
-    goto yy497;
-  yy547:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy548;
-    if (yych != 'l')
-      goto yy497;
-  yy548:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy529;
-    if (yych == 'e')
-      goto yy529;
-    goto yy497;
-  yy549:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy550;
-    if (yych != 'c')
-      goto yy497;
-  yy550:
-    yych = *++p;
-    if (yych == 'K')
-      goto yy529;
-    if (yych == 'k')
-      goto yy529;
-    goto yy497;
-  yy551:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy573;
-    if (yych == 'y')
-      goto yy573;
-    goto yy497;
-  yy552:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy567;
-    if (yych == 'r')
-      goto yy567;
-    goto yy497;
-  yy553:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy563;
-    if (yych == 'm')
-      goto yy563;
-    goto yy497;
-  yy554:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy560;
-    if (yych == 'u')
-      goto yy560;
-    goto yy497;
-  yy555:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy556;
-    if (yych != 'c')
-      goto yy497;
-  yy556:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy557;
-    if (yych != 't')
-      goto yy497;
-  yy557:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy558;
-    if (yych != 'i')
-      goto yy497;
-  yy558:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy559;
-    if (yych != 'o')
-      goto yy497;
-  yy559:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy529;
-    if (yych == 'n')
-      goto yy529;
-    goto yy497;
-  yy560:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy561;
-    if (yych != 'r')
-      goto yy497;
-  yy561:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy562;
-    if (yych != 'c')
-      goto yy497;
-  yy562:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy529;
-    if (yych == 'e')
-      goto yy529;
-    goto yy497;
-  yy563:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy564;
-    if (yych != 'm')
-      goto yy497;
-  yy564:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy565;
-    if (yych != 'a')
-      goto yy497;
-  yy565:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy566;
-    if (yych != 'r')
-      goto yy497;
-  yy566:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy529;
-    if (yych == 'y')
-      goto yy529;
-    goto yy497;
-  yy567:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy568;
-    if (yych != 'i')
-      goto yy497;
-  yy568:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy569;
-    if (yych != 'p')
-      goto yy497;
-  yy569:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy570;
-    if (yych != 't')
-      goto yy497;
-  yy570:
-    yych = *++p;
-    if (yych <= 0x1F) {
-      if (yych <= 0x08)
-        goto yy497;
-      if (yych >= 0x0E)
-        goto yy497;
-    } else {
-      if (yych <= ' ')
-        goto yy571;
-      if (yych != '>')
-        goto yy497;
-    }
-  yy571:
-    ++p;
-    { return 1; }
-  yy573:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy574;
-    if (yych != 'l')
-      goto yy497;
-  yy574:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy570;
-    if (yych == 'e')
-      goto yy570;
-    goto yy497;
-  yy575:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy576;
-    if (yych != 't')
-      goto yy497;
-  yy576:
-    yych = *++p;
-    if (yych <= 'I') {
-      if (yych == 'G')
-        goto yy578;
-      if (yych <= 'H')
-        goto yy497;
-    } else {
-      if (yych <= 'g') {
-        if (yych <= 'f')
-          goto yy497;
-        goto yy578;
-      } else {
-        if (yych != 'i')
-          goto yy497;
-      }
-    }
-    yych = *++p;
-    if (yych == 'O')
-      goto yy582;
-    if (yych == 'o')
-      goto yy582;
-    goto yy497;
-  yy578:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy579;
-    if (yych != 'r')
-      goto yy497;
-  yy579:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy580;
-    if (yych != 'o')
-      goto yy497;
-  yy580:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy581;
-    if (yych != 'u')
-      goto yy497;
-  yy581:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy529;
-    if (yych == 'p')
-      goto yy529;
-    goto yy497;
-  yy582:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy529;
-    if (yych == 'n')
-      goto yy529;
-    goto yy497;
-  yy583:
-    yych = *++p;
-    if (yych == 'F')
-      goto yy585;
-    if (yych == 'f')
-      goto yy585;
-    goto yy497;
-  yy584:
-    yych = *++p;
-    if (yych == 'V')
-      goto yy529;
-    if (yych == 'v')
-      goto yy529;
-    goto yy497;
-  yy585:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy586;
-    if (yych != 'r')
-      goto yy497;
-  yy586:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy587;
-    if (yych != 'a')
-      goto yy497;
-  yy587:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy588;
-    if (yych != 'm')
-      goto yy497;
-  yy588:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy589;
-    if (yych != 'e')
-      goto yy497;
-  yy589:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy529;
-    if (yych == 's')
-      goto yy529;
-    goto yy497;
-  yy590:
-    yych = *++p;
-    if (yych <= 'T') {
-      if (yych == 'N')
-        goto yy593;
-      if (yych <= 'S')
-        goto yy497;
-      goto yy594;
-    } else {
-      if (yych <= 'n') {
-        if (yych <= 'm')
-          goto yy497;
-        goto yy593;
-      } else {
-        if (yych == 't')
-          goto yy594;
-        goto yy497;
-      }
-    }
-  yy591:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy592;
-    if (yych != 'i')
-      goto yy497;
-  yy592:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy529;
-    if (yych == 'n')
-      goto yy529;
-    goto yy497;
-  yy593:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy595;
-    if (yych == 'u')
-      goto yy595;
-    goto yy497;
-  yy594:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy529;
-    if (yych == 'a')
-      goto yy529;
-    goto yy497;
-  yy595:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= ' ')
-          goto yy530;
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      }
-    } else {
-      if (yych <= 'H') {
-        if (yych == '>')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= 'I')
-          goto yy596;
-        if (yych != 'i')
-          goto yy497;
-      }
-    }
-  yy596:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy597;
-    if (yych != 't')
-      goto yy497;
-  yy597:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy598;
-    if (yych != 'e')
-      goto yy497;
-  yy598:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy529;
-    if (yych == 'm')
-      goto yy529;
-    goto yy497;
-  yy599:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= ' ')
-          goto yy530;
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      }
-    } else {
-      if (yych <= 'M') {
-        if (yych == '>')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= 'N')
-          goto yy604;
-        if (yych == 'n')
-          goto yy604;
-        goto yy497;
-      }
-    }
-  yy600:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy601;
-    if (yych != 'g')
-      goto yy497;
-  yy601:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy602;
-    if (yych != 'e')
-      goto yy497;
-  yy602:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy603;
-    if (yych != 'n')
-      goto yy497;
-  yy603:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy529;
-    if (yych == 'd')
-      goto yy529;
-    goto yy497;
-  yy604:
-    yych = *++p;
-    if (yych == 'K')
-      goto yy529;
-    if (yych == 'k')
-      goto yy529;
-    goto yy497;
-  yy605:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy606;
-    if (yych != 'r')
-      goto yy497;
-  yy606:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy607;
-    if (yych != 'a')
-      goto yy497;
-  yy607:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy608;
-    if (yych != 'm')
-      goto yy497;
-  yy608:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy529;
-    if (yych == 'e')
-      goto yy529;
-    goto yy497;
-  yy609:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy614;
-    if (yych == 'm')
-      goto yy614;
-    goto yy497;
-  yy610:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy611;
-    if (yych != 'a')
-      goto yy497;
-  yy611:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy612;
-    if (yych != 'd')
-      goto yy497;
-  yy612:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= ' ')
-          goto yy530;
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      }
-    } else {
-      if (yych <= 'D') {
-        if (yych == '>')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= 'E')
-          goto yy613;
-        if (yych != 'e')
-          goto yy497;
-      }
-    }
-  yy613:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy529;
-    if (yych == 'r')
-      goto yy529;
-    goto yy497;
-  yy614:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy529;
-    if (yych == 'l')
-      goto yy529;
-    goto yy497;
-  yy615:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy636;
-    if (yych == 'a')
-      goto yy636;
-    goto yy497;
-  yy616:
-    yych = *++p;
-    if (yych <= 'R') {
-      if (yych == 'O')
-        goto yy632;
-      if (yych <= 'Q')
-        goto yy497;
-      goto yy633;
-    } else {
-      if (yych <= 'o') {
-        if (yych <= 'n')
-          goto yy497;
-        goto yy632;
-      } else {
-        if (yych == 'r')
-          goto yy633;
-        goto yy497;
-      }
-    }
-  yy617:
-    yych = *++p;
-    if (yych <= 'G') {
-      if (yych == 'E')
-        goto yy618;
-      if (yych <= 'F')
-        goto yy497;
-      goto yy619;
-    } else {
-      if (yych <= 'e') {
-        if (yych <= 'd')
-          goto yy497;
-      } else {
-        if (yych == 'g')
-          goto yy619;
-        goto yy497;
-      }
-    }
-  yy618:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy628;
-    if (yych == 'l')
-      goto yy628;
-    goto yy497;
-  yy619:
-    yych = *++p;
-    if (yych <= 'U') {
-      if (yych == 'C')
-        goto yy621;
-      if (yych <= 'T')
-        goto yy497;
-    } else {
-      if (yych <= 'c') {
-        if (yych <= 'b')
-          goto yy497;
-        goto yy621;
-      } else {
-        if (yych != 'u')
-          goto yy497;
-      }
-    }
-    yych = *++p;
-    if (yych == 'R')
-      goto yy627;
-    if (yych == 'r')
-      goto yy627;
-    goto yy497;
-  yy621:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy622;
-    if (yych != 'a')
-      goto yy497;
-  yy622:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy623;
-    if (yych != 'p')
-      goto yy497;
-  yy623:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy624;
-    if (yych != 't')
-      goto yy497;
-  yy624:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy625;
-    if (yych != 'i')
-      goto yy497;
-  yy625:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy626;
-    if (yych != 'o')
-      goto yy497;
-  yy626:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy529;
-    if (yych == 'n')
-      goto yy529;
-    goto yy497;
-  yy627:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy529;
-    if (yych == 'e')
-      goto yy529;
-    goto yy497;
-  yy628:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy629;
-    if (yych != 'd')
-      goto yy497;
-  yy629:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy630;
-    if (yych != 's')
-      goto yy497;
-  yy630:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy631;
-    if (yych != 'e')
-      goto yy497;
-  yy631:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy529;
-    if (yych == 't')
-      goto yy529;
-    goto yy497;
-  yy632:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy634;
-    if (yych == 't')
-      goto yy634;
-    goto yy497;
-  yy633:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy529;
-    if (yych == 'm')
-      goto yy529;
-    goto yy497;
-  yy634:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy635;
-    if (yych != 'e')
-      goto yy497;
-  yy635:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy529;
-    if (yych == 'r')
-      goto yy529;
-    goto yy497;
-  yy636:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy637;
-    if (yych != 'm')
-      goto yy497;
-  yy637:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy638;
-    if (yych != 'e')
-      goto yy497;
-  yy638:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= ' ')
-          goto yy530;
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      }
-    } else {
-      if (yych <= 'R') {
-        if (yych == '>')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= 'S')
-          goto yy639;
-        if (yych != 's')
-          goto yy497;
-      }
-    }
-  yy639:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy640;
-    if (yych != 'e')
-      goto yy497;
-  yy640:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy529;
-    if (yych == 't')
-      goto yy529;
-    goto yy497;
-  yy641:
-    yych = *++p;
-    if (yych <= 'V') {
-      if (yych <= 'Q') {
-        if (yych == 'A')
-          goto yy647;
-        goto yy497;
-      } else {
-        if (yych <= 'R')
-          goto yy529;
-        if (yych <= 'U')
-          goto yy497;
-        goto yy529;
-      }
-    } else {
-      if (yych <= 'q') {
-        if (yych == 'a')
-          goto yy647;
-        goto yy497;
-      } else {
-        if (yych <= 'r')
-          goto yy529;
-        if (yych == 'v')
-          goto yy529;
-        goto yy497;
-      }
-    }
-  yy642:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy643;
-    if (yych != 't')
-      goto yy497;
-  yy643:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy644;
-    if (yych != 'a')
-      goto yy497;
-  yy644:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy645;
-    if (yych != 'i')
-      goto yy497;
-  yy645:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy646;
-    if (yych != 'l')
-      goto yy497;
-  yy646:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy529;
-    if (yych == 's')
-      goto yy529;
-    goto yy497;
-  yy647:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy648;
-    if (yych != 'l')
-      goto yy497;
-  yy648:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy649;
-    if (yych != 'o')
-      goto yy497;
-  yy649:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy529;
-    if (yych == 'g')
-      goto yy529;
-    goto yy497;
-  yy650:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy660;
-    if (yych == 'l')
-      goto yy660;
-    goto yy497;
-  yy651:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy657;
-    if (yych == 'n')
-      goto yy657;
-    goto yy497;
-  yy652:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy653;
-    if (yych != 'p')
-      goto yy497;
-  yy653:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy654;
-    if (yych != 't')
-      goto yy497;
-  yy654:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy655;
-    if (yych != 'i')
-      goto yy497;
-  yy655:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy656;
-    if (yych != 'o')
-      goto yy497;
-  yy656:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy529;
-    if (yych == 'n')
-      goto yy529;
-    goto yy497;
-  yy657:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy658;
-    if (yych != 't')
-      goto yy497;
-  yy658:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy659;
-    if (yych != 'e')
-      goto yy497;
-  yy659:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy529;
-    if (yych == 'r')
-      goto yy529;
-    goto yy497;
-  yy660:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= ' ')
-          goto yy530;
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      }
-    } else {
-      if (yych <= 'F') {
-        if (yych == '>')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= 'G')
-          goto yy661;
-        if (yych != 'g')
-          goto yy497;
-      }
-    }
-  yy661:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy662;
-    if (yych != 'r')
-      goto yy497;
-  yy662:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy663;
-    if (yych != 'o')
-      goto yy497;
-  yy663:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy664;
-    if (yych != 'u')
-      goto yy497;
-  yy664:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy529;
-    if (yych == 'p')
-      goto yy529;
-    goto yy497;
-  yy665:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy680;
-    if (yych == 'd')
-      goto yy680;
-    goto yy497;
-  yy666:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy673;
-    if (yych == 'o')
-      goto yy673;
-    goto yy497;
-  yy667:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy668;
-    if (yych != 's')
-      goto yy497;
-  yy668:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy669;
-    if (yych != 'e')
-      goto yy497;
-  yy669:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= ' ')
-          goto yy530;
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      }
-    } else {
-      if (yych <= 'E') {
-        if (yych == '>')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= 'F')
-          goto yy670;
-        if (yych != 'f')
-          goto yy497;
-      }
-    }
-  yy670:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy671;
-    if (yych != 'o')
-      goto yy497;
-  yy671:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy672;
-    if (yych != 'n')
-      goto yy497;
-  yy672:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy529;
-    if (yych == 't')
-      goto yy529;
-    goto yy497;
-  yy673:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy674;
-    if (yych != 'c')
-      goto yy497;
-  yy674:
-    yych = *++p;
-    if (yych == 'K')
-      goto yy675;
-    if (yych != 'k')
-      goto yy497;
-  yy675:
-    yych = *++p;
-    if (yych == 'Q')
-      goto yy676;
-    if (yych != 'q')
-      goto yy497;
-  yy676:
-    yych = *++p;
-    if (yych == 'U')
-      goto yy677;
-    if (yych != 'u')
-      goto yy497;
-  yy677:
-    yych = *++p;
-    if (yych == 'O')
-      goto yy678;
-    if (yych != 'o')
-      goto yy497;
-  yy678:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy679;
-    if (yych != 't')
-      goto yy497;
-  yy679:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy529;
-    if (yych == 'e')
-      goto yy529;
-    goto yy497;
-  yy680:
-    yych = *++p;
-    if (yych == 'Y')
-      goto yy529;
-    if (yych == 'y')
-      goto yy529;
-    goto yy497;
-  yy681:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy692;
-    if (yych == 'i')
-      goto yy692;
-    goto yy497;
-  yy682:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy688;
-    if (yych == 't')
-      goto yy688;
-    goto yy497;
-  yy683:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy684;
-    if (yych != 'd')
-      goto yy497;
-  yy684:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy685;
-    if (yych != 'r')
-      goto yy497;
-  yy685:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy686;
-    if (yych != 'e')
-      goto yy497;
-  yy686:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy687;
-    if (yych != 's')
-      goto yy497;
-  yy687:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy529;
-    if (yych == 's')
-      goto yy529;
-    goto yy497;
-  yy688:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy689;
-    if (yych != 'i')
-      goto yy497;
-  yy689:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy690;
-    if (yych != 'c')
-      goto yy497;
-  yy690:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy691;
-    if (yych != 'l')
-      goto yy497;
-  yy691:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy529;
-    if (yych == 'e')
-      goto yy529;
-    goto yy497;
-  yy692:
-    yych = *++p;
-    if (yych == 'D')
-      goto yy693;
-    if (yych != 'd')
-      goto yy497;
-  yy693:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy529;
-    if (yych == 'e')
-      goto yy529;
-    goto yy497;
-  yy694:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy570;
-    if (yych == 'e')
-      goto yy570;
-    goto yy497;
-  yy695:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy696;
-    if (yych != 'r')
-      goto yy497;
-  yy696:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy697;
-    if (yych != 'a')
-      goto yy497;
-  yy697:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy529;
-    if (yych == 'm')
-      goto yy529;
-    goto yy497;
-  yy698:
-    yych = *++p;
-    if (yych <= '/') {
-      if (yych <= 0x1F) {
-        if (yych <= 0x08)
-          goto yy497;
-        if (yych <= '\r')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= ' ')
-          goto yy530;
-        if (yych <= '.')
-          goto yy497;
-        goto yy532;
-      }
-    } else {
-      if (yych <= '@') {
-        if (yych == '>')
-          goto yy530;
-        goto yy497;
-      } else {
-        if (yych <= 'A')
-          goto yy695;
-        if (yych == 'a')
-          goto yy695;
-        goto yy497;
-      }
-    }
-  yy699:
-    ++p;
-    if ((yych = *p) <= 'U') {
-      if (yych <= 'N') {
-        if (yych == 'E')
-          goto yy555;
-        goto yy497;
-      } else {
-        if (yych <= 'O')
-          goto yy554;
-        if (yych <= 'T')
-          goto yy497;
-        goto yy553;
-      }
-    } else {
-      if (yych <= 'n') {
-        if (yych == 'e')
-          goto yy555;
-        goto yy497;
-      } else {
-        if (yych <= 'o')
-          goto yy554;
-        if (yych == 'u')
-          goto yy553;
-        goto yy497;
-      }
-    }
-  }
-}
-
-// Try to match an HTML block tag start line of type 7, returning
-// 7 if successful, 0 if not.
-bufsize_t _scan_html_block_start_7(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,   224, 224, 224, 224, 224, 224, 224, 224, 198, 202, 194, 198, 194,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 198, 224, 64,  224, 224, 224, 224, 128, 224, 224,
-        224, 224, 224, 241, 240, 224, 241, 241, 241, 241, 241, 241, 241, 241,
-        241, 241, 240, 224, 192, 192, 192, 224, 224, 241, 241, 241, 241, 241,
-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
-        241, 241, 241, 241, 241, 241, 241, 224, 224, 224, 224, 240, 192, 241,
-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 224, 224, 224,
-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *p;
-    if (yych == '<')
-      goto yy704;
-    ++p;
-  yy703 : { return 0; }
-  yy704:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '@') {
-      if (yych == '/')
-        goto yy708;
-      goto yy703;
-    } else {
-      if (yych <= 'Z')
-        goto yy705;
-      if (yych <= '`')
-        goto yy703;
-      if (yych >= '{')
-        goto yy703;
-    }
-  yy705:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 1) {
-      goto yy705;
-    }
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy707;
-      if (yych <= '\r')
-        goto yy719;
-      if (yych >= ' ')
-        goto yy719;
-    } else {
-      if (yych <= '/') {
-        if (yych >= '/')
-          goto yy721;
-      } else {
-        if (yych == '>')
-          goto yy713;
-      }
-    }
-  yy707:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy703;
-    } else {
-      goto yy717;
-    }
-  yy708:
-    yych = *++p;
-    if (yych <= '@')
-      goto yy707;
-    if (yych <= 'Z')
-      goto yy709;
-    if (yych <= '`')
-      goto yy707;
-    if (yych >= '{')
-      goto yy707;
-  yy709:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 2) {
-      goto yy711;
-    }
-    if (yych <= '=') {
-      if (yych <= '-') {
-        if (yych <= ',')
-          goto yy707;
-        goto yy709;
-      } else {
-        if (yych <= '/')
-          goto yy707;
-        if (yych <= '9')
-          goto yy709;
-        goto yy707;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '>')
-          goto yy713;
-        if (yych <= '@')
-          goto yy707;
-        goto yy709;
-      } else {
-        if (yych <= '`')
-          goto yy707;
-        if (yych <= 'z')
-          goto yy709;
-        goto yy707;
-      }
-    }
-  yy711:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 2) {
-      goto yy711;
-    }
-    if (yych != '>')
-      goto yy707;
-  yy713:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy713;
-    }
-    if (yych <= 0x08)
-      goto yy707;
-    if (yych <= '\n')
-      goto yy715;
-    if (yych <= '\v')
-      goto yy707;
-    if (yych <= '\r')
-      goto yy718;
-    goto yy707;
-  yy715:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 4) {
-      goto yy713;
-    }
-    if (yych <= 0x08)
-      goto yy717;
-    if (yych <= '\n')
-      goto yy715;
-    if (yych <= '\v')
-      goto yy717;
-    if (yych <= '\r')
-      goto yy718;
-  yy717 : { return 7; }
-  yy718:
-    yych = *++p;
-    goto yy717;
-  yy719:
-    ++p;
-    yych = *p;
-    if (yych <= ':') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy707;
-        if (yych <= '\r')
-          goto yy719;
-        if (yych <= 0x1F)
-          goto yy707;
-        goto yy719;
-      } else {
-        if (yych == '/')
-          goto yy721;
-        if (yych <= '9')
-          goto yy707;
-        goto yy722;
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych == '>')
-          goto yy713;
-        if (yych <= '@')
-          goto yy707;
-        goto yy722;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy707;
-          goto yy722;
-        } else {
-          if (yych <= '`')
-            goto yy707;
-          if (yych <= 'z')
-            goto yy722;
-          goto yy707;
-        }
-      }
-    }
-  yy721:
-    yych = *++p;
-    if (yych == '>')
-      goto yy713;
-    goto yy707;
-  yy722:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy722;
-    }
-    if (yych <= ',') {
-      if (yych <= '\r') {
-        if (yych <= 0x08)
-          goto yy707;
-      } else {
-        if (yych != ' ')
-          goto yy707;
-      }
-    } else {
-      if (yych <= '<') {
-        if (yych <= '/')
-          goto yy721;
-        goto yy707;
-      } else {
-        if (yych <= '=')
-          goto yy726;
-        if (yych <= '>')
-          goto yy713;
-        goto yy707;
-      }
-    }
-  yy724:
-    ++p;
-    yych = *p;
-    if (yych <= '<') {
-      if (yych <= ' ') {
-        if (yych <= 0x08)
-          goto yy707;
-        if (yych <= '\r')
-          goto yy724;
-        if (yych <= 0x1F)
-          goto yy707;
-        goto yy724;
-      } else {
-        if (yych <= '/') {
-          if (yych <= '.')
-            goto yy707;
-          goto yy721;
-        } else {
-          if (yych == ':')
-            goto yy722;
-          goto yy707;
-        }
-      }
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '=')
-          goto yy726;
-        if (yych <= '>')
-          goto yy713;
-        if (yych <= '@')
-          goto yy707;
-        goto yy722;
-      } else {
-        if (yych <= '_') {
-          if (yych <= '^')
-            goto yy707;
-          goto yy722;
-        } else {
-          if (yych <= '`')
-            goto yy707;
-          if (yych <= 'z')
-            goto yy722;
-          goto yy707;
-        }
-      }
-    }
-  yy726:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy728;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '"') {
-        if (yych <= 0x00)
-          goto yy707;
-        if (yych >= '!')
-          goto yy739;
-      } else {
-        if (yych <= '\'')
-          goto yy737;
-        if (yych <= 0xC1)
-          goto yy707;
-        if (yych <= 0xDF)
-          goto yy730;
-        goto yy731;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy736;
-        goto yy732;
-      } else {
-        if (yych <= 0xF0)
-          goto yy733;
-        if (yych <= 0xF3)
-          goto yy734;
-        if (yych <= 0xF4)
-          goto yy735;
-        goto yy707;
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy728;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '\'') {
-        if (yych <= 0x00)
-          goto yy707;
-        if (yych <= ' ')
-          goto yy762;
-        if (yych <= '"')
-          goto yy739;
-        goto yy737;
-      } else {
-        if (yych == '>')
-          goto yy713;
-        if (yych <= 0xC1)
-          goto yy707;
-        goto yy730;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy731;
-        if (yych == 0xED)
-          goto yy736;
-        goto yy732;
-      } else {
-        if (yych <= 0xF0)
-          goto yy733;
-        if (yych <= 0xF3)
-          goto yy734;
-        if (yych <= 0xF4)
-          goto yy735;
-        goto yy707;
-      }
-    }
-  yy728:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy728;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy707;
-        if (yych <= ' ')
-          goto yy756;
-        goto yy707;
-      } else {
-        if (yych <= '>')
-          goto yy713;
-        if (yych <= 0xC1)
-          goto yy707;
-        if (yych >= 0xE0)
-          goto yy731;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy736;
-        goto yy732;
-      } else {
-        if (yych <= 0xF0)
-          goto yy733;
-        if (yych <= 0xF3)
-          goto yy734;
-        if (yych <= 0xF4)
-          goto yy735;
-        goto yy707;
-      }
-    }
-  yy730:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy728;
-    goto yy707;
-  yy731:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy730;
-    goto yy707;
-  yy732:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy730;
-    goto yy707;
-  yy733:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy732;
-    goto yy707;
-  yy734:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy732;
-    goto yy707;
-  yy735:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0x8F)
-      goto yy732;
-    goto yy707;
-  yy736:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0x9F)
-      goto yy730;
-    goto yy707;
-  yy737:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy737;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy707;
-        if (yych <= '\'')
-          goto yy748;
-        goto yy707;
-      } else {
-        if (yych <= 0xDF)
-          goto yy749;
-        if (yych <= 0xE0)
-          goto yy750;
-        goto yy751;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy755;
-        if (yych <= 0xEF)
-          goto yy751;
-        goto yy752;
-      } else {
-        if (yych <= 0xF3)
-          goto yy753;
-        if (yych <= 0xF4)
-          goto yy754;
-        goto yy707;
-      }
-    }
-  yy739:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy739;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy707;
-        if (yych <= '"')
-          goto yy748;
-        goto yy707;
-      } else {
-        if (yych <= 0xDF)
-          goto yy741;
-        if (yych <= 0xE0)
-          goto yy742;
-        goto yy743;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy747;
-        if (yych <= 0xEF)
-          goto yy743;
-        goto yy744;
-      } else {
-        if (yych <= 0xF3)
-          goto yy745;
-        if (yych <= 0xF4)
-          goto yy746;
-        goto yy707;
-      }
-    }
-  yy741:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy739;
-    goto yy707;
-  yy742:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy741;
-    goto yy707;
-  yy743:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy741;
-    goto yy707;
-  yy744:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy743;
-    goto yy707;
-  yy745:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy743;
-    goto yy707;
-  yy746:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0x8F)
-      goto yy743;
-    goto yy707;
-  yy747:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0x9F)
-      goto yy741;
-    goto yy707;
-  yy748:
-    ++p;
-    yych = *p;
-    if (yych <= ' ') {
-      if (yych <= 0x08)
-        goto yy707;
-      if (yych <= '\r')
-        goto yy719;
-      if (yych <= 0x1F)
-        goto yy707;
-      goto yy719;
-    } else {
-      if (yych <= '/') {
-        if (yych <= '.')
-          goto yy707;
-        goto yy721;
-      } else {
-        if (yych == '>')
-          goto yy713;
-        goto yy707;
-      }
-    }
-  yy749:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy737;
-    goto yy707;
-  yy750:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy749;
-    goto yy707;
-  yy751:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy749;
-    goto yy707;
-  yy752:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy751;
-    goto yy707;
-  yy753:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0xBF)
-      goto yy751;
-    goto yy707;
-  yy754:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0x8F)
-      goto yy751;
-    goto yy707;
-  yy755:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy707;
-    if (yych <= 0x9F)
-      goto yy749;
-    goto yy707;
-  yy756:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy707;
-          if (yych <= 0x08)
-            goto yy728;
-          goto yy756;
-        } else {
-          if (yych == ' ')
-            goto yy756;
-          if (yych <= '!')
-            goto yy728;
-          goto yy707;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy707;
-          if (yych <= '9')
-            goto yy728;
-        } else {
-          if (yych <= ';')
-            goto yy728;
-          if (yych <= '=')
-            goto yy707;
-          if (yych <= '>')
-            goto yy713;
-          goto yy728;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy758;
-          if (yych <= '^')
-            goto yy728;
-          if (yych >= '`')
-            goto yy707;
-        } else {
-          if (yych <= 'z')
-            goto yy758;
-          if (yych <= 0x7F)
-            goto yy728;
-          if (yych <= 0xC1)
-            goto yy707;
-          goto yy730;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy731;
-          if (yych == 0xED)
-            goto yy736;
-          goto yy732;
-        } else {
-          if (yych <= 0xF0)
-            goto yy733;
-          if (yych <= 0xF3)
-            goto yy734;
-          if (yych <= 0xF4)
-            goto yy735;
-          goto yy707;
-        }
-      }
-    }
-  yy758:
-    ++p;
-    yych = *p;
-    if (yych <= '>') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy707;
-          if (yych <= 0x08)
-            goto yy728;
-          if (yych >= 0x0E)
-            goto yy728;
-        } else {
-          if (yych <= ' ')
-            goto yy760;
-          if (yych == '"')
-            goto yy707;
-          goto yy728;
-        }
-      } else {
-        if (yych <= '/') {
-          if (yych <= '\'')
-            goto yy707;
-          if (yych <= ',')
-            goto yy728;
-          if (yych <= '.')
-            goto yy758;
-          goto yy728;
-        } else {
-          if (yych <= ';') {
-            if (yych <= ':')
-              goto yy758;
-            goto yy728;
-          } else {
-            if (yych <= '<')
-              goto yy707;
-            if (yych <= '=')
-              goto yy726;
-            goto yy713;
-          }
-        }
-      }
-    } else {
-      if (yych <= 0xC1) {
-        if (yych <= '_') {
-          if (yych <= '@')
-            goto yy728;
-          if (yych <= 'Z')
-            goto yy758;
-          if (yych <= '^')
-            goto yy728;
-          goto yy758;
-        } else {
-          if (yych <= '`')
-            goto yy707;
-          if (yych <= 'z')
-            goto yy758;
-          if (yych <= 0x7F)
-            goto yy728;
-          goto yy707;
-        }
-      } else {
-        if (yych <= 0xED) {
-          if (yych <= 0xDF)
-            goto yy730;
-          if (yych <= 0xE0)
-            goto yy731;
-          if (yych <= 0xEC)
-            goto yy732;
-          goto yy736;
-        } else {
-          if (yych <= 0xF0) {
-            if (yych <= 0xEF)
-              goto yy732;
-            goto yy733;
-          } else {
-            if (yych <= 0xF3)
-              goto yy734;
-            if (yych <= 0xF4)
-              goto yy735;
-            goto yy707;
-          }
-        }
-      }
-    }
-  yy760:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '&') {
-        if (yych <= 0x1F) {
-          if (yych <= 0x00)
-            goto yy707;
-          if (yych <= 0x08)
-            goto yy728;
-          if (yych <= '\r')
-            goto yy760;
-          goto yy728;
-        } else {
-          if (yych <= ' ')
-            goto yy760;
-          if (yych == '"')
-            goto yy707;
-          goto yy728;
-        }
-      } else {
-        if (yych <= ';') {
-          if (yych <= '\'')
-            goto yy707;
-          if (yych == ':')
-            goto yy758;
-          goto yy728;
-        } else {
-          if (yych <= '<')
-            goto yy707;
-          if (yych <= '=')
-            goto yy726;
-          if (yych <= '>')
-            goto yy713;
-          goto yy728;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy758;
-          if (yych <= '^')
-            goto yy728;
-          if (yych <= '_')
-            goto yy758;
-          goto yy707;
-        } else {
-          if (yych <= 'z')
-            goto yy758;
-          if (yych <= 0x7F)
-            goto yy728;
-          if (yych <= 0xC1)
-            goto yy707;
-          goto yy730;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy731;
-          if (yych == 0xED)
-            goto yy736;
-          goto yy732;
-        } else {
-          if (yych <= 0xF0)
-            goto yy733;
-          if (yych <= 0xF3)
-            goto yy734;
-          if (yych <= 0xF4)
-            goto yy735;
-          goto yy707;
-        }
-      }
-    }
-  yy762:
-    ++p;
-    yych = *p;
-    if (yych <= '@') {
-      if (yych <= '"') {
-        if (yych <= '\r') {
-          if (yych <= 0x00)
-            goto yy707;
-          if (yych <= 0x08)
-            goto yy728;
-          goto yy762;
-        } else {
-          if (yych == ' ')
-            goto yy762;
-          if (yych <= '!')
-            goto yy728;
-          goto yy739;
-        }
-      } else {
-        if (yych <= ':') {
-          if (yych == '\'')
-            goto yy737;
-          if (yych <= '9')
-            goto yy728;
-          goto yy758;
-        } else {
-          if (yych <= ';')
-            goto yy728;
-          if (yych <= '=')
-            goto yy707;
-          if (yych <= '>')
-            goto yy713;
-          goto yy728;
-        }
-      }
-    } else {
-      if (yych <= 0xDF) {
-        if (yych <= '`') {
-          if (yych <= 'Z')
-            goto yy758;
-          if (yych <= '^')
-            goto yy728;
-          if (yych <= '_')
-            goto yy758;
-          goto yy707;
-        } else {
-          if (yych <= 'z')
-            goto yy758;
-          if (yych <= 0x7F)
-            goto yy728;
-          if (yych <= 0xC1)
-            goto yy707;
-          goto yy730;
-        }
-      } else {
-        if (yych <= 0xEF) {
-          if (yych <= 0xE0)
-            goto yy731;
-          if (yych == 0xED)
-            goto yy736;
-          goto yy732;
-        } else {
-          if (yych <= 0xF0)
-            goto yy733;
-          if (yych <= 0xF3)
-            goto yy734;
-          if (yych <= 0xF4)
-            goto yy735;
-          goto yy707;
-        }
-      }
-    }
-  }
-}
-
-// Try to match an HTML block end line of type 1
-bufsize_t _scan_html_block_end_1(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,  64, 64, 64, 64, 64, 64,  64, 64, 64, 0,  64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,
-    };
-    yych = *p;
-    if (yych <= 0xDF) {
-      if (yych <= ';') {
-        if (yych <= 0x00)
-          goto yy766;
-        if (yych != '\n')
-          goto yy768;
-      } else {
-        if (yych <= '<')
-          goto yy769;
-        if (yych <= 0x7F)
-          goto yy768;
-        if (yych >= 0xC2)
-          goto yy770;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy771;
-        if (yych == 0xED)
-          goto yy773;
-        goto yy772;
-      } else {
-        if (yych <= 0xF0)
-          goto yy774;
-        if (yych <= 0xF3)
-          goto yy775;
-        if (yych <= 0xF4)
-          goto yy776;
-      }
-    }
-  yy766:
-    ++p;
-  yy767 : { return 0; }
-  yy768:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '\n') {
-      if (yych <= 0x00)
-        goto yy767;
-      if (yych <= '\t')
-        goto yy781;
-      goto yy767;
-    } else {
-      if (yych <= 0x7F)
-        goto yy781;
-      if (yych <= 0xC1)
-        goto yy767;
-      if (yych <= 0xF4)
-        goto yy781;
-      goto yy767;
-    }
-  yy769:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '.') {
-      if (yych <= 0x00)
-        goto yy767;
-      if (yych == '\n')
-        goto yy767;
-      goto yy781;
-    } else {
-      if (yych <= 0x7F) {
-        if (yych <= '/')
-          goto yy789;
-        goto yy781;
-      } else {
-        if (yych <= 0xC1)
-          goto yy767;
-        if (yych <= 0xF4)
-          goto yy781;
-        goto yy767;
-      }
-    }
-  yy770:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy767;
-    if (yych <= 0xBF)
-      goto yy780;
-    goto yy767;
-  yy771:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x9F)
-      goto yy767;
-    if (yych <= 0xBF)
-      goto yy779;
-    goto yy767;
-  yy772:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy767;
-    if (yych <= 0xBF)
-      goto yy779;
-    goto yy767;
-  yy773:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy767;
-    if (yych <= 0x9F)
-      goto yy779;
-    goto yy767;
-  yy774:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x8F)
-      goto yy767;
-    if (yych <= 0xBF)
-      goto yy777;
-    goto yy767;
-  yy775:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy767;
-    if (yych <= 0xBF)
-      goto yy777;
-    goto yy767;
-  yy776:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy767;
-    if (yych >= 0x90)
-      goto yy767;
-  yy777:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy778;
-    if (yych <= 0xBF)
-      goto yy779;
-  yy778:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy767;
-    } else {
-      goto yy795;
-    }
-  yy779:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy778;
-    if (yych >= 0xC0)
-      goto yy778;
-  yy780:
-    ++p;
-    yych = *p;
-  yy781:
-    if (yybm[0 + yych] & 64) {
-      goto yy780;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy778;
-        if (yych >= '=')
-          goto yy778;
-      } else {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        goto yy777;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy788;
-        if (yych <= 0xEF)
-          goto yy777;
-        goto yy785;
-      } else {
-        if (yych <= 0xF3)
-          goto yy786;
-        if (yych <= 0xF4)
-          goto yy787;
-        goto yy778;
-      }
-    }
-  yy782:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '.') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= '/')
-          goto yy789;
-        if (yych <= 0x7F)
-          goto yy780;
-        if (yych <= 0xC1)
-          goto yy778;
-        goto yy779;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych == 0xED)
-          goto yy788;
-        goto yy777;
-      } else {
-        if (yych <= 0xF0)
-          goto yy785;
-        if (yych <= 0xF3)
-          goto yy786;
-        if (yych <= 0xF4)
-          goto yy787;
-        goto yy778;
-      }
-    }
-  yy784:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy778;
-    if (yych <= 0xBF)
-      goto yy779;
-    goto yy778;
-  yy785:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy778;
-    if (yych <= 0xBF)
-      goto yy777;
-    goto yy778;
-  yy786:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy778;
-    if (yych <= 0xBF)
-      goto yy777;
-    goto yy778;
-  yy787:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy778;
-    if (yych <= 0x8F)
-      goto yy777;
-    goto yy778;
-  yy788:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy778;
-    if (yych <= 0x9F)
-      goto yy779;
-    goto yy778;
-  yy789:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 's') {
-      if (yych <= 'P') {
-        if (yych <= '\t') {
-          if (yych <= 0x00)
-            goto yy778;
-          goto yy780;
-        } else {
-          if (yych <= '\n')
-            goto yy778;
-          if (yych <= 'O')
-            goto yy780;
-          goto yy791;
-        }
-      } else {
-        if (yych <= 'o') {
-          if (yych != 'S')
-            goto yy780;
-        } else {
-          if (yych <= 'p')
-            goto yy791;
-          if (yych <= 'r')
-            goto yy780;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        } else {
-          if (yych <= 0xDF)
-            goto yy779;
-          if (yych <= 0xE0)
-            goto yy784;
-          goto yy777;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy788;
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 't') {
-      if (yych <= 'C') {
-        if (yych <= '\t') {
-          if (yych <= 0x00)
-            goto yy778;
-          goto yy780;
-        } else {
-          if (yych <= '\n')
-            goto yy778;
-          if (yych <= 'B')
-            goto yy780;
-          goto yy796;
-        }
-      } else {
-        if (yych <= 'b') {
-          if (yych == 'T')
-            goto yy797;
-          goto yy780;
-        } else {
-          if (yych <= 'c')
-            goto yy796;
-          if (yych <= 's')
-            goto yy780;
-          goto yy797;
-        }
-      }
-    } else {
-      if (yych <= 0xEC) {
-        if (yych <= 0xC1) {
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        } else {
-          if (yych <= 0xDF)
-            goto yy779;
-          if (yych <= 0xE0)
-            goto yy784;
-          goto yy777;
-        }
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xED)
-            goto yy788;
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  yy791:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'Q') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= 'q') {
-          if (yych >= 'S')
-            goto yy780;
-        } else {
-          if (yych <= 'r')
-            goto yy792;
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych <= 0xEC)
-          goto yy777;
-        goto yy788;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  yy792:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'D') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= 'd') {
-          if (yych >= 'F')
-            goto yy780;
-        } else {
-          if (yych <= 'e')
-            goto yy793;
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych <= 0xEC)
-          goto yy777;
-        goto yy788;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  yy793:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= '>')
-          goto yy794;
-        if (yych <= 0x7F)
-          goto yy780;
-        if (yych <= 0xC1)
-          goto yy778;
-        goto yy779;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych == 0xED)
-          goto yy788;
-        goto yy777;
-      } else {
-        if (yych <= 0xF0)
-          goto yy785;
-        if (yych <= 0xF3)
-          goto yy786;
-        if (yych <= 0xF4)
-          goto yy787;
-        goto yy778;
-      }
-    }
-  yy794:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy780;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy795;
-        if (yych <= '<')
-          goto yy782;
-      } else {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        goto yy777;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy788;
-        if (yych <= 0xEF)
-          goto yy777;
-        goto yy785;
-      } else {
-        if (yych <= 0xF3)
-          goto yy786;
-        if (yych <= 0xF4)
-          goto yy787;
-      }
-    }
-  yy795 : { return (bufsize_t)(p - start); }
-  yy796:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'Q') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= 'q') {
-          if (yych <= 'R')
-            goto yy800;
-          goto yy780;
-        } else {
-          if (yych <= 'r')
-            goto yy800;
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych <= 0xEC)
-          goto yy777;
-        goto yy788;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  yy797:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'X') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= 'x') {
-          if (yych >= 'Z')
-            goto yy780;
-        } else {
-          if (yych <= 'y')
-            goto yy798;
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych <= 0xEC)
-          goto yy777;
-        goto yy788;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  yy798:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'K') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= 'k') {
-          if (yych >= 'M')
-            goto yy780;
-        } else {
-          if (yych <= 'l')
-            goto yy799;
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych <= 0xEC)
-          goto yy777;
-        goto yy788;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  yy799:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'D') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= 'd') {
-          if (yych <= 'E')
-            goto yy793;
-          goto yy780;
-        } else {
-          if (yych <= 'e')
-            goto yy793;
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych <= 0xEC)
-          goto yy777;
-        goto yy788;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  yy800:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'H') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= 'h') {
-          if (yych >= 'J')
-            goto yy780;
-        } else {
-          if (yych <= 'i')
-            goto yy801;
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych <= 0xEC)
-          goto yy777;
-        goto yy788;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  yy801:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'O') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= 'o') {
-          if (yych >= 'Q')
-            goto yy780;
-        } else {
-          if (yych <= 'p')
-            goto yy802;
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych <= 0xEC)
-          goto yy777;
-        goto yy788;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  yy802:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy782;
-    }
-    if (yych <= 0xC1) {
-      if (yych <= 'S') {
-        if (yych <= 0x00)
-          goto yy778;
-        if (yych == '\n')
-          goto yy778;
-        goto yy780;
-      } else {
-        if (yych <= 's') {
-          if (yych <= 'T')
-            goto yy793;
-          goto yy780;
-        } else {
-          if (yych <= 't')
-            goto yy793;
-          if (yych <= 0x7F)
-            goto yy780;
-          goto yy778;
-        }
-      }
-    } else {
-      if (yych <= 0xED) {
-        if (yych <= 0xDF)
-          goto yy779;
-        if (yych <= 0xE0)
-          goto yy784;
-        if (yych <= 0xEC)
-          goto yy777;
-        goto yy788;
-      } else {
-        if (yych <= 0xF0) {
-          if (yych <= 0xEF)
-            goto yy777;
-          goto yy785;
-        } else {
-          if (yych <= 0xF3)
-            goto yy786;
-          if (yych <= 0xF4)
-            goto yy787;
-          goto yy778;
-        }
-      }
-    }
-  }
-}
-
-// Try to match an HTML block end line of type 2
-bufsize_t _scan_html_block_end_2(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,  64, 64, 64, 64, 64, 64, 64, 64, 64,  0,  64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,
-    };
-    yych = *p;
-    if (yych <= 0xDF) {
-      if (yych <= ',') {
-        if (yych <= 0x00)
-          goto yy805;
-        if (yych != '\n')
-          goto yy807;
-      } else {
-        if (yych <= '-')
-          goto yy808;
-        if (yych <= 0x7F)
-          goto yy807;
-        if (yych >= 0xC2)
-          goto yy809;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy810;
-        if (yych == 0xED)
-          goto yy812;
-        goto yy811;
-      } else {
-        if (yych <= 0xF0)
-          goto yy813;
-        if (yych <= 0xF3)
-          goto yy814;
-        if (yych <= 0xF4)
-          goto yy815;
-      }
-    }
-  yy805:
-    ++p;
-  yy806 : { return 0; }
-  yy807:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '\n') {
-      if (yych <= 0x00)
-        goto yy806;
-      if (yych <= '\t')
-        goto yy820;
-      goto yy806;
-    } else {
-      if (yych <= 0x7F)
-        goto yy820;
-      if (yych <= 0xC1)
-        goto yy806;
-      if (yych <= 0xF4)
-        goto yy820;
-      goto yy806;
-    }
-  yy808:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 128) {
-      goto yy827;
-    }
-    if (yych <= '\n') {
-      if (yych <= 0x00)
-        goto yy806;
-      if (yych <= '\t')
-        goto yy820;
-      goto yy806;
-    } else {
-      if (yych <= 0x7F)
-        goto yy820;
-      if (yych <= 0xC1)
-        goto yy806;
-      if (yych <= 0xF4)
-        goto yy820;
-      goto yy806;
-    }
-  yy809:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy806;
-    if (yych <= 0xBF)
-      goto yy819;
-    goto yy806;
-  yy810:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x9F)
-      goto yy806;
-    if (yych <= 0xBF)
-      goto yy818;
-    goto yy806;
-  yy811:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy806;
-    if (yych <= 0xBF)
-      goto yy818;
-    goto yy806;
-  yy812:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy806;
-    if (yych <= 0x9F)
-      goto yy818;
-    goto yy806;
-  yy813:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x8F)
-      goto yy806;
-    if (yych <= 0xBF)
-      goto yy816;
-    goto yy806;
-  yy814:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy806;
-    if (yych <= 0xBF)
-      goto yy816;
-    goto yy806;
-  yy815:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy806;
-    if (yych >= 0x90)
-      goto yy806;
-  yy816:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy817;
-    if (yych <= 0xBF)
-      goto yy818;
-  yy817:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy806;
-    } else {
-      goto yy830;
-    }
-  yy818:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy817;
-    if (yych >= 0xC0)
-      goto yy817;
-  yy819:
-    ++p;
-    yych = *p;
-  yy820:
-    if (yybm[0 + yych] & 64) {
-      goto yy819;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy817;
-        if (yych >= '.')
-          goto yy817;
-      } else {
-        if (yych <= 0xDF)
-          goto yy818;
-        if (yych <= 0xE0)
-          goto yy822;
-        goto yy816;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy826;
-        if (yych <= 0xEF)
-          goto yy816;
-        goto yy823;
-      } else {
-        if (yych <= 0xF3)
-          goto yy824;
-        if (yych <= 0xF4)
-          goto yy825;
-        goto yy817;
-      }
-    }
-  yy821:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy819;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy817;
-        if (yych <= '-')
-          goto yy827;
-        goto yy817;
-      } else {
-        if (yych <= 0xDF)
-          goto yy818;
-        if (yych >= 0xE1)
-          goto yy816;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy826;
-        if (yych <= 0xEF)
-          goto yy816;
-        goto yy823;
-      } else {
-        if (yych <= 0xF3)
-          goto yy824;
-        if (yych <= 0xF4)
-          goto yy825;
-        goto yy817;
-      }
-    }
-  yy822:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy817;
-    if (yych <= 0xBF)
-      goto yy818;
-    goto yy817;
-  yy823:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy817;
-    if (yych <= 0xBF)
-      goto yy816;
-    goto yy817;
-  yy824:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy817;
-    if (yych <= 0xBF)
-      goto yy816;
-    goto yy817;
-  yy825:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy817;
-    if (yych <= 0x8F)
-      goto yy816;
-    goto yy817;
-  yy826:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy817;
-    if (yych <= 0x9F)
-      goto yy818;
-    goto yy817;
-  yy827:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy827;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy817;
-        if (yych == '\n')
-          goto yy817;
-        goto yy819;
-      } else {
-        if (yych <= '>')
-          goto yy829;
-        if (yych <= 0x7F)
-          goto yy819;
-        if (yych <= 0xC1)
-          goto yy817;
-        goto yy818;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy822;
-        if (yych == 0xED)
-          goto yy826;
-        goto yy816;
-      } else {
-        if (yych <= 0xF0)
-          goto yy823;
-        if (yych <= 0xF3)
-          goto yy824;
-        if (yych <= 0xF4)
-          goto yy825;
-        goto yy817;
-      }
-    }
-  yy829:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy819;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy830;
-        if (yych <= '-')
-          goto yy821;
-      } else {
-        if (yych <= 0xDF)
-          goto yy818;
-        if (yych <= 0xE0)
-          goto yy822;
-        goto yy816;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy826;
-        if (yych <= 0xEF)
-          goto yy816;
-        goto yy823;
-      } else {
-        if (yych <= 0xF3)
-          goto yy824;
-        if (yych <= 0xF4)
-          goto yy825;
-      }
-    }
-  yy830 : { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match an HTML block end line of type 3
-bufsize_t _scan_html_block_end_3(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,  64, 64, 64, 64, 64, 64, 64, 64, 64,  0,  64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,
-    };
-    yych = *p;
-    if (yych <= 0xDF) {
-      if (yych <= '>') {
-        if (yych <= 0x00)
-          goto yy833;
-        if (yych != '\n')
-          goto yy835;
-      } else {
-        if (yych <= '?')
-          goto yy836;
-        if (yych <= 0x7F)
-          goto yy835;
-        if (yych >= 0xC2)
-          goto yy837;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy838;
-        if (yych == 0xED)
-          goto yy840;
-        goto yy839;
-      } else {
-        if (yych <= 0xF0)
-          goto yy841;
-        if (yych <= 0xF3)
-          goto yy842;
-        if (yych <= 0xF4)
-          goto yy843;
-      }
-    }
-  yy833:
-    ++p;
-  yy834 : { return 0; }
-  yy835:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '\n') {
-      if (yych <= 0x00)
-        goto yy834;
-      if (yych <= '\t')
-        goto yy848;
-      goto yy834;
-    } else {
-      if (yych <= 0x7F)
-        goto yy848;
-      if (yych <= 0xC1)
-        goto yy834;
-      if (yych <= 0xF4)
-        goto yy848;
-      goto yy834;
-    }
-  yy836:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '=') {
-      if (yych <= 0x00)
-        goto yy834;
-      if (yych == '\n')
-        goto yy834;
-      goto yy848;
-    } else {
-      if (yych <= 0x7F) {
-        if (yych <= '>')
-          goto yy856;
-        goto yy848;
-      } else {
-        if (yych <= 0xC1)
-          goto yy834;
-        if (yych <= 0xF4)
-          goto yy848;
-        goto yy834;
-      }
-    }
-  yy837:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy834;
-    if (yych <= 0xBF)
-      goto yy847;
-    goto yy834;
-  yy838:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x9F)
-      goto yy834;
-    if (yych <= 0xBF)
-      goto yy846;
-    goto yy834;
-  yy839:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy834;
-    if (yych <= 0xBF)
-      goto yy846;
-    goto yy834;
-  yy840:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy834;
-    if (yych <= 0x9F)
-      goto yy846;
-    goto yy834;
-  yy841:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x8F)
-      goto yy834;
-    if (yych <= 0xBF)
-      goto yy844;
-    goto yy834;
-  yy842:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy834;
-    if (yych <= 0xBF)
-      goto yy844;
-    goto yy834;
-  yy843:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy834;
-    if (yych >= 0x90)
-      goto yy834;
-  yy844:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy845;
-    if (yych <= 0xBF)
-      goto yy846;
-  yy845:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy834;
-    } else {
-      goto yy857;
-    }
-  yy846:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy845;
-    if (yych >= 0xC0)
-      goto yy845;
-  yy847:
-    ++p;
-    yych = *p;
-  yy848:
-    if (yybm[0 + yych] & 64) {
-      goto yy847;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy845;
-        if (yych >= '@')
-          goto yy845;
-      } else {
-        if (yych <= 0xDF)
-          goto yy846;
-        if (yych <= 0xE0)
-          goto yy851;
-        goto yy844;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy855;
-        if (yych <= 0xEF)
-          goto yy844;
-        goto yy852;
-      } else {
-        if (yych <= 0xF3)
-          goto yy853;
-        if (yych <= 0xF4)
-          goto yy854;
-        goto yy845;
-      }
-    }
-  yy849:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy849;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy845;
-        if (yych == '\n')
-          goto yy845;
-        goto yy847;
-      } else {
-        if (yych <= '>')
-          goto yy856;
-        if (yych <= 0x7F)
-          goto yy847;
-        if (yych <= 0xC1)
-          goto yy845;
-        goto yy846;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy851;
-        if (yych == 0xED)
-          goto yy855;
-        goto yy844;
-      } else {
-        if (yych <= 0xF0)
-          goto yy852;
-        if (yych <= 0xF3)
-          goto yy853;
-        if (yych <= 0xF4)
-          goto yy854;
-        goto yy845;
-      }
-    }
-  yy851:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy845;
-    if (yych <= 0xBF)
-      goto yy846;
-    goto yy845;
-  yy852:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy845;
-    if (yych <= 0xBF)
-      goto yy844;
-    goto yy845;
-  yy853:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy845;
-    if (yych <= 0xBF)
-      goto yy844;
-    goto yy845;
-  yy854:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy845;
-    if (yych <= 0x8F)
-      goto yy844;
-    goto yy845;
-  yy855:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy845;
-    if (yych <= 0x9F)
-      goto yy846;
-    goto yy845;
-  yy856:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy847;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy857;
-        if (yych <= '?')
-          goto yy849;
-      } else {
-        if (yych <= 0xDF)
-          goto yy846;
-        if (yych <= 0xE0)
-          goto yy851;
-        goto yy844;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy855;
-        if (yych <= 0xEF)
-          goto yy844;
-        goto yy852;
-      } else {
-        if (yych <= 0xF3)
-          goto yy853;
-        if (yych <= 0xF4)
-          goto yy854;
-      }
-    }
-  yy857 : { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match an HTML block end line of type 4
-bufsize_t _scan_html_block_end_4(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,  64, 64, 64, 64, 64, 64, 64, 64,  64, 0,  64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,
-    };
-    yych = *p;
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy860;
-        if (yych != '\n')
-          goto yy862;
-      } else {
-        if (yych <= '>')
-          goto yy863;
-        if (yych <= 0x7F)
-          goto yy862;
-        if (yych >= 0xC2)
-          goto yy865;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy866;
-        if (yych == 0xED)
-          goto yy868;
-        goto yy867;
-      } else {
-        if (yych <= 0xF0)
-          goto yy869;
-        if (yych <= 0xF3)
-          goto yy870;
-        if (yych <= 0xF4)
-          goto yy871;
-      }
-    }
-  yy860:
-    ++p;
-  yy861 : { return 0; }
-  yy862:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '\n') {
-      if (yych <= 0x00)
-        goto yy861;
-      if (yych <= '\t')
-        goto yy876;
-      goto yy861;
-    } else {
-      if (yych <= 0x7F)
-        goto yy876;
-      if (yych <= 0xC1)
-        goto yy861;
-      if (yych <= 0xF4)
-        goto yy876;
-      goto yy861;
-    }
-  yy863:
-    yyaccept = 1;
-    yych = *(marker = ++p);
-    if (yych <= '\n') {
-      if (yych <= 0x00)
-        goto yy864;
-      if (yych <= '\t')
-        goto yy876;
-    } else {
-      if (yych <= 0x7F)
-        goto yy876;
-      if (yych <= 0xC1)
-        goto yy864;
-      if (yych <= 0xF4)
-        goto yy876;
-    }
-  yy864 : { return (bufsize_t)(p - start); }
-  yy865:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy861;
-    if (yych <= 0xBF)
-      goto yy875;
-    goto yy861;
-  yy866:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x9F)
-      goto yy861;
-    if (yych <= 0xBF)
-      goto yy874;
-    goto yy861;
-  yy867:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy861;
-    if (yych <= 0xBF)
-      goto yy874;
-    goto yy861;
-  yy868:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy861;
-    if (yych <= 0x9F)
-      goto yy874;
-    goto yy861;
-  yy869:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x8F)
-      goto yy861;
-    if (yych <= 0xBF)
-      goto yy872;
-    goto yy861;
-  yy870:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy861;
-    if (yych <= 0xBF)
-      goto yy872;
-    goto yy861;
-  yy871:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy861;
-    if (yych >= 0x90)
-      goto yy861;
-  yy872:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy873;
-    if (yych <= 0xBF)
-      goto yy874;
-  yy873:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy861;
-    } else {
-      goto yy864;
-    }
-  yy874:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy873;
-    if (yych >= 0xC0)
-      goto yy873;
-  yy875:
-    ++p;
-    yych = *p;
-  yy876:
-    if (yybm[0 + yych] & 64) {
-      goto yy875;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy873;
-        if (yych >= '?')
-          goto yy873;
-      } else {
-        if (yych <= 0xDF)
-          goto yy874;
-        if (yych <= 0xE0)
-          goto yy879;
-        goto yy872;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy883;
-        if (yych <= 0xEF)
-          goto yy872;
-        goto yy880;
-      } else {
-        if (yych <= 0xF3)
-          goto yy881;
-        if (yych <= 0xF4)
-          goto yy882;
-        goto yy873;
-      }
-    }
-  yy877:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy875;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy864;
-        if (yych <= '>')
-          goto yy877;
-        goto yy864;
-      } else {
-        if (yych <= 0xDF)
-          goto yy874;
-        if (yych >= 0xE1)
-          goto yy872;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy883;
-        if (yych <= 0xEF)
-          goto yy872;
-        goto yy880;
-      } else {
-        if (yych <= 0xF3)
-          goto yy881;
-        if (yych <= 0xF4)
-          goto yy882;
-        goto yy864;
-      }
-    }
-  yy879:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy873;
-    if (yych <= 0xBF)
-      goto yy874;
-    goto yy873;
-  yy880:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy873;
-    if (yych <= 0xBF)
-      goto yy872;
-    goto yy873;
-  yy881:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy873;
-    if (yych <= 0xBF)
-      goto yy872;
-    goto yy873;
-  yy882:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy873;
-    if (yych <= 0x8F)
-      goto yy872;
-    goto yy873;
-  yy883:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy873;
-    if (yych <= 0x9F)
-      goto yy874;
-    goto yy873;
-  }
-}
-
-// Try to match an HTML block end line of type 5
-bufsize_t _scan_html_block_end_5(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,  64, 64, 64,  64, 64, 64, 64, 64, 64, 0,  64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
-        64, 64, 0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-        0,  0,  0,  0,
-    };
-    yych = *p;
-    if (yych <= 0xDF) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy886;
-        if (yych != '\n')
-          goto yy888;
-      } else {
-        if (yych <= ']')
-          goto yy889;
-        if (yych <= 0x7F)
-          goto yy888;
-        if (yych >= 0xC2)
-          goto yy890;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy891;
-        if (yych == 0xED)
-          goto yy893;
-        goto yy892;
-      } else {
-        if (yych <= 0xF0)
-          goto yy894;
-        if (yych <= 0xF3)
-          goto yy895;
-        if (yych <= 0xF4)
-          goto yy896;
-      }
-    }
-  yy886:
-    ++p;
-  yy887 : { return 0; }
-  yy888:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= '\n') {
-      if (yych <= 0x00)
-        goto yy887;
-      if (yych <= '\t')
-        goto yy901;
-      goto yy887;
-    } else {
-      if (yych <= 0x7F)
-        goto yy901;
-      if (yych <= 0xC1)
-        goto yy887;
-      if (yych <= 0xF4)
-        goto yy901;
-      goto yy887;
-    }
-  yy889:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 128) {
-      goto yy908;
-    }
-    if (yych <= '\n') {
-      if (yych <= 0x00)
-        goto yy887;
-      if (yych <= '\t')
-        goto yy901;
-      goto yy887;
-    } else {
-      if (yych <= 0x7F)
-        goto yy901;
-      if (yych <= 0xC1)
-        goto yy887;
-      if (yych <= 0xF4)
-        goto yy901;
-      goto yy887;
-    }
-  yy890:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy887;
-    if (yych <= 0xBF)
-      goto yy900;
-    goto yy887;
-  yy891:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x9F)
-      goto yy887;
-    if (yych <= 0xBF)
-      goto yy899;
-    goto yy887;
-  yy892:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy887;
-    if (yych <= 0xBF)
-      goto yy899;
-    goto yy887;
-  yy893:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy887;
-    if (yych <= 0x9F)
-      goto yy899;
-    goto yy887;
-  yy894:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x8F)
-      goto yy887;
-    if (yych <= 0xBF)
-      goto yy897;
-    goto yy887;
-  yy895:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy887;
-    if (yych <= 0xBF)
-      goto yy897;
-    goto yy887;
-  yy896:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x7F)
-      goto yy887;
-    if (yych >= 0x90)
-      goto yy887;
-  yy897:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy898;
-    if (yych <= 0xBF)
-      goto yy899;
-  yy898:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy887;
-    } else {
-      goto yy911;
-    }
-  yy899:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy898;
-    if (yych >= 0xC0)
-      goto yy898;
-  yy900:
-    ++p;
-    yych = *p;
-  yy901:
-    if (yybm[0 + yych] & 64) {
-      goto yy900;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy898;
-        if (yych >= '^')
-          goto yy898;
-      } else {
-        if (yych <= 0xDF)
-          goto yy899;
-        if (yych <= 0xE0)
-          goto yy903;
-        goto yy897;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy907;
-        if (yych <= 0xEF)
-          goto yy897;
-        goto yy904;
-      } else {
-        if (yych <= 0xF3)
-          goto yy905;
-        if (yych <= 0xF4)
-          goto yy906;
-        goto yy898;
-      }
-    }
-  yy902:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy900;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy898;
-        if (yych <= ']')
-          goto yy908;
-        goto yy898;
-      } else {
-        if (yych <= 0xDF)
-          goto yy899;
-        if (yych >= 0xE1)
-          goto yy897;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy907;
-        if (yych <= 0xEF)
-          goto yy897;
-        goto yy904;
-      } else {
-        if (yych <= 0xF3)
-          goto yy905;
-        if (yych <= 0xF4)
-          goto yy906;
-        goto yy898;
-      }
-    }
-  yy903:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy898;
-    if (yych <= 0xBF)
-      goto yy899;
-    goto yy898;
-  yy904:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy898;
-    if (yych <= 0xBF)
-      goto yy897;
-    goto yy898;
-  yy905:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy898;
-    if (yych <= 0xBF)
-      goto yy897;
-    goto yy898;
-  yy906:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy898;
-    if (yych <= 0x8F)
-      goto yy897;
-    goto yy898;
-  yy907:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy898;
-    if (yych <= 0x9F)
-      goto yy899;
-    goto yy898;
-  yy908:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy908;
-    }
-    if (yych <= 0xDF) {
-      if (yych <= '=') {
-        if (yych <= 0x00)
-          goto yy898;
-        if (yych == '\n')
-          goto yy898;
-        goto yy900;
-      } else {
-        if (yych <= '>')
-          goto yy910;
-        if (yych <= 0x7F)
-          goto yy900;
-        if (yych <= 0xC1)
-          goto yy898;
-        goto yy899;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych <= 0xE0)
-          goto yy903;
-        if (yych == 0xED)
-          goto yy907;
-        goto yy897;
-      } else {
-        if (yych <= 0xF0)
-          goto yy904;
-        if (yych <= 0xF3)
-          goto yy905;
-        if (yych <= 0xF4)
-          goto yy906;
-        goto yy898;
-      }
-    }
-  yy910:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy900;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= '\n')
-          goto yy911;
-        if (yych <= ']')
-          goto yy902;
-      } else {
-        if (yych <= 0xDF)
-          goto yy899;
-        if (yych <= 0xE0)
-          goto yy903;
-        goto yy897;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy907;
-        if (yych <= 0xEF)
-          goto yy897;
-        goto yy904;
-      } else {
-        if (yych <= 0xF3)
-          goto yy905;
-        if (yych <= 0xF4)
-          goto yy906;
-      }
-    }
-  yy911 : { return (bufsize_t)(p - start); }
-  }
-}
-
-// Try to match a link title (in single quotes, in double quotes, or
-// in parentheses), returning number of chars matched.  Allow one
-// level of internal nesting (quotes within quotes).
-bufsize_t _scan_link_title(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        0,   224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 96,  224, 224, 224, 224, 160, 224, 192,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *p;
-    if (yych <= '&') {
-      if (yych == '"')
-        goto yy916;
-    } else {
-      if (yych <= '\'')
-        goto yy917;
-      if (yych <= '(')
-        goto yy918;
-    }
-    ++p;
-  yy915 : { return 0; }
-  yy916:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy915;
-    if (yych <= 0x7F)
-      goto yy951;
-    if (yych <= 0xC1)
-      goto yy915;
-    if (yych <= 0xF4)
-      goto yy951;
-    goto yy915;
-  yy917:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy915;
-    if (yych <= 0x7F)
-      goto yy937;
-    if (yych <= 0xC1)
-      goto yy915;
-    if (yych <= 0xF4)
-      goto yy937;
-    goto yy915;
-  yy918:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych <= 0x00)
-      goto yy915;
-    if (yych <= 0x7F)
-      goto yy923;
-    if (yych <= 0xC1)
-      goto yy915;
-    if (yych <= 0xF4)
-      goto yy923;
-    goto yy915;
-  yy919:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy922;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy921;
-        if (yych <= ')')
-          goto yy933;
-        goto yy919;
-      } else {
-        if (yych <= 0xC1)
-          goto yy921;
-        if (yych <= 0xDF)
-          goto yy924;
-        goto yy925;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy930;
-        goto yy926;
-      } else {
-        if (yych <= 0xF0)
-          goto yy927;
-        if (yych <= 0xF3)
-          goto yy928;
-        if (yych <= 0xF4)
-          goto yy929;
-      }
-    }
-  yy921:
-    p = marker;
-    if (yyaccept <= 1) {
-      if (yyaccept == 0) {
-        goto yy915;
-      } else {
-        goto yy932;
-      }
-    } else {
-      if (yyaccept == 2) {
-        goto yy946;
-      } else {
-        goto yy960;
-      }
-    }
-  yy922:
-    ++p;
-    yych = *p;
-  yy923:
-    if (yybm[0 + yych] & 32) {
-      goto yy922;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy921;
-        if (yych <= ')')
-          goto yy931;
-        goto yy919;
-      } else {
-        if (yych <= 0xC1)
-          goto yy921;
-        if (yych >= 0xE0)
-          goto yy925;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy930;
-        goto yy926;
-      } else {
-        if (yych <= 0xF0)
-          goto yy927;
-        if (yych <= 0xF3)
-          goto yy928;
-        if (yych <= 0xF4)
-          goto yy929;
-        goto yy921;
-      }
-    }
-  yy924:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy922;
-    goto yy921;
-  yy925:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy924;
-    goto yy921;
-  yy926:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy924;
-    goto yy921;
-  yy927:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy926;
-    goto yy921;
-  yy928:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy926;
-    goto yy921;
-  yy929:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0x8F)
-      goto yy926;
-    goto yy921;
-  yy930:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0x9F)
-      goto yy924;
-    goto yy921;
-  yy931:
-    ++p;
-  yy932 : { return (bufsize_t)(p - start); }
-  yy933:
-    yyaccept = 1;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy922;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy932;
-        if (yych <= ')')
-          goto yy931;
-        goto yy919;
-      } else {
-        if (yych <= 0xC1)
-          goto yy932;
-        if (yych <= 0xDF)
-          goto yy924;
-        goto yy925;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy930;
-        goto yy926;
-      } else {
-        if (yych <= 0xF0)
-          goto yy927;
-        if (yych <= 0xF3)
-          goto yy928;
-        if (yych <= 0xF4)
-          goto yy929;
-        goto yy932;
-      }
-    }
-  yy934:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy936;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy921;
-        if (yych <= '\'')
-          goto yy947;
-        goto yy934;
-      } else {
-        if (yych <= 0xC1)
-          goto yy921;
-        if (yych <= 0xDF)
-          goto yy938;
-        goto yy939;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy944;
-        goto yy940;
-      } else {
-        if (yych <= 0xF0)
-          goto yy941;
-        if (yych <= 0xF3)
-          goto yy942;
-        if (yych <= 0xF4)
-          goto yy943;
-        goto yy921;
-      }
-    }
-  yy936:
-    ++p;
-    yych = *p;
-  yy937:
-    if (yybm[0 + yych] & 64) {
-      goto yy936;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy921;
-        if (yych <= '\'')
-          goto yy945;
-        goto yy934;
-      } else {
-        if (yych <= 0xC1)
-          goto yy921;
-        if (yych >= 0xE0)
-          goto yy939;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy944;
-        goto yy940;
-      } else {
-        if (yych <= 0xF0)
-          goto yy941;
-        if (yych <= 0xF3)
-          goto yy942;
-        if (yych <= 0xF4)
-          goto yy943;
-        goto yy921;
-      }
-    }
-  yy938:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy936;
-    goto yy921;
-  yy939:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy938;
-    goto yy921;
-  yy940:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy938;
-    goto yy921;
-  yy941:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy940;
-    goto yy921;
-  yy942:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy940;
-    goto yy921;
-  yy943:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0x8F)
-      goto yy940;
-    goto yy921;
-  yy944:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0x9F)
-      goto yy938;
-    goto yy921;
-  yy945:
-    ++p;
-  yy946 : { return (bufsize_t)(p - start); }
-  yy947:
-    yyaccept = 2;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy936;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy946;
-        if (yych <= '\'')
-          goto yy945;
-        goto yy934;
-      } else {
-        if (yych <= 0xC1)
-          goto yy946;
-        if (yych <= 0xDF)
-          goto yy938;
-        goto yy939;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy944;
-        goto yy940;
-      } else {
-        if (yych <= 0xF0)
-          goto yy941;
-        if (yych <= 0xF3)
-          goto yy942;
-        if (yych <= 0xF4)
-          goto yy943;
-        goto yy946;
-      }
-    }
-  yy948:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy950;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy921;
-        if (yych <= '"')
-          goto yy961;
-        goto yy948;
-      } else {
-        if (yych <= 0xC1)
-          goto yy921;
-        if (yych <= 0xDF)
-          goto yy952;
-        goto yy953;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy958;
-        goto yy954;
-      } else {
-        if (yych <= 0xF0)
-          goto yy955;
-        if (yych <= 0xF3)
-          goto yy956;
-        if (yych <= 0xF4)
-          goto yy957;
-        goto yy921;
-      }
-    }
-  yy950:
-    ++p;
-    yych = *p;
-  yy951:
-    if (yybm[0 + yych] & 128) {
-      goto yy950;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy921;
-        if (yych <= '"')
-          goto yy959;
-        goto yy948;
-      } else {
-        if (yych <= 0xC1)
-          goto yy921;
-        if (yych >= 0xE0)
-          goto yy953;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy958;
-        goto yy954;
-      } else {
-        if (yych <= 0xF0)
-          goto yy955;
-        if (yych <= 0xF3)
-          goto yy956;
-        if (yych <= 0xF4)
-          goto yy957;
-        goto yy921;
-      }
-    }
-  yy952:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy950;
-    goto yy921;
-  yy953:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy952;
-    goto yy921;
-  yy954:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy952;
-    goto yy921;
-  yy955:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy954;
-    goto yy921;
-  yy956:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0xBF)
-      goto yy954;
-    goto yy921;
-  yy957:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0x8F)
-      goto yy954;
-    goto yy921;
-  yy958:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy921;
-    if (yych <= 0x9F)
-      goto yy952;
-    goto yy921;
-  yy959:
-    ++p;
-  yy960 : { return (bufsize_t)(p - start); }
-  yy961:
-    yyaccept = 3;
-    marker = ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy950;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '\\') {
-        if (yych <= 0x00)
-          goto yy960;
-        if (yych <= '"')
-          goto yy959;
-        goto yy948;
-      } else {
-        if (yych <= 0xC1)
-          goto yy960;
-        if (yych <= 0xDF)
-          goto yy952;
-        goto yy953;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy958;
-        goto yy954;
-      } else {
-        if (yych <= 0xF0)
-          goto yy955;
-        if (yych <= 0xF3)
-          goto yy956;
-        if (yych <= 0xF4)
-          goto yy957;
-        goto yy960;
-      }
-    }
-  }
-}
-
-// Match space characters, including newlines.
-bufsize_t _scan_spacechars(const unsigned char *p) {
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   128, 0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0,
-    };
-    yych = *p;
-    if (yych <= 0x08)
-      goto yy964;
-    if (yych <= '\r')
-      goto yy966;
-    if (yych == ' ')
-      goto yy966;
-  yy964:
-    ++p;
-    { return 0; }
-  yy966:
-    ++p;
-    yych = *p;
-    goto yy969;
-  yy967 : { return (bufsize_t)(p - start); }
-  yy968:
-    ++p;
-    yych = *p;
-  yy969:
-    if (yybm[0 + yych] & 128) {
-      goto yy968;
-    }
-    goto yy967;
-  }
-}
-
-// Match ATX heading start.
-bufsize_t _scan_atx_heading_start(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,
-    };
-    yych = *p;
-    if (yych == '#')
-      goto yy974;
-    ++p;
-  yy973 : { return 0; }
-  yy974:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 128) {
-      goto yy977;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy973;
-      if (yych >= '\v')
-        goto yy973;
-    } else {
-      if (yych <= '\r')
-        goto yy975;
-      if (yych == '#')
-        goto yy979;
-      goto yy973;
-    }
-  yy975:
-    ++p;
-  yy976 : { return (bufsize_t)(p - start); }
-  yy977:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy977;
-    }
-    goto yy976;
-  yy979:
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy977;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy980;
-      if (yych <= '\n')
-        goto yy975;
-    } else {
-      if (yych <= '\r')
-        goto yy975;
-      if (yych == '#')
-        goto yy981;
-    }
-  yy980:
-    p = marker;
-    goto yy973;
-  yy981:
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy977;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy980;
-      if (yych <= '\n')
-        goto yy975;
-      goto yy980;
-    } else {
-      if (yych <= '\r')
-        goto yy975;
-      if (yych != '#')
-        goto yy980;
-    }
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy977;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy980;
-      if (yych <= '\n')
-        goto yy975;
-      goto yy980;
-    } else {
-      if (yych <= '\r')
-        goto yy975;
-      if (yych != '#')
-        goto yy980;
-    }
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy977;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy980;
-      if (yych <= '\n')
-        goto yy975;
-      goto yy980;
-    } else {
-      if (yych <= '\r')
-        goto yy975;
-      if (yych != '#')
-        goto yy980;
-    }
-    ++p;
-    if (yybm[0 + (yych = *p)] & 128) {
-      goto yy977;
-    }
-    if (yych <= 0x08)
-      goto yy980;
-    if (yych <= '\n')
-      goto yy975;
-    if (yych == '\r')
-      goto yy975;
-    goto yy980;
-  }
-}
-
-// Match setext heading line.  Return 1 for level-1 heading,
-// 2 for level-2, 0 for no match.
-bufsize_t _scan_setext_heading_line(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 32, 0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  32, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 128, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,
-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0,
-    };
-    yych = *p;
-    if (yych == '-')
-      goto yy989;
-    if (yych == '=')
-      goto yy990;
-    ++p;
-  yy988 : { return 0; }
-  yy989:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 128) {
-      goto yy1002;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy988;
-      if (yych <= '\n')
-        goto yy999;
-      goto yy988;
-    } else {
-      if (yych <= '\r')
-        goto yy999;
-      if (yych == ' ')
-        goto yy999;
-      goto yy988;
-    }
-  yy990:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 64) {
-      goto yy996;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy988;
-      if (yych <= '\n')
-        goto yy992;
-      goto yy988;
-    } else {
-      if (yych <= '\r')
-        goto yy992;
-      if (yych == ' ')
-        goto yy992;
-      goto yy988;
-    }
-  yy991:
-    ++p;
-    yych = *p;
-  yy992:
-    if (yybm[0 + yych] & 32) {
-      goto yy991;
-    }
-    if (yych <= 0x08)
-      goto yy993;
-    if (yych <= '\n')
-      goto yy994;
-    if (yych == '\r')
-      goto yy994;
-  yy993:
-    p = marker;
-    goto yy988;
-  yy994:
-    ++p;
-    { return 1; }
-  yy996:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy991;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy993;
-      if (yych <= '\n')
-        goto yy994;
-      goto yy993;
-    } else {
-      if (yych <= '\r')
-        goto yy994;
-      if (yych == '=')
-        goto yy996;
-      goto yy993;
-    }
-  yy998:
-    ++p;
-    yych = *p;
-  yy999:
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy993;
-      if (yych <= '\t')
-        goto yy998;
-      if (yych >= '\v')
-        goto yy993;
-    } else {
-      if (yych <= '\r')
-        goto yy1000;
-      if (yych == ' ')
-        goto yy998;
-      goto yy993;
-    }
-  yy1000:
-    ++p;
-    { return 2; }
-  yy1002:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1002;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy993;
-      if (yych <= '\t')
-        goto yy998;
-      if (yych <= '\n')
-        goto yy1000;
-      goto yy993;
-    } else {
-      if (yych <= '\r')
-        goto yy1000;
-      if (yych == ' ')
-        goto yy998;
-      goto yy993;
-    }
-  }
-}
-
-// Scan a thematic break line: "...three or more hyphens, asterisks,
-// or underscores on a line by themselves. If you wish, you may use
-// spaces between the hyphens or asterisks."
-bufsize_t _scan_thematic_break(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 240, 0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 240, 0, 0, 0,  0, 0, 0, 0,
-        0, 0, 128, 0, 0, 64, 0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 32, 0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,
-    };
-    yych = *p;
-    if (yych <= ',') {
-      if (yych == '*')
-        goto yy1008;
-    } else {
-      if (yych <= '-')
-        goto yy1009;
-      if (yych == '_')
-        goto yy1010;
-    }
-    ++p;
-  yy1007 : { return 0; }
-  yy1008:
-    yych = *(marker = ++p);
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1032;
-      goto yy1007;
-    } else {
-      if (yych <= ' ')
-        goto yy1032;
-      if (yych == '*')
-        goto yy1034;
-      goto yy1007;
-    }
-  yy1009:
-    yych = *(marker = ++p);
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1022;
-      goto yy1007;
-    } else {
-      if (yych <= ' ')
-        goto yy1022;
-      if (yych == '-')
-        goto yy1024;
-      goto yy1007;
-    }
-  yy1010:
-    yych = *(marker = ++p);
-    if (yybm[0 + yych] & 16) {
-      goto yy1011;
-    }
-    if (yych == '_')
-      goto yy1014;
-    goto yy1007;
-  yy1011:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 16) {
-      goto yy1011;
-    }
-    if (yych == '_')
-      goto yy1014;
-  yy1013:
-    p = marker;
-    goto yy1007;
-  yy1014:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1014;
-      goto yy1013;
-    } else {
-      if (yych <= ' ')
-        goto yy1014;
-      if (yych != '_')
-        goto yy1013;
-    }
-  yy1016:
-    ++p;
-    yych = *p;
-    if (yych <= '\r') {
-      if (yych <= '\t') {
-        if (yych <= 0x08)
-          goto yy1013;
-        goto yy1016;
-      } else {
-        if (yych <= '\n')
-          goto yy1018;
-        if (yych <= '\f')
-          goto yy1013;
-      }
-    } else {
-      if (yych <= ' ') {
-        if (yych <= 0x1F)
-          goto yy1013;
-        goto yy1016;
-      } else {
-        if (yych == '_')
-          goto yy1020;
-        goto yy1013;
-      }
-    }
-  yy1018:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1020:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1020;
-    }
-    if (yych <= 0x08)
-      goto yy1013;
-    if (yych <= '\n')
-      goto yy1018;
-    if (yych == '\r')
-      goto yy1018;
-    goto yy1013;
-  yy1022:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1022;
-      goto yy1013;
-    } else {
-      if (yych <= ' ')
-        goto yy1022;
-      if (yych != '-')
-        goto yy1013;
-    }
-  yy1024:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1024;
-      goto yy1013;
-    } else {
-      if (yych <= ' ')
-        goto yy1024;
-      if (yych != '-')
-        goto yy1013;
-    }
-  yy1026:
-    ++p;
-    yych = *p;
-    if (yych <= '\r') {
-      if (yych <= '\t') {
-        if (yych <= 0x08)
-          goto yy1013;
-        goto yy1026;
-      } else {
-        if (yych <= '\n')
-          goto yy1028;
-        if (yych <= '\f')
-          goto yy1013;
-      }
-    } else {
-      if (yych <= ' ') {
-        if (yych <= 0x1F)
-          goto yy1013;
-        goto yy1026;
-      } else {
-        if (yych == '-')
-          goto yy1030;
-        goto yy1013;
-      }
-    }
-  yy1028:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1030:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1030;
-    }
-    if (yych <= 0x08)
-      goto yy1013;
-    if (yych <= '\n')
-      goto yy1028;
-    if (yych == '\r')
-      goto yy1028;
-    goto yy1013;
-  yy1032:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1032;
-      goto yy1013;
-    } else {
-      if (yych <= ' ')
-        goto yy1032;
-      if (yych != '*')
-        goto yy1013;
-    }
-  yy1034:
-    ++p;
-    yych = *p;
-    if (yych <= 0x1F) {
-      if (yych == '\t')
-        goto yy1034;
-      goto yy1013;
-    } else {
-      if (yych <= ' ')
-        goto yy1034;
-      if (yych != '*')
-        goto yy1013;
-    }
-  yy1036:
-    ++p;
-    yych = *p;
-    if (yych <= '\r') {
-      if (yych <= '\t') {
-        if (yych <= 0x08)
-          goto yy1013;
-        goto yy1036;
-      } else {
-        if (yych <= '\n')
-          goto yy1038;
-        if (yych <= '\f')
-          goto yy1013;
-      }
-    } else {
-      if (yych <= ' ') {
-        if (yych <= 0x1F)
-          goto yy1013;
-        goto yy1036;
-      } else {
-        if (yych == '*')
-          goto yy1040;
-        goto yy1013;
-      }
-    }
-  yy1038:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1040:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1040;
-    }
-    if (yych <= 0x08)
-      goto yy1013;
-    if (yych <= '\n')
-      goto yy1038;
-    if (yych == '\r')
-      goto yy1038;
-    goto yy1013;
-  }
-}
-
-// Scan an opening code fence.
-bufsize_t _scan_open_code_fence(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   160, 160, 0,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 96,  160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
-        144, 160, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-        0,   0,   0,   0,
-    };
-    yych = *p;
-    if (yych == '`')
-      goto yy1046;
-    if (yych == '~')
-      goto yy1047;
-    ++p;
-  yy1045 : { return 0; }
-  yy1046:
-    yych = *(marker = ++p);
-    if (yych == '`')
-      goto yy1063;
-    goto yy1045;
-  yy1047:
-    yych = *(marker = ++p);
-    if (yych != '~')
-      goto yy1045;
-    yych = *++p;
-    if (yybm[0 + yych] & 16) {
-      goto yy1050;
-    }
-  yy1049:
-    p = marker;
-    goto yy1045;
-  yy1050:
-    ++p;
-    yych = *p;
-    marker = p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1052;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '~') {
-        if (yych <= 0x00)
-          goto yy1049;
-        if (yych <= '\r')
-          goto yy1061;
-        goto yy1050;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1049;
-        if (yych <= 0xDF)
-          goto yy1054;
-        goto yy1055;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1060;
-        goto yy1056;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1057;
-        if (yych <= 0xF3)
-          goto yy1058;
-        if (yych <= 0xF4)
-          goto yy1059;
-        goto yy1049;
-      }
-    }
-  yy1052:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1052;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy1049;
-        if (yych <= '\r')
-          goto yy1061;
-        goto yy1049;
-      } else {
-        if (yych <= 0xDF)
-          goto yy1054;
-        if (yych <= 0xE0)
-          goto yy1055;
-        goto yy1056;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy1060;
-        if (yych <= 0xEF)
-          goto yy1056;
-        goto yy1057;
-      } else {
-        if (yych <= 0xF3)
-          goto yy1058;
-        if (yych <= 0xF4)
-          goto yy1059;
-        goto yy1049;
-      }
-    }
-  yy1054:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1052;
-    goto yy1049;
-  yy1055:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1054;
-    goto yy1049;
-  yy1056:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1054;
-    goto yy1049;
-  yy1057:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1056;
-    goto yy1049;
-  yy1058:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1056;
-    goto yy1049;
-  yy1059:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0x8F)
-      goto yy1056;
-    goto yy1049;
-  yy1060:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0x9F)
-      goto yy1054;
-    goto yy1049;
-  yy1061:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  yy1063:
-    yych = *++p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1064;
-    }
-    goto yy1049;
-  yy1064:
-    ++p;
-    yych = *p;
-    marker = p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1066;
-    }
-    if (yych <= 0xE0) {
-      if (yych <= '`') {
-        if (yych <= 0x00)
-          goto yy1049;
-        if (yych <= '\r')
-          goto yy1075;
-        goto yy1064;
-      } else {
-        if (yych <= 0xC1)
-          goto yy1049;
-        if (yych <= 0xDF)
-          goto yy1068;
-        goto yy1069;
-      }
-    } else {
-      if (yych <= 0xEF) {
-        if (yych == 0xED)
-          goto yy1074;
-        goto yy1070;
-      } else {
-        if (yych <= 0xF0)
-          goto yy1071;
-        if (yych <= 0xF3)
-          goto yy1072;
-        if (yych <= 0xF4)
-          goto yy1073;
-        goto yy1049;
-      }
-    }
-  yy1066:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1066;
-    }
-    if (yych <= 0xEC) {
-      if (yych <= 0xC1) {
-        if (yych <= 0x00)
-          goto yy1049;
-        if (yych <= '\r')
-          goto yy1075;
-        goto yy1049;
-      } else {
-        if (yych <= 0xDF)
-          goto yy1068;
-        if (yych <= 0xE0)
-          goto yy1069;
-        goto yy1070;
-      }
-    } else {
-      if (yych <= 0xF0) {
-        if (yych <= 0xED)
-          goto yy1074;
-        if (yych <= 0xEF)
-          goto yy1070;
-        goto yy1071;
-      } else {
-        if (yych <= 0xF3)
-          goto yy1072;
-        if (yych <= 0xF4)
-          goto yy1073;
-        goto yy1049;
-      }
-    }
-  yy1068:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1066;
-    goto yy1049;
-  yy1069:
-    ++p;
-    yych = *p;
-    if (yych <= 0x9F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1068;
-    goto yy1049;
-  yy1070:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1068;
-    goto yy1049;
-  yy1071:
-    ++p;
-    yych = *p;
-    if (yych <= 0x8F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1070;
-    goto yy1049;
-  yy1072:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0xBF)
-      goto yy1070;
-    goto yy1049;
-  yy1073:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0x8F)
-      goto yy1070;
-    goto yy1049;
-  yy1074:
-    ++p;
-    yych = *p;
-    if (yych <= 0x7F)
-      goto yy1049;
-    if (yych <= 0x9F)
-      goto yy1068;
-    goto yy1049;
-  yy1075:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  }
-}
-
-// Scan a closing code fence with length at least len.
-bufsize_t _scan_close_code_fence(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    static const unsigned char yybm[] = {
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   64, 0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  64, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 128, 0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0,
-    };
-    yych = *p;
-    if (yych == '`')
-      goto yy1081;
-    if (yych == '~')
-      goto yy1082;
-    ++p;
-  yy1080 : { return 0; }
-  yy1081:
-    yych = *(marker = ++p);
-    if (yych == '`')
-      goto yy1091;
-    goto yy1080;
-  yy1082:
-    yych = *(marker = ++p);
-    if (yych != '~')
-      goto yy1080;
-    yych = *++p;
-    if (yybm[0 + yych] & 32) {
-      goto yy1085;
-    }
-  yy1084:
-    p = marker;
-    goto yy1080;
-  yy1085:
-    ++p;
-    yych = *p;
-    marker = p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1087;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1084;
-      if (yych <= '\n')
-        goto yy1089;
-      goto yy1084;
-    } else {
-      if (yych <= '\r')
-        goto yy1089;
-      if (yych == '~')
-        goto yy1085;
-      goto yy1084;
-    }
-  yy1087:
-    ++p;
-    yych = *p;
-    if (yybm[0 + yych] & 64) {
-      goto yy1087;
-    }
-    if (yych <= 0x08)
-      goto yy1084;
-    if (yych <= '\n')
-      goto yy1089;
-    if (yych != '\r')
-      goto yy1084;
-  yy1089:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  yy1091:
-    yych = *++p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1092;
-    }
-    goto yy1084;
-  yy1092:
-    ++p;
-    yych = *p;
-    marker = p;
-    if (yybm[0 + yych] & 128) {
-      goto yy1092;
-    }
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1084;
-      if (yych <= '\t')
-        goto yy1094;
-      if (yych <= '\n')
-        goto yy1096;
-      goto yy1084;
-    } else {
-      if (yych <= '\r')
-        goto yy1096;
-      if (yych != ' ')
-        goto yy1084;
-    }
-  yy1094:
-    ++p;
-    yych = *p;
-    if (yych <= '\f') {
-      if (yych <= 0x08)
-        goto yy1084;
-      if (yych <= '\t')
-        goto yy1094;
-      if (yych >= '\v')
-        goto yy1084;
-    } else {
-      if (yych <= '\r')
-        goto yy1096;
-      if (yych == ' ')
-        goto yy1094;
-      goto yy1084;
-    }
-  yy1096:
-    ++p;
-    p = marker;
-    { return (bufsize_t)(p - start); }
-  }
-}
-
-// Scans an entity.
-// Returns number of chars matched.
-bufsize_t _scan_entity(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    yych = *p;
-    if (yych == '&')
-      goto yy1102;
-    ++p;
-  yy1101 : { return 0; }
-  yy1102:
-    yych = *(marker = ++p);
-    if (yych <= '@') {
-      if (yych != '#')
-        goto yy1101;
-    } else {
-      if (yych <= 'Z')
-        goto yy1105;
-      if (yych <= '`')
-        goto yy1101;
-      if (yych <= 'z')
-        goto yy1105;
-      goto yy1101;
-    }
-    yych = *++p;
-    if (yych <= 'W') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1140;
-    } else {
-      if (yych <= 'X')
-        goto yy1139;
-      if (yych == 'x')
-        goto yy1139;
-    }
-  yy1104:
-    p = marker;
-    goto yy1101;
-  yy1105:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych >= ':')
-        goto yy1104;
-    } else {
-      if (yych <= 'Z')
-        goto yy1106;
-      if (yych <= '`')
-        goto yy1104;
-      if (yych >= '{')
-        goto yy1104;
-    }
-  yy1106:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1109;
-      if (yych <= ':')
-        goto yy1104;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-        goto yy1109;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych <= 'z')
-          goto yy1109;
-        goto yy1104;
-      }
-    }
-  yy1107:
-    ++p;
-    { return (bufsize_t)(p - start); }
-  yy1109:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1110;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1110:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1111;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1111:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1112;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1112:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1113;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1113:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1114;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1114:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1115;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1115:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1116;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1116:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1117;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1117:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1118;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1118:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1119;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1119:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1120;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1120:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1121;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1121:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1122;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1122:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1123;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1123:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1124;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1124:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1125;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1125:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1126;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1126:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1127;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1127:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1128;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1128:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1129;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1129:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1130;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1130:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1131;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1131:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1132;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1132:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1133;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1133:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1134;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1134:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1135;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1135:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1136;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1136:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1137;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1137:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1138;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'Z') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= '{')
-          goto yy1104;
-      }
-    }
-  yy1138:
-    yych = *++p;
-    if (yych == ';')
-      goto yy1107;
-    goto yy1104;
-  yy1139:
-    yych = *++p;
-    if (yych <= '@') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1147;
-      goto yy1104;
-    } else {
-      if (yych <= 'F')
-        goto yy1147;
-      if (yych <= '`')
-        goto yy1104;
-      if (yych <= 'f')
-        goto yy1147;
-      goto yy1104;
-    }
-  yy1140:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1104;
-    if (yych <= '9')
-      goto yy1141;
-    if (yych == ';')
-      goto yy1107;
-    goto yy1104;
-  yy1141:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1104;
-    if (yych <= '9')
-      goto yy1142;
-    if (yych == ';')
-      goto yy1107;
-    goto yy1104;
-  yy1142:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1104;
-    if (yych <= '9')
-      goto yy1143;
-    if (yych == ';')
-      goto yy1107;
-    goto yy1104;
-  yy1143:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1104;
-    if (yych <= '9')
-      goto yy1144;
-    if (yych == ';')
-      goto yy1107;
-    goto yy1104;
-  yy1144:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1104;
-    if (yych <= '9')
-      goto yy1145;
-    if (yych == ';')
-      goto yy1107;
-    goto yy1104;
-  yy1145:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1104;
-    if (yych <= '9')
-      goto yy1146;
-    if (yych == ';')
-      goto yy1107;
-    goto yy1104;
-  yy1146:
-    yych = *++p;
-    if (yych <= '/')
-      goto yy1104;
-    if (yych <= '9')
-      goto yy1138;
-    if (yych == ';')
-      goto yy1107;
-    goto yy1104;
-  yy1147:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1148;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= 'g')
-          goto yy1104;
-      }
-    }
-  yy1148:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1149;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= 'g')
-          goto yy1104;
-      }
-    }
-  yy1149:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1150;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= 'g')
-          goto yy1104;
-      }
-    }
-  yy1150:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1151;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= 'g')
-          goto yy1104;
-      }
-    }
-  yy1151:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1152;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= 'g')
-          goto yy1104;
-      }
-    }
-  yy1152:
-    yych = *++p;
-    if (yych <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1153;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1104;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych >= 'g')
-          goto yy1104;
-      }
-    }
-  yy1153:
-    ++p;
-    if ((yych = *p) <= ';') {
-      if (yych <= '/')
-        goto yy1104;
-      if (yych <= '9')
-        goto yy1138;
-      if (yych <= ':')
-        goto yy1104;
-      goto yy1107;
-    } else {
-      if (yych <= 'F') {
-        if (yych <= '@')
-          goto yy1104;
-        goto yy1138;
-      } else {
-        if (yych <= '`')
-          goto yy1104;
-        if (yych <= 'f')
-          goto yy1138;
-        goto yy1104;
-      }
-    }
-  }
-}
-
-// Returns positive value if a URL begins in a way that is potentially
-// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0.
-bufsize_t _scan_dangerous_url(const unsigned char *p) {
-  const unsigned char *marker = NULL;
-  const unsigned char *start = p;
-
-  {
-    unsigned char yych;
-    unsigned int yyaccept = 0;
-    yych = *p;
-    if (yych <= 'V') {
-      if (yych <= 'F') {
-        if (yych == 'D')
-          goto yy1158;
-        if (yych >= 'F')
-          goto yy1159;
-      } else {
-        if (yych == 'J')
-          goto yy1160;
-        if (yych >= 'V')
-          goto yy1161;
-      }
-    } else {
-      if (yych <= 'f') {
-        if (yych == 'd')
-          goto yy1158;
-        if (yych >= 'f')
-          goto yy1159;
-      } else {
-        if (yych <= 'j') {
-          if (yych >= 'j')
-            goto yy1160;
-        } else {
-          if (yych == 'v')
-            goto yy1161;
-        }
-      }
-    }
-    ++p;
-  yy1157 : { return 0; }
-  yy1158:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych == 'A')
-      goto yy1184;
-    if (yych == 'a')
-      goto yy1184;
-    goto yy1157;
-  yy1159:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych == 'I')
-      goto yy1181;
-    if (yych == 'i')
-      goto yy1181;
-    goto yy1157;
-  yy1160:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych == 'A')
-      goto yy1172;
-    if (yych == 'a')
-      goto yy1172;
-    goto yy1157;
-  yy1161:
-    yyaccept = 0;
-    yych = *(marker = ++p);
-    if (yych == 'B')
-      goto yy1162;
-    if (yych != 'b')
-      goto yy1157;
-  yy1162:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy1164;
-    if (yych == 's')
-      goto yy1164;
-  yy1163:
-    p = marker;
-    if (yyaccept == 0) {
-      goto yy1157;
-    } else {
-      goto yy1171;
-    }
-  yy1164:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy1165;
-    if (yych != 'c')
-      goto yy1163;
-  yy1165:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy1166;
-    if (yych != 'r')
-      goto yy1163;
-  yy1166:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy1167;
-    if (yych != 'i')
-      goto yy1163;
-  yy1167:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy1168;
-    if (yych != 'p')
-      goto yy1163;
-  yy1168:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy1169;
-    if (yych != 't')
-      goto yy1163;
-  yy1169:
-    yych = *++p;
-    if (yych != ':')
-      goto yy1163;
-  yy1170:
-    ++p;
-  yy1171 : { return (bufsize_t)(p - start); }
-  yy1172:
-    yych = *++p;
-    if (yych == 'V')
-      goto yy1173;
-    if (yych != 'v')
-      goto yy1163;
-  yy1173:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy1174;
-    if (yych != 'a')
-      goto yy1163;
-  yy1174:
-    yych = *++p;
-    if (yych == 'S')
-      goto yy1175;
-    if (yych != 's')
-      goto yy1163;
-  yy1175:
-    yych = *++p;
-    if (yych == 'C')
-      goto yy1176;
-    if (yych != 'c')
-      goto yy1163;
-  yy1176:
-    yych = *++p;
-    if (yych == 'R')
-      goto yy1177;
-    if (yych != 'r')
-      goto yy1163;
-  yy1177:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy1178;
-    if (yych != 'i')
-      goto yy1163;
-  yy1178:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy1179;
-    if (yych != 'p')
-      goto yy1163;
-  yy1179:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy1180;
-    if (yych != 't')
-      goto yy1163;
-  yy1180:
-    yych = *++p;
-    if (yych == ':')
-      goto yy1170;
-    goto yy1163;
-  yy1181:
-    yych = *++p;
-    if (yych == 'L')
-      goto yy1182;
-    if (yych != 'l')
-      goto yy1163;
-  yy1182:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy1183;
-    if (yych != 'e')
-      goto yy1163;
-  yy1183:
-    yych = *++p;
-    if (yych == ':')
-      goto yy1170;
-    goto yy1163;
-  yy1184:
-    yych = *++p;
-    if (yych == 'T')
-      goto yy1185;
-    if (yych != 't')
-      goto yy1163;
-  yy1185:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy1186;
-    if (yych != 'a')
-      goto yy1163;
-  yy1186:
-    yych = *++p;
-    if (yych != ':')
-      goto yy1163;
-    yyaccept = 1;
-    yych = *(marker = ++p);
-    if (yych == 'I')
-      goto yy1188;
-    if (yych != 'i')
-      goto yy1171;
-  yy1188:
-    yych = *++p;
-    if (yych == 'M')
-      goto yy1189;
-    if (yych != 'm')
-      goto yy1163;
-  yy1189:
-    yych = *++p;
-    if (yych == 'A')
-      goto yy1190;
-    if (yych != 'a')
-      goto yy1163;
-  yy1190:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy1191;
-    if (yych != 'g')
-      goto yy1163;
-  yy1191:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy1192;
-    if (yych != 'e')
-      goto yy1163;
-  yy1192:
-    yych = *++p;
-    if (yych != '/')
-      goto yy1163;
-    yych = *++p;
-    if (yych <= 'W') {
-      if (yych <= 'J') {
-        if (yych == 'G')
-          goto yy1195;
-        if (yych <= 'I')
-          goto yy1163;
-        goto yy1196;
-      } else {
-        if (yych == 'P')
-          goto yy1194;
-        if (yych <= 'V')
-          goto yy1163;
-        goto yy1197;
-      }
-    } else {
-      if (yych <= 'j') {
-        if (yych == 'g')
-          goto yy1195;
-        if (yych <= 'i')
-          goto yy1163;
-        goto yy1196;
-      } else {
-        if (yych <= 'p') {
-          if (yych <= 'o')
-            goto yy1163;
-        } else {
-          if (yych == 'w')
-            goto yy1197;
-          goto yy1163;
-        }
-      }
-    }
-  yy1194:
-    yych = *++p;
-    if (yych == 'N')
-      goto yy1205;
-    if (yych == 'n')
-      goto yy1205;
-    goto yy1163;
-  yy1195:
-    yych = *++p;
-    if (yych == 'I')
-      goto yy1204;
-    if (yych == 'i')
-      goto yy1204;
-    goto yy1163;
-  yy1196:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy1202;
-    if (yych == 'p')
-      goto yy1202;
-    goto yy1163;
-  yy1197:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy1198;
-    if (yych != 'e')
-      goto yy1163;
-  yy1198:
-    yych = *++p;
-    if (yych == 'B')
-      goto yy1199;
-    if (yych != 'b')
-      goto yy1163;
-  yy1199:
-    yych = *++p;
-    if (yych == 'P')
-      goto yy1200;
-    if (yych != 'p')
-      goto yy1163;
-  yy1200:
-    ++p;
-    { return 0; }
-  yy1202:
-    yych = *++p;
-    if (yych == 'E')
-      goto yy1203;
-    if (yych != 'e')
-      goto yy1163;
-  yy1203:
-    yych = *++p;
-    if (yych == 'G')
-      goto yy1200;
-    if (yych == 'g')
-      goto yy1200;
-    goto yy1163;
-  yy1204:
-    yych = *++p;
-    if (yych == 'F')
-      goto yy1200;
-    if (yych == 'f')
-      goto yy1200;
-    goto yy1163;
-  yy1205:
-    ++p;
-    if ((yych = *p) == 'G')
-      goto yy1200;
-    if (yych == 'g')
-      goto yy1200;
-    goto yy1163;
+/* Generated by re2c 0.16 */
+#include <stdlib.h>
+#include "chunk.h"
+#include "scanners.h"
+
+bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,
+                   bufsize_t offset) {
+  bufsize_t res;
+  unsigned char *ptr = (unsigned char *)c->data;
+
+  if (ptr == NULL || offset > c->len) {
+    return 0;
+  } else {
+    unsigned char lim = ptr[c->len];
+
+    ptr[c->len] = '\0';
+    res = scanner(ptr + offset);
+    ptr[c->len] = lim;
+  }
+
+  return res;
+}
+
+// Try to match a scheme including colon.
+bufsize_t _scan_scheme(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    yych = *p;
+    if (yych <= '@')
+      goto yy2;
+    if (yych <= 'Z')
+      goto yy4;
+    if (yych <= '`')
+      goto yy2;
+    if (yych <= 'z')
+      goto yy4;
+  yy2:
+    ++p;
+  yy3 : { return 0; }
+  yy4:
+    yych = *(marker = ++p);
+    if (yych <= '/') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy3;
+      } else {
+        if (yych <= ',')
+          goto yy3;
+        if (yych >= '/')
+          goto yy3;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '9')
+          goto yy5;
+        if (yych <= '@')
+          goto yy3;
+      } else {
+        if (yych <= '`')
+          goto yy3;
+        if (yych >= '{')
+          goto yy3;
+      }
+    }
+  yy5:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych == '+')
+          goto yy7;
+      } else {
+        if (yych != '/')
+          goto yy7;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych >= 'A')
+          goto yy7;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych <= 'z')
+          goto yy7;
+      }
+    }
+  yy6:
+    p = marker;
+    goto yy3;
+  yy7:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych == '+')
+          goto yy10;
+        goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+        goto yy10;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+        goto yy10;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych <= 'z')
+          goto yy10;
+        goto yy6;
+      }
+    }
+  yy8:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy10:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy6;
+      } else {
+        if (yych == '/')
+          goto yy6;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy8;
+        if (yych <= '@')
+          goto yy6;
+      } else {
+        if (yych <= '`')
+          goto yy6;
+        if (yych >= '{')
+          goto yy6;
+      }
+    }
+    ++p;
+    if ((yych = *p) == ':')
+      goto yy8;
+    goto yy6;
+  }
+}
+
+// Try to match URI autolink after first <, returning number of chars matched.
+bufsize_t _scan_autolink_uri(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 0,   128, 0,   128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych <= '@')
+      goto yy41;
+    if (yych <= 'Z')
+      goto yy43;
+    if (yych <= '`')
+      goto yy41;
+    if (yych <= 'z')
+      goto yy43;
+  yy41:
+    ++p;
+  yy42 : { return 0; }
+  yy43:
+    yych = *(marker = ++p);
+    if (yych <= '/') {
+      if (yych <= '+') {
+        if (yych <= '*')
+          goto yy42;
+      } else {
+        if (yych <= ',')
+          goto yy42;
+        if (yych >= '/')
+          goto yy42;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '9')
+          goto yy44;
+        if (yych <= '@')
+          goto yy42;
+      } else {
+        if (yych <= '`')
+          goto yy42;
+        if (yych >= '{')
+          goto yy42;
+      }
+    }
+  yy44:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych == '+')
+          goto yy46;
+      } else {
+        if (yych != '/')
+          goto yy46;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych >= 'A')
+          goto yy46;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych <= 'z')
+          goto yy46;
+      }
+    }
+  yy45:
+    p = marker;
+    goto yy42;
+  yy46:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych == '+')
+          goto yy49;
+        goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+        goto yy49;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+        goto yy49;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych <= 'z')
+          goto yy49;
+        goto yy45;
+      }
+    }
+  yy47:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy47;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '<')
+          goto yy45;
+        if (yych <= '>')
+          goto yy50;
+        goto yy45;
+      } else {
+        if (yych <= 0xDF)
+          goto yy52;
+        if (yych <= 0xE0)
+          goto yy53;
+        goto yy54;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy55;
+        if (yych <= 0xEF)
+          goto yy54;
+        goto yy56;
+      } else {
+        if (yych <= 0xF3)
+          goto yy57;
+        if (yych <= 0xF4)
+          goto yy58;
+        goto yy45;
+      }
+    }
+  yy49:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych == '+')
+          goto yy59;
+        goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+        goto yy59;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+        goto yy59;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych <= 'z')
+          goto yy59;
+        goto yy45;
+      }
+    }
+  yy50:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy52:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy47;
+    goto yy45;
+  yy53:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy52;
+    goto yy45;
+  yy54:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy52;
+    goto yy45;
+  yy55:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0x9F)
+      goto yy52;
+    goto yy45;
+  yy56:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy54;
+    goto yy45;
+  yy57:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0xBF)
+      goto yy54;
+    goto yy45;
+  yy58:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy45;
+    if (yych <= 0x8F)
+      goto yy54;
+    goto yy45;
+  yy59:
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    yych = *++p;
+    if (yych <= '9') {
+      if (yych <= ',') {
+        if (yych != '+')
+          goto yy45;
+      } else {
+        if (yych == '/')
+          goto yy45;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= ':')
+          goto yy47;
+        if (yych <= '@')
+          goto yy45;
+      } else {
+        if (yych <= '`')
+          goto yy45;
+        if (yych >= '{')
+          goto yy45;
+      }
+    }
+    ++p;
+    if ((yych = *p) == ':')
+      goto yy47;
+    goto yy45;
+  }
+}
+
+// Try to match email autolink after first <, returning num of chars matched.
+bufsize_t _scan_autolink_email(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   128, 0,   128, 128, 128, 128, 128, 0,   0,
+        128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   128, 0,   128, 0,   128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 0,   0,   0,   128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych <= '9') {
+      if (yych <= '\'') {
+        if (yych == '!')
+          goto yy91;
+        if (yych >= '#')
+          goto yy91;
+      } else {
+        if (yych <= ')')
+          goto yy89;
+        if (yych != ',')
+          goto yy91;
+      }
+    } else {
+      if (yych <= '?') {
+        if (yych == '=')
+          goto yy91;
+        if (yych >= '?')
+          goto yy91;
+      } else {
+        if (yych <= 'Z') {
+          if (yych >= 'A')
+            goto yy91;
+        } else {
+          if (yych <= ']')
+            goto yy89;
+          if (yych <= '~')
+            goto yy91;
+        }
+      }
+    }
+  yy89:
+    ++p;
+  yy90 : { return 0; }
+  yy91:
+    yych = *(marker = ++p);
+    if (yych <= ',') {
+      if (yych <= '"') {
+        if (yych == '!')
+          goto yy93;
+        goto yy90;
+      } else {
+        if (yych <= '\'')
+          goto yy93;
+        if (yych <= ')')
+          goto yy90;
+        if (yych <= '+')
+          goto yy93;
+        goto yy90;
+      }
+    } else {
+      if (yych <= '>') {
+        if (yych <= '9')
+          goto yy93;
+        if (yych == '=')
+          goto yy93;
+        goto yy90;
+      } else {
+        if (yych <= 'Z')
+          goto yy93;
+        if (yych <= ']')
+          goto yy90;
+        if (yych <= '~')
+          goto yy93;
+        goto yy90;
+      }
+    }
+  yy92:
+    ++p;
+    yych = *p;
+  yy93:
+    if (yybm[0 + yych] & 128) {
+      goto yy92;
+    }
+    if (yych <= '>')
+      goto yy94;
+    if (yych <= '@')
+      goto yy95;
+  yy94:
+    p = marker;
+    goto yy90;
+  yy95:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy94;
+      if (yych >= ':')
+        goto yy94;
+    } else {
+      if (yych <= 'Z')
+        goto yy96;
+      if (yych <= '`')
+        goto yy94;
+      if (yych >= '{')
+        goto yy94;
+    }
+  yy96:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy98;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy98;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy98;
+        goto yy94;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy101;
+      if (yych <= '/')
+        goto yy94;
+      goto yy102;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy102;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy102;
+        goto yy94;
+      }
+    }
+  yy98:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych <= '-')
+          goto yy101;
+        goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy102;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy102;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy102;
+        goto yy94;
+      }
+    }
+  yy99:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy101:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy103;
+      if (yych <= '/')
+        goto yy94;
+      goto yy104;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy104;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy104;
+        goto yy94;
+      }
+    }
+  yy102:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy104;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy104;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy104;
+        goto yy94;
+      }
+    }
+  yy103:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy105;
+      if (yych <= '/')
+        goto yy94;
+      goto yy106;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy106;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy106;
+        goto yy94;
+      }
+    }
+  yy104:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy106;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy106;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy106;
+        goto yy94;
+      }
+    }
+  yy105:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy107;
+      if (yych <= '/')
+        goto yy94;
+      goto yy108;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy108;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy108;
+        goto yy94;
+      }
+    }
+  yy106:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy108;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy108;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy108;
+        goto yy94;
+      }
+    }
+  yy107:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy109;
+      if (yych <= '/')
+        goto yy94;
+      goto yy110;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy110;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy110;
+        goto yy94;
+      }
+    }
+  yy108:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy110;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy110;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy110;
+        goto yy94;
+      }
+    }
+  yy109:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy111;
+      if (yych <= '/')
+        goto yy94;
+      goto yy112;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy112;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy112;
+        goto yy94;
+      }
+    }
+  yy110:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy112;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy112;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy112;
+        goto yy94;
+      }
+    }
+  yy111:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy113;
+      if (yych <= '/')
+        goto yy94;
+      goto yy114;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy114;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy114;
+        goto yy94;
+      }
+    }
+  yy112:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy114;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy114;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy114;
+        goto yy94;
+      }
+    }
+  yy113:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy115;
+      if (yych <= '/')
+        goto yy94;
+      goto yy116;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy116;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy116;
+        goto yy94;
+      }
+    }
+  yy114:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy116;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy116;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy116;
+        goto yy94;
+      }
+    }
+  yy115:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy117;
+      if (yych <= '/')
+        goto yy94;
+      goto yy118;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy118;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy118;
+        goto yy94;
+      }
+    }
+  yy116:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy118;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy118;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy118;
+        goto yy94;
+      }
+    }
+  yy117:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy119;
+      if (yych <= '/')
+        goto yy94;
+      goto yy120;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy120;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy120;
+        goto yy94;
+      }
+    }
+  yy118:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy120;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy120;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy120;
+        goto yy94;
+      }
+    }
+  yy119:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy121;
+      if (yych <= '/')
+        goto yy94;
+      goto yy122;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy122;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy122;
+        goto yy94;
+      }
+    }
+  yy120:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy122;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy122;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy122;
+        goto yy94;
+      }
+    }
+  yy121:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy123;
+      if (yych <= '/')
+        goto yy94;
+      goto yy124;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy124;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy124;
+        goto yy94;
+      }
+    }
+  yy122:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy124;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy124;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy124;
+        goto yy94;
+      }
+    }
+  yy123:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy125;
+      if (yych <= '/')
+        goto yy94;
+      goto yy126;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy126;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy126;
+        goto yy94;
+      }
+    }
+  yy124:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy126;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy126;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy126;
+        goto yy94;
+      }
+    }
+  yy125:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy127;
+      if (yych <= '/')
+        goto yy94;
+      goto yy128;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy128;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy128;
+        goto yy94;
+      }
+    }
+  yy126:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy128;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy128;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy128;
+        goto yy94;
+      }
+    }
+  yy127:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy129;
+      if (yych <= '/')
+        goto yy94;
+      goto yy130;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy130;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy130;
+        goto yy94;
+      }
+    }
+  yy128:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy130;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy130;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy130;
+        goto yy94;
+      }
+    }
+  yy129:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy131;
+      if (yych <= '/')
+        goto yy94;
+      goto yy132;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy132;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy132;
+        goto yy94;
+      }
+    }
+  yy130:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy132;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy132;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy132;
+        goto yy94;
+      }
+    }
+  yy131:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy133;
+      if (yych <= '/')
+        goto yy94;
+      goto yy134;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy134;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy134;
+        goto yy94;
+      }
+    }
+  yy132:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy134;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy134;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy134;
+        goto yy94;
+      }
+    }
+  yy133:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy135;
+      if (yych <= '/')
+        goto yy94;
+      goto yy136;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy136;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy136;
+        goto yy94;
+      }
+    }
+  yy134:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy136;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy136;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy136;
+        goto yy94;
+      }
+    }
+  yy135:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy137;
+      if (yych <= '/')
+        goto yy94;
+      goto yy138;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy138;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy138;
+        goto yy94;
+      }
+    }
+  yy136:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy138;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy138;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy138;
+        goto yy94;
+      }
+    }
+  yy137:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy139;
+      if (yych <= '/')
+        goto yy94;
+      goto yy140;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy140;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy140;
+        goto yy94;
+      }
+    }
+  yy138:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy140;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy140;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy140;
+        goto yy94;
+      }
+    }
+  yy139:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy141;
+      if (yych <= '/')
+        goto yy94;
+      goto yy142;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy142;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy142;
+        goto yy94;
+      }
+    }
+  yy140:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy142;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy142;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy142;
+        goto yy94;
+      }
+    }
+  yy141:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy143;
+      if (yych <= '/')
+        goto yy94;
+      goto yy144;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy144;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy144;
+        goto yy94;
+      }
+    }
+  yy142:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy144;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy144;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy144;
+        goto yy94;
+      }
+    }
+  yy143:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy145;
+      if (yych <= '/')
+        goto yy94;
+      goto yy146;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy146;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy146;
+        goto yy94;
+      }
+    }
+  yy144:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy146;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy146;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy146;
+        goto yy94;
+      }
+    }
+  yy145:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy147;
+      if (yych <= '/')
+        goto yy94;
+      goto yy148;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy148;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy148;
+        goto yy94;
+      }
+    }
+  yy146:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy148;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy148;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy148;
+        goto yy94;
+      }
+    }
+  yy147:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy149;
+      if (yych <= '/')
+        goto yy94;
+      goto yy150;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy150;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy150;
+        goto yy94;
+      }
+    }
+  yy148:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy150;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy150;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy150;
+        goto yy94;
+      }
+    }
+  yy149:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy151;
+      if (yych <= '/')
+        goto yy94;
+      goto yy152;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy152;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy152;
+        goto yy94;
+      }
+    }
+  yy150:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy152;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy152;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy152;
+        goto yy94;
+      }
+    }
+  yy151:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy153;
+      if (yych <= '/')
+        goto yy94;
+      goto yy154;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy154;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy154;
+        goto yy94;
+      }
+    }
+  yy152:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy154;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy154;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy154;
+        goto yy94;
+      }
+    }
+  yy153:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy155;
+      if (yych <= '/')
+        goto yy94;
+      goto yy156;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy156;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy156;
+        goto yy94;
+      }
+    }
+  yy154:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy156;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy156;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy156;
+        goto yy94;
+      }
+    }
+  yy155:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy157;
+      if (yych <= '/')
+        goto yy94;
+      goto yy158;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy158;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy158;
+        goto yy94;
+      }
+    }
+  yy156:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy158;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy158;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy158;
+        goto yy94;
+      }
+    }
+  yy157:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy159;
+      if (yych <= '/')
+        goto yy94;
+      goto yy160;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy160;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy160;
+        goto yy94;
+      }
+    }
+  yy158:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy160;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy160;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy160;
+        goto yy94;
+      }
+    }
+  yy159:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy161;
+      if (yych <= '/')
+        goto yy94;
+      goto yy162;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy162;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy162;
+        goto yy94;
+      }
+    }
+  yy160:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy162;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy162;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy162;
+        goto yy94;
+      }
+    }
+  yy161:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy163;
+      if (yych <= '/')
+        goto yy94;
+      goto yy164;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy164;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy164;
+        goto yy94;
+      }
+    }
+  yy162:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy164;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy164;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy164;
+        goto yy94;
+      }
+    }
+  yy163:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy165;
+      if (yych <= '/')
+        goto yy94;
+      goto yy166;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy166;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy166;
+        goto yy94;
+      }
+    }
+  yy164:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy166;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy166;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy166;
+        goto yy94;
+      }
+    }
+  yy165:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy167;
+      if (yych <= '/')
+        goto yy94;
+      goto yy168;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy168;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy168;
+        goto yy94;
+      }
+    }
+  yy166:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy168;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy168;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy168;
+        goto yy94;
+      }
+    }
+  yy167:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy169;
+      if (yych <= '/')
+        goto yy94;
+      goto yy170;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy170;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy170;
+        goto yy94;
+      }
+    }
+  yy168:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy170;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy170;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy170;
+        goto yy94;
+      }
+    }
+  yy169:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy171;
+      if (yych <= '/')
+        goto yy94;
+      goto yy172;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy172;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy172;
+        goto yy94;
+      }
+    }
+  yy170:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy172;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy172;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy172;
+        goto yy94;
+      }
+    }
+  yy171:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy173;
+      if (yych <= '/')
+        goto yy94;
+      goto yy174;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy174;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy174;
+        goto yy94;
+      }
+    }
+  yy172:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy174;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy174;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy174;
+        goto yy94;
+      }
+    }
+  yy173:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy175;
+      if (yych <= '/')
+        goto yy94;
+      goto yy176;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy176;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy176;
+        goto yy94;
+      }
+    }
+  yy174:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy176;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy176;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy176;
+        goto yy94;
+      }
+    }
+  yy175:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy177;
+      if (yych <= '/')
+        goto yy94;
+      goto yy178;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy178;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy178;
+        goto yy94;
+      }
+    }
+  yy176:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy178;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy178;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy178;
+        goto yy94;
+      }
+    }
+  yy177:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy179;
+      if (yych <= '/')
+        goto yy94;
+      goto yy180;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy180;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy180;
+        goto yy94;
+      }
+    }
+  yy178:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy180;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy180;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy180;
+        goto yy94;
+      }
+    }
+  yy179:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy181;
+      if (yych <= '/')
+        goto yy94;
+      goto yy182;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy182;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy182;
+        goto yy94;
+      }
+    }
+  yy180:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy182;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy182;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy182;
+        goto yy94;
+      }
+    }
+  yy181:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy183;
+      if (yych <= '/')
+        goto yy94;
+      goto yy184;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy184;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy184;
+        goto yy94;
+      }
+    }
+  yy182:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy184;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy184;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy184;
+        goto yy94;
+      }
+    }
+  yy183:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy185;
+      if (yych <= '/')
+        goto yy94;
+      goto yy186;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy186;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy186;
+        goto yy94;
+      }
+    }
+  yy184:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy186;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy186;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy186;
+        goto yy94;
+      }
+    }
+  yy185:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy187;
+      if (yych <= '/')
+        goto yy94;
+      goto yy188;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy188;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy188;
+        goto yy94;
+      }
+    }
+  yy186:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy188;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy188;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy188;
+        goto yy94;
+      }
+    }
+  yy187:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy189;
+      if (yych <= '/')
+        goto yy94;
+      goto yy190;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy190;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy190;
+        goto yy94;
+      }
+    }
+  yy188:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy190;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy190;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy190;
+        goto yy94;
+      }
+    }
+  yy189:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy191;
+      if (yych <= '/')
+        goto yy94;
+      goto yy192;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy192;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy192;
+        goto yy94;
+      }
+    }
+  yy190:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy192;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy192;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy192;
+        goto yy94;
+      }
+    }
+  yy191:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy193;
+      if (yych <= '/')
+        goto yy94;
+      goto yy194;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy194;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy194;
+        goto yy94;
+      }
+    }
+  yy192:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy194;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy194;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy194;
+        goto yy94;
+      }
+    }
+  yy193:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy195;
+      if (yych <= '/')
+        goto yy94;
+      goto yy196;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy196;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy196;
+        goto yy94;
+      }
+    }
+  yy194:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy196;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy196;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy196;
+        goto yy94;
+      }
+    }
+  yy195:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy197;
+      if (yych <= '/')
+        goto yy94;
+      goto yy198;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy198;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy198;
+        goto yy94;
+      }
+    }
+  yy196:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy198;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy198;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy198;
+        goto yy94;
+      }
+    }
+  yy197:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy199;
+      if (yych <= '/')
+        goto yy94;
+      goto yy200;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy200;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy200;
+        goto yy94;
+      }
+    }
+  yy198:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy200;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy200;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy200;
+        goto yy94;
+      }
+    }
+  yy199:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy201;
+      if (yych <= '/')
+        goto yy94;
+      goto yy202;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy202;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy202;
+        goto yy94;
+      }
+    }
+  yy200:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy202;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy202;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy202;
+        goto yy94;
+      }
+    }
+  yy201:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy203;
+      if (yych <= '/')
+        goto yy94;
+      goto yy204;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy204;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy204;
+        goto yy94;
+      }
+    }
+  yy202:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy204;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy204;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy204;
+        goto yy94;
+      }
+    }
+  yy203:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy205;
+      if (yych <= '/')
+        goto yy94;
+      goto yy206;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy206;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy206;
+        goto yy94;
+      }
+    }
+  yy204:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy206;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy206;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy206;
+        goto yy94;
+      }
+    }
+  yy205:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy207;
+      if (yych <= '/')
+        goto yy94;
+      goto yy208;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy208;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy208;
+        goto yy94;
+      }
+    }
+  yy206:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy208;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy208;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy208;
+        goto yy94;
+      }
+    }
+  yy207:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy209;
+      if (yych <= '/')
+        goto yy94;
+      goto yy210;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy210;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy210;
+        goto yy94;
+      }
+    }
+  yy208:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy210;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy210;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy210;
+        goto yy94;
+      }
+    }
+  yy209:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy211;
+      if (yych <= '/')
+        goto yy94;
+      goto yy212;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy212;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy212;
+        goto yy94;
+      }
+    }
+  yy210:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy212;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy212;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy212;
+        goto yy94;
+      }
+    }
+  yy211:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy213;
+      if (yych <= '/')
+        goto yy94;
+      goto yy214;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy214;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy214;
+        goto yy94;
+      }
+    }
+  yy212:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy214;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy214;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy214;
+        goto yy94;
+      }
+    }
+  yy213:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy215;
+      if (yych <= '/')
+        goto yy94;
+      goto yy216;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy216;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy216;
+        goto yy94;
+      }
+    }
+  yy214:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy216;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy216;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy216;
+        goto yy94;
+      }
+    }
+  yy215:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy217;
+      if (yych <= '/')
+        goto yy94;
+      goto yy218;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy218;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy218;
+        goto yy94;
+      }
+    }
+  yy216:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy218;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy218;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy218;
+        goto yy94;
+      }
+    }
+  yy217:
+    ++p;
+    yych = *p;
+    if (yych <= '9') {
+      if (yych == '-')
+        goto yy219;
+      if (yych <= '/')
+        goto yy94;
+      goto yy220;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy94;
+        goto yy220;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy220;
+        goto yy94;
+      }
+    }
+  yy218:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= ',')
+          goto yy94;
+        if (yych >= '.')
+          goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych <= '9')
+          goto yy220;
+        goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+        goto yy220;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych <= 'z')
+          goto yy220;
+        goto yy94;
+      }
+    }
+  yy219:
+    ++p;
+    yych = *p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy94;
+      if (yych <= '9')
+        goto yy221;
+      goto yy94;
+    } else {
+      if (yych <= 'Z')
+        goto yy221;
+      if (yych <= '`')
+        goto yy94;
+      if (yych <= 'z')
+        goto yy221;
+      goto yy94;
+    }
+  yy220:
+    ++p;
+    yych = *p;
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych <= '-')
+          goto yy94;
+        goto yy95;
+      } else {
+        if (yych <= '/')
+          goto yy94;
+        if (yych >= ':')
+          goto yy94;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy99;
+        if (yych <= '@')
+          goto yy94;
+      } else {
+        if (yych <= '`')
+          goto yy94;
+        if (yych >= '{')
+          goto yy94;
+      }
+    }
+  yy221:
+    ++p;
+    yych = *p;
+    if (yych == '.')
+      goto yy95;
+    if (yych == '>')
+      goto yy99;
+    goto yy94;
+  }
+}
+
+// Try to match an HTML tag after first <, returning num of chars matched.
+bufsize_t _scan_html_tag(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        /* table 1 .. 8: 0 */
+        0,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        235,
+        235,
+        235,
+        235,
+        235,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        250,
+        235,
+        250,
+        202,
+        250,
+        250,
+        250,
+        250,
+        170,
+        250,
+        250,
+        250,
+        250,
+        250,
+        246,
+        254,
+        250,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        250,
+        234,
+        234,
+        232,
+        250,
+        250,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        250,
+        250,
+        122,
+        250,
+        254,
+        234,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        254,
+        250,
+        250,
+        250,
+        250,
+        250,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        /* table 9 .. 11: 256 */
+        0,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        192,
+        128,
+        128,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        128,
+        128,
+        128,
+        128,
+        128,
+        0,
+        128,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        224,
+        128,
+        128,
+        128,
+        128,
+        128,
+        128,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        192,
+        128,
+        128,
+        128,
+        128,
+        128,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+    };
+    yych = *p;
+    if (yych <= '>') {
+      if (yych <= '!') {
+        if (yych >= '!')
+          goto yy226;
+      } else {
+        if (yych == '/')
+          goto yy227;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '?')
+          goto yy228;
+        if (yych >= 'A')
+          goto yy229;
+      } else {
+        if (yych <= '`')
+          goto yy224;
+        if (yych <= 'z')
+          goto yy229;
+      }
+    }
+  yy224:
+    ++p;
+  yy225 : { return 0; }
+  yy226:
+    yych = *(marker = ++p);
+    if (yybm[256 + yych] & 32) {
+      goto yy232;
+    }
+    if (yych == '-')
+      goto yy230;
+    if (yych <= '@')
+      goto yy225;
+    if (yych <= '[')
+      goto yy234;
+    goto yy225;
+  yy227:
+    yych = *(marker = ++p);
+    if (yych <= '@')
+      goto yy225;
+    if (yych <= 'Z')
+      goto yy235;
+    if (yych <= '`')
+      goto yy225;
+    if (yych <= 'z')
+      goto yy235;
+    goto yy225;
+  yy228:
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy225;
+    if (yych <= 0x7F)
+      goto yy238;
+    if (yych <= 0xC1)
+      goto yy225;
+    if (yych <= 0xF4)
+      goto yy238;
+    goto yy225;
+  yy229:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 1) {
+      goto yy247;
+    }
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych == '-')
+          goto yy249;
+        goto yy225;
+      } else {
+        if (yych <= '/')
+          goto yy251;
+        if (yych <= '9')
+          goto yy249;
+        goto yy225;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy252;
+        if (yych <= '@')
+          goto yy225;
+        goto yy249;
+      } else {
+        if (yych <= '`')
+          goto yy225;
+        if (yych <= 'z')
+          goto yy249;
+        goto yy225;
+      }
+    }
+  yy230:
+    yych = *++p;
+    if (yych == '-')
+      goto yy254;
+  yy231:
+    p = marker;
+    goto yy225;
+  yy232:
+    ++p;
+    yych = *p;
+    if (yybm[256 + yych] & 32) {
+      goto yy232;
+    }
+    if (yych <= 0x08)
+      goto yy231;
+    if (yych <= '\r')
+      goto yy255;
+    if (yych == ' ')
+      goto yy255;
+    goto yy231;
+  yy234:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy257;
+    if (yych == 'c')
+      goto yy257;
+    goto yy231;
+  yy235:
+    ++p;
+    yych = *p;
+    if (yybm[256 + yych] & 64) {
+      goto yy235;
+    }
+    if (yych <= 0x1F) {
+      if (yych <= 0x08)
+        goto yy231;
+      if (yych <= '\r')
+        goto yy258;
+      goto yy231;
+    } else {
+      if (yych <= ' ')
+        goto yy258;
+      if (yych == '>')
+        goto yy252;
+      goto yy231;
+    }
+  yy237:
+    ++p;
+    yych = *p;
+  yy238:
+    if (yybm[256 + yych] & 128) {
+      goto yy237;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych >= '@')
+          goto yy231;
+      } else {
+        if (yych <= 0xDF)
+          goto yy240;
+        if (yych <= 0xE0)
+          goto yy241;
+        goto yy242;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy243;
+        if (yych <= 0xEF)
+          goto yy242;
+        goto yy244;
+      } else {
+        if (yych <= 0xF3)
+          goto yy245;
+        if (yych <= 0xF4)
+          goto yy246;
+        goto yy231;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yych <= 0xE0) {
+      if (yych <= '>') {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= '=')
+          goto yy237;
+        goto yy252;
+      } else {
+        if (yych <= 0x7F)
+          goto yy237;
+        if (yych <= 0xC1)
+          goto yy231;
+        if (yych >= 0xE0)
+          goto yy241;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy243;
+        goto yy242;
+      } else {
+        if (yych <= 0xF0)
+          goto yy244;
+        if (yych <= 0xF3)
+          goto yy245;
+        if (yych <= 0xF4)
+          goto yy246;
+        goto yy231;
+      }
+    }
+  yy240:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy237;
+    goto yy231;
+  yy241:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy240;
+    goto yy231;
+  yy242:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy240;
+    goto yy231;
+  yy243:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x9F)
+      goto yy240;
+    goto yy231;
+  yy244:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy242;
+    goto yy231;
+  yy245:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy242;
+    goto yy231;
+  yy246:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x8F)
+      goto yy242;
+    goto yy231;
+  yy247:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy247;
+    }
+    if (yych <= '>') {
+      if (yych <= '9') {
+        if (yych == '/')
+          goto yy251;
+        goto yy231;
+      } else {
+        if (yych <= ':')
+          goto yy260;
+        if (yych <= '=')
+          goto yy231;
+        goto yy252;
+      }
+    } else {
+      if (yych <= '^') {
+        if (yych <= '@')
+          goto yy231;
+        if (yych <= 'Z')
+          goto yy260;
+        goto yy231;
+      } else {
+        if (yych == '`')
+          goto yy231;
+        if (yych <= 'z')
+          goto yy260;
+        goto yy231;
+      }
+    }
+  yy249:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy247;
+    }
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych == '-')
+          goto yy249;
+        goto yy231;
+      } else {
+        if (yych <= '/')
+          goto yy251;
+        if (yych <= '9')
+          goto yy249;
+        goto yy231;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy252;
+        if (yych <= '@')
+          goto yy231;
+        goto yy249;
+      } else {
+        if (yych <= '`')
+          goto yy231;
+        if (yych <= 'z')
+          goto yy249;
+        goto yy231;
+      }
+    }
+  yy251:
+    yych = *++p;
+    if (yych != '>')
+      goto yy231;
+  yy252:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy254:
+    yych = *++p;
+    if (yych == '-')
+      goto yy264;
+    if (yych == '>')
+      goto yy231;
+    goto yy263;
+  yy255:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy255;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= '>')
+          goto yy252;
+        goto yy231;
+      } else {
+        if (yych <= 0xDF)
+          goto yy272;
+        if (yych <= 0xE0)
+          goto yy273;
+        goto yy274;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy275;
+        if (yych <= 0xEF)
+          goto yy274;
+        goto yy276;
+      } else {
+        if (yych <= 0xF3)
+          goto yy277;
+        if (yych <= 0xF4)
+          goto yy278;
+        goto yy231;
+      }
+    }
+  yy257:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy279;
+    if (yych == 'd')
+      goto yy279;
+    goto yy231;
+  yy258:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych <= 0x08)
+        goto yy231;
+      if (yych <= '\r')
+        goto yy258;
+      goto yy231;
+    } else {
+      if (yych <= ' ')
+        goto yy258;
+      if (yych == '>')
+        goto yy252;
+      goto yy231;
+    }
+  yy260:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy260;
+    }
+    if (yych <= ',') {
+      if (yych <= '\r') {
+        if (yych <= 0x08)
+          goto yy231;
+        goto yy280;
+      } else {
+        if (yych == ' ')
+          goto yy280;
+        goto yy231;
+      }
+    } else {
+      if (yych <= '<') {
+        if (yych <= '/')
+          goto yy251;
+        goto yy231;
+      } else {
+        if (yych <= '=')
+          goto yy282;
+        if (yych <= '>')
+          goto yy252;
+        goto yy231;
+      }
+    }
+  yy262:
+    ++p;
+    yych = *p;
+  yy263:
+    if (yybm[0 + yych] & 8) {
+      goto yy262;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= '-')
+          goto yy284;
+        goto yy231;
+      } else {
+        if (yych <= 0xDF)
+          goto yy265;
+        if (yych <= 0xE0)
+          goto yy266;
+        goto yy267;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy268;
+        if (yych <= 0xEF)
+          goto yy267;
+        goto yy269;
+      } else {
+        if (yych <= 0xF3)
+          goto yy270;
+        if (yych <= 0xF4)
+          goto yy271;
+        goto yy231;
+      }
+    }
+  yy264:
+    yych = *++p;
+    if (yych == '-')
+      goto yy251;
+    if (yych == '>')
+      goto yy231;
+    goto yy263;
+  yy265:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy262;
+    goto yy231;
+  yy266:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy265;
+    goto yy231;
+  yy267:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy265;
+    goto yy231;
+  yy268:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x9F)
+      goto yy265;
+    goto yy231;
+  yy269:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy267;
+    goto yy231;
+  yy270:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy267;
+    goto yy231;
+  yy271:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x8F)
+      goto yy267;
+    goto yy231;
+  yy272:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy255;
+    goto yy231;
+  yy273:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy272;
+    goto yy231;
+  yy274:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy272;
+    goto yy231;
+  yy275:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x9F)
+      goto yy272;
+    goto yy231;
+  yy276:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy274;
+    goto yy231;
+  yy277:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy274;
+    goto yy231;
+  yy278:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x8F)
+      goto yy274;
+    goto yy231;
+  yy279:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy285;
+    if (yych == 'a')
+      goto yy285;
+    goto yy231;
+  yy280:
+    ++p;
+    yych = *p;
+    if (yych <= '<') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy231;
+        if (yych <= '\r')
+          goto yy280;
+        if (yych <= 0x1F)
+          goto yy231;
+        goto yy280;
+      } else {
+        if (yych <= '/') {
+          if (yych <= '.')
+            goto yy231;
+          goto yy251;
+        } else {
+          if (yych == ':')
+            goto yy260;
+          goto yy231;
+        }
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '=')
+          goto yy282;
+        if (yych <= '>')
+          goto yy252;
+        if (yych <= '@')
+          goto yy231;
+        goto yy260;
+      } else {
+        if (yych <= '_') {
+          if (yych <= '^')
+            goto yy231;
+          goto yy260;
+        } else {
+          if (yych <= '`')
+            goto yy231;
+          if (yych <= 'z')
+            goto yy260;
+          goto yy231;
+        }
+      }
+    }
+  yy282:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy286;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '"') {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= ' ')
+          goto yy282;
+        goto yy288;
+      } else {
+        if (yych <= '\'')
+          goto yy290;
+        if (yych <= 0xC1)
+          goto yy231;
+        if (yych <= 0xDF)
+          goto yy292;
+        goto yy293;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy295;
+        goto yy294;
+      } else {
+        if (yych <= 0xF0)
+          goto yy296;
+        if (yych <= 0xF3)
+          goto yy297;
+        if (yych <= 0xF4)
+          goto yy298;
+        goto yy231;
+      }
+    }
+  yy284:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 8) {
+      goto yy262;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= '-')
+          goto yy251;
+        goto yy231;
+      } else {
+        if (yych <= 0xDF)
+          goto yy265;
+        if (yych <= 0xE0)
+          goto yy266;
+        goto yy267;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy268;
+        if (yych <= 0xEF)
+          goto yy267;
+        goto yy269;
+      } else {
+        if (yych <= 0xF3)
+          goto yy270;
+        if (yych <= 0xF4)
+          goto yy271;
+        goto yy231;
+      }
+    }
+  yy285:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy299;
+    if (yych == 't')
+      goto yy299;
+    goto yy231;
+  yy286:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy286;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= ' ')
+          goto yy247;
+        goto yy231;
+      } else {
+        if (yych <= '>')
+          goto yy252;
+        if (yych <= 0xC1)
+          goto yy231;
+        if (yych <= 0xDF)
+          goto yy292;
+        goto yy293;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy295;
+        goto yy294;
+      } else {
+        if (yych <= 0xF0)
+          goto yy296;
+        if (yych <= 0xF3)
+          goto yy297;
+        if (yych <= 0xF4)
+          goto yy298;
+        goto yy231;
+      }
+    }
+  yy288:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy288;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= '"')
+          goto yy300;
+        goto yy231;
+      } else {
+        if (yych <= 0xDF)
+          goto yy301;
+        if (yych <= 0xE0)
+          goto yy302;
+        goto yy303;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy304;
+        if (yych <= 0xEF)
+          goto yy303;
+        goto yy305;
+      } else {
+        if (yych <= 0xF3)
+          goto yy306;
+        if (yych <= 0xF4)
+          goto yy307;
+        goto yy231;
+      }
+    }
+  yy290:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy290;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= '\'')
+          goto yy300;
+        goto yy231;
+      } else {
+        if (yych <= 0xDF)
+          goto yy308;
+        if (yych <= 0xE0)
+          goto yy309;
+        goto yy310;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy311;
+        if (yych <= 0xEF)
+          goto yy310;
+        goto yy312;
+      } else {
+        if (yych <= 0xF3)
+          goto yy313;
+        if (yych <= 0xF4)
+          goto yy314;
+        goto yy231;
+      }
+    }
+  yy292:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy286;
+    goto yy231;
+  yy293:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy292;
+    goto yy231;
+  yy294:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy292;
+    goto yy231;
+  yy295:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x9F)
+      goto yy292;
+    goto yy231;
+  yy296:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy294;
+    goto yy231;
+  yy297:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy294;
+    goto yy231;
+  yy298:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x8F)
+      goto yy294;
+    goto yy231;
+  yy299:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy315;
+    if (yych == 'a')
+      goto yy315;
+    goto yy231;
+  yy300:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 1) {
+      goto yy247;
+    }
+    if (yych == '/')
+      goto yy251;
+    if (yych == '>')
+      goto yy252;
+    goto yy231;
+  yy301:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy288;
+    goto yy231;
+  yy302:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy301;
+    goto yy231;
+  yy303:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy301;
+    goto yy231;
+  yy304:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x9F)
+      goto yy301;
+    goto yy231;
+  yy305:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy303;
+    goto yy231;
+  yy306:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy303;
+    goto yy231;
+  yy307:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x8F)
+      goto yy303;
+    goto yy231;
+  yy308:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy290;
+    goto yy231;
+  yy309:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy308;
+    goto yy231;
+  yy310:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy308;
+    goto yy231;
+  yy311:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x9F)
+      goto yy308;
+    goto yy231;
+  yy312:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy310;
+    goto yy231;
+  yy313:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy310;
+    goto yy231;
+  yy314:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x8F)
+      goto yy310;
+    goto yy231;
+  yy315:
+    yych = *++p;
+    if (yych != '[')
+      goto yy231;
+  yy316:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy316;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych >= '^')
+          goto yy231;
+      } else {
+        if (yych <= 0xDF)
+          goto yy319;
+        if (yych <= 0xE0)
+          goto yy320;
+        goto yy321;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy322;
+        if (yych <= 0xEF)
+          goto yy321;
+        goto yy323;
+      } else {
+        if (yych <= 0xF3)
+          goto yy324;
+        if (yych <= 0xF4)
+          goto yy325;
+        goto yy231;
+      }
+    }
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy316;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= ']')
+          goto yy326;
+        goto yy231;
+      } else {
+        if (yych <= 0xDF)
+          goto yy319;
+        if (yych <= 0xE0)
+          goto yy320;
+        goto yy321;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy322;
+        if (yych <= 0xEF)
+          goto yy321;
+        goto yy323;
+      } else {
+        if (yych <= 0xF3)
+          goto yy324;
+        if (yych <= 0xF4)
+          goto yy325;
+        goto yy231;
+      }
+    }
+  yy319:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy316;
+    goto yy231;
+  yy320:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy319;
+    goto yy231;
+  yy321:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy319;
+    goto yy231;
+  yy322:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x9F)
+      goto yy319;
+    goto yy231;
+  yy323:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy321;
+    goto yy231;
+  yy324:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0xBF)
+      goto yy321;
+    goto yy231;
+  yy325:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy231;
+    if (yych <= 0x8F)
+      goto yy321;
+    goto yy231;
+  yy326:
+    ++p;
+    yych = *p;
+    if (yych <= 0xE0) {
+      if (yych <= '>') {
+        if (yych <= 0x00)
+          goto yy231;
+        if (yych <= '=')
+          goto yy316;
+        goto yy252;
+      } else {
+        if (yych <= 0x7F)
+          goto yy316;
+        if (yych <= 0xC1)
+          goto yy231;
+        if (yych <= 0xDF)
+          goto yy319;
+        goto yy320;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy322;
+        goto yy321;
+      } else {
+        if (yych <= 0xF0)
+          goto yy323;
+        if (yych <= 0xF3)
+          goto yy324;
+        if (yych <= 0xF4)
+          goto yy325;
+        goto yy231;
+      }
+    }
+  }
+}
+
+// Try to match an HTML block tag start line, returning
+// an integer code for the type of block (1-6, matching the spec).
+// #7 is handled by a separate function, below.
+bufsize_t _scan_html_block_start(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+
+  {
+    unsigned char yych;
+    yych = *p;
+    if (yych == '<')
+      goto yy331;
+    ++p;
+  yy330 : { return 0; }
+  yy331:
+    yych = *(marker = ++p);
+    switch (yych) {
+    case '!':
+      goto yy332;
+    case '/':
+      goto yy334;
+    case '?':
+      goto yy335;
+    case 'A':
+    case 'a':
+      goto yy337;
+    case 'B':
+    case 'b':
+      goto yy338;
+    case 'C':
+    case 'c':
+      goto yy339;
+    case 'D':
+    case 'd':
+      goto yy340;
+    case 'F':
+    case 'f':
+      goto yy341;
+    case 'H':
+    case 'h':
+      goto yy342;
+    case 'I':
+    case 'i':
+      goto yy343;
+    case 'L':
+    case 'l':
+      goto yy344;
+    case 'M':
+    case 'm':
+      goto yy345;
+    case 'N':
+    case 'n':
+      goto yy346;
+    case 'O':
+    case 'o':
+      goto yy347;
+    case 'P':
+    case 'p':
+      goto yy348;
+    case 'S':
+    case 's':
+      goto yy349;
+    case 'T':
+    case 't':
+      goto yy350;
+    case 'U':
+    case 'u':
+      goto yy351;
+    default:
+      goto yy330;
+    }
+  yy332:
+    yych = *++p;
+    if (yych <= '@') {
+      if (yych == '-')
+        goto yy352;
+    } else {
+      if (yych <= 'Z')
+        goto yy353;
+      if (yych <= '[')
+        goto yy355;
+    }
+  yy333:
+    p = marker;
+    goto yy330;
+  yy334:
+    yych = *++p;
+    switch (yych) {
+    case 'A':
+    case 'a':
+      goto yy337;
+    case 'B':
+    case 'b':
+      goto yy338;
+    case 'C':
+    case 'c':
+      goto yy339;
+    case 'D':
+    case 'd':
+      goto yy340;
+    case 'F':
+    case 'f':
+      goto yy341;
+    case 'H':
+    case 'h':
+      goto yy342;
+    case 'I':
+    case 'i':
+      goto yy343;
+    case 'L':
+    case 'l':
+      goto yy344;
+    case 'M':
+    case 'm':
+      goto yy345;
+    case 'N':
+    case 'n':
+      goto yy346;
+    case 'O':
+    case 'o':
+      goto yy347;
+    case 'P':
+    case 'p':
+      goto yy356;
+    case 'S':
+    case 's':
+      goto yy357;
+    case 'T':
+    case 't':
+      goto yy350;
+    case 'U':
+    case 'u':
+      goto yy351;
+    default:
+      goto yy333;
+    }
+  yy335:
+    ++p;
+    { return 3; }
+  yy337:
+    yych = *++p;
+    if (yych <= 'S') {
+      if (yych <= 'D') {
+        if (yych <= 'C')
+          goto yy333;
+        goto yy358;
+      } else {
+        if (yych <= 'Q')
+          goto yy333;
+        if (yych <= 'R')
+          goto yy359;
+        goto yy360;
+      }
+    } else {
+      if (yych <= 'q') {
+        if (yych == 'd')
+          goto yy358;
+        goto yy333;
+      } else {
+        if (yych <= 'r')
+          goto yy359;
+        if (yych <= 's')
+          goto yy360;
+        goto yy333;
+      }
+    }
+  yy338:
+    yych = *++p;
+    if (yych <= 'O') {
+      if (yych <= 'K') {
+        if (yych == 'A')
+          goto yy361;
+        goto yy333;
+      } else {
+        if (yych <= 'L')
+          goto yy362;
+        if (yych <= 'N')
+          goto yy333;
+        goto yy363;
+      }
+    } else {
+      if (yych <= 'k') {
+        if (yych == 'a')
+          goto yy361;
+        goto yy333;
+      } else {
+        if (yych <= 'l')
+          goto yy362;
+        if (yych == 'o')
+          goto yy363;
+        goto yy333;
+      }
+    }
+  yy339:
+    yych = *++p;
+    if (yych <= 'O') {
+      if (yych <= 'D') {
+        if (yych == 'A')
+          goto yy364;
+        goto yy333;
+      } else {
+        if (yych <= 'E')
+          goto yy365;
+        if (yych <= 'N')
+          goto yy333;
+        goto yy366;
+      }
+    } else {
+      if (yych <= 'd') {
+        if (yych == 'a')
+          goto yy364;
+        goto yy333;
+      } else {
+        if (yych <= 'e')
+          goto yy365;
+        if (yych == 'o')
+          goto yy366;
+        goto yy333;
+      }
+    }
+  yy340:
+    yych = *++p;
+    switch (yych) {
+    case 'D':
+    case 'L':
+    case 'T':
+    case 'd':
+    case 'l':
+    case 't':
+      goto yy367;
+    case 'E':
+    case 'e':
+      goto yy368;
+    case 'I':
+    case 'i':
+      goto yy369;
+    default:
+      goto yy333;
+    }
+  yy341:
+    yych = *++p;
+    if (yych <= 'R') {
+      if (yych <= 'N') {
+        if (yych == 'I')
+          goto yy370;
+        goto yy333;
+      } else {
+        if (yych <= 'O')
+          goto yy371;
+        if (yych <= 'Q')
+          goto yy333;
+        goto yy372;
+      }
+    } else {
+      if (yych <= 'n') {
+        if (yych == 'i')
+          goto yy370;
+        goto yy333;
+      } else {
+        if (yych <= 'o')
+          goto yy371;
+        if (yych == 'r')
+          goto yy372;
+        goto yy333;
+      }
+    }
+  yy342:
+    yych = *++p;
+    if (yych <= 'S') {
+      if (yych <= 'D') {
+        if (yych <= '0')
+          goto yy333;
+        if (yych <= '6')
+          goto yy367;
+        goto yy333;
+      } else {
+        if (yych <= 'E')
+          goto yy373;
+        if (yych == 'R')
+          goto yy367;
+        goto yy333;
+      }
+    } else {
+      if (yych <= 'q') {
+        if (yych <= 'T')
+          goto yy374;
+        if (yych == 'e')
+          goto yy373;
+        goto yy333;
+      } else {
+        if (yych <= 'r')
+          goto yy367;
+        if (yych == 't')
+          goto yy374;
+        goto yy333;
+      }
+    }
+  yy343:
+    yych = *++p;
+    if (yych == 'F')
+      goto yy375;
+    if (yych == 'f')
+      goto yy375;
+    goto yy333;
+  yy344:
+    yych = *++p;
+    if (yych <= 'I') {
+      if (yych == 'E')
+        goto yy376;
+      if (yych <= 'H')
+        goto yy333;
+      goto yy377;
+    } else {
+      if (yych <= 'e') {
+        if (yych <= 'd')
+          goto yy333;
+        goto yy376;
+      } else {
+        if (yych == 'i')
+          goto yy377;
+        goto yy333;
+      }
+    }
+  yy345:
+    yych = *++p;
+    if (yych <= 'E') {
+      if (yych == 'A')
+        goto yy378;
+      if (yych <= 'D')
+        goto yy333;
+      goto yy379;
+    } else {
+      if (yych <= 'a') {
+        if (yych <= '`')
+          goto yy333;
+        goto yy378;
+      } else {
+        if (yych == 'e')
+          goto yy379;
+        goto yy333;
+      }
+    }
+  yy346:
+    yych = *++p;
+    if (yych <= 'O') {
+      if (yych == 'A')
+        goto yy380;
+      if (yych <= 'N')
+        goto yy333;
+      goto yy381;
+    } else {
+      if (yych <= 'a') {
+        if (yych <= '`')
+          goto yy333;
+        goto yy380;
+      } else {
+        if (yych == 'o')
+          goto yy381;
+        goto yy333;
+      }
+    }
+  yy347:
+    yych = *++p;
+    if (yych <= 'P') {
+      if (yych == 'L')
+        goto yy367;
+      if (yych <= 'O')
+        goto yy333;
+      goto yy382;
+    } else {
+      if (yych <= 'l') {
+        if (yych <= 'k')
+          goto yy333;
+        goto yy367;
+      } else {
+        if (yych == 'p')
+          goto yy382;
+        goto yy333;
+      }
+    }
+  yy348:
+    yych = *++p;
+    if (yych <= '>') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        if (yych <= 0x1F)
+          goto yy333;
+        goto yy383;
+      } else {
+        if (yych == '/')
+          goto yy385;
+        if (yych <= '=')
+          goto yy333;
+        goto yy383;
+      }
+    } else {
+      if (yych <= 'R') {
+        if (yych == 'A')
+          goto yy386;
+        if (yych <= 'Q')
+          goto yy333;
+        goto yy387;
+      } else {
+        if (yych <= 'a') {
+          if (yych <= '`')
+            goto yy333;
+          goto yy386;
+        } else {
+          if (yych == 'r')
+            goto yy387;
+          goto yy333;
+        }
+      }
+    }
+  yy349:
+    yych = *++p;
+    switch (yych) {
+    case 'C':
+    case 'c':
+      goto yy388;
+    case 'E':
+    case 'e':
+      goto yy389;
+    case 'O':
+    case 'o':
+      goto yy390;
+    case 'T':
+    case 't':
+      goto yy391;
+    case 'U':
+    case 'u':
+      goto yy392;
+    default:
+      goto yy333;
+    }
+  yy350:
+    yych = *++p;
+    switch (yych) {
+    case 'A':
+    case 'a':
+      goto yy393;
+    case 'B':
+    case 'b':
+      goto yy394;
+    case 'D':
+    case 'd':
+      goto yy367;
+    case 'F':
+    case 'f':
+      goto yy395;
+    case 'H':
+    case 'h':
+      goto yy396;
+    case 'I':
+    case 'i':
+      goto yy397;
+    case 'R':
+    case 'r':
+      goto yy398;
+    default:
+      goto yy333;
+    }
+  yy351:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy367;
+    if (yych == 'l')
+      goto yy367;
+    goto yy333;
+  yy352:
+    yych = *++p;
+    if (yych == '-')
+      goto yy399;
+    goto yy333;
+  yy353:
+    ++p;
+    { return 4; }
+  yy355:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy401;
+    if (yych == 'c')
+      goto yy401;
+    goto yy333;
+  yy356:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= ' ')
+          goto yy383;
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= 'A')
+          goto yy386;
+        if (yych == 'a')
+          goto yy386;
+        goto yy333;
+      }
+    }
+  yy357:
+    yych = *++p;
+    if (yych <= 'U') {
+      if (yych <= 'N') {
+        if (yych == 'E')
+          goto yy389;
+        goto yy333;
+      } else {
+        if (yych <= 'O')
+          goto yy390;
+        if (yych <= 'T')
+          goto yy333;
+        goto yy392;
+      }
+    } else {
+      if (yych <= 'n') {
+        if (yych == 'e')
+          goto yy389;
+        goto yy333;
+      } else {
+        if (yych <= 'o')
+          goto yy390;
+        if (yych == 'u')
+          goto yy392;
+        goto yy333;
+      }
+    }
+  yy358:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy402;
+    if (yych == 'd')
+      goto yy402;
+    goto yy333;
+  yy359:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy403;
+    if (yych == 't')
+      goto yy403;
+    goto yy333;
+  yy360:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy404;
+    if (yych == 'i')
+      goto yy404;
+    goto yy333;
+  yy361:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy405;
+    if (yych == 's')
+      goto yy405;
+    goto yy333;
+  yy362:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy406;
+    if (yych == 'o')
+      goto yy406;
+    goto yy333;
+  yy363:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy407;
+    if (yych == 'd')
+      goto yy407;
+    goto yy333;
+  yy364:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy408;
+    if (yych == 'p')
+      goto yy408;
+    goto yy333;
+  yy365:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy409;
+    if (yych == 'n')
+      goto yy409;
+    goto yy333;
+  yy366:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy410;
+    if (yych == 'l')
+      goto yy410;
+    goto yy333;
+  yy367:
+    yych = *++p;
+    if (yych <= ' ') {
+      if (yych <= 0x08)
+        goto yy333;
+      if (yych <= '\r')
+        goto yy383;
+      if (yych <= 0x1F)
+        goto yy333;
+      goto yy383;
+    } else {
+      if (yych <= '/') {
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      } else {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      }
+    }
+  yy368:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy411;
+    if (yych == 't')
+      goto yy411;
+    goto yy333;
+  yy369:
+    yych = *++p;
+    if (yych <= 'V') {
+      if (yych <= 'Q') {
+        if (yych == 'A')
+          goto yy412;
+        goto yy333;
+      } else {
+        if (yych <= 'R')
+          goto yy367;
+        if (yych <= 'U')
+          goto yy333;
+        goto yy367;
+      }
+    } else {
+      if (yych <= 'q') {
+        if (yych == 'a')
+          goto yy412;
+        goto yy333;
+      } else {
+        if (yych <= 'r')
+          goto yy367;
+        if (yych == 'v')
+          goto yy367;
+        goto yy333;
+      }
+    }
+  yy370:
+    yych = *++p;
+    if (yych <= 'G') {
+      if (yych == 'E')
+        goto yy413;
+      if (yych <= 'F')
+        goto yy333;
+      goto yy414;
+    } else {
+      if (yych <= 'e') {
+        if (yych <= 'd')
+          goto yy333;
+        goto yy413;
+      } else {
+        if (yych == 'g')
+          goto yy414;
+        goto yy333;
+      }
+    }
+  yy371:
+    yych = *++p;
+    if (yych <= 'R') {
+      if (yych == 'O')
+        goto yy409;
+      if (yych <= 'Q')
+        goto yy333;
+      goto yy415;
+    } else {
+      if (yych <= 'o') {
+        if (yych <= 'n')
+          goto yy333;
+        goto yy409;
+      } else {
+        if (yych == 'r')
+          goto yy415;
+        goto yy333;
+      }
+    }
+  yy372:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy416;
+    if (yych == 'a')
+      goto yy416;
+    goto yy333;
+  yy373:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy417;
+    if (yych == 'a')
+      goto yy417;
+    goto yy333;
+  yy374:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy351;
+    if (yych == 'm')
+      goto yy351;
+    goto yy333;
+  yy375:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy418;
+    if (yych == 'r')
+      goto yy418;
+    goto yy333;
+  yy376:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy419;
+    if (yych == 'g')
+      goto yy419;
+    goto yy333;
+  yy377:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= ' ')
+          goto yy383;
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      }
+    } else {
+      if (yych <= 'M') {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= 'N')
+          goto yy420;
+        if (yych == 'n')
+          goto yy420;
+        goto yy333;
+      }
+    }
+  yy378:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy421;
+    if (yych == 'i')
+      goto yy421;
+    goto yy333;
+  yy379:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy422;
+    if (yych == 'n')
+      goto yy422;
+    goto yy333;
+  yy380:
+    yych = *++p;
+    if (yych == 'V')
+      goto yy367;
+    if (yych == 'v')
+      goto yy367;
+    goto yy333;
+  yy381:
+    yych = *++p;
+    if (yych == 'F')
+      goto yy423;
+    if (yych == 'f')
+      goto yy423;
+    goto yy333;
+  yy382:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy424;
+    if (yych == 't')
+      goto yy424;
+    goto yy333;
+  yy383:
+    ++p;
+    { return 6; }
+  yy385:
+    yych = *++p;
+    if (yych == '>')
+      goto yy383;
+    goto yy333;
+  yy386:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy425;
+    if (yych == 'r')
+      goto yy425;
+    goto yy333;
+  yy387:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy426;
+    if (yych == 'e')
+      goto yy426;
+    goto yy333;
+  yy388:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy427;
+    if (yych == 'r')
+      goto yy427;
+    goto yy333;
+  yy389:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy408;
+    if (yych == 'c')
+      goto yy408;
+    goto yy333;
+  yy390:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy428;
+    if (yych == 'u')
+      goto yy428;
+    goto yy333;
+  yy391:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy429;
+    if (yych == 'y')
+      goto yy429;
+    goto yy333;
+  yy392:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy430;
+    if (yych == 'm')
+      goto yy430;
+    goto yy333;
+  yy393:
+    yych = *++p;
+    if (yych == 'B')
+      goto yy431;
+    if (yych == 'b')
+      goto yy431;
+    goto yy333;
+  yy394:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy363;
+    if (yych == 'o')
+      goto yy363;
+    goto yy333;
+  yy395:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy432;
+    if (yych == 'o')
+      goto yy432;
+    goto yy333;
+  yy396:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= ' ')
+          goto yy383;
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      }
+    } else {
+      if (yych <= 'D') {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= 'E')
+          goto yy433;
+        if (yych == 'e')
+          goto yy433;
+        goto yy333;
+      }
+    }
+  yy397:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy431;
+    if (yych == 't')
+      goto yy431;
+    goto yy333;
+  yy398:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= ' ')
+          goto yy383;
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= 'A')
+          goto yy434;
+        if (yych == 'a')
+          goto yy434;
+        goto yy333;
+      }
+    }
+  yy399:
+    ++p;
+    { return 2; }
+  yy401:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy435;
+    if (yych == 'd')
+      goto yy435;
+    goto yy333;
+  yy402:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy436;
+    if (yych == 'r')
+      goto yy436;
+    goto yy333;
+  yy403:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy437;
+    if (yych == 'i')
+      goto yy437;
+    goto yy333;
+  yy404:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy438;
+    if (yych == 'd')
+      goto yy438;
+    goto yy333;
+  yy405:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy439;
+    if (yych == 'e')
+      goto yy439;
+    goto yy333;
+  yy406:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy440;
+    if (yych == 'c')
+      goto yy440;
+    goto yy333;
+  yy407:
+    yych = *++p;
+    if (yych == 'Y')
+      goto yy367;
+    if (yych == 'y')
+      goto yy367;
+    goto yy333;
+  yy408:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy441;
+    if (yych == 't')
+      goto yy441;
+    goto yy333;
+  yy409:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy442;
+    if (yych == 't')
+      goto yy442;
+    goto yy333;
+  yy410:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= ' ')
+          goto yy383;
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      }
+    } else {
+      if (yych <= 'F') {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= 'G')
+          goto yy443;
+        if (yych == 'g')
+          goto yy443;
+        goto yy333;
+      }
+    }
+  yy411:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy444;
+    if (yych == 'a')
+      goto yy444;
+    goto yy333;
+  yy412:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy445;
+    if (yych == 'l')
+      goto yy445;
+    goto yy333;
+  yy413:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy446;
+    if (yych == 'l')
+      goto yy446;
+    goto yy333;
+  yy414:
+    yych = *++p;
+    if (yych <= 'U') {
+      if (yych == 'C')
+        goto yy447;
+      if (yych <= 'T')
+        goto yy333;
+      goto yy448;
+    } else {
+      if (yych <= 'c') {
+        if (yych <= 'b')
+          goto yy333;
+        goto yy447;
+      } else {
+        if (yych == 'u')
+          goto yy448;
+        goto yy333;
+      }
+    }
+  yy415:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy367;
+    if (yych == 'm')
+      goto yy367;
+    goto yy333;
+  yy416:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy449;
+    if (yych == 'm')
+      goto yy449;
+    goto yy333;
+  yy417:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy450;
+    if (yych == 'd')
+      goto yy450;
+    goto yy333;
+  yy418:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy451;
+    if (yych == 'a')
+      goto yy451;
+    goto yy333;
+  yy419:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy452;
+    if (yych == 'e')
+      goto yy452;
+    goto yy333;
+  yy420:
+    yych = *++p;
+    if (yych == 'K')
+      goto yy367;
+    if (yych == 'k')
+      goto yy367;
+    goto yy333;
+  yy421:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy367;
+    if (yych == 'n')
+      goto yy367;
+    goto yy333;
+  yy422:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy453;
+    if (yych == 'u')
+      goto yy453;
+    goto yy333;
+  yy423:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy454;
+    if (yych == 'r')
+      goto yy454;
+    goto yy333;
+  yy424:
+    yych = *++p;
+    if (yych <= 'I') {
+      if (yych == 'G')
+        goto yy443;
+      if (yych <= 'H')
+        goto yy333;
+      goto yy455;
+    } else {
+      if (yych <= 'g') {
+        if (yych <= 'f')
+          goto yy333;
+        goto yy443;
+      } else {
+        if (yych == 'i')
+          goto yy455;
+        goto yy333;
+      }
+    }
+  yy425:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy415;
+    if (yych == 'a')
+      goto yy415;
+    goto yy333;
+  yy426:
+    yych = *++p;
+    if (yych <= 0x1F) {
+      if (yych <= 0x08)
+        goto yy333;
+      if (yych <= '\r')
+        goto yy456;
+      goto yy333;
+    } else {
+      if (yych <= ' ')
+        goto yy456;
+      if (yych == '>')
+        goto yy456;
+      goto yy333;
+    }
+  yy427:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy458;
+    if (yych == 'i')
+      goto yy458;
+    goto yy333;
+  yy428:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy459;
+    if (yych == 'r')
+      goto yy459;
+    goto yy333;
+  yy429:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy387;
+    if (yych == 'l')
+      goto yy387;
+    goto yy333;
+  yy430:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy460;
+    if (yych == 'm')
+      goto yy460;
+    goto yy333;
+  yy431:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy438;
+    if (yych == 'l')
+      goto yy438;
+    goto yy333;
+  yy432:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy461;
+    if (yych == 'o')
+      goto yy461;
+    goto yy333;
+  yy433:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy462;
+    if (yych == 'a')
+      goto yy462;
+    goto yy333;
+  yy434:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy420;
+    if (yych == 'c')
+      goto yy420;
+    goto yy333;
+  yy435:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy463;
+    if (yych == 'a')
+      goto yy463;
+    goto yy333;
+  yy436:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy464;
+    if (yych == 'e')
+      goto yy464;
+    goto yy333;
+  yy437:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy431;
+    if (yych == 'c')
+      goto yy431;
+    goto yy333;
+  yy438:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy367;
+    if (yych == 'e')
+      goto yy367;
+    goto yy333;
+  yy439:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= ' ')
+          goto yy383;
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      }
+    } else {
+      if (yych <= 'E') {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= 'F')
+          goto yy465;
+        if (yych == 'f')
+          goto yy465;
+        goto yy333;
+      }
+    }
+  yy440:
+    yych = *++p;
+    if (yych == 'K')
+      goto yy466;
+    if (yych == 'k')
+      goto yy466;
+    goto yy333;
+  yy441:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy455;
+    if (yych == 'i')
+      goto yy455;
+    goto yy333;
+  yy442:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy467;
+    if (yych == 'e')
+      goto yy467;
+    goto yy333;
+  yy443:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy468;
+    if (yych == 'r')
+      goto yy468;
+    goto yy333;
+  yy444:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy469;
+    if (yych == 'i')
+      goto yy469;
+    goto yy333;
+  yy445:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy470;
+    if (yych == 'o')
+      goto yy470;
+    goto yy333;
+  yy446:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy471;
+    if (yych == 'd')
+      goto yy471;
+    goto yy333;
+  yy447:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy364;
+    if (yych == 'a')
+      goto yy364;
+    goto yy333;
+  yy448:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy438;
+    if (yych == 'r')
+      goto yy438;
+    goto yy333;
+  yy449:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy472;
+    if (yych == 'e')
+      goto yy472;
+    goto yy333;
+  yy450:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= ' ')
+          goto yy383;
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      }
+    } else {
+      if (yych <= 'D') {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= 'E')
+          goto yy467;
+        if (yych == 'e')
+          goto yy467;
+        goto yy333;
+      }
+    }
+  yy451:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy438;
+    if (yych == 'm')
+      goto yy438;
+    goto yy333;
+  yy452:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy462;
+    if (yych == 'n')
+      goto yy462;
+    goto yy333;
+  yy453:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= ' ')
+          goto yy383;
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      }
+    } else {
+      if (yych <= 'H') {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= 'I')
+          goto yy473;
+        if (yych == 'i')
+          goto yy473;
+        goto yy333;
+      }
+    }
+  yy454:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy474;
+    if (yych == 'a')
+      goto yy474;
+    goto yy333;
+  yy455:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy421;
+    if (yych == 'o')
+      goto yy421;
+    goto yy333;
+  yy456:
+    ++p;
+    { return 1; }
+  yy458:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy475;
+    if (yych == 'p')
+      goto yy475;
+    goto yy333;
+  yy459:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy438;
+    if (yych == 'c')
+      goto yy438;
+    goto yy333;
+  yy460:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy476;
+    if (yych == 'a')
+      goto yy476;
+    goto yy333;
+  yy461:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy367;
+    if (yych == 't')
+      goto yy367;
+    goto yy333;
+  yy462:
+    yych = *++p;
+    if (yych == 'D')
+      goto yy367;
+    if (yych == 'd')
+      goto yy367;
+    goto yy333;
+  yy463:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy477;
+    if (yych == 't')
+      goto yy477;
+    goto yy333;
+  yy464:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy478;
+    if (yych == 's')
+      goto yy478;
+    goto yy333;
+  yy465:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy479;
+    if (yych == 'o')
+      goto yy479;
+    goto yy333;
+  yy466:
+    yych = *++p;
+    if (yych == 'Q')
+      goto yy480;
+    if (yych == 'q')
+      goto yy480;
+    goto yy333;
+  yy467:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy367;
+    if (yych == 'r')
+      goto yy367;
+    goto yy333;
+  yy468:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy481;
+    if (yych == 'o')
+      goto yy481;
+    goto yy333;
+  yy469:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy478;
+    if (yych == 'l')
+      goto yy478;
+    goto yy333;
+  yy470:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy367;
+    if (yych == 'g')
+      goto yy367;
+    goto yy333;
+  yy471:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy482;
+    if (yych == 's')
+      goto yy482;
+    goto yy333;
+  yy472:
+    yych = *++p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy333;
+        if (yych <= '\r')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= ' ')
+          goto yy383;
+        if (yych <= '.')
+          goto yy333;
+        goto yy385;
+      }
+    } else {
+      if (yych <= 'R') {
+        if (yych == '>')
+          goto yy383;
+        goto yy333;
+      } else {
+        if (yych <= 'S')
+          goto yy482;
+        if (yych == 's')
+          goto yy482;
+        goto yy333;
+      }
+    }
+  yy473:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy483;
+    if (yych == 't')
+      goto yy483;
+    goto yy333;
+  yy474:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy484;
+    if (yych == 'm')
+      goto yy484;
+    goto yy333;
+  yy475:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy426;
+    if (yych == 't')
+      goto yy426;
+    goto yy333;
+  yy476:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy407;
+    if (yych == 'r')
+      goto yy407;
+    goto yy333;
+  yy477:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy485;
+    if (yych == 'a')
+      goto yy485;
+    goto yy333;
+  yy478:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy367;
+    if (yych == 's')
+      goto yy367;
+    goto yy333;
+  yy479:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy461;
+    if (yych == 'n')
+      goto yy461;
+    goto yy333;
+  yy480:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy486;
+    if (yych == 'u')
+      goto yy486;
+    goto yy333;
+  yy481:
+    yych = *++p;
+    if (yych == 'U')
+      goto yy487;
+    if (yych == 'u')
+      goto yy487;
+    goto yy333;
+  yy482:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy461;
+    if (yych == 'e')
+      goto yy461;
+    goto yy333;
+  yy483:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy415;
+    if (yych == 'e')
+      goto yy415;
+    goto yy333;
+  yy484:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy478;
+    if (yych == 'e')
+      goto yy478;
+    goto yy333;
+  yy485:
+    yych = *++p;
+    if (yych == '[')
+      goto yy488;
+    goto yy333;
+  yy486:
+    yych = *++p;
+    if (yych == 'O')
+      goto yy490;
+    if (yych == 'o')
+      goto yy490;
+    goto yy333;
+  yy487:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy367;
+    if (yych == 'p')
+      goto yy367;
+    goto yy333;
+  yy488:
+    ++p;
+    { return 5; }
+  yy490:
+    ++p;
+    if ((yych = *p) == 'T')
+      goto yy438;
+    if (yych == 't')
+      goto yy438;
+    goto yy333;
+  }
+}
+
+// Try to match an HTML block tag start line of type 7, returning
+// 7 if successful, 0 if not.
+bufsize_t _scan_html_block_start_7(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,   224, 224, 224, 224, 224, 224, 224, 224, 198, 210, 194, 198, 194,
+        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+        224, 224, 224, 224, 198, 224, 128, 224, 224, 224, 224, 64,  224, 224,
+        224, 224, 224, 233, 232, 224, 233, 233, 233, 233, 233, 233, 233, 233,
+        233, 233, 232, 224, 192, 192, 192, 224, 224, 233, 233, 233, 233, 233,
+        233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+        233, 233, 233, 233, 233, 233, 233, 224, 224, 224, 224, 232, 192, 233,
+        233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
+        233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 224, 224, 224,
+        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych == '<')
+      goto yy495;
+    ++p;
+  yy494 : { return 0; }
+  yy495:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '@') {
+      if (yych != '/')
+        goto yy494;
+    } else {
+      if (yych <= 'Z')
+        goto yy498;
+      if (yych <= '`')
+        goto yy494;
+      if (yych <= 'z')
+        goto yy498;
+      goto yy494;
+    }
+    yych = *++p;
+    if (yych <= '@')
+      goto yy497;
+    if (yych <= 'Z')
+      goto yy500;
+    if (yych <= '`')
+      goto yy497;
+    if (yych <= 'z')
+      goto yy500;
+  yy497:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy494;
+    } else {
+      goto yy513;
+    }
+  yy498:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy502;
+    }
+    if (yych <= '=') {
+      if (yych <= '.') {
+        if (yych == '-')
+          goto yy498;
+        goto yy497;
+      } else {
+        if (yych <= '/')
+          goto yy504;
+        if (yych <= '9')
+          goto yy498;
+        goto yy497;
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '>')
+          goto yy505;
+        if (yych <= '@')
+          goto yy497;
+        goto yy498;
+      } else {
+        if (yych <= '`')
+          goto yy497;
+        if (yych <= 'z')
+          goto yy498;
+        goto yy497;
+      }
+    }
+  yy500:
+    ++p;
+    yych = *p;
+    if (yych <= '/') {
+      if (yych <= 0x1F) {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy507;
+        goto yy497;
+      } else {
+        if (yych <= ' ')
+          goto yy507;
+        if (yych == '-')
+          goto yy500;
+        goto yy497;
+      }
+    } else {
+      if (yych <= '@') {
+        if (yych <= '9')
+          goto yy500;
+        if (yych == '>')
+          goto yy505;
+        goto yy497;
+      } else {
+        if (yych <= 'Z')
+          goto yy500;
+        if (yych <= '`')
+          goto yy497;
+        if (yych <= 'z')
+          goto yy500;
+        goto yy497;
+      }
+    }
+  yy502:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy502;
+    }
+    if (yych <= '>') {
+      if (yych <= '9') {
+        if (yych != '/')
+          goto yy497;
+      } else {
+        if (yych <= ':')
+          goto yy509;
+        if (yych <= '=')
+          goto yy497;
+        goto yy505;
+      }
+    } else {
+      if (yych <= '^') {
+        if (yych <= '@')
+          goto yy497;
+        if (yych <= 'Z')
+          goto yy509;
+        goto yy497;
+      } else {
+        if (yych == '`')
+          goto yy497;
+        if (yych <= 'z')
+          goto yy509;
+        goto yy497;
+      }
+    }
+  yy504:
+    yych = *++p;
+    if (yych != '>')
+      goto yy497;
+  yy505:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy505;
+    }
+    if (yych <= 0x08)
+      goto yy497;
+    if (yych <= '\n')
+      goto yy511;
+    if (yych <= '\v')
+      goto yy497;
+    if (yych <= '\r')
+      goto yy514;
+    goto yy497;
+  yy507:
+    ++p;
+    yych = *p;
+    if (yych <= 0x1F) {
+      if (yych <= 0x08)
+        goto yy497;
+      if (yych <= '\r')
+        goto yy507;
+      goto yy497;
+    } else {
+      if (yych <= ' ')
+        goto yy507;
+      if (yych == '>')
+        goto yy505;
+      goto yy497;
+    }
+  yy509:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 8) {
+      goto yy509;
+    }
+    if (yych <= ',') {
+      if (yych <= '\r') {
+        if (yych <= 0x08)
+          goto yy497;
+        goto yy515;
+      } else {
+        if (yych == ' ')
+          goto yy515;
+        goto yy497;
+      }
+    } else {
+      if (yych <= '<') {
+        if (yych <= '/')
+          goto yy504;
+        goto yy497;
+      } else {
+        if (yych <= '=')
+          goto yy517;
+        if (yych <= '>')
+          goto yy505;
+        goto yy497;
+      }
+    }
+  yy511:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 4) {
+      goto yy505;
+    }
+    if (yych <= 0x08)
+      goto yy513;
+    if (yych <= '\n')
+      goto yy511;
+    if (yych <= '\v')
+      goto yy513;
+    if (yych <= '\r')
+      goto yy514;
+  yy513 : { return 7; }
+  yy514:
+    yych = *++p;
+    goto yy513;
+  yy515:
+    ++p;
+    yych = *p;
+    if (yych <= '<') {
+      if (yych <= ' ') {
+        if (yych <= 0x08)
+          goto yy497;
+        if (yych <= '\r')
+          goto yy515;
+        if (yych <= 0x1F)
+          goto yy497;
+        goto yy515;
+      } else {
+        if (yych <= '/') {
+          if (yych <= '.')
+            goto yy497;
+          goto yy504;
+        } else {
+          if (yych == ':')
+            goto yy509;
+          goto yy497;
+        }
+      }
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '=')
+          goto yy517;
+        if (yych <= '>')
+          goto yy505;
+        if (yych <= '@')
+          goto yy497;
+        goto yy509;
+      } else {
+        if (yych <= '_') {
+          if (yych <= '^')
+            goto yy497;
+          goto yy509;
+        } else {
+          if (yych <= '`')
+            goto yy497;
+          if (yych <= 'z')
+            goto yy509;
+          goto yy497;
+        }
+      }
+    }
+  yy517:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy519;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '"') {
+        if (yych <= 0x00)
+          goto yy497;
+        if (yych <= ' ')
+          goto yy517;
+        goto yy521;
+      } else {
+        if (yych <= '\'')
+          goto yy523;
+        if (yych <= 0xC1)
+          goto yy497;
+        if (yych <= 0xDF)
+          goto yy525;
+        goto yy526;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy528;
+        goto yy527;
+      } else {
+        if (yych <= 0xF0)
+          goto yy529;
+        if (yych <= 0xF3)
+          goto yy530;
+        if (yych <= 0xF4)
+          goto yy531;
+        goto yy497;
+      }
+    }
+  yy519:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy519;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy497;
+        if (yych <= ' ')
+          goto yy502;
+        goto yy497;
+      } else {
+        if (yych <= '>')
+          goto yy505;
+        if (yych <= 0xC1)
+          goto yy497;
+        if (yych <= 0xDF)
+          goto yy525;
+        goto yy526;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy528;
+        goto yy527;
+      } else {
+        if (yych <= 0xF0)
+          goto yy529;
+        if (yych <= 0xF3)
+          goto yy530;
+        if (yych <= 0xF4)
+          goto yy531;
+        goto yy497;
+      }
+    }
+  yy521:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy521;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy497;
+        if (yych <= '"')
+          goto yy532;
+        goto yy497;
+      } else {
+        if (yych <= 0xDF)
+          goto yy533;
+        if (yych <= 0xE0)
+          goto yy534;
+        goto yy535;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy536;
+        if (yych <= 0xEF)
+          goto yy535;
+        goto yy537;
+      } else {
+        if (yych <= 0xF3)
+          goto yy538;
+        if (yych <= 0xF4)
+          goto yy539;
+        goto yy497;
+      }
+    }
+  yy523:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy523;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy497;
+        if (yych <= '\'')
+          goto yy532;
+        goto yy497;
+      } else {
+        if (yych <= 0xDF)
+          goto yy540;
+        if (yych <= 0xE0)
+          goto yy541;
+        goto yy542;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy543;
+        if (yych <= 0xEF)
+          goto yy542;
+        goto yy544;
+      } else {
+        if (yych <= 0xF3)
+          goto yy545;
+        if (yych <= 0xF4)
+          goto yy546;
+        goto yy497;
+      }
+    }
+  yy525:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy519;
+    goto yy497;
+  yy526:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy525;
+    goto yy497;
+  yy527:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy525;
+    goto yy497;
+  yy528:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0x9F)
+      goto yy525;
+    goto yy497;
+  yy529:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy527;
+    goto yy497;
+  yy530:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy527;
+    goto yy497;
+  yy531:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0x8F)
+      goto yy527;
+    goto yy497;
+  yy532:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 2) {
+      goto yy502;
+    }
+    if (yych == '/')
+      goto yy504;
+    if (yych == '>')
+      goto yy505;
+    goto yy497;
+  yy533:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy521;
+    goto yy497;
+  yy534:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy533;
+    goto yy497;
+  yy535:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy533;
+    goto yy497;
+  yy536:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0x9F)
+      goto yy533;
+    goto yy497;
+  yy537:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy535;
+    goto yy497;
+  yy538:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy535;
+    goto yy497;
+  yy539:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0x8F)
+      goto yy535;
+    goto yy497;
+  yy540:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy523;
+    goto yy497;
+  yy541:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy540;
+    goto yy497;
+  yy542:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy540;
+    goto yy497;
+  yy543:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0x9F)
+      goto yy540;
+    goto yy497;
+  yy544:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy542;
+    goto yy497;
+  yy545:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0xBF)
+      goto yy542;
+    goto yy497;
+  yy546:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy497;
+    if (yych <= 0x8F)
+      goto yy542;
+    goto yy497;
+  }
+}
+
+// Try to match an HTML block end line of type 1
+bufsize_t _scan_html_block_end_1(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,  64, 64, 64, 64, 64, 64,  64, 64, 64, 0,  64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,
+    };
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= ';') {
+        if (yych <= 0x00)
+          goto yy549;
+        if (yych != '\n')
+          goto yy551;
+      } else {
+        if (yych <= '<')
+          goto yy552;
+        if (yych <= 0x7F)
+          goto yy551;
+        if (yych >= 0xC2)
+          goto yy553;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy554;
+        if (yych == 0xED)
+          goto yy556;
+        goto yy555;
+      } else {
+        if (yych <= 0xF0)
+          goto yy557;
+        if (yych <= 0xF3)
+          goto yy558;
+        if (yych <= 0xF4)
+          goto yy559;
+      }
+    }
+  yy549:
+    ++p;
+  yy550 : { return 0; }
+  yy551:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy550;
+      if (yych <= '\t')
+        goto yy561;
+      goto yy550;
+    } else {
+      if (yych <= 0x7F)
+        goto yy561;
+      if (yych <= 0xC1)
+        goto yy550;
+      if (yych <= 0xF4)
+        goto yy561;
+      goto yy550;
+    }
+  yy552:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '.') {
+      if (yych <= 0x00)
+        goto yy550;
+      if (yych == '\n')
+        goto yy550;
+      goto yy561;
+    } else {
+      if (yych <= 0x7F) {
+        if (yych <= '/')
+          goto yy572;
+        goto yy561;
+      } else {
+        if (yych <= 0xC1)
+          goto yy550;
+        if (yych <= 0xF4)
+          goto yy561;
+        goto yy550;
+      }
+    }
+  yy553:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy550;
+    if (yych <= 0xBF)
+      goto yy560;
+    goto yy550;
+  yy554:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy550;
+    if (yych <= 0xBF)
+      goto yy565;
+    goto yy550;
+  yy555:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy550;
+    if (yych <= 0xBF)
+      goto yy565;
+    goto yy550;
+  yy556:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy550;
+    if (yych <= 0x9F)
+      goto yy565;
+    goto yy550;
+  yy557:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy550;
+    if (yych <= 0xBF)
+      goto yy567;
+    goto yy550;
+  yy558:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy550;
+    if (yych <= 0xBF)
+      goto yy567;
+    goto yy550;
+  yy559:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy550;
+    if (yych <= 0x8F)
+      goto yy567;
+    goto yy550;
+  yy560:
+    ++p;
+    yych = *p;
+  yy561:
+    if (yybm[0 + yych] & 64) {
+      goto yy560;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy562;
+        if (yych <= '<')
+          goto yy563;
+      } else {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        goto yy567;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy568;
+        if (yych <= 0xEF)
+          goto yy567;
+        goto yy569;
+      } else {
+        if (yych <= 0xF3)
+          goto yy570;
+        if (yych <= 0xF4)
+          goto yy571;
+      }
+    }
+  yy562:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy550;
+    } else {
+      goto yy582;
+    }
+  yy563:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '.') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= '/')
+          goto yy572;
+        if (yych <= 0x7F)
+          goto yy560;
+        if (yych <= 0xC1)
+          goto yy562;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych == 0xED)
+          goto yy568;
+        goto yy567;
+      } else {
+        if (yych <= 0xF0)
+          goto yy569;
+        if (yych <= 0xF3)
+          goto yy570;
+        if (yych <= 0xF4)
+          goto yy571;
+        goto yy562;
+      }
+    }
+  yy565:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy562;
+    if (yych <= 0xBF)
+      goto yy560;
+    goto yy562;
+  yy566:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy562;
+    if (yych <= 0xBF)
+      goto yy565;
+    goto yy562;
+  yy567:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy562;
+    if (yych <= 0xBF)
+      goto yy565;
+    goto yy562;
+  yy568:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy562;
+    if (yych <= 0x9F)
+      goto yy565;
+    goto yy562;
+  yy569:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy562;
+    if (yych <= 0xBF)
+      goto yy567;
+    goto yy562;
+  yy570:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy562;
+    if (yych <= 0xBF)
+      goto yy567;
+    goto yy562;
+  yy571:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy562;
+    if (yych <= 0x8F)
+      goto yy567;
+    goto yy562;
+  yy572:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 's') {
+      if (yych <= 'P') {
+        if (yych <= '\t') {
+          if (yych <= 0x00)
+            goto yy562;
+          goto yy560;
+        } else {
+          if (yych <= '\n')
+            goto yy562;
+          if (yych <= 'O')
+            goto yy560;
+        }
+      } else {
+        if (yych <= 'o') {
+          if (yych == 'S')
+            goto yy574;
+          goto yy560;
+        } else {
+          if (yych <= 'p')
+            goto yy573;
+          if (yych <= 'r')
+            goto yy560;
+          goto yy574;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        } else {
+          if (yych <= 0xDF)
+            goto yy565;
+          if (yych <= 0xE0)
+            goto yy566;
+          goto yy567;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy568;
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  yy573:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'Q') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= 'q') {
+          if (yych <= 'R')
+            goto yy575;
+          goto yy560;
+        } else {
+          if (yych <= 'r')
+            goto yy575;
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych <= 0xEC)
+          goto yy567;
+        goto yy568;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  yy574:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 't') {
+      if (yych <= 'C') {
+        if (yych <= '\t') {
+          if (yych <= 0x00)
+            goto yy562;
+          goto yy560;
+        } else {
+          if (yych <= '\n')
+            goto yy562;
+          if (yych <= 'B')
+            goto yy560;
+          goto yy576;
+        }
+      } else {
+        if (yych <= 'b') {
+          if (yych == 'T')
+            goto yy577;
+          goto yy560;
+        } else {
+          if (yych <= 'c')
+            goto yy576;
+          if (yych <= 's')
+            goto yy560;
+          goto yy577;
+        }
+      }
+    } else {
+      if (yych <= 0xEC) {
+        if (yych <= 0xC1) {
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        } else {
+          if (yych <= 0xDF)
+            goto yy565;
+          if (yych <= 0xE0)
+            goto yy566;
+          goto yy567;
+        }
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xED)
+            goto yy568;
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  yy575:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'D') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= 'd') {
+          if (yych <= 'E')
+            goto yy578;
+          goto yy560;
+        } else {
+          if (yych <= 'e')
+            goto yy578;
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych <= 0xEC)
+          goto yy567;
+        goto yy568;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  yy576:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'Q') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= 'q') {
+          if (yych <= 'R')
+            goto yy579;
+          goto yy560;
+        } else {
+          if (yych <= 'r')
+            goto yy579;
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych <= 0xEC)
+          goto yy567;
+        goto yy568;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  yy577:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'X') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= 'x') {
+          if (yych <= 'Y')
+            goto yy580;
+          goto yy560;
+        } else {
+          if (yych <= 'y')
+            goto yy580;
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych <= 0xEC)
+          goto yy567;
+        goto yy568;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  yy578:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= '>')
+          goto yy581;
+        if (yych <= 0x7F)
+          goto yy560;
+        if (yych <= 0xC1)
+          goto yy562;
+        goto yy565;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych == 0xED)
+          goto yy568;
+        goto yy567;
+      } else {
+        if (yych <= 0xF0)
+          goto yy569;
+        if (yych <= 0xF3)
+          goto yy570;
+        if (yych <= 0xF4)
+          goto yy571;
+        goto yy562;
+      }
+    }
+  yy579:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'H') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= 'h') {
+          if (yych <= 'I')
+            goto yy583;
+          goto yy560;
+        } else {
+          if (yych <= 'i')
+            goto yy583;
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych <= 0xEC)
+          goto yy567;
+        goto yy568;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  yy580:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'K') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= 'k') {
+          if (yych <= 'L')
+            goto yy575;
+          goto yy560;
+        } else {
+          if (yych <= 'l')
+            goto yy575;
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych <= 0xEC)
+          goto yy567;
+        goto yy568;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  yy581:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy560;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy582;
+        if (yych <= '<')
+          goto yy563;
+      } else {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        goto yy567;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy568;
+        if (yych <= 0xEF)
+          goto yy567;
+        goto yy569;
+      } else {
+        if (yych <= 0xF3)
+          goto yy570;
+        if (yych <= 0xF4)
+          goto yy571;
+      }
+    }
+  yy582 : { return (bufsize_t)(p - start); }
+  yy583:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'O') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= 'o') {
+          if (yych >= 'Q')
+            goto yy560;
+        } else {
+          if (yych <= 'p')
+            goto yy584;
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych <= 0xEC)
+          goto yy567;
+        goto yy568;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  yy584:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy563;
+    }
+    if (yych <= 0xC1) {
+      if (yych <= 'S') {
+        if (yych <= 0x00)
+          goto yy562;
+        if (yych == '\n')
+          goto yy562;
+        goto yy560;
+      } else {
+        if (yych <= 's') {
+          if (yych <= 'T')
+            goto yy578;
+          goto yy560;
+        } else {
+          if (yych <= 't')
+            goto yy578;
+          if (yych <= 0x7F)
+            goto yy560;
+          goto yy562;
+        }
+      }
+    } else {
+      if (yych <= 0xED) {
+        if (yych <= 0xDF)
+          goto yy565;
+        if (yych <= 0xE0)
+          goto yy566;
+        if (yych <= 0xEC)
+          goto yy567;
+        goto yy568;
+      } else {
+        if (yych <= 0xF0) {
+          if (yych <= 0xEF)
+            goto yy567;
+          goto yy569;
+        } else {
+          if (yych <= 0xF3)
+            goto yy570;
+          if (yych <= 0xF4)
+            goto yy571;
+          goto yy562;
+        }
+      }
+    }
+  }
+}
+
+// Try to match an HTML block end line of type 2
+bufsize_t _scan_html_block_end_2(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,  64, 64, 64, 64, 64, 64, 64, 64, 64,  0,  64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,
+    };
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= ',') {
+        if (yych <= 0x00)
+          goto yy587;
+        if (yych != '\n')
+          goto yy589;
+      } else {
+        if (yych <= '-')
+          goto yy590;
+        if (yych <= 0x7F)
+          goto yy589;
+        if (yych >= 0xC2)
+          goto yy591;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy592;
+        if (yych == 0xED)
+          goto yy594;
+        goto yy593;
+      } else {
+        if (yych <= 0xF0)
+          goto yy595;
+        if (yych <= 0xF3)
+          goto yy596;
+        if (yych <= 0xF4)
+          goto yy597;
+      }
+    }
+  yy587:
+    ++p;
+  yy588 : { return 0; }
+  yy589:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy588;
+      if (yych <= '\t')
+        goto yy599;
+      goto yy588;
+    } else {
+      if (yych <= 0x7F)
+        goto yy599;
+      if (yych <= 0xC1)
+        goto yy588;
+      if (yych <= 0xF4)
+        goto yy599;
+      goto yy588;
+    }
+  yy590:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy609;
+    }
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy588;
+      if (yych <= '\t')
+        goto yy599;
+      goto yy588;
+    } else {
+      if (yych <= 0x7F)
+        goto yy599;
+      if (yych <= 0xC1)
+        goto yy588;
+      if (yych <= 0xF4)
+        goto yy599;
+      goto yy588;
+    }
+  yy591:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy588;
+    if (yych <= 0xBF)
+      goto yy598;
+    goto yy588;
+  yy592:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy588;
+    if (yych <= 0xBF)
+      goto yy602;
+    goto yy588;
+  yy593:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy588;
+    if (yych <= 0xBF)
+      goto yy602;
+    goto yy588;
+  yy594:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy588;
+    if (yych <= 0x9F)
+      goto yy602;
+    goto yy588;
+  yy595:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy588;
+    if (yych <= 0xBF)
+      goto yy604;
+    goto yy588;
+  yy596:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy588;
+    if (yych <= 0xBF)
+      goto yy604;
+    goto yy588;
+  yy597:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy588;
+    if (yych <= 0x8F)
+      goto yy604;
+    goto yy588;
+  yy598:
+    ++p;
+    yych = *p;
+  yy599:
+    if (yybm[0 + yych] & 64) {
+      goto yy598;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy600;
+        if (yych <= '-')
+          goto yy601;
+      } else {
+        if (yych <= 0xDF)
+          goto yy602;
+        if (yych <= 0xE0)
+          goto yy603;
+        goto yy604;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy605;
+        if (yych <= 0xEF)
+          goto yy604;
+        goto yy606;
+      } else {
+        if (yych <= 0xF3)
+          goto yy607;
+        if (yych <= 0xF4)
+          goto yy608;
+      }
+    }
+  yy600:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy588;
+    } else {
+      goto yy612;
+    }
+  yy601:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy598;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy600;
+        if (yych <= '-')
+          goto yy609;
+        goto yy600;
+      } else {
+        if (yych <= 0xDF)
+          goto yy602;
+        if (yych <= 0xE0)
+          goto yy603;
+        goto yy604;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy605;
+        if (yych <= 0xEF)
+          goto yy604;
+        goto yy606;
+      } else {
+        if (yych <= 0xF3)
+          goto yy607;
+        if (yych <= 0xF4)
+          goto yy608;
+        goto yy600;
+      }
+    }
+  yy602:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy600;
+    if (yych <= 0xBF)
+      goto yy598;
+    goto yy600;
+  yy603:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy600;
+    if (yych <= 0xBF)
+      goto yy602;
+    goto yy600;
+  yy604:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy600;
+    if (yych <= 0xBF)
+      goto yy602;
+    goto yy600;
+  yy605:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy600;
+    if (yych <= 0x9F)
+      goto yy602;
+    goto yy600;
+  yy606:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy600;
+    if (yych <= 0xBF)
+      goto yy604;
+    goto yy600;
+  yy607:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy600;
+    if (yych <= 0xBF)
+      goto yy604;
+    goto yy600;
+  yy608:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy600;
+    if (yych <= 0x8F)
+      goto yy604;
+    goto yy600;
+  yy609:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy609;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy600;
+        if (yych == '\n')
+          goto yy600;
+        goto yy598;
+      } else {
+        if (yych <= '>')
+          goto yy611;
+        if (yych <= 0x7F)
+          goto yy598;
+        if (yych <= 0xC1)
+          goto yy600;
+        goto yy602;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy603;
+        if (yych == 0xED)
+          goto yy605;
+        goto yy604;
+      } else {
+        if (yych <= 0xF0)
+          goto yy606;
+        if (yych <= 0xF3)
+          goto yy607;
+        if (yych <= 0xF4)
+          goto yy608;
+        goto yy600;
+      }
+    }
+  yy611:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy598;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy612;
+        if (yych <= '-')
+          goto yy601;
+      } else {
+        if (yych <= 0xDF)
+          goto yy602;
+        if (yych <= 0xE0)
+          goto yy603;
+        goto yy604;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy605;
+        if (yych <= 0xEF)
+          goto yy604;
+        goto yy606;
+      } else {
+        if (yych <= 0xF3)
+          goto yy607;
+        if (yych <= 0xF4)
+          goto yy608;
+      }
+    }
+  yy612 : { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match an HTML block end line of type 3
+bufsize_t _scan_html_block_end_3(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,  64, 64, 64, 64, 64, 64, 64, 64, 64,  0,  64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,
+    };
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= '>') {
+        if (yych <= 0x00)
+          goto yy615;
+        if (yych != '\n')
+          goto yy617;
+      } else {
+        if (yych <= '?')
+          goto yy618;
+        if (yych <= 0x7F)
+          goto yy617;
+        if (yych >= 0xC2)
+          goto yy619;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy620;
+        if (yych == 0xED)
+          goto yy622;
+        goto yy621;
+      } else {
+        if (yych <= 0xF0)
+          goto yy623;
+        if (yych <= 0xF3)
+          goto yy624;
+        if (yych <= 0xF4)
+          goto yy625;
+      }
+    }
+  yy615:
+    ++p;
+  yy616 : { return 0; }
+  yy617:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy616;
+      if (yych <= '\t')
+        goto yy627;
+      goto yy616;
+    } else {
+      if (yych <= 0x7F)
+        goto yy627;
+      if (yych <= 0xC1)
+        goto yy616;
+      if (yych <= 0xF4)
+        goto yy627;
+      goto yy616;
+    }
+  yy618:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '=') {
+      if (yych <= 0x00)
+        goto yy616;
+      if (yych == '\n')
+        goto yy616;
+      goto yy627;
+    } else {
+      if (yych <= 0x7F) {
+        if (yych <= '>')
+          goto yy638;
+        goto yy627;
+      } else {
+        if (yych <= 0xC1)
+          goto yy616;
+        if (yych <= 0xF4)
+          goto yy627;
+        goto yy616;
+      }
+    }
+  yy619:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy616;
+    if (yych <= 0xBF)
+      goto yy626;
+    goto yy616;
+  yy620:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy616;
+    if (yych <= 0xBF)
+      goto yy631;
+    goto yy616;
+  yy621:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy616;
+    if (yych <= 0xBF)
+      goto yy631;
+    goto yy616;
+  yy622:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy616;
+    if (yych <= 0x9F)
+      goto yy631;
+    goto yy616;
+  yy623:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy616;
+    if (yych <= 0xBF)
+      goto yy633;
+    goto yy616;
+  yy624:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy616;
+    if (yych <= 0xBF)
+      goto yy633;
+    goto yy616;
+  yy625:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy616;
+    if (yych <= 0x8F)
+      goto yy633;
+    goto yy616;
+  yy626:
+    ++p;
+    yych = *p;
+  yy627:
+    if (yybm[0 + yych] & 64) {
+      goto yy626;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy628;
+        if (yych <= '?')
+          goto yy629;
+      } else {
+        if (yych <= 0xDF)
+          goto yy631;
+        if (yych <= 0xE0)
+          goto yy632;
+        goto yy633;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy634;
+        if (yych <= 0xEF)
+          goto yy633;
+        goto yy635;
+      } else {
+        if (yych <= 0xF3)
+          goto yy636;
+        if (yych <= 0xF4)
+          goto yy637;
+      }
+    }
+  yy628:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy616;
+    } else {
+      goto yy639;
+    }
+  yy629:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy629;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy628;
+        if (yych == '\n')
+          goto yy628;
+        goto yy626;
+      } else {
+        if (yych <= '>')
+          goto yy638;
+        if (yych <= 0x7F)
+          goto yy626;
+        if (yych <= 0xC1)
+          goto yy628;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy632;
+        if (yych == 0xED)
+          goto yy634;
+        goto yy633;
+      } else {
+        if (yych <= 0xF0)
+          goto yy635;
+        if (yych <= 0xF3)
+          goto yy636;
+        if (yych <= 0xF4)
+          goto yy637;
+        goto yy628;
+      }
+    }
+  yy631:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy628;
+    if (yych <= 0xBF)
+      goto yy626;
+    goto yy628;
+  yy632:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy628;
+    if (yych <= 0xBF)
+      goto yy631;
+    goto yy628;
+  yy633:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy628;
+    if (yych <= 0xBF)
+      goto yy631;
+    goto yy628;
+  yy634:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy628;
+    if (yych <= 0x9F)
+      goto yy631;
+    goto yy628;
+  yy635:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy628;
+    if (yych <= 0xBF)
+      goto yy633;
+    goto yy628;
+  yy636:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy628;
+    if (yych <= 0xBF)
+      goto yy633;
+    goto yy628;
+  yy637:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy628;
+    if (yych <= 0x8F)
+      goto yy633;
+    goto yy628;
+  yy638:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy626;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy639;
+        if (yych <= '?')
+          goto yy629;
+      } else {
+        if (yych <= 0xDF)
+          goto yy631;
+        if (yych <= 0xE0)
+          goto yy632;
+        goto yy633;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy634;
+        if (yych <= 0xEF)
+          goto yy633;
+        goto yy635;
+      } else {
+        if (yych <= 0xF3)
+          goto yy636;
+        if (yych <= 0xF4)
+          goto yy637;
+      }
+    }
+  yy639 : { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match an HTML block end line of type 4
+bufsize_t _scan_html_block_end_4(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy645;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\n') {
+        if (yych <= 0x00)
+          goto yy642;
+        if (yych <= '\t')
+          goto yy644;
+      } else {
+        if (yych <= 0x7F)
+          goto yy644;
+        if (yych <= 0xC1)
+          goto yy642;
+        if (yych <= 0xDF)
+          goto yy648;
+        goto yy649;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy651;
+        goto yy650;
+      } else {
+        if (yych <= 0xF0)
+          goto yy652;
+        if (yych <= 0xF3)
+          goto yy653;
+        if (yych <= 0xF4)
+          goto yy654;
+      }
+    }
+  yy642:
+    ++p;
+  yy643 : { return 0; }
+  yy644:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy643;
+      if (yych <= '\t')
+        goto yy656;
+      goto yy643;
+    } else {
+      if (yych <= 0x7F)
+        goto yy656;
+      if (yych <= 0xC1)
+        goto yy643;
+      if (yych <= 0xF4)
+        goto yy656;
+      goto yy643;
+    }
+  yy645:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy655;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy647;
+        if (yych <= '>')
+          goto yy645;
+      } else {
+        if (yych <= 0xDF)
+          goto yy658;
+        if (yych <= 0xE0)
+          goto yy659;
+        goto yy660;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy661;
+        if (yych <= 0xEF)
+          goto yy660;
+        goto yy662;
+      } else {
+        if (yych <= 0xF3)
+          goto yy663;
+        if (yych <= 0xF4)
+          goto yy664;
+      }
+    }
+  yy647 : { return (bufsize_t)(p - start); }
+  yy648:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy643;
+    if (yych <= 0xBF)
+      goto yy655;
+    goto yy643;
+  yy649:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy643;
+    if (yych <= 0xBF)
+      goto yy658;
+    goto yy643;
+  yy650:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy643;
+    if (yych <= 0xBF)
+      goto yy658;
+    goto yy643;
+  yy651:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy643;
+    if (yych <= 0x9F)
+      goto yy658;
+    goto yy643;
+  yy652:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy643;
+    if (yych <= 0xBF)
+      goto yy660;
+    goto yy643;
+  yy653:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy643;
+    if (yych <= 0xBF)
+      goto yy660;
+    goto yy643;
+  yy654:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy643;
+    if (yych <= 0x8F)
+      goto yy660;
+    goto yy643;
+  yy655:
+    ++p;
+    yych = *p;
+  yy656:
+    if (yybm[0 + yych] & 128) {
+      goto yy655;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy657;
+        if (yych <= '>')
+          goto yy645;
+      } else {
+        if (yych <= 0xDF)
+          goto yy658;
+        if (yych <= 0xE0)
+          goto yy659;
+        goto yy660;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy661;
+        if (yych <= 0xEF)
+          goto yy660;
+        goto yy662;
+      } else {
+        if (yych <= 0xF3)
+          goto yy663;
+        if (yych <= 0xF4)
+          goto yy664;
+      }
+    }
+  yy657:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy643;
+    } else {
+      goto yy647;
+    }
+  yy658:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy657;
+    if (yych <= 0xBF)
+      goto yy655;
+    goto yy657;
+  yy659:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy657;
+    if (yych <= 0xBF)
+      goto yy658;
+    goto yy657;
+  yy660:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy657;
+    if (yych <= 0xBF)
+      goto yy658;
+    goto yy657;
+  yy661:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy657;
+    if (yych <= 0x9F)
+      goto yy658;
+    goto yy657;
+  yy662:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy657;
+    if (yych <= 0xBF)
+      goto yy660;
+    goto yy657;
+  yy663:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy657;
+    if (yych <= 0xBF)
+      goto yy660;
+    goto yy657;
+  yy664:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy657;
+    if (yych <= 0x8F)
+      goto yy660;
+    goto yy657;
+  }
+}
+
+// Try to match an HTML block end line of type 5
+bufsize_t _scan_html_block_end_5(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,  64, 64, 64,  64, 64, 64, 64, 64, 64, 0,  64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+        64, 64, 0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+        0,  0,  0,  0,
+    };
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy667;
+        if (yych != '\n')
+          goto yy669;
+      } else {
+        if (yych <= ']')
+          goto yy670;
+        if (yych <= 0x7F)
+          goto yy669;
+        if (yych >= 0xC2)
+          goto yy671;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy672;
+        if (yych == 0xED)
+          goto yy674;
+        goto yy673;
+      } else {
+        if (yych <= 0xF0)
+          goto yy675;
+        if (yych <= 0xF3)
+          goto yy676;
+        if (yych <= 0xF4)
+          goto yy677;
+      }
+    }
+  yy667:
+    ++p;
+  yy668 : { return 0; }
+  yy669:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy668;
+      if (yych <= '\t')
+        goto yy679;
+      goto yy668;
+    } else {
+      if (yych <= 0x7F)
+        goto yy679;
+      if (yych <= 0xC1)
+        goto yy668;
+      if (yych <= 0xF4)
+        goto yy679;
+      goto yy668;
+    }
+  yy670:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy689;
+    }
+    if (yych <= '\n') {
+      if (yych <= 0x00)
+        goto yy668;
+      if (yych <= '\t')
+        goto yy679;
+      goto yy668;
+    } else {
+      if (yych <= 0x7F)
+        goto yy679;
+      if (yych <= 0xC1)
+        goto yy668;
+      if (yych <= 0xF4)
+        goto yy679;
+      goto yy668;
+    }
+  yy671:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy668;
+    if (yych <= 0xBF)
+      goto yy678;
+    goto yy668;
+  yy672:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x9F)
+      goto yy668;
+    if (yych <= 0xBF)
+      goto yy682;
+    goto yy668;
+  yy673:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy668;
+    if (yych <= 0xBF)
+      goto yy682;
+    goto yy668;
+  yy674:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy668;
+    if (yych <= 0x9F)
+      goto yy682;
+    goto yy668;
+  yy675:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x8F)
+      goto yy668;
+    if (yych <= 0xBF)
+      goto yy684;
+    goto yy668;
+  yy676:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy668;
+    if (yych <= 0xBF)
+      goto yy684;
+    goto yy668;
+  yy677:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x7F)
+      goto yy668;
+    if (yych <= 0x8F)
+      goto yy684;
+    goto yy668;
+  yy678:
+    ++p;
+    yych = *p;
+  yy679:
+    if (yybm[0 + yych] & 64) {
+      goto yy678;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy680;
+        if (yych <= ']')
+          goto yy681;
+      } else {
+        if (yych <= 0xDF)
+          goto yy682;
+        if (yych <= 0xE0)
+          goto yy683;
+        goto yy684;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy685;
+        if (yych <= 0xEF)
+          goto yy684;
+        goto yy686;
+      } else {
+        if (yych <= 0xF3)
+          goto yy687;
+        if (yych <= 0xF4)
+          goto yy688;
+      }
+    }
+  yy680:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy668;
+    } else {
+      goto yy692;
+    }
+  yy681:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy678;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy680;
+        if (yych <= ']')
+          goto yy689;
+        goto yy680;
+      } else {
+        if (yych <= 0xDF)
+          goto yy682;
+        if (yych <= 0xE0)
+          goto yy683;
+        goto yy684;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy685;
+        if (yych <= 0xEF)
+          goto yy684;
+        goto yy686;
+      } else {
+        if (yych <= 0xF3)
+          goto yy687;
+        if (yych <= 0xF4)
+          goto yy688;
+        goto yy680;
+      }
+    }
+  yy682:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy680;
+    if (yych <= 0xBF)
+      goto yy678;
+    goto yy680;
+  yy683:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy680;
+    if (yych <= 0xBF)
+      goto yy682;
+    goto yy680;
+  yy684:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy680;
+    if (yych <= 0xBF)
+      goto yy682;
+    goto yy680;
+  yy685:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy680;
+    if (yych <= 0x9F)
+      goto yy682;
+    goto yy680;
+  yy686:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy680;
+    if (yych <= 0xBF)
+      goto yy684;
+    goto yy680;
+  yy687:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy680;
+    if (yych <= 0xBF)
+      goto yy684;
+    goto yy680;
+  yy688:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy680;
+    if (yych <= 0x8F)
+      goto yy684;
+    goto yy680;
+  yy689:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy689;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '=') {
+        if (yych <= 0x00)
+          goto yy680;
+        if (yych == '\n')
+          goto yy680;
+        goto yy678;
+      } else {
+        if (yych <= '>')
+          goto yy691;
+        if (yych <= 0x7F)
+          goto yy678;
+        if (yych <= 0xC1)
+          goto yy680;
+        goto yy682;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy683;
+        if (yych == 0xED)
+          goto yy685;
+        goto yy684;
+      } else {
+        if (yych <= 0xF0)
+          goto yy686;
+        if (yych <= 0xF3)
+          goto yy687;
+        if (yych <= 0xF4)
+          goto yy688;
+        goto yy680;
+      }
+    }
+  yy691:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy678;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= '\n')
+          goto yy692;
+        if (yych <= ']')
+          goto yy681;
+      } else {
+        if (yych <= 0xDF)
+          goto yy682;
+        if (yych <= 0xE0)
+          goto yy683;
+        goto yy684;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy685;
+        if (yych <= 0xEF)
+          goto yy684;
+        goto yy686;
+      } else {
+        if (yych <= 0xF3)
+          goto yy687;
+        if (yych <= 0xF4)
+          goto yy688;
+      }
+    }
+  yy692 : { return (bufsize_t)(p - start); }
+  }
+}
+
+// Try to match a link title (in single quotes, in double quotes, or
+// in parentheses), returning number of chars matched.  Allow one
+// level of internal nesting (quotes within quotes).
+bufsize_t _scan_link_title(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        0,   208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
+        208, 208, 208, 208, 208, 208, 192, 208, 208, 208, 208, 144, 80,  80,
+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
+        208, 208, 208, 208, 208, 208, 208, 208, 32,  208, 208, 208, 208, 208,
+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
+        208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
+        208, 208, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych <= '&') {
+      if (yych == '"')
+        goto yy697;
+    } else {
+      if (yych <= '\'')
+        goto yy698;
+      if (yych <= '(')
+        goto yy699;
+    }
+    ++p;
+  yy696 : { return 0; }
+  yy697:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy696;
+    if (yych <= 0x7F)
+      goto yy701;
+    if (yych <= 0xC1)
+      goto yy696;
+    if (yych <= 0xF4)
+      goto yy701;
+    goto yy696;
+  yy698:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= 0x00)
+      goto yy696;
+    if (yych <= 0x7F)
+      goto yy715;
+    if (yych <= 0xC1)
+      goto yy696;
+    if (yych <= 0xF4)
+      goto yy715;
+    goto yy696;
+  yy699:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych <= '(') {
+      if (yych <= 0x00)
+        goto yy696;
+      if (yych <= '\'')
+        goto yy728;
+      goto yy696;
+    } else {
+      if (yych <= 0x7F)
+        goto yy728;
+      if (yych <= 0xC1)
+        goto yy696;
+      if (yych <= 0xF4)
+        goto yy728;
+      goto yy696;
+    }
+  yy700:
+    ++p;
+    yych = *p;
+  yy701:
+    if (yybm[0 + yych] & 16) {
+      goto yy700;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy702;
+        if (yych <= '"')
+          goto yy703;
+        goto yy705;
+      } else {
+        if (yych <= 0xC1)
+          goto yy702;
+        if (yych <= 0xDF)
+          goto yy707;
+        goto yy708;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy710;
+        goto yy709;
+      } else {
+        if (yych <= 0xF0)
+          goto yy711;
+        if (yych <= 0xF3)
+          goto yy712;
+        if (yych <= 0xF4)
+          goto yy713;
+      }
+    }
+  yy702:
+    p = marker;
+    if (yyaccept <= 1) {
+      if (yyaccept == 0) {
+        goto yy696;
+      } else {
+        goto yy704;
+      }
+    } else {
+      if (yyaccept == 2) {
+        goto yy717;
+      } else {
+        goto yy730;
+      }
+    }
+  yy703:
+    ++p;
+  yy704 : { return (bufsize_t)(p - start); }
+  yy705:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy700;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy702;
+        if (yych <= '"')
+          goto yy740;
+        goto yy705;
+      } else {
+        if (yych <= 0xC1)
+          goto yy702;
+        if (yych >= 0xE0)
+          goto yy708;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy710;
+        goto yy709;
+      } else {
+        if (yych <= 0xF0)
+          goto yy711;
+        if (yych <= 0xF3)
+          goto yy712;
+        if (yych <= 0xF4)
+          goto yy713;
+        goto yy702;
+      }
+    }
+  yy707:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy700;
+    goto yy702;
+  yy708:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy707;
+    goto yy702;
+  yy709:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy707;
+    goto yy702;
+  yy710:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0x9F)
+      goto yy707;
+    goto yy702;
+  yy711:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy709;
+    goto yy702;
+  yy712:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy709;
+    goto yy702;
+  yy713:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0x8F)
+      goto yy709;
+    goto yy702;
+  yy714:
+    ++p;
+    yych = *p;
+  yy715:
+    if (yybm[0 + yych] & 64) {
+      goto yy714;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy702;
+        if (yych >= '(')
+          goto yy718;
+      } else {
+        if (yych <= 0xC1)
+          goto yy702;
+        if (yych <= 0xDF)
+          goto yy720;
+        goto yy721;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy723;
+        goto yy722;
+      } else {
+        if (yych <= 0xF0)
+          goto yy724;
+        if (yych <= 0xF3)
+          goto yy725;
+        if (yych <= 0xF4)
+          goto yy726;
+        goto yy702;
+      }
+    }
+  yy716:
+    ++p;
+  yy717 : { return (bufsize_t)(p - start); }
+  yy718:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy714;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy702;
+        if (yych <= '\'')
+          goto yy741;
+        goto yy718;
+      } else {
+        if (yych <= 0xC1)
+          goto yy702;
+        if (yych >= 0xE0)
+          goto yy721;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy723;
+        goto yy722;
+      } else {
+        if (yych <= 0xF0)
+          goto yy724;
+        if (yych <= 0xF3)
+          goto yy725;
+        if (yych <= 0xF4)
+          goto yy726;
+        goto yy702;
+      }
+    }
+  yy720:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy714;
+    goto yy702;
+  yy721:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy720;
+    goto yy702;
+  yy722:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy720;
+    goto yy702;
+  yy723:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0x9F)
+      goto yy720;
+    goto yy702;
+  yy724:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy722;
+    goto yy702;
+  yy725:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy722;
+    goto yy702;
+  yy726:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0x8F)
+      goto yy722;
+    goto yy702;
+  yy727:
+    ++p;
+    yych = *p;
+  yy728:
+    if (yybm[0 + yych] & 128) {
+      goto yy727;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= '(')
+          goto yy702;
+        if (yych >= '*')
+          goto yy731;
+      } else {
+        if (yych <= 0xC1)
+          goto yy702;
+        if (yych <= 0xDF)
+          goto yy733;
+        goto yy734;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy736;
+        goto yy735;
+      } else {
+        if (yych <= 0xF0)
+          goto yy737;
+        if (yych <= 0xF3)
+          goto yy738;
+        if (yych <= 0xF4)
+          goto yy739;
+        goto yy702;
+      }
+    }
+  yy729:
+    ++p;
+  yy730 : { return (bufsize_t)(p - start); }
+  yy731:
+    ++p;
+    yych = *p;
+    if (yych <= 0xDF) {
+      if (yych <= '[') {
+        if (yych <= 0x00)
+          goto yy702;
+        if (yych == ')')
+          goto yy742;
+        goto yy727;
+      } else {
+        if (yych <= '\\')
+          goto yy731;
+        if (yych <= 0x7F)
+          goto yy727;
+        if (yych <= 0xC1)
+          goto yy702;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy734;
+        if (yych == 0xED)
+          goto yy736;
+        goto yy735;
+      } else {
+        if (yych <= 0xF0)
+          goto yy737;
+        if (yych <= 0xF3)
+          goto yy738;
+        if (yych <= 0xF4)
+          goto yy739;
+        goto yy702;
+      }
+    }
+  yy733:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy727;
+    goto yy702;
+  yy734:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy733;
+    goto yy702;
+  yy735:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy733;
+    goto yy702;
+  yy736:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0x9F)
+      goto yy733;
+    goto yy702;
+  yy737:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy735;
+    goto yy702;
+  yy738:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0xBF)
+      goto yy735;
+    goto yy702;
+  yy739:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy702;
+    if (yych <= 0x8F)
+      goto yy735;
+    goto yy702;
+  yy740:
+    yyaccept = 1;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 16) {
+      goto yy700;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy704;
+        if (yych <= '"')
+          goto yy703;
+        goto yy705;
+      } else {
+        if (yych <= 0xC1)
+          goto yy704;
+        if (yych <= 0xDF)
+          goto yy707;
+        goto yy708;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy710;
+        goto yy709;
+      } else {
+        if (yych <= 0xF0)
+          goto yy711;
+        if (yych <= 0xF3)
+          goto yy712;
+        if (yych <= 0xF4)
+          goto yy713;
+        goto yy704;
+      }
+    }
+  yy741:
+    yyaccept = 2;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy714;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= 0x00)
+          goto yy717;
+        if (yych <= '\'')
+          goto yy716;
+        goto yy718;
+      } else {
+        if (yych <= 0xC1)
+          goto yy717;
+        if (yych <= 0xDF)
+          goto yy720;
+        goto yy721;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy723;
+        goto yy722;
+      } else {
+        if (yych <= 0xF0)
+          goto yy724;
+        if (yych <= 0xF3)
+          goto yy725;
+        if (yych <= 0xF4)
+          goto yy726;
+        goto yy717;
+      }
+    }
+  yy742:
+    yyaccept = 3;
+    marker = ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy727;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '\\') {
+        if (yych <= '(')
+          goto yy730;
+        if (yych <= ')')
+          goto yy729;
+        goto yy731;
+      } else {
+        if (yych <= 0xC1)
+          goto yy730;
+        if (yych <= 0xDF)
+          goto yy733;
+        goto yy734;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy736;
+        goto yy735;
+      } else {
+        if (yych <= 0xF0)
+          goto yy737;
+        if (yych <= 0xF3)
+          goto yy738;
+        if (yych <= 0xF4)
+          goto yy739;
+        goto yy730;
+      }
+    }
+  }
+}
+
+// Match space characters, including newlines.
+bufsize_t _scan_spacechars(const unsigned char *p) {
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   128, 0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0,
+    };
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy747;
+    }
+    ++p;
+    { return 0; }
+  yy747:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy747;
+    }
+    { return (bufsize_t)(p - start); }
+  }
+}
+
+// Match ATX heading start.
+bufsize_t _scan_atx_heading_start(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,
+    };
+    yych = *p;
+    if (yych == '#')
+      goto yy754;
+    ++p;
+  yy753 : { return 0; }
+  yy754:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy755;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy753;
+      if (yych <= '\n')
+        goto yy758;
+      goto yy753;
+    } else {
+      if (yych <= '\r')
+        goto yy758;
+      if (yych == '#')
+        goto yy759;
+      goto yy753;
+    }
+  yy755:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy755;
+    }
+  yy757 : { return (bufsize_t)(p - start); }
+  yy758:
+    yych = *++p;
+    goto yy757;
+  yy759:
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy755;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy760;
+      if (yych <= '\n')
+        goto yy758;
+    } else {
+      if (yych <= '\r')
+        goto yy758;
+      if (yych == '#')
+        goto yy761;
+    }
+  yy760:
+    p = marker;
+    goto yy753;
+  yy761:
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy755;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy760;
+      if (yych <= '\n')
+        goto yy758;
+      goto yy760;
+    } else {
+      if (yych <= '\r')
+        goto yy758;
+      if (yych != '#')
+        goto yy760;
+    }
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy755;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy760;
+      if (yych <= '\n')
+        goto yy758;
+      goto yy760;
+    } else {
+      if (yych <= '\r')
+        goto yy758;
+      if (yych != '#')
+        goto yy760;
+    }
+    yych = *++p;
+    if (yybm[0 + yych] & 128) {
+      goto yy755;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy760;
+      if (yych <= '\n')
+        goto yy758;
+      goto yy760;
+    } else {
+      if (yych <= '\r')
+        goto yy758;
+      if (yych != '#')
+        goto yy760;
+    }
+    ++p;
+    if (yybm[0 + (yych = *p)] & 128) {
+      goto yy755;
+    }
+    if (yych <= 0x08)
+      goto yy760;
+    if (yych <= '\n')
+      goto yy758;
+    if (yych == '\r')
+      goto yy758;
+    goto yy760;
+  }
+}
+
+// Match setext heading line.  Return 1 for level-1 heading,
+// 2 for level-2, 0 for no match.
+bufsize_t _scan_setext_heading_line(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 32, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  32, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 64, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
+        0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0,
+    };
+    yych = *p;
+    if (yych == '-')
+      goto yy769;
+    if (yych == '=')
+      goto yy770;
+    ++p;
+  yy768 : { return 0; }
+  yy769:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 64) {
+      goto yy776;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy768;
+      if (yych <= '\n')
+        goto yy772;
+      goto yy768;
+    } else {
+      if (yych <= '\r')
+        goto yy772;
+      if (yych == ' ')
+        goto yy772;
+      goto yy768;
+    }
+  yy770:
+    yych = *(marker = ++p);
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy768;
+      if (yych <= '\n')
+        goto yy779;
+      goto yy768;
+    } else {
+      if (yych <= '\r')
+        goto yy779;
+      if (yych == ' ')
+        goto yy779;
+      goto yy768;
+    }
+  yy771:
+    ++p;
+    yych = *p;
+  yy772:
+    if (yybm[0 + yych] & 32) {
+      goto yy771;
+    }
+    if (yych <= 0x08)
+      goto yy773;
+    if (yych <= '\n')
+      goto yy774;
+    if (yych == '\r')
+      goto yy774;
+  yy773:
+    p = marker;
+    goto yy768;
+  yy774:
+    ++p;
+    { return 2; }
+  yy776:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 32) {
+      goto yy771;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy773;
+      if (yych <= '\n')
+        goto yy774;
+      goto yy773;
+    } else {
+      if (yych <= '\r')
+        goto yy774;
+      if (yych == '-')
+        goto yy776;
+      goto yy773;
+    }
+  yy778:
+    ++p;
+    yych = *p;
+  yy779:
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy773;
+      if (yych <= '\t')
+        goto yy778;
+      if (yych >= '\v')
+        goto yy773;
+    } else {
+      if (yych <= '\r')
+        goto yy780;
+      if (yych == ' ')
+        goto yy778;
+      goto yy773;
+    }
+  yy780:
+    ++p;
+    { return 1; }
+  yy782:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy782;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy773;
+      if (yych <= '\t')
+        goto yy778;
+      if (yych <= '\n')
+        goto yy780;
+      goto yy773;
+    } else {
+      if (yych <= '\r')
+        goto yy780;
+      if (yych == ' ')
+        goto yy778;
+      goto yy773;
+    }
+  }
+}
+
+// Scan an opening code fence.
+bufsize_t _scan_open_code_fence(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0,   192, 192, 192, 192, 192, 192, 192, 192, 192, 0,   192, 192, 0,
+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 144, 192,
+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
+        192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
+        224, 192, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+        0,   0,   0,   0,
+    };
+    yych = *p;
+    if (yych == '`')
+      goto yy788;
+    if (yych == '~')
+      goto yy789;
+    ++p;
+  yy787 : { return 0; }
+  yy788:
+    yych = *(marker = ++p);
+    if (yych == '`')
+      goto yy790;
+    goto yy787;
+  yy789:
+    yych = *(marker = ++p);
+    if (yych == '~')
+      goto yy792;
+    goto yy787;
+  yy790:
+    yych = *++p;
+    if (yybm[0 + yych] & 16) {
+      goto yy793;
+    }
+  yy791:
+    p = marker;
+    goto yy787;
+  yy792:
+    yych = *++p;
+    if (yybm[0 + yych] & 32) {
+      goto yy795;
+    }
+    goto yy791;
+  yy793:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 64) {
+      goto yy797;
+    }
+    if (yych <= 0xE0) {
+      if (yych <= '`') {
+        if (yych <= 0x00)
+          goto yy791;
+        if (yych <= '\r')
+          goto yy799;
+        goto yy793;
+      } else {
+        if (yych <= 0xC1)
+          goto yy791;
+        if (yych <= 0xDF)
+          goto yy801;
+        goto yy802;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych == 0xED)
+          goto yy804;
+        goto yy803;
+      } else {
+        if (yych <= 0xF0)
+          goto yy805;
+        if (yych <= 0xF3)
+          goto yy806;
+        if (yych <= 0xF4)
+          goto yy807;
+        goto yy791;
+      }
+    }
+  yy795:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 32) {
+      goto yy795;
+    }
+    if (yych <= 0xDF) {
+      if (yych <= '\f') {
+        if (yych <= 0x00)
+          goto yy791;
+        if (yych == '\n')
+          goto yy810;
+        goto yy808;
+      } else {
+        if (yych <= '\r')
+          goto yy810;
+        if (yych <= 0x7F)
+          goto yy808;
+        if (yych <= 0xC1)
+          goto yy791;
+        goto yy812;
+      }
+    } else {
+      if (yych <= 0xEF) {
+        if (yych <= 0xE0)
+          goto yy813;
+        if (yych == 0xED)
+          goto yy815;
+        goto yy814;
+      } else {
+        if (yych <= 0xF0)
+          goto yy816;
+        if (yych <= 0xF3)
+          goto yy817;
+        if (yych <= 0xF4)
+          goto yy818;
+        goto yy791;
+      }
+    }
+  yy797:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 64) {
+      goto yy797;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy791;
+        if (yych >= 0x0E)
+          goto yy791;
+      } else {
+        if (yych <= 0xDF)
+          goto yy801;
+        if (yych <= 0xE0)
+          goto yy802;
+        goto yy803;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy804;
+        if (yych <= 0xEF)
+          goto yy803;
+        goto yy805;
+      } else {
+        if (yych <= 0xF3)
+          goto yy806;
+        if (yych <= 0xF4)
+          goto yy807;
+        goto yy791;
+      }
+    }
+  yy799:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  yy801:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy797;
+    goto yy791;
+  yy802:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy801;
+    goto yy791;
+  yy803:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy801;
+    goto yy791;
+  yy804:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0x9F)
+      goto yy801;
+    goto yy791;
+  yy805:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy803;
+    goto yy791;
+  yy806:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy803;
+    goto yy791;
+  yy807:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0x8F)
+      goto yy803;
+    goto yy791;
+  yy808:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy808;
+    }
+    if (yych <= 0xEC) {
+      if (yych <= 0xC1) {
+        if (yych <= 0x00)
+          goto yy791;
+        if (yych >= 0x0E)
+          goto yy791;
+      } else {
+        if (yych <= 0xDF)
+          goto yy812;
+        if (yych <= 0xE0)
+          goto yy813;
+        goto yy814;
+      }
+    } else {
+      if (yych <= 0xF0) {
+        if (yych <= 0xED)
+          goto yy815;
+        if (yych <= 0xEF)
+          goto yy814;
+        goto yy816;
+      } else {
+        if (yych <= 0xF3)
+          goto yy817;
+        if (yych <= 0xF4)
+          goto yy818;
+        goto yy791;
+      }
+    }
+  yy810:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  yy812:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy808;
+    goto yy791;
+  yy813:
+    ++p;
+    yych = *p;
+    if (yych <= 0x9F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy812;
+    goto yy791;
+  yy814:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy812;
+    goto yy791;
+  yy815:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0x9F)
+      goto yy812;
+    goto yy791;
+  yy816:
+    ++p;
+    yych = *p;
+    if (yych <= 0x8F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy814;
+    goto yy791;
+  yy817:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0xBF)
+      goto yy814;
+    goto yy791;
+  yy818:
+    ++p;
+    yych = *p;
+    if (yych <= 0x7F)
+      goto yy791;
+    if (yych <= 0x8F)
+      goto yy814;
+    goto yy791;
+  }
+}
+
+// Scan a closing code fence with length at least len.
+bufsize_t _scan_close_code_fence(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    static const unsigned char yybm[] = {
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  128, 0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   128, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 32, 0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0,  0,   0,   0, 0, 0,
+    };
+    yych = *p;
+    if (yych == '`')
+      goto yy823;
+    if (yych == '~')
+      goto yy824;
+    ++p;
+  yy822 : { return 0; }
+  yy823:
+    yych = *(marker = ++p);
+    if (yych == '`')
+      goto yy825;
+    goto yy822;
+  yy824:
+    yych = *(marker = ++p);
+    if (yych == '~')
+      goto yy827;
+    goto yy822;
+  yy825:
+    yych = *++p;
+    if (yybm[0 + yych] & 32) {
+      goto yy828;
+    }
+  yy826:
+    p = marker;
+    goto yy822;
+  yy827:
+    yych = *++p;
+    if (yybm[0 + yych] & 64) {
+      goto yy830;
+    }
+    goto yy826;
+  yy828:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 128) {
+      goto yy832;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy826;
+      if (yych <= '\n')
+        goto yy834;
+      goto yy826;
+    } else {
+      if (yych <= '\r')
+        goto yy834;
+      if (yych == '`')
+        goto yy828;
+      goto yy826;
+    }
+  yy830:
+    ++p;
+    yych = *p;
+    marker = p;
+    if (yybm[0 + yych] & 64) {
+      goto yy830;
+    }
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy826;
+      if (yych <= '\t')
+        goto yy836;
+      if (yych <= '\n')
+        goto yy838;
+      goto yy826;
+    } else {
+      if (yych <= '\r')
+        goto yy838;
+      if (yych == ' ')
+        goto yy836;
+      goto yy826;
+    }
+  yy832:
+    ++p;
+    yych = *p;
+    if (yybm[0 + yych] & 128) {
+      goto yy832;
+    }
+    if (yych <= 0x08)
+      goto yy826;
+    if (yych <= '\n')
+      goto yy834;
+    if (yych != '\r')
+      goto yy826;
+  yy834:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  yy836:
+    ++p;
+    yych = *p;
+    if (yych <= '\f') {
+      if (yych <= 0x08)
+        goto yy826;
+      if (yych <= '\t')
+        goto yy836;
+      if (yych >= '\v')
+        goto yy826;
+    } else {
+      if (yych <= '\r')
+        goto yy838;
+      if (yych == ' ')
+        goto yy836;
+      goto yy826;
+    }
+  yy838:
+    ++p;
+    p = marker;
+    { return (bufsize_t)(p - start); }
+  }
+}
+
+// Scans an entity.
+// Returns number of chars matched.
+bufsize_t _scan_entity(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    yych = *p;
+    if (yych == '&')
+      goto yy844;
+    ++p;
+  yy843 : { return 0; }
+  yy844:
+    yych = *(marker = ++p);
+    if (yych <= '@') {
+      if (yych != '#')
+        goto yy843;
+    } else {
+      if (yych <= 'Z')
+        goto yy847;
+      if (yych <= '`')
+        goto yy843;
+      if (yych <= 'z')
+        goto yy847;
+      goto yy843;
+    }
+    yych = *++p;
+    if (yych <= 'W') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy848;
+    } else {
+      if (yych <= 'X')
+        goto yy849;
+      if (yych == 'x')
+        goto yy849;
+    }
+  yy846:
+    p = marker;
+    goto yy843;
+  yy847:
+    yych = *++p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy850;
+      goto yy846;
+    } else {
+      if (yych <= 'Z')
+        goto yy850;
+      if (yych <= '`')
+        goto yy846;
+      if (yych <= 'z')
+        goto yy850;
+      goto yy846;
+    }
+  yy848:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy846;
+    if (yych <= '9')
+      goto yy851;
+    if (yych == ';')
+      goto yy852;
+    goto yy846;
+  yy849:
+    yych = *++p;
+    if (yych <= '@') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy854;
+      goto yy846;
+    } else {
+      if (yych <= 'F')
+        goto yy854;
+      if (yych <= '`')
+        goto yy846;
+      if (yych <= 'f')
+        goto yy854;
+      goto yy846;
+    }
+  yy850:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy855;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy855;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'z')
+          goto yy855;
+        goto yy846;
+      }
+    }
+  yy851:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy846;
+    if (yych <= '9')
+      goto yy856;
+    if (yych != ';')
+      goto yy846;
+  yy852:
+    ++p;
+    { return (bufsize_t)(p - start); }
+  yy854:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy857;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy857;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'f')
+          goto yy857;
+        goto yy846;
+      }
+    }
+  yy855:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy858;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy858;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'z')
+          goto yy858;
+        goto yy846;
+      }
+    }
+  yy856:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy846;
+    if (yych <= '9')
+      goto yy859;
+    if (yych == ';')
+      goto yy852;
+    goto yy846;
+  yy857:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy860;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy860;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'f')
+          goto yy860;
+        goto yy846;
+      }
+    }
+  yy858:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy861;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy861;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'z')
+          goto yy861;
+        goto yy846;
+      }
+    }
+  yy859:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy846;
+    if (yych <= '9')
+      goto yy862;
+    if (yych == ';')
+      goto yy852;
+    goto yy846;
+  yy860:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy863;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy863;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'f')
+          goto yy863;
+        goto yy846;
+      }
+    }
+  yy861:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy864;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy864;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'z')
+          goto yy864;
+        goto yy846;
+      }
+    }
+  yy862:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy846;
+    if (yych <= '9')
+      goto yy865;
+    if (yych == ';')
+      goto yy852;
+    goto yy846;
+  yy863:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy866;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy866;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'f')
+          goto yy866;
+        goto yy846;
+      }
+    }
+  yy864:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy867;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy867;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'z')
+          goto yy867;
+        goto yy846;
+      }
+    }
+  yy865:
+    yych = *++p;
+    if (yych <= '/')
+      goto yy846;
+    if (yych <= '9')
+      goto yy868;
+    if (yych == ';')
+      goto yy852;
+    goto yy846;
+  yy866:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy868;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'F') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy868;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'f')
+          goto yy868;
+        goto yy846;
+      }
+    }
+  yy867:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy869;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy869;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'z')
+          goto yy869;
+        goto yy846;
+      }
+    }
+  yy868:
+    yych = *++p;
+    if (yych == ';')
+      goto yy852;
+    goto yy846;
+  yy869:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy870;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy870:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy871;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy871:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy872;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy872:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy873;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy873:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy874;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy874:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy875;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy875:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy876;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy876:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy877;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy877:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy878;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy878:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy879;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy879:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy880;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy880:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy881;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy881:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy882;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy882:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy883;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy883:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy884;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy884:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy885;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy885:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy886;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy886:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy887;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy887:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy888;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy888:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy889;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy889:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy890;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy890:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy891;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy891:
+    yych = *++p;
+    if (yych <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy892;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych >= '{')
+          goto yy846;
+      }
+    }
+  yy892:
+    ++p;
+    if ((yych = *p) <= ';') {
+      if (yych <= '/')
+        goto yy846;
+      if (yych <= '9')
+        goto yy868;
+      if (yych <= ':')
+        goto yy846;
+      goto yy852;
+    } else {
+      if (yych <= 'Z') {
+        if (yych <= '@')
+          goto yy846;
+        goto yy868;
+      } else {
+        if (yych <= '`')
+          goto yy846;
+        if (yych <= 'z')
+          goto yy868;
+        goto yy846;
+      }
+    }
+  }
+}
+
+// Returns positive value if a URL begins in a way that is potentially
+// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0.
+bufsize_t _scan_dangerous_url(const unsigned char *p) {
+  const unsigned char *marker = NULL;
+  const unsigned char *start = p;
+
+  {
+    unsigned char yych;
+    unsigned int yyaccept = 0;
+    yych = *p;
+    if (yych <= 'V') {
+      if (yych <= 'F') {
+        if (yych == 'D')
+          goto yy897;
+        if (yych >= 'F')
+          goto yy898;
+      } else {
+        if (yych == 'J')
+          goto yy899;
+        if (yych >= 'V')
+          goto yy900;
+      }
+    } else {
+      if (yych <= 'f') {
+        if (yych == 'd')
+          goto yy897;
+        if (yych >= 'f')
+          goto yy898;
+      } else {
+        if (yych <= 'j') {
+          if (yych >= 'j')
+            goto yy899;
+        } else {
+          if (yych == 'v')
+            goto yy900;
+        }
+      }
+    }
+    ++p;
+  yy896 : { return 0; }
+  yy897:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych == 'A')
+      goto yy901;
+    if (yych == 'a')
+      goto yy901;
+    goto yy896;
+  yy898:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych == 'I')
+      goto yy903;
+    if (yych == 'i')
+      goto yy903;
+    goto yy896;
+  yy899:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych == 'A')
+      goto yy904;
+    if (yych == 'a')
+      goto yy904;
+    goto yy896;
+  yy900:
+    yyaccept = 0;
+    yych = *(marker = ++p);
+    if (yych == 'B')
+      goto yy905;
+    if (yych == 'b')
+      goto yy905;
+    goto yy896;
+  yy901:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy906;
+    if (yych == 't')
+      goto yy906;
+  yy902:
+    p = marker;
+    if (yyaccept == 0) {
+      goto yy896;
+    } else {
+      goto yy914;
+    }
+  yy903:
+    yych = *++p;
+    if (yych == 'L')
+      goto yy907;
+    if (yych == 'l')
+      goto yy907;
+    goto yy902;
+  yy904:
+    yych = *++p;
+    if (yych == 'V')
+      goto yy908;
+    if (yych == 'v')
+      goto yy908;
+    goto yy902;
+  yy905:
+    yych = *++p;
+    if (yych == 'S')
+      goto yy909;
+    if (yych == 's')
+      goto yy909;
+    goto yy902;
+  yy906:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy910;
+    if (yych == 'a')
+      goto yy910;
+    goto yy902;
+  yy907:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy911;
+    if (yych == 'e')
+      goto yy911;
+    goto yy902;
+  yy908:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy905;
+    if (yych == 'a')
+      goto yy905;
+    goto yy902;
+  yy909:
+    yych = *++p;
+    if (yych == 'C')
+      goto yy912;
+    if (yych == 'c')
+      goto yy912;
+    goto yy902;
+  yy910:
+    yych = *++p;
+    if (yych == ':')
+      goto yy913;
+    goto yy902;
+  yy911:
+    yych = *++p;
+    if (yych == ':')
+      goto yy915;
+    goto yy902;
+  yy912:
+    yych = *++p;
+    if (yych == 'R')
+      goto yy916;
+    if (yych == 'r')
+      goto yy916;
+    goto yy902;
+  yy913:
+    yyaccept = 1;
+    yych = *(marker = ++p);
+    if (yych == 'I')
+      goto yy917;
+    if (yych == 'i')
+      goto yy917;
+  yy914 : { return (bufsize_t)(p - start); }
+  yy915:
+    yych = *++p;
+    goto yy914;
+  yy916:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy918;
+    if (yych == 'i')
+      goto yy918;
+    goto yy902;
+  yy917:
+    yych = *++p;
+    if (yych == 'M')
+      goto yy919;
+    if (yych == 'm')
+      goto yy919;
+    goto yy902;
+  yy918:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy920;
+    if (yych == 'p')
+      goto yy920;
+    goto yy902;
+  yy919:
+    yych = *++p;
+    if (yych == 'A')
+      goto yy921;
+    if (yych == 'a')
+      goto yy921;
+    goto yy902;
+  yy920:
+    yych = *++p;
+    if (yych == 'T')
+      goto yy911;
+    if (yych == 't')
+      goto yy911;
+    goto yy902;
+  yy921:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy922;
+    if (yych != 'g')
+      goto yy902;
+  yy922:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy923;
+    if (yych != 'e')
+      goto yy902;
+  yy923:
+    yych = *++p;
+    if (yych != '/')
+      goto yy902;
+    yych = *++p;
+    if (yych <= 'W') {
+      if (yych <= 'J') {
+        if (yych == 'G')
+          goto yy925;
+        if (yych <= 'I')
+          goto yy902;
+        goto yy926;
+      } else {
+        if (yych == 'P')
+          goto yy927;
+        if (yych <= 'V')
+          goto yy902;
+        goto yy928;
+      }
+    } else {
+      if (yych <= 'j') {
+        if (yych == 'g')
+          goto yy925;
+        if (yych <= 'i')
+          goto yy902;
+        goto yy926;
+      } else {
+        if (yych <= 'p') {
+          if (yych <= 'o')
+            goto yy902;
+          goto yy927;
+        } else {
+          if (yych == 'w')
+            goto yy928;
+          goto yy902;
+        }
+      }
+    }
+  yy925:
+    yych = *++p;
+    if (yych == 'I')
+      goto yy929;
+    if (yych == 'i')
+      goto yy929;
+    goto yy902;
+  yy926:
+    yych = *++p;
+    if (yych == 'P')
+      goto yy930;
+    if (yych == 'p')
+      goto yy930;
+    goto yy902;
+  yy927:
+    yych = *++p;
+    if (yych == 'N')
+      goto yy931;
+    if (yych == 'n')
+      goto yy931;
+    goto yy902;
+  yy928:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy932;
+    if (yych == 'e')
+      goto yy932;
+    goto yy902;
+  yy929:
+    yych = *++p;
+    if (yych == 'F')
+      goto yy933;
+    if (yych == 'f')
+      goto yy933;
+    goto yy902;
+  yy930:
+    yych = *++p;
+    if (yych == 'E')
+      goto yy931;
+    if (yych != 'e')
+      goto yy902;
+  yy931:
+    yych = *++p;
+    if (yych == 'G')
+      goto yy933;
+    if (yych == 'g')
+      goto yy933;
+    goto yy902;
+  yy932:
+    yych = *++p;
+    if (yych == 'B')
+      goto yy935;
+    if (yych == 'b')
+      goto yy935;
+    goto yy902;
+  yy933:
+    ++p;
+    { return 0; }
+  yy935:
+    ++p;
+    if ((yych = *p) == 'P')
+      goto yy933;
+    if (yych == 'p')
+      goto yy933;
+    goto yy902;
   }
 }
diff --git a/cbits/scanners.h b/cbits/scanners.h
--- a/cbits/scanners.h
+++ b/cbits/scanners.h
@@ -22,7 +22,6 @@
 bufsize_t _scan_spacechars(const unsigned char *p);
 bufsize_t _scan_atx_heading_start(const unsigned char *p);
 bufsize_t _scan_setext_heading_line(const unsigned char *p);
-bufsize_t _scan_thematic_break(const unsigned char *p);
 bufsize_t _scan_open_code_fence(const unsigned char *p);
 bufsize_t _scan_close_code_fence(const unsigned char *p);
 bufsize_t _scan_entity(const unsigned char *p);
@@ -44,7 +43,6 @@
 #define scan_atx_heading_start(c, n) _scan_at(&_scan_atx_heading_start, c, n)
 #define scan_setext_heading_line(c, n)                                         \
   _scan_at(&_scan_setext_heading_line, c, n)
-#define scan_thematic_break(c, n) _scan_at(&_scan_thematic_break, c, n)
 #define scan_open_code_fence(c, n) _scan_at(&_scan_open_code_fence, c, n)
 #define scan_close_code_fence(c, n) _scan_at(&_scan_close_code_fence, c, n)
 #define scan_entity(c, n) _scan_at(&_scan_entity, c, n)
diff --git a/cbits/xml.c b/cbits/xml.c
--- a/cbits/xml.c
+++ b/cbits/xml.c
@@ -60,7 +60,7 @@
     case CMARK_NODE_CODE:
     case CMARK_NODE_HTML_BLOCK:
     case CMARK_NODE_HTML_INLINE:
-      cmark_strbuf_puts(xml, ">");
+      cmark_strbuf_puts(xml, " xml:space=\"preserve\">");
       escape_xml(xml, node->as.literal.data, node->as.literal.len);
       cmark_strbuf_puts(xml, "</");
       cmark_strbuf_puts(xml, cmark_node_get_type_string(node));
@@ -100,7 +100,7 @@
         escape_xml(xml, node->as.code.info.data, node->as.code.info.len);
         cmark_strbuf_putc(xml, '"');
       }
-      cmark_strbuf_puts(xml, ">");
+      cmark_strbuf_puts(xml, " xml:space=\"preserve\">");
       escape_xml(xml, node->as.code.literal.data, node->as.code.literal.len);
       cmark_strbuf_puts(xml, "</");
       cmark_strbuf_puts(xml, cmark_node_get_type_string(node));
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+cmark 0.6 (08 Apr 2019)
+
+  * Update to cmark 0.29.0.
+  * Export optUnsafe.  Note that the default is now to suppress
+    potentially unsafe HTML; set optUnsafe to return to the old behavior.
+
 cmark 0.5.6.3 (13 Mar 2019)
 
   * Use snoc instead of <> to add the null terminator.
diff --git a/cmark.cabal b/cmark.cabal
--- a/cmark.cabal
+++ b/cmark.cabal
@@ -1,12 +1,12 @@
 name:                cmark
-version:             0.5.6.3
+version:             0.6
 synopsis:            Fast, accurate CommonMark (Markdown) parser and renderer
 description:
   This package provides Haskell bindings for
   <https://github.com/jgm/cmark libcmark>, the reference
   parser for <http://commonmark.org CommonMark>, a fully
   specified variant of Markdown. It includes sources for
-  libcmark (0.28.0) and does not require prior installation of the
+  libcmark (0.29.0) and does not require prior installation of the
   C library.
 
 homepage:            https://github.com/jgm/cmark-hs
@@ -14,9 +14,8 @@
 license-file:        LICENSE
 author:              John MacFarlane
 maintainer:          jgm@berkeley.edu
-copyright:           (C) 2015--17 John MacFarlane
+copyright:           (C) 2015-17 John MacFarlane
 category:            Text
-tested-with:         GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.2, GHC == 7.10.3
 build-type:          Simple
 extra-source-files:  README.md
                      changelog
@@ -106,4 +105,4 @@
   hs-source-dirs: test
   build-depends:  base, cmark, text, HUnit >= 1.2 && < 1.7
   ghc-options:    -Wall -fno-warn-unused-do-bind -threaded
-  default-language: Haskell98
+  default-language: Haskell2010
diff --git a/test/test-cmark.hs b/test/test-cmark.hs
--- a/test/test-cmark.hs
+++ b/test/test-cmark.hs
@@ -16,11 +16,11 @@
 -- Here we just make sure it's basically working.
 tests :: Test
 tests = TestList [
-    "<h1>Hi</h1>\n" ~=? commonmarkToHtml [] "# Hi"
+    "<h1>Hi</h1>\n<p><em>there</em></p>\n" ~=? commonmarkToHtml [] "# Hi\n\n*there*"
   , "<p>dog’s</p>\n" ~=? commonmarkToHtml [optSmart] "dog's"
   , "<p><a href=\"\">trick</a></p>\n" ~=? commonmarkToHtml [optSafe] "[trick](javascript:alert('hi'))"
   , ".RS\n.PP\nquote\n.RE\n" ~=? commonmarkToMan [] Nothing "> quote"
-  , (Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 13})) DOCUMENT [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 13})) PARAGRAPH [Node Nothing (TEXT "Hello ") [],Node Nothing EMPH [Node Nothing (TEXT "world") []]]]) ~=? commonmarkToNode [] "Hello *world*"
+  , Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 13})) DOCUMENT [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 13})) PARAGRAPH [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 6})) (TEXT "Hello ") [],Node (Just (PosInfo {startLine = 1, startColumn = 7, endLine = 1, endColumn = 13})) EMPH [Node (Just (PosInfo {startLine = 1, startColumn = 8, endLine = 1, endColumn = 12})) (TEXT "world") []]]] ~=? commonmarkToNode [] "Hello *world*"
   , "> Hello\n> *world*\n" ~=? nodeToCommonmark [] (Just 12) (Node Nothing DOCUMENT [Node Nothing BLOCK_QUOTE [Node Nothing PARAGRAPH [Node Nothing (TEXT "Hello ") [],Node Nothing EMPH [Node Nothing (TEXT "world") []]]]])
   ]
 
