cmark-gfm 0.1.8 → 0.2.6
raw patch · 41 files changed
Files
- CMarkGFM.hsc +28/−3
- README.md +2/−7
- bench/full-sample.md +15/−0
- cbits/arena.c +9/−8
- cbits/autolink.c +216/−133
- cbits/blocks.c +131/−34
- cbits/buffer.c +0/−1
- cbits/chunk.h +0/−1
- cbits/cmark-gfm-core-extensions.h +30/−7
- cbits/cmark-gfm-extension_api.h +1/−0
- cbits/cmark-gfm-extensions_export.h +0/−42
- cbits/cmark-gfm.h +32/−10
- cbits/cmark-gfm_version.h +2/−2
- cbits/cmark.c +3/−3
- cbits/commonmark.c +42/−42
- cbits/ext_scanners.c +360/−640
- cbits/footnotes.c +23/−0
- cbits/footnotes.h +2/−0
- cbits/html.c +64/−27
- cbits/inlines.c +237/−75
- cbits/iterator.h +0/−1
- cbits/latex.c +6/−4
- cbits/man.c +7/−11
- cbits/map.c +11/−4
- cbits/map.h +5/−3
- cbits/node.c +76/−10
- cbits/node.h +52/−1
- cbits/parser.h +3/−1
- cbits/plaintext.c +12/−29
- cbits/references.c +1/−0
- cbits/render.c +31/−21
- cbits/render.h +0/−1
- cbits/scanners.c +14055/−10693
- cbits/scanners.h +8/−2
- cbits/strikethrough.c +1/−1
- cbits/table.c +235/−82
- cbits/tasklist.c +34/−13
- cbits/xml.c +2/−1
- changelog +34/−0
- cmark-gfm.cabal +7/−9
- test/test-cmark.hs +6/−3
CMarkGFM.hsc view
@@ -15,11 +15,14 @@ , optSourcePos , optHardBreaks , optSmart+ , optSafe , optUnsafe+ , optFootnotes , extStrikethrough , extTable , extAutolink , extTagfilter+ , extTaskList , Node(..) , NodeType(..) , PosInfo(..)@@ -250,6 +253,8 @@ | TABLE [TableCellAlignment] | TABLE_ROW | TABLE_CELL+ | FOOTNOTE_REFERENCE+ | FOOTNOTE_DEFINITION deriving (Show, Read, Eq, Ord, Typeable, Data, Generic) data PosInfo = PosInfo{ startLine :: Int@@ -277,11 +282,20 @@ optSmart :: CMarkOption optSmart = CMarkOption #const CMARK_OPT_SMART +-- | optSafe is defined here for API compatibility, but it no longer has any+-- effect. "Safe" mode is now the default: set optUnsafe to disable it.+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 +-- | Enable footnote syntax support (equivalent of footnotes extension for official cmark-gfm)+optFootnotes :: CMarkOption+optFootnotes = CMarkOption #const CMARK_OPT_FOOTNOTES+ newtype CMarkExtension = CMarkExtension { unCMarkExtension :: String } extStrikethrough :: CMarkExtension@@ -296,6 +310,9 @@ extTagfilter :: CMarkExtension extTagfilter = CMarkExtension "tagfilter" +extTaskList :: CMarkExtension+extTaskList = CMarkExtension "tasklist"+ ptrToNodeType :: NodePtr -> IO NodeType ptrToNodeType ptr = do nodeType <- c_cmark_node_get_type ptr@@ -341,6 +358,10 @@ -> return SOFTBREAK #const CMARK_NODE_LINEBREAK -> return LINEBREAK+ #const CMARK_NODE_FOOTNOTE_DEFINITION+ -> return FOOTNOTE_DEFINITION+ #const CMARK_NODE_FOOTNOTE_REFERENCE+ -> return FOOTNOTE_REFERENCE _ -> if nodeType == fromIntegral (Unsafe.unsafePerformIO $ peek c_CMARK_NODE_STRIKETHROUGH) then return STRIKETHROUGH else if nodeType == fromIntegral (Unsafe.unsafePerformIO $ peek c_CMARK_NODE_TABLE) then@@ -480,9 +501,13 @@ SOFTBREAK -> c_cmark_node_new (#const CMARK_NODE_SOFTBREAK) LINEBREAK -> c_cmark_node_new (#const CMARK_NODE_LINEBREAK) STRIKETHROUGH -> c_cmark_node_new (fromIntegral . Unsafe.unsafePerformIO $ peek c_CMARK_NODE_STRIKETHROUGH)- TABLE _ -> error "constructing table not supported"- TABLE_ROW -> error "constructing table row not supported"- TABLE_CELL -> error "constructing table cell not supported"+ TABLE _ -> error "constructing table not supported"+ TABLE_ROW -> error "constructing table row not supported"+ TABLE_CELL -> error "constructing table cell not supported"+ FOOTNOTE_DEFINITION -> error "constructing footnotes not supported"+ FOOTNOTE_REFERENCE -> error "constructing footnotes not supported"++ mapM_ (\child -> fromNode child >>= c_cmark_node_append_child node) children return node
README.md view
@@ -44,22 +44,17 @@ - **Ease of installation:** cmark is portable and has minimal dependencies. -cmark does not provide Haskell versions of the whole [libcmark-gfm]+cmark-gfm does not provide Haskell versions of the whole [libcmark-gfm] API, which is built around mutable `cmark_node` objects. Instead, it provides functions for converting CommonMark to HTML (and other formats), and a function for converting CommonMark to a `Node` tree that can be processed further using Haskell. -**A note on security:** This library does not attempt to sanitize-HTML output. We recommend using [xss-sanitize] to filter the output,-or enabling `optSafe` to filter out all raw HTML and potentially-dangerous URLs.- **A note on stability:** There is a good chance the API will change significantly after this early release. [GitHub Flavored Markdown]: https://github.github.com/gfm/-[libcmark-gfm]: http://github.com/github/cmark+[libcmark-gfm]: http://github.com/github/cmark-gfm [benchmarks]: https://github.com/jgm/cmark/blob/master/benchmarks.md [cheapskate]: https://hackage.haskell.org/package/cheapskate [pandoc]: https://hackage.haskell.org/package/pandoc
bench/full-sample.md view
@@ -499,6 +499,21 @@ - - - - - - - - - deeply-nested one-element item +- [ ] a task list+- [x] a check item in the task list++- [ ] loose task list item++- [x] loose checked task list item++- [ ] nested items in the task list+ - [ ] nested item 1+ - [x] checked nested item 2+ - [ ] must go deeper+ - [x] checked deeper nested item 2+ - [ ] must go even deeper+ - [x] checked even deeper nested item 2+ [1] [2] [3] [1] [2] [3] [looooooooooooooooooooooooooooooooooooooooooooooooooong label]
cbits/arena.c view
@@ -68,15 +68,16 @@ const size_t align = sizeof(size_t) - 1; sz = (sz + align) & ~align; + struct arena_chunk *chunk; if (sz > A->sz) {- A->prev = alloc_arena_chunk(sz, A->prev);- return (uint8_t *) A->prev->ptr + sizeof(size_t);- }- if (sz > A->sz - A->used) {- A = alloc_arena_chunk(A->sz + A->sz / 2, A);+ A->prev = chunk = alloc_arena_chunk(sz, A->prev);+ } else if (sz > A->sz - A->used) {+ A = chunk = alloc_arena_chunk(A->sz + A->sz / 2, A);+ } else {+ chunk = A; }- void *ptr = (uint8_t *) A->ptr + A->used;- A->used += sz;+ void *ptr = (uint8_t *) chunk->ptr + chunk->used;+ chunk->used += sz; *((size_t *) ptr) = sz - sizeof(size_t); return (uint8_t *) ptr + sizeof(size_t); }@@ -98,6 +99,6 @@ cmark_mem CMARK_ARENA_MEM_ALLOCATOR = {arena_calloc, arena_realloc, arena_free}; -cmark_mem *cmark_get_arena_mem_allocator() {+cmark_mem *cmark_get_arena_mem_allocator(void) { return &CMARK_ARENA_MEM_ALLOCATOR; }
cbits/autolink.c view
@@ -2,6 +2,7 @@ #include <parser.h> #include <string.h> #include <utf8.h>+#include <stddef.h> #if defined(_WIN32) #define strncasecmp _strnicmp@@ -35,44 +36,25 @@ } static size_t autolink_delim(uint8_t *data, size_t link_end) {- uint8_t cclose, copen; size_t i;+ size_t closing = 0;+ size_t opening = 0; - for (i = 0; i < link_end; ++i)- if (data[i] == '<') {+ for (i = 0; i < link_end; ++i) {+ const uint8_t c = data[i];+ if (c == '<') { link_end = i; break;+ } else if (c == '(') {+ opening++;+ } else if (c == ')') {+ closing++; }+ } while (link_end > 0) {- cclose = data[link_end - 1];-- switch (cclose) {+ switch (data[link_end - 1]) { case ')':- copen = '(';- break;- default:- copen = 0;- }-- if (strchr("?!.,:*_~'\"", data[link_end - 1]) != NULL)- link_end--;-- else if (data[link_end - 1] == ';') {- size_t new_end = link_end - 2;-- while (new_end > 0 && cmark_isalpha(data[new_end]))- new_end--;-- if (new_end < link_end - 2 && data[new_end] == '&')- link_end = new_end;- else- link_end--;- } else if (copen != 0) {- size_t closing = 0;- size_t opening = 0;- i = 0;- /* Allow any number of matching brackets (as recognised in copen/cclose) * at the end of the URL. If there is a greater number of closing * brackets than opening ones, we remove one character from the end of@@ -80,34 +62,52 @@ * * Examples (input text => output linked portion): *- * http://www.pokemon.com/Pikachu_(Electric)- * => http://www.pokemon.com/Pikachu_(Electric)+ * http://www.pokemon.com/Pikachu_(Electric)+ * => http://www.pokemon.com/Pikachu_(Electric) *- * http://www.pokemon.com/Pikachu_((Electric)- * => http://www.pokemon.com/Pikachu_((Electric)+ * http://www.pokemon.com/Pikachu_((Electric)+ * => http://www.pokemon.com/Pikachu_((Electric) *- * http://www.pokemon.com/Pikachu_(Electric))- * => http://www.pokemon.com/Pikachu_(Electric)+ * http://www.pokemon.com/Pikachu_(Electric))+ * => http://www.pokemon.com/Pikachu_(Electric) *- * http://www.pokemon.com/Pikachu_((Electric))- * => http://www.pokemon.com/Pikachu_((Electric))+ * http://www.pokemon.com/Pikachu_((Electric))+ * => http://www.pokemon.com/Pikachu_((Electric)) */-- while (i < link_end) {- if (data[i] == copen)- opening++;- else if (data[i] == cclose)- closing++;-- i++;+ if (closing <= opening) {+ return link_end; }+ closing--;+ link_end--;+ break;+ case '?':+ case '!':+ case '.':+ case ',':+ case ':':+ case '*':+ case '_':+ case '~':+ case '\'':+ case '"':+ link_end--;+ break;+ case ';': {+ size_t new_end = link_end - 2; - if (closing <= opening)- break;+ while (new_end > 0 && cmark_isalpha(data[new_end]))+ new_end--; - link_end--;- } else+ if (new_end < link_end - 2 && data[new_end] == '&')+ link_end = new_end;+ else+ link_end--; break;+ }++ default:+ return link_end;+ } } return link_end;@@ -116,7 +116,20 @@ static size_t check_domain(uint8_t *data, size_t size, int allow_short) { size_t i, np = 0, uscore1 = 0, uscore2 = 0; + /* The purpose of this code is to reject urls that contain an underscore+ * in one of the last two segments. Examples:+ *+ * www.xxx.yyy.zzz autolinked+ * www.xxx.yyy._zzz not autolinked+ * www.xxx._yyy.zzz not autolinked+ * www._xxx.yyy.zzz autolinked+ *+ * The reason is that domain names are allowed to include underscores,+ * but host names are not. See: https://stackoverflow.com/a/2183140+ */ for (i = 1; i < size - 1; i++) {+ if (data[i] == '\\' && i < size - 2)+ i++; if (data[i] == '_') uscore2++; else if (data[i] == '.') {@@ -127,8 +140,17 @@ break; } - if (uscore1 > 0 || uscore2 > 0)- return 0;+ if (uscore1 > 0 || uscore2 > 0) {+ /* If the url is very long then accept it despite the underscores,+ * to avoid quadratic behavior causing a denial of service. See:+ * https://github.com/github/cmark-gfm/security/advisories/GHSA-29g3-96g3-jg6c+ * Reasonable urls are unlikely to have more than 10 segments, so+ * this extra condition shouldn't have any impact on normal usage.+ */+ if (np <= 10) {+ return 0;+ }+ } if (allow_short) { /* We don't need a valid domain in the strict sense (with@@ -165,7 +187,7 @@ if (link_end == 0) return NULL; - while (link_end < size && !cmark_isspace(data[link_end]))+ while (link_end < size && !cmark_isspace(data[link_end]) && data[link_end] != '<') link_end++; link_end = autolink_delim(data, link_end);@@ -225,7 +247,7 @@ return 0; link_end += domain_len;- while (link_end < size && !cmark_isspace(data[link_end]))+ while (link_end < size && !cmark_isspace(data[link_end]) && data[link_end] != '<') link_end++; link_end = autolink_delim(data, link_end);@@ -245,7 +267,12 @@ cmark_node *text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem); text->as.literal = url; cmark_node_append_child(node, text);+ + node->start_line = text->start_line = node->end_line = text->end_line = cmark_inline_parser_get_line(inline_parser); + node->start_column = text->start_column = max_rewind - rewind;+ node->end_column = text->end_column = cmark_inline_parser_get_column(inline_parser) - 1;+ return node; } @@ -269,111 +296,167 @@ // inline was finished in inlines.c. } -static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset, int depth) {- // postprocess_text can recurse very deeply if there is a very long line of- // '@' only. Stop at a reasonable depth to ensure it cannot crash.- if (depth > 1000) return;+static bool validate_protocol(const char protocol[], uint8_t *data, size_t rewind, size_t max_rewind) {+ size_t len = strlen(protocol); - size_t link_end;- uint8_t *data = text->as.literal.data,- *at;- size_t size = text->as.literal.len;- int rewind, max_rewind,- nb = 0, np = 0, ns = 0;+ if (len > (max_rewind - rewind)) {+ return false;+ } - if (offset < 0 || (size_t)offset >= size)- return;+ // Check that the protocol matches+ if (memcmp(data - rewind - len, protocol, len) != 0) {+ return false;+ } - data += offset;- size -= offset;+ if (len == (max_rewind - rewind)) {+ return true;+ } - at = (uint8_t *)memchr(data, '@', size);- if (!at)- return;+ char prev_char = data[-((ptrdiff_t)rewind) - len - 1]; - max_rewind = (int)(at - data);- data += max_rewind;- size -= max_rewind;+ // Make sure the character before the protocol is non-alphanumeric+ return !cmark_isalnum(prev_char);+} - for (rewind = 0; rewind < max_rewind; ++rewind) {- uint8_t c = data[-rewind - 1];+static void postprocess_text(cmark_parser *parser, cmark_node *text) {+ size_t start = 0;+ size_t offset = 0;+ // `text` is going to be split into a list of nodes containing shorter segments+ // of text, so we detach the memory buffer from text and use `cmark_chunk_dup` to+ // create references to it. Later, `cmark_chunk_to_cstr` is used to convert+ // the references into allocated buffers. The detached buffer is freed before we+ // return.+ cmark_chunk detached_chunk = text->as.literal;+ text->as.literal = cmark_chunk_dup(&detached_chunk, 0, detached_chunk.len); - if (cmark_isalnum(c))- continue;+ uint8_t *data = text->as.literal.data;+ size_t remaining = text->as.literal.len; - if (strchr(".+-_", c) != NULL)- continue;+ while (true) {+ size_t link_end;+ uint8_t *at;+ bool auto_mailto = true;+ bool is_xmpp = false;+ size_t rewind;+ size_t max_rewind;+ size_t np = 0; - if (c == '/')- ns++;+ if (offset >= remaining)+ break; - break;- }+ at = (uint8_t *)memchr(data + start + offset, '@', remaining - offset);+ if (!at)+ break; - if (rewind == 0 || ns > 0) {- postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1);- return;- }+ max_rewind = at - (data + start + offset); - for (link_end = 0; link_end < size; ++link_end) {- uint8_t c = data[link_end];+found_at:+ for (rewind = 0; rewind < max_rewind; ++rewind) {+ uint8_t c = data[start + offset + max_rewind - rewind - 1]; - if (cmark_isalnum(c))- continue;+ if (cmark_isalnum(c))+ continue; - if (c == '@')- nb++;- else if (c == '.' && link_end < size - 1 && cmark_isalnum(data[link_end + 1]))- np++;- else if (c != '-' && c != '_')+ if (strchr(".+-_", c) != NULL)+ continue;++ if (strchr(":", c) != NULL) {+ if (validate_protocol("mailto:", data + start + offset + max_rewind, rewind, max_rewind)) {+ auto_mailto = false;+ continue;+ }++ if (validate_protocol("xmpp:", data + start + offset + max_rewind, rewind, max_rewind)) {+ auto_mailto = false;+ is_xmpp = true;+ continue;+ }+ }+ break;- }+ } - if (link_end < 2 || nb != 1 || np == 0 ||- (!cmark_isalpha(data[link_end - 1]) && data[link_end - 1] != '.')) {- postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1);- return;- }+ if (rewind == 0) {+ offset += max_rewind + 1;+ continue;+ } - link_end = autolink_delim(data, link_end);+ assert(data[start + offset + max_rewind] == '@');+ for (link_end = 1; link_end < remaining - offset - max_rewind; ++link_end) {+ uint8_t c = data[start + offset + max_rewind + link_end]; - if (link_end == 0) {- postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1);- return;- }+ if (cmark_isalnum(c))+ continue; - cmark_chunk_to_cstr(parser->mem, &text->as.literal);+ if (c == '@') {+ // Found another '@', so go back and try again with an updated offset and max_rewind.+ offset += max_rewind + 1;+ max_rewind = link_end - 1;+ goto found_at;+ } else if (c == '.' && link_end < remaining - offset - max_rewind - 1 &&+ cmark_isalnum(data[start + offset + max_rewind + link_end + 1]))+ np++;+ else if (c == '/' && is_xmpp)+ continue;+ else if (c != '-' && c != '_')+ break;+ } - cmark_node *link_node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem);- cmark_strbuf buf;- cmark_strbuf_init(parser->mem, &buf, 10);- cmark_strbuf_puts(&buf, "mailto:");- cmark_strbuf_put(&buf, data - rewind, (bufsize_t)(link_end + rewind));- link_node->as.link.url = cmark_chunk_buf_detach(&buf);+ if (link_end < 2 || np == 0 ||+ (!cmark_isalpha(data[start + offset + max_rewind + link_end - 1]) &&+ data[start + offset + max_rewind + link_end - 1] != '.')) {+ offset += max_rewind + link_end;+ continue;+ } - cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);- cmark_chunk email = cmark_chunk_dup(- &text->as.literal,- offset + max_rewind - rewind,+ link_end = autolink_delim(data + start + offset + max_rewind, link_end);++ if (link_end == 0) {+ offset += max_rewind + 1;+ continue;+ }++ cmark_node *link_node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem);+ cmark_strbuf buf;+ cmark_strbuf_init(parser->mem, &buf, 10);+ if (auto_mailto)+ cmark_strbuf_puts(&buf, "mailto:");+ cmark_strbuf_put(&buf, data + start + offset + max_rewind - rewind, (bufsize_t)(link_end + rewind));+ link_node->as.link.url = cmark_chunk_buf_detach(&buf);++ cmark_node *link_text = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);+ cmark_chunk email = cmark_chunk_dup(+ &detached_chunk,+ (bufsize_t)(start + offset + max_rewind - rewind), (bufsize_t)(link_end + rewind));- cmark_chunk_to_cstr(parser->mem, &email);- link_text->as.literal = email;- cmark_node_append_child(link_node, link_text);+ cmark_chunk_to_cstr(parser->mem, &email);+ link_text->as.literal = email;+ cmark_node_append_child(link_node, link_text); - cmark_node_insert_after(text, link_node);+ cmark_node_insert_after(text, link_node); - cmark_node *post = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);- post->as.literal = cmark_chunk_dup(&text->as.literal,- (bufsize_t)(offset + max_rewind + link_end),- (bufsize_t)(size - link_end));- cmark_chunk_to_cstr(parser->mem, &post->as.literal);+ cmark_node *post = cmark_node_new_with_mem(CMARK_NODE_TEXT, parser->mem);+ post->as.literal = cmark_chunk_dup(&detached_chunk,+ (bufsize_t)(start + offset + max_rewind + link_end),+ (bufsize_t)(remaining - offset - max_rewind - link_end)); - cmark_node_insert_after(link_node, post);+ cmark_node_insert_after(link_node, post); - text->as.literal.len = offset + max_rewind - rewind;- text->as.literal.data[text->as.literal.len] = 0;+ text->as.literal = cmark_chunk_dup(&detached_chunk, (bufsize_t)start, (bufsize_t)(offset + max_rewind - rewind));+ cmark_chunk_to_cstr(parser->mem, &text->as.literal); - postprocess_text(parser, post, 0, depth + 1);+ text = post;+ start += offset + max_rewind + link_end;+ remaining -= offset + max_rewind + link_end;+ offset = 0;+ }++ // Convert the reference to allocated memory.+ assert(!text->as.literal.alloc);+ cmark_chunk_to_cstr(parser->mem, &text->as.literal);++ // Free the detached buffer.+ cmark_chunk_free(parser->mem, &detached_chunk); } static cmark_node *postprocess(cmark_syntax_extension *ext, cmark_parser *parser, cmark_node *root) {@@ -400,7 +483,7 @@ } if (ev == CMARK_EVENT_ENTER && node->type == CMARK_NODE_TEXT) {- postprocess_text(parser, node, 0, /*depth*/0);+ postprocess_text(parser, node); } }
cbits/blocks.c view
@@ -8,6 +8,7 @@ #include <stdlib.h> #include <assert.h> #include <stdio.h>+#include <limits.h> #include "cmark_ctype.h" #include "syntax_extension.h"@@ -26,6 +27,14 @@ #define CODE_INDENT 4 #define TAB_STOP 4 +/**+ * Very deeply nested lists can cause quadratic performance issues.+ * This constant is used in open_new_blocks() to limit the nesting+ * depth. It is unlikely that a non-contrived markdown document will+ * be nested this deeply.+ */+#define MAX_LIST_DEPTH 100+ #ifndef MIN #define MIN(x, y) ((x < y) ? x : y) #endif@@ -36,6 +45,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; }@@ -47,6 +60,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'); }@@ -121,8 +138,6 @@ parser->root = document; parser->current = document; - parser->last_buffer_ended_with_cr = false;- parser->syntax_extensions = saved_exts; parser->inline_syntax_extensions = saved_inline_exts; parser->options = saved_options;@@ -234,26 +249,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 &@@ -283,15 +315,8 @@ switch (S_type(b)) { case CMARK_NODE_PARAGRAPH: {- 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));- 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); }@@ -343,7 +368,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; }@@ -451,7 +477,6 @@ while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { cur = cmark_iter_get_node(iter); if (ev_type == CMARK_EVENT_EXIT && cur->type == CMARK_NODE_FOOTNOTE_DEFINITION) {- cmark_node_unlink(cur); cmark_footnote_create(map, cur); } }@@ -468,6 +493,15 @@ if (!footnote->ix) footnote->ix = ++ix; + // store a reference to this footnote reference's footnote definition+ // this is used by renderers when generating label ids+ cur->parent_footnote_def = footnote->node;++ // keep track of a) count of how many times this footnote def has been+ // referenced, and b) which reference index this footnote ref is at.+ // this is used by renderers when generating links and backreferences.+ cur->footnote.ref_ix = ++footnote->node->footnote.def_count;+ char n[32]; snprintf(n, sizeof(n), "%d", footnote->ix); cmark_chunk_free(parser->mem, &cur->as.literal);@@ -498,13 +532,16 @@ qsort(map->sorted, map->size, sizeof(cmark_map_entry *), sort_footnote_by_ix); for (unsigned int i = 0; i < map->size; ++i) { cmark_footnote *footnote = (cmark_footnote *)map->sorted[i];- if (!footnote->ix)+ if (!footnote->ix) {+ cmark_node_unlink(footnote->node); continue;+ } cmark_node_append_child(parser->root, footnote->node); footnote->node = NULL; } } + cmark_unlink_footnotes_map(map); cmark_map_free(map); } @@ -611,6 +648,14 @@ } finalize(parser, parser->root);++ // Limit total size of extra content created from reference links to+ // document size to avoid superlinear growth. Always allow 100KB.+ if (parser->total_size > 100000)+ parser->refmap->max_ref_size = parser->total_size;+ else+ parser->refmap->max_ref_size = 100000;+ process_inlines(parser, parser->refmap, parser->options); if (parser->options & CMARK_OPT_FOOTNOTES) process_footnotes(parser);@@ -670,6 +715,11 @@ const unsigned char *end = buffer + len; static const uint8_t repl[] = {239, 191, 189}; + if (len > UINT_MAX - parser->total_size)+ parser->total_size = UINT_MAX;+ else+ parser->total_size += len;+ if (parser->last_buffer_ended_with_cr && *buffer == '\n') { // skip NL if last buffer ended with CR ; see #117 buffer++;@@ -748,6 +798,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.@@ -1040,12 +1124,14 @@ bufsize_t matched = 0; int lev = 0; bool save_partially_consumed_tab;+ bool has_content; int save_offset; int save_column;+ size_t depth = 0; while (cont_type != CMARK_NODE_CODE_BLOCK && cont_type != CMARK_NODE_HTML_BLOCK) {-+ depth++; S_find_first_nonspace(parser, input); indented = parser->indent >= CODE_INDENT; @@ -1112,27 +1198,36 @@ } 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 &&- parser->options & CMARK_OPT_FOOTNOTES &&+ (parser->options & CMARK_OPT_FOOTNOTES) &&+ depth < MAX_LIST_DEPTH && (matched = scan_footnote_definition(input, parser->first_nonspace))) { cmark_chunk c = cmark_chunk_dup(input, parser->first_nonspace + 2, matched - 2);- cmark_chunk_to_cstr(parser->mem, &c); while (c.data[c.len - 1] != ']') --c.len; --c.len; + cmark_chunk_to_cstr(parser->mem, &c);+ S_advance_offset(parser, input, parser->first_nonspace + matched - parser->offset, false); *container = add_child(parser, *container, CMARK_NODE_FOOTNOTE_DEFINITION, parser->first_nonspace + matched + 1); (*container)->as.literal = c;@@ -1140,6 +1235,7 @@ (*container)->internal_offset = matched; } else if ((!indented || cont_type == CMARK_NODE_LIST) && parser->indent < 4 &&+ depth < MAX_LIST_DEPTH && (matched = parse_list_marker( parser->mem, input, parser->first_nonspace, (*container)->type == CMARK_NODE_PARAGRAPH, &data))) {@@ -1377,6 +1473,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;
cbits/buffer.c view
@@ -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.
cbits/chunk.h view
@@ -6,7 +6,6 @@ #include <assert.h> #include "cmark-gfm.h" #include "buffer.h"-#include "memory.h" #include "cmark_ctype.h" #define CMARK_CHUNK_EMPTY \
cbits/cmark-gfm-core-extensions.h view
@@ -6,23 +6,46 @@ #endif #include "cmark-gfm-extension_api.h"-#include "cmark-gfm-extensions_export.h"+#include "cmark-gfm_export.h"+#include <stdbool.h> #include <stdint.h> -CMARK_GFM_EXTENSIONS_EXPORT+CMARK_GFM_EXPORT void cmark_gfm_core_extensions_ensure_registered(void); -CMARK_GFM_EXTENSIONS_EXPORT+CMARK_GFM_EXPORT uint16_t cmark_gfm_extensions_get_table_columns(cmark_node *node); -CMARK_GFM_EXTENSIONS_EXPORT+/** Sets the number of columns for the table, returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT+int cmark_gfm_extensions_set_table_columns(cmark_node *node, uint16_t n_columns);++CMARK_GFM_EXPORT uint8_t *cmark_gfm_extensions_get_table_alignments(cmark_node *node); -CMARK_GFM_EXTENSIONS_EXPORT+/** Sets the alignments for the table, returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT+int cmark_gfm_extensions_set_table_alignments(cmark_node *node, uint16_t ncols, uint8_t *alignments);++CMARK_GFM_EXPORT int cmark_gfm_extensions_get_table_row_is_header(cmark_node *node); -CMARK_GFM_EXTENSIONS_EXPORT-char *cmark_gfm_extensions_get_tasklist_state(cmark_node *node);+/** Sets whether the node is a table header row, returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT+int cmark_gfm_extensions_set_table_row_is_header(cmark_node *node, int is_header);++CMARK_GFM_EXPORT+bool cmark_gfm_extensions_get_tasklist_item_checked(cmark_node *node);+/* For backwards compatibility */+#define cmark_gfm_extensions_tasklist_is_checked cmark_gfm_extensions_get_tasklist_item_checked++/** Sets whether a tasklist item is "checked" (completed), returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT+int cmark_gfm_extensions_set_tasklist_item_checked(cmark_node *node, bool is_checked); #ifdef __cplusplus }
cbits/cmark-gfm-extension_api.h view
@@ -114,6 +114,7 @@ struct delimiter *previous; struct delimiter *next; cmark_node *inl_text;+ bufsize_t position; bufsize_t length; unsigned char delim_char; int can_open;
− cbits/cmark-gfm-extensions_export.h
@@ -1,42 +0,0 @@--#ifndef CMARK_GFM_EXTENSIONS_EXPORT_H-#define CMARK_GFM_EXTENSIONS_EXPORT_H--#ifdef CMARK_GFM_EXTENSIONS_STATIC_DEFINE-# define CMARK_GFM_EXTENSIONS_EXPORT-# define CMARK_GFM_EXTENSIONS_NO_EXPORT-#else-# ifndef CMARK_GFM_EXTENSIONS_EXPORT-# ifdef libcmark_gfm_extensions_EXPORTS- /* We are building this library */-# define CMARK_GFM_EXTENSIONS_EXPORT __attribute__((visibility("default")))-# else- /* We are using this library */-# define CMARK_GFM_EXTENSIONS_EXPORT __attribute__((visibility("default")))-# endif-# endif--# ifndef CMARK_GFM_EXTENSIONS_NO_EXPORT-# define CMARK_GFM_EXTENSIONS_NO_EXPORT __attribute__((visibility("hidden")))-# endif-#endif--#ifndef CMARK_GFM_EXTENSIONS_DEPRECATED-# define CMARK_GFM_EXTENSIONS_DEPRECATED __attribute__ ((__deprecated__))-#endif--#ifndef CMARK_GFM_EXTENSIONS_DEPRECATED_EXPORT-# define CMARK_GFM_EXTENSIONS_DEPRECATED_EXPORT CMARK_GFM_EXTENSIONS_EXPORT CMARK_GFM_EXTENSIONS_DEPRECATED-#endif--#ifndef CMARK_GFM_EXTENSIONS_DEPRECATED_NO_EXPORT-# define CMARK_GFM_EXTENSIONS_DEPRECATED_NO_EXPORT CMARK_GFM_EXTENSIONS_NO_EXPORT CMARK_GFM_EXTENSIONS_DEPRECATED-#endif--#if 0 /* DEFINE_NO_DEPRECATED */-# ifndef CMARK_GFM_EXTENSIONS_NO_DEPRECATED-# define CMARK_GFM_EXTENSIONS_NO_DEPRECATED-# endif-#endif--#endif /* CMARK_GFM_EXTENSIONS_EXPORT_H */
cbits/cmark-gfm.h view
@@ -111,13 +111,13 @@ * realloc and free. */ CMARK_GFM_EXPORT-cmark_mem *cmark_get_default_mem_allocator();+cmark_mem *cmark_get_default_mem_allocator(void); /** An arena allocator; uses system calloc to allocate large * slabs of memory. Memory in these slabs is not reused at all. */ CMARK_GFM_EXPORT-cmark_mem *cmark_get_arena_mem_allocator();+cmark_mem *cmark_get_arena_mem_allocator(void); /** Resets the arena allocator, quickly returning all used memory * to the operating system.@@ -225,6 +225,11 @@ */ CMARK_GFM_EXPORT cmark_node *cmark_node_last_child(cmark_node *node); +/** Returns the footnote reference of 'node', or NULL if 'node' doesn't have a+ * footnote reference.+ */+CMARK_GFM_EXPORT cmark_node *cmark_node_parent_footnote_def(cmark_node *node);+ /** * ## Iterator *@@ -408,6 +413,17 @@ */ CMARK_GFM_EXPORT int cmark_node_set_list_tight(cmark_node *node, int tight); +/**+ * Returns item index of 'node'. This is only used when rendering output+ * formats such as commonmark, which need to output the index. It is not+ * required for formats such as html or latex.+ */+CMARK_GFM_EXPORT int cmark_node_get_item_index(cmark_node *node);++/** Sets item index of 'node'. Returns 1 on success, 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_item_index(cmark_node *node, int idx);+ /** Returns the info string from a fenced code block. */ CMARK_GFM_EXPORT const char *cmark_node_get_fence_info(cmark_node *node);@@ -690,6 +706,20 @@ */ #define CMARK_OPT_HARDBREAKS (1 << 2) +/** `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. */ #define CMARK_OPT_NOBREAKS (1 << 4)@@ -737,14 +767,6 @@ * a separate attribute. */ #define CMARK_OPT_FULL_INFO_STRING (1 << 16)--/** Allow raw HTML and unsafe links, `javascript:`, `vbscript:`, `file:`, and- * all `data:` URLs -- by default, only `image/png`, `image/gif`, `image/jpeg`,- * or `image/webp` mime types are allowed. Without this option, raw HTML is- * replaced by a placeholder HTML comment, and unsafe links are replaced by- * empty strings.- */-#define CMARK_OPT_UNSAFE (1 << 17) /** * ## Version information
cbits/cmark-gfm_version.h view
@@ -1,7 +1,7 @@ #ifndef CMARK_GFM_VERSION_H #define CMARK_GFM_VERSION_H -#define CMARK_GFM_VERSION ((0 << 24) | (28 << 16) | (3 << 8) | 20)-#define CMARK_GFM_VERSION_STRING "0.28.3.gfm.20"+#define CMARK_GFM_VERSION ((0 << 24) | (29 << 16) | (0 << 8) | 13)+#define CMARK_GFM_VERSION_STRING "0.29.0.gfm.13" #endif
cbits/cmark.c view
@@ -10,9 +10,9 @@ cmark_node_type CMARK_NODE_LAST_BLOCK = CMARK_NODE_FOOTNOTE_DEFINITION; cmark_node_type CMARK_NODE_LAST_INLINE = CMARK_NODE_FOOTNOTE_REFERENCE; -int cmark_version() { return CMARK_GFM_VERSION; }+int cmark_version(void) { return CMARK_GFM_VERSION; } -const char *cmark_version_string() { return CMARK_GFM_VERSION_STRING; }+const char *cmark_version_string(void) { return CMARK_GFM_VERSION_STRING; } static void *xcalloc(size_t nmem, size_t size) { void *ptr = calloc(nmem, size);@@ -38,7 +38,7 @@ cmark_mem CMARK_DEFAULT_MEM_ALLOCATOR = {xcalloc, xrealloc, xfree}; -cmark_mem *cmark_get_default_mem_allocator() {+cmark_mem *cmark_get_default_mem_allocator(void) { return &CMARK_DEFAULT_MEM_ALLOCATOR; }
cbits/commonmark.c view
@@ -34,7 +34,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 == '!' || (c == '&' && cmark_isalpha(nextc)) || (c == '!' && nextc == '[') || (renderer->begin_content && (c == '-' || c == '+' || c == '=') &&@@ -50,14 +51,18 @@ (c == '`' || c == '<' || c == '>' || c == '"' || c == '\\'))); if (needs_escaping) {- if (cmark_isspace((char)c)) {+ if (escape == URL && cmark_isspace((char)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((char)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 += (int)strlen(encoded); } } else { cmark_render_code_point(renderer, c);@@ -148,23 +153,8 @@ link_text->as.literal.len) == 0); } -// if node is a block node, returns node.-// otherwise returns first block-level node that is an ancestor of node.-// if there is no block-level ancestor, returns NULL.-static cmark_node *get_containing_block(cmark_node *node) {- while (node) {- if (CMARK_NODE_BLOCK_P(node)) {- return node;- } else {- node = node->parent;- }- }- return NULL;-}- static int S_render_node(cmark_renderer *renderer, cmark_node *node, cmark_event_type ev_type, int options) {- cmark_node *tmp; int list_number; cmark_delim_type list_delim; int numticks;@@ -175,7 +165,7 @@ char fencechar[2] = {'\0', '\0'}; size_t info_len, code_len; char listmarker[LISTMARKER_SIZE];- char *emph_delim;+ const char *emph_delim; bool first_in_list_item; bufsize_t marker_width; bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options) &&@@ -184,14 +174,17 @@ // Don't adjust tight list status til we've started the list. // Otherwise we loose the blank line between a paragraph and // a following list.- if (!(node->type == CMARK_NODE_ITEM && node->prev == NULL && entering)) {- tmp = get_containing_block(node);- renderer->in_tight_list_item =- tmp && // tmp might be NULL if there is no containing block- ((tmp->type == CMARK_NODE_ITEM &&- cmark_node_get_list_tight(tmp->parent)) ||- (tmp && tmp->parent && tmp->parent->type == CMARK_NODE_ITEM &&- cmark_node_get_list_tight(tmp->parent->parent)));+ if (entering) {+ if (node->parent && node->parent->type == CMARK_NODE_ITEM) {+ renderer->in_tight_list_item = node->parent->parent->as.list.tight;+ }+ } else {+ if (node->type == CMARK_NODE_LIST) {+ renderer->in_tight_list_item =+ node->parent &&+ node->parent->type == CMARK_NODE_ITEM &&+ node->parent->parent->as.list.tight;+ } } if (node->extension && node->extension->commonmark_render_func) {@@ -229,13 +222,8 @@ if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) { marker_width = 4; } else {- list_number = cmark_node_get_list_start(node->parent);+ list_number = cmark_node_get_item_index(node); list_delim = cmark_node_get_list_delim(node->parent);- tmp = node;- while (tmp->prev) {- tmp = tmp->prev;- list_number += 1;- } // we ensure a width of at least 4 so // we get nice transition from single digits // to double@@ -400,10 +388,12 @@ break; case CMARK_NODE_STRONG:- if (entering) {- LIT("**");- } else {- LIT("**");+ if (node->parent == NULL || node->parent->type != CMARK_NODE_STRONG) {+ if (entering) {+ LIT("**");+ } else {+ LIT("**");+ } } break; @@ -472,7 +462,13 @@ case CMARK_NODE_FOOTNOTE_REFERENCE: if (entering) { LIT("[^");- OUT(cmark_chunk_to_cstr(renderer->mem, &node->as.literal), false, LITERAL);++ char *footnote_label = renderer->mem->calloc(node->parent_footnote_def->as.literal.len + 1, sizeof(char));+ memmove(footnote_label, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);++ OUT(footnote_label, false, LITERAL);+ renderer->mem->free(footnote_label);+ LIT("]"); } break;@@ -481,9 +477,13 @@ if (entering) { renderer->footnote_ix += 1; LIT("[^");- char n[32];- snprintf(n, sizeof(n), "%d", renderer->footnote_ix);- OUT(n, false, LITERAL);++ char *footnote_label = renderer->mem->calloc(node->as.literal.len + 1, sizeof(char));+ memmove(footnote_label, node->as.literal.data, node->as.literal.len);++ OUT(footnote_label, false, LITERAL);+ renderer->mem->free(footnote_label);+ LIT("]:\n"); cmark_strbuf_puts(renderer->prefix, " ");
cbits/ext_scanners.c view
@@ -1,4 +1,5 @@-/* Generated by re2c 1.1.1 */+/* Generated by re2c 1.3 */+ #include "ext_scanners.h" #include <stdlib.h> @@ -39,265 +40,180 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 = *(marker = p);- if (yych <= '{') {- if (yych <= 0x1F) {- if (yych <= '\t') {- if (yych <= 0x08)- goto yy3;+ yych = *p;+ if (yych <= ' ') {+ if (yych <= '\n') {+ if (yych == '\t') goto yy4;- } else {- if (yych <= '\n')- goto yy2;- if (yych <= '\f')- goto yy4;- goto yy3;- } } else {- if (yych <= '-') {- if (yych <= ' ')- goto yy4;- if (yych <= ',')- goto yy3;- goto yy5;- } else {- if (yych == ':')- goto yy6;- goto yy3;- }+ if (yych <= '\f')+ goto yy4;+ if (yych >= ' ')+ goto yy4; } } else {- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '|')- goto yy4;- if (yych <= 0x7F)- goto yy3;- } else {- if (yych <= 0xDF)- goto yy7;- if (yych <= 0xE0)- goto yy9;- goto yy10;- }+ if (yych <= '9') {+ if (yych == '-')+ goto yy5; } else {- if (yych <= 0xF0) {- if (yych <= 0xED)- goto yy11;- if (yych <= 0xEF)- goto yy10;- goto yy12;- } else {- if (yych <= 0xF3)- goto yy13;- if (yych <= 0xF4)- goto yy14;- }+ if (yych <= ':')+ goto yy6;+ if (yych == '|')+ goto yy4; } }- yy2 : { return 0; }- yy3: ++p;- goto yy2;+ yy3 : { return 0; } yy4: yych = *(marker = ++p); if (yybm[0 + yych] & 64) {- goto yy15;+ goto yy7; } if (yych == '-')- goto yy17;+ goto yy10; if (yych == ':')- goto yy19;- goto yy2;+ goto yy12;+ goto yy3; yy5: yych = *(marker = ++p); if (yybm[0 + yych] & 128) {- goto yy17;+ goto yy10; } if (yych <= ' ') { if (yych <= 0x08)- goto yy2;+ goto yy3; if (yych <= '\r')- goto yy21;+ goto yy14; if (yych <= 0x1F)- goto yy2;- goto yy21;+ goto yy3;+ goto yy14; } else { if (yych <= ':') { if (yych <= '9')- goto yy2;- goto yy20;+ goto yy3;+ goto yy13; } else { if (yych == '|')- goto yy21;- goto yy2;+ goto yy14;+ goto yy3; } } yy6: yych = *(marker = ++p); if (yybm[0 + yych] & 128) {- goto yy17;+ goto yy10; }- goto yy2;+ goto yy3; yy7: yych = *++p;- if (yych <= 0x7F)- goto yy8;- if (yych <= 0xBF)- goto yy3;- yy8:- p = marker;- goto yy2;- yy9:- yych = *++p;- if (yych <= 0x9F)- goto yy8;- if (yych <= 0xBF)- goto yy7;- goto yy8;- yy10:- yych = *++p;- if (yych <= 0x7F)- goto yy8;- if (yych <= 0xBF)- goto yy7;- goto yy8;- yy11:- yych = *++p;- if (yych <= 0x7F)- goto yy8;- if (yych <= 0x9F)- goto yy7;- goto yy8;- yy12:- yych = *++p;- if (yych <= 0x8F)- goto yy8;- if (yych <= 0xBF)- goto yy10;- goto yy8;- yy13:- yych = *++p;- if (yych <= 0x7F)- goto yy8;- if (yych <= 0xBF)- goto yy10;- goto yy8;- yy14:- yych = *++p;- if (yych <= 0x7F)- goto yy8;- if (yych <= 0x8F)- goto yy10;- goto yy8;- yy15:- yych = *++p; if (yybm[0 + yych] & 64) {- goto yy15;+ goto yy7; } if (yych == '-')- goto yy17;+ goto yy10; if (yych == ':')- goto yy19;- goto yy8;- yy17:+ goto yy12;+ yy9:+ p = marker;+ goto yy3;+ yy10: yych = *++p; if (yybm[0 + yych] & 128) {- goto yy17;+ goto yy10; } if (yych <= 0x1F) { if (yych <= '\n') { if (yych <= 0x08)- goto yy8;+ goto yy9; if (yych <= '\t')- goto yy20;- goto yy22;+ goto yy13;+ goto yy15; } else { if (yych <= '\f')- goto yy20;+ goto yy13; if (yych <= '\r')- goto yy24;- goto yy8;+ goto yy17;+ goto yy9; } } else { if (yych <= ':') { if (yych <= ' ')- goto yy20;+ goto yy13; if (yych <= '9')- goto yy8;- goto yy20;+ goto yy9;+ goto yy13; } else { if (yych == '|')- goto yy25;- goto yy8;+ goto yy18;+ goto yy9; } }- yy19:+ yy12: yych = *++p; if (yybm[0 + yych] & 128) {- goto yy17;+ goto yy10; }- goto yy8;- yy20:+ goto yy9;+ yy13: yych = *++p;- yy21:+ yy14: if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08)- goto yy8;- goto yy20;+ goto yy9;+ goto yy13; } else { if (yych <= '\n')- goto yy22;+ goto yy15; if (yych <= '\f')- goto yy20;- goto yy24;+ goto yy13;+ goto yy17; } } else { if (yych <= ' ') { if (yych <= 0x1F)- goto yy8;- goto yy20;+ goto yy9;+ goto yy13; } else { if (yych == '|')- goto yy25;- goto yy8;+ goto yy18;+ goto yy9; } }- yy22:+ yy15: ++p; { return (bufsize_t)(p - start); }- yy24:+ yy17: yych = *++p; if (yych == '\n')- goto yy22;- goto yy8;- yy25:+ goto yy15;+ goto yy9;+ yy18: yych = *++p; if (yybm[0 + yych] & 128) {- goto yy17;+ goto yy10; } if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08)- goto yy8;- goto yy25;+ goto yy9;+ goto yy18; } else { if (yych <= '\n')- goto yy22;+ goto yy15; if (yych <= '\f')- goto yy25;- goto yy24;+ goto yy18;+ goto yy17; } } else { if (yych <= ' ') { if (yych <= 0x1F)- goto yy8;- goto yy25;+ goto yy9;+ goto yy18; } else { if (yych == ':')- goto yy19;- goto yy8;+ goto yy12;+ goto yy9; } } }@@ -309,6 +225,7 @@ { unsigned char yych;+ unsigned int yyaccept = 0; static const unsigned char yybm[] = { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 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,@@ -326,53 +243,51 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };- yych = *(marker = p);+ yych = *p; if (yybm[0 + yych] & 64) {- goto yy30;+ goto yy22; }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= '\n')- goto yy29;+ if (yych <= 0xEC) {+ if (yych <= 0xC1) { if (yych <= '\r')- goto yy32;- goto yy34;+ goto yy25;+ if (yych <= '\\')+ goto yy27;+ goto yy25; } else {- if (yych <= '|')- goto yy32;- if (yych <= 0xC1)- goto yy29; if (yych <= 0xDF)- goto yy36;- goto yy38;+ goto yy29;+ if (yych <= 0xE0)+ goto yy30;+ goto yy31; } } else {- if (yych <= 0xEF) {- if (yych == 0xED)- goto yy40;- goto yy39;+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy32;+ if (yych <= 0xEF)+ goto yy31;+ goto yy33; } else {- if (yych <= 0xF0)- goto yy41; if (yych <= 0xF3)- goto yy42;+ goto yy34; if (yych <= 0xF4)- goto yy43;+ goto yy35;+ goto yy25; } }- yy29 : { return (bufsize_t)(p - start); }- yy30:+ yy22:+ yyaccept = 0; yych = *(marker = ++p); if (yybm[0 + yych] & 64) {- goto yy30;+ goto yy22; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\r')- goto yy29;+ goto yy24; if (yych <= '\\')- goto yy34;- goto yy29;+ goto yy27; } else { if (yych <= 0xDF) goto yy36;@@ -392,29 +307,31 @@ goto yy42; if (yych <= 0xF4) goto yy43;- goto yy29; } }- yy32:+ yy24 : { return (bufsize_t)(p - start); }+ yy25: ++p;- { return 0; }- yy34:+ yy26 : { return 0; }+ yy27:+ yyaccept = 0; yych = *(marker = ++p); if (yybm[0 + yych] & 128) {- goto yy34;+ goto yy27; } if (yych <= 0xDF) { if (yych <= '\f') { if (yych == '\n')- goto yy29;- goto yy30;+ goto yy24;+ goto yy22; } else { if (yych <= '\r')- goto yy29;+ goto yy24; if (yych <= 0x7F)- goto yy30;+ goto yy22; if (yych <= 0xC1)- goto yy29;+ goto yy24;+ goto yy36; } } else { if (yych <= 0xEF) {@@ -430,18 +347,77 @@ goto yy42; if (yych <= 0xF4) goto yy43;- goto yy29;+ goto yy24; } }+ yy29:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy26;+ if (yych <= 0xBF)+ goto yy22;+ goto yy26;+ yy30:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x9F)+ goto yy26;+ if (yych <= 0xBF)+ goto yy36;+ goto yy26;+ yy31:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy26;+ if (yych <= 0xBF)+ goto yy36;+ goto yy26;+ yy32:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy26;+ if (yych <= 0x9F)+ goto yy36;+ goto yy26;+ yy33:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x8F)+ goto yy26;+ if (yych <= 0xBF)+ goto yy39;+ goto yy26;+ yy34:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy26;+ if (yych <= 0xBF)+ goto yy39;+ goto yy26;+ yy35:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy26;+ if (yych <= 0x8F)+ goto yy39;+ goto yy26; yy36: yych = *++p; if (yych <= 0x7F) goto yy37; if (yych <= 0xBF)- goto yy30;+ goto yy22; yy37: p = marker;- goto yy29;+ if (yyaccept == 0) {+ goto yy24;+ } else {+ goto yy26;+ } yy38: yych = *++p; if (yych <= 0x9F)@@ -488,12 +464,10 @@ } bufsize_t _scan_table_cell_end(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, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 128, 128, 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,@@ -509,115 +483,17 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 = *(marker = p);- if (yych <= 0xDF) {- if (yych <= '{') {- if (yych != '\n')- goto yy47;- } else {- if (yych <= '|')- goto yy48;- if (yych <= 0x7F)- goto yy47;- if (yych >= 0xC2)- goto yy51;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0)- goto yy53;- if (yych == 0xED)- goto yy55;- goto yy54;- } else {- if (yych <= 0xF0)- goto yy56;- if (yych <= 0xF3)- goto yy57;- if (yych <= 0xF4)- goto yy58;- }- }- yy46 : { return 0; }- yy47:+ yych = *p;+ if (yych == '|')+ goto yy48; ++p;- goto yy46;+ { return 0; } yy48:- yyaccept = 1;- yych = *(marker = ++p);+ yych = *++p; if (yybm[0 + yych] & 128) { goto yy48; }- if (yych <= 0x08)- goto yy50;- if (yych <= '\n')- goto yy59;- if (yych <= '\r')- goto yy60;- yy50 : { return (bufsize_t)(p - start); }- yy51:- yych = *++p;- if (yych <= 0x7F)- goto yy52;- if (yych <= 0xBF)- goto yy47;- yy52:- p = marker;- if (yyaccept == 0) {- goto yy46;- } else {- goto yy50;- }- yy53:- yych = *++p;- if (yych <= 0x9F)- goto yy52;- if (yych <= 0xBF)- goto yy51;- goto yy52;- yy54:- yych = *++p;- if (yych <= 0x7F)- goto yy52;- if (yych <= 0xBF)- goto yy51;- goto yy52;- yy55:- yych = *++p;- if (yych <= 0x7F)- goto yy52;- if (yych <= 0x9F)- goto yy51;- goto yy52;- yy56:- yych = *++p;- if (yych <= 0x8F)- goto yy52;- if (yych <= 0xBF)- goto yy54;- goto yy52;- yy57:- yych = *++p;- if (yych <= 0x7F)- goto yy52;- if (yych <= 0xBF)- goto yy54;- goto yy52;- yy58:- yych = *++p;- if (yych <= 0x7F)- goto yy52;- if (yych <= 0x8F)- goto yy54;- goto yy52;- yy59:- ++p;- goto yy50;- yy60:- yych = *++p;- if (yych == '\n')- goto yy59;- goto yy52;+ { return (bufsize_t)(p - start); } } } @@ -642,138 +518,62 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 = *(marker = p);- if (yych <= 0xC1) {- if (yych <= '\f') {- if (yych <= 0x08)- goto yy64;- if (yych == '\n')- goto yy66;- goto yy65;- } else {- if (yych <= 0x1F) {- if (yych <= '\r')- goto yy68;- goto yy64;- } else {- if (yych <= ' ')- goto yy65;- if (yych <= 0x7F)- goto yy64;- }- }+ yych = *p;+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy53;+ if (yych == '\n')+ goto yy56;+ goto yy55; } else {- if (yych <= 0xED) {- if (yych <= 0xDF)- goto yy69;- if (yych <= 0xE0)- goto yy71;- if (yych <= 0xEC)- goto yy72;- goto yy73;- } else {- if (yych <= 0xF0) {- if (yych <= 0xEF)- goto yy72;- goto yy74;- } else {- if (yych <= 0xF3)- goto yy75;- if (yych <= 0xF4)- goto yy76;- }- }+ if (yych <= '\r')+ goto yy58;+ if (yych == ' ')+ goto yy55; }- yy63 : { return 0; }- yy64:+ yy53: ++p;- goto yy63;- yy65:+ yy54 : { return 0; }+ yy55: yych = *(marker = ++p); if (yych <= 0x08)- goto yy63;+ goto yy54; if (yych <= '\r')- goto yy78;+ goto yy60; if (yych == ' ')- goto yy78;- goto yy63;- yy66:+ goto yy60;+ goto yy54;+ yy56: ++p; { return (bufsize_t)(p - start); }- yy68:+ yy58: yych = *++p; if (yych == '\n')- goto yy66;- goto yy63;- yy69:- yych = *++p;- if (yych <= 0x7F)- goto yy70;- if (yych <= 0xBF)- goto yy64;- yy70:- p = marker;- goto yy63;- yy71:- yych = *++p;- if (yych <= 0x9F)- goto yy70;- if (yych <= 0xBF)- goto yy69;- goto yy70;- yy72:- yych = *++p;- if (yych <= 0x7F)- goto yy70;- if (yych <= 0xBF)- goto yy69;- goto yy70;- yy73:- yych = *++p;- if (yych <= 0x7F)- goto yy70;- if (yych <= 0x9F)- goto yy69;- goto yy70;- yy74:- yych = *++p;- if (yych <= 0x8F)- goto yy70;- if (yych <= 0xBF)- goto yy72;- goto yy70;- yy75:- yych = *++p;- if (yych <= 0x7F)- goto yy70;- if (yych <= 0xBF)- goto yy72;- goto yy70;- yy76:- yych = *++p;- if (yych <= 0x7F)- goto yy70;- if (yych <= 0x8F)- goto yy72;- goto yy70;- yy77:+ goto yy56;+ goto yy54;+ yy59: yych = *++p;- yy78:+ yy60: if (yybm[0 + yych] & 128) {- goto yy77;+ goto yy59; } if (yych <= 0x08)- goto yy70;+ goto yy61; if (yych <= '\n')- goto yy66;- if (yych >= 0x0E)- goto yy70;+ goto yy56;+ if (yych <= '\r')+ goto yy62;+ yy61:+ p = marker;+ goto yy54;+ yy62: yych = *++p; if (yych == '\n')- goto yy66;- goto yy70;+ goto yy56;+ goto yy61; } }+ bufsize_t _scan_tasklist(const unsigned char *p) { const unsigned char *marker = NULL; const unsigned char *start = p;@@ -798,361 +598,281 @@ 0, 0, 0, 0, 0, 0, 0, 0, 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 = *(marker = p);- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= '\t') {- if (yych <= 0x08)- goto yy83;- goto yy84;- } else {- if (yych <= '\n')- goto yy82;- if (yych <= '\f')- goto yy84;- goto yy83;- }+ yych = *p;+ if (yych <= ' ') {+ if (yych <= '\n') {+ if (yych == '\t')+ goto yy67; } else {- if (yych <= '+') {- if (yych <= ' ')- goto yy84;- if (yych <= ')')- goto yy83;- goto yy85;- } else {- if (yych == '-')- goto yy85;- goto yy83;- }+ if (yych <= '\f')+ goto yy67;+ if (yych >= ' ')+ goto yy67; } } else {- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '9')- goto yy86;- if (yych <= 0x7F)- goto yy83;- } else {- if (yych <= 0xDF)- goto yy87;- if (yych <= 0xE0)- goto yy89;- goto yy90;- }+ if (yych <= ',') {+ if (yych <= ')')+ goto yy65;+ if (yych <= '+')+ goto yy68; } else {- if (yych <= 0xF0) {- if (yych <= 0xED)- goto yy91;- if (yych <= 0xEF)- goto yy90;- goto yy92;- } else {- if (yych <= 0xF3)- goto yy93;- if (yych <= 0xF4)- goto yy94;- }+ if (yych <= '-')+ goto yy68;+ if (yych <= '/')+ goto yy65;+ if (yych <= '9')+ goto yy69; } }- yy82 : { return 0; }- yy83:+ yy65: ++p;- goto yy82;- yy84:+ yy66 : { return 0; }+ yy67: yych = *(marker = ++p); if (yybm[0 + yych] & 64) {- goto yy95;+ goto yy70; } if (yych <= ',') { if (yych <= ')')- goto yy82;+ goto yy66; if (yych <= '+')- goto yy97;- goto yy82;+ goto yy73;+ goto yy66; } else { if (yych <= '-')- goto yy97;+ goto yy73; if (yych <= '/')- goto yy82;+ goto yy66; if (yych <= '9')- goto yy98;- goto yy82;+ goto yy74;+ goto yy66; }- yy85:+ yy68: yych = *(marker = ++p); if (yych <= '\n') { if (yych == '\t')- goto yy99;- goto yy82;+ goto yy75;+ goto yy66; } else { if (yych <= '\f')- goto yy99;+ goto yy75; if (yych == ' ')- goto yy99;- goto yy82;+ goto yy75;+ goto yy66; }- yy86:+ yy69: yych = *(marker = ++p); if (yych <= 0x1F) { if (yych <= '\t') { if (yych <= 0x08)- goto yy102;- goto yy97;+ goto yy78;+ goto yy73; } else { if (yych <= '\n')- goto yy82;+ goto yy66; if (yych <= '\f')- goto yy97;- goto yy102;+ goto yy73;+ goto yy78; } } else { if (yych <= 0x7F) { if (yych <= ' ')- goto yy97;- goto yy102;+ goto yy73;+ goto yy78; } else { if (yych <= 0xC1)- goto yy82;+ goto yy66; if (yych <= 0xF4)- goto yy102;- goto yy82;+ goto yy78;+ goto yy66; } }- yy87:- yych = *++p;- if (yych <= 0x7F)- goto yy88;- if (yych <= 0xBF)- goto yy83;- yy88:- p = marker;- goto yy82;- yy89:- yych = *++p;- if (yych <= 0x9F)- goto yy88;- if (yych <= 0xBF)- goto yy87;- goto yy88;- yy90:- yych = *++p;- if (yych <= 0x7F)- goto yy88;- if (yych <= 0xBF)- goto yy87;- goto yy88;- yy91:- yych = *++p;- if (yych <= 0x7F)- goto yy88;- if (yych <= 0x9F)- goto yy87;- goto yy88;- yy92:- yych = *++p;- if (yych <= 0x8F)- goto yy88;- if (yych <= 0xBF)- goto yy90;- goto yy88;- yy93:- yych = *++p;- if (yych <= 0x7F)- goto yy88;- if (yych <= 0xBF)- goto yy90;- goto yy88;- yy94:- yych = *++p;- if (yych <= 0x7F)- goto yy88;- if (yych <= 0x8F)- goto yy90;- goto yy88;- yy95:+ yy70: yych = *++p; if (yybm[0 + yych] & 64) {- goto yy95;+ goto yy70; } if (yych <= ',') { if (yych <= ')')- goto yy88;- if (yych >= ',')- goto yy88;+ goto yy72;+ if (yych <= '+')+ goto yy73; } else { if (yych <= '-')- goto yy97;+ goto yy73; if (yych <= '/')- goto yy88;+ goto yy72; if (yych <= '9')- goto yy98;- goto yy88;+ goto yy74; }- yy97:+ yy72:+ p = marker;+ goto yy66;+ yy73: yych = *++p; if (yych == '[')- goto yy88;- goto yy100;- yy98:+ goto yy72;+ goto yy76;+ yy74: yych = *++p; if (yych <= '\n') { if (yych == '\t')- goto yy97;- goto yy102;+ goto yy73;+ goto yy78; } else { if (yych <= '\f')- goto yy97;+ goto yy73; if (yych == ' ')- goto yy97;- goto yy102;+ goto yy73;+ goto yy78; }- yy99:+ yy75: yych = *++p;- yy100:+ yy76: if (yych <= '\f') { if (yych == '\t')- goto yy99;+ goto yy75; if (yych <= '\n')- goto yy88;- goto yy99;+ goto yy72;+ goto yy75; } else { if (yych <= ' ') { if (yych <= 0x1F)- goto yy88;- goto yy99;+ goto yy72;+ goto yy75; } else { if (yych == '[')- goto yy110;- goto yy88;+ goto yy86;+ goto yy72; } }- yy101:+ yy77: yych = *++p;- yy102:+ yy78: if (yybm[0 + yych] & 128) {- goto yy101;+ goto yy77; } if (yych <= 0xC1) { if (yych <= '\f') { if (yych <= 0x08)- goto yy97;+ goto yy73; if (yych == '\n')- goto yy88;- goto yy99;+ goto yy72;+ goto yy75; } else { if (yych == ' ')- goto yy99;+ goto yy75; if (yych <= 0x7F)- goto yy97;- goto yy88;+ goto yy73;+ goto yy72; } } else { if (yych <= 0xED) { if (yych <= 0xDF)- goto yy103;+ goto yy79; if (yych <= 0xE0)- goto yy104;+ goto yy80; if (yych <= 0xEC)- goto yy105;- goto yy106;+ goto yy81;+ goto yy82; } else { if (yych <= 0xF0) { if (yych <= 0xEF)- goto yy105;- goto yy107;+ goto yy81;+ goto yy83; } else { if (yych <= 0xF3)- goto yy108;+ goto yy84; if (yych <= 0xF4)- goto yy109;- goto yy88;+ goto yy85;+ goto yy72; } } }- yy103:+ yy79: yych = *++p; if (yych <= 0x7F)- goto yy88;+ goto yy72; if (yych <= 0xBF)- goto yy97;- goto yy88;- yy104:+ goto yy73;+ goto yy72;+ yy80: yych = *++p; if (yych <= 0x9F)- goto yy88;+ goto yy72; if (yych <= 0xBF)- goto yy103;- goto yy88;- yy105:+ goto yy79;+ goto yy72;+ yy81: yych = *++p; if (yych <= 0x7F)- goto yy88;+ goto yy72; if (yych <= 0xBF)- goto yy103;- goto yy88;- yy106:+ goto yy79;+ goto yy72;+ yy82: yych = *++p; if (yych <= 0x7F)- goto yy88;+ goto yy72; if (yych <= 0x9F)- goto yy103;- goto yy88;- yy107:+ goto yy79;+ goto yy72;+ yy83: yych = *++p; if (yych <= 0x8F)- goto yy88;+ goto yy72; if (yych <= 0xBF)- goto yy105;- goto yy88;- yy108:+ goto yy81;+ goto yy72;+ yy84: yych = *++p; if (yych <= 0x7F)- goto yy88;+ goto yy72; if (yych <= 0xBF)- goto yy105;- goto yy88;- yy109:+ goto yy81;+ goto yy72;+ yy85: yych = *++p; if (yych <= 0x7F)- goto yy88;+ goto yy72; if (yych <= 0x8F)- goto yy105;- goto yy88;- yy110:+ goto yy81;+ goto yy72;+ yy86: yych = *++p; if (yych <= 'W') { if (yych != ' ')- goto yy88;+ goto yy72; } else { if (yych <= 'X')- goto yy111;+ goto yy87; if (yych != 'x')- goto yy88;+ goto yy72; }- yy111:+ yy87: yych = *++p; if (yych != ']')- goto yy88;+ goto yy72; yych = *++p; if (yych <= '\n') { if (yych != '\t')- goto yy88;+ goto yy72; } else { if (yych <= '\f')- goto yy113;+ goto yy89; if (yych != ' ')- goto yy88;+ goto yy72; }- yy113:+ yy89: yych = *++p; if (yych <= '\n') { if (yych == '\t')- goto yy113;+ goto yy89; } else { if (yych <= '\f')- goto yy113;+ goto yy89; if (yych == ' ')- goto yy113;+ goto yy89; } { return (bufsize_t)(p - start); } }
cbits/footnotes.c view
@@ -38,3 +38,26 @@ cmark_map *cmark_footnote_map_new(cmark_mem *mem) { return cmark_map_new(mem, footnote_free); }++// Before calling `cmark_map_free` on a map with `cmark_footnotes`, first+// unlink all of the footnote nodes before freeing their memory.+//+// Sometimes, two (unused) footnote nodes can end up referencing each other,+// which as they get freed up by calling `cmark_map_free` -> `footnote_free` ->+// etc, can lead to a use-after-free error.+//+// Better to `unlink` every footnote node first, setting their next, prev, and+// parent pointers to NULL, and only then walk thru & free them up.+void cmark_unlink_footnotes_map(cmark_map *map) {+ cmark_map_entry *ref;+ cmark_map_entry *next;++ ref = map->refs;+ while(ref) {+ next = ref->next;+ if (((cmark_footnote *)ref)->node) {+ cmark_node_unlink(((cmark_footnote *)ref)->node);+ }+ ref = next;+ }+}
cbits/footnotes.h view
@@ -18,6 +18,8 @@ void cmark_footnote_create(cmark_map *map, cmark_node *node); cmark_map *cmark_footnote_map_new(cmark_mem *mem); +void cmark_unlink_footnotes_map(cmark_map *map);+ #ifdef __cplusplus } #endif
cbits/html.c view
@@ -59,17 +59,45 @@ cmark_strbuf_put(html, data, (bufsize_t)len); } -static bool S_put_footnote_backref(cmark_html_renderer *renderer, cmark_strbuf *html) {+static bool S_put_footnote_backref(cmark_html_renderer *renderer, cmark_strbuf *html, cmark_node *node) { if (renderer->written_footnote_ix >= renderer->footnote_ix) return false; renderer->written_footnote_ix = renderer->footnote_ix;+ char m[32];+ snprintf(m, sizeof(m), "%d", renderer->written_footnote_ix); - cmark_strbuf_puts(html, "<a href=\"#fnref");- char n[32];- snprintf(n, sizeof(n), "%d", renderer->footnote_ix);- cmark_strbuf_puts(html, n);- cmark_strbuf_puts(html, "\" class=\"footnote-backref\">↩</a>");+ cmark_strbuf_puts(html, "<a href=\"#fnref-");+ houdini_escape_href(html, node->as.literal.data, node->as.literal.len);+ cmark_strbuf_puts(html, "\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"");+ cmark_strbuf_puts(html, m);+ cmark_strbuf_puts(html, "\" aria-label=\"Back to reference ");+ cmark_strbuf_puts(html, m);+ cmark_strbuf_puts(html, "\">↩</a>"); + if (node->footnote.def_count > 1)+ {+ for(int i = 2; i <= node->footnote.def_count; i++) {+ char n[32];+ snprintf(n, sizeof(n), "%d", i);++ cmark_strbuf_puts(html, " <a href=\"#fnref-");+ houdini_escape_href(html, node->as.literal.data, node->as.literal.len);+ cmark_strbuf_puts(html, "-");+ cmark_strbuf_puts(html, n);+ cmark_strbuf_puts(html, "\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"");+ cmark_strbuf_puts(html, m);+ cmark_strbuf_puts(html, "-");+ cmark_strbuf_puts(html, n);+ cmark_strbuf_puts(html, "\" aria-label=\"Back to reference ");+ cmark_strbuf_puts(html, m);+ cmark_strbuf_puts(html, "-");+ cmark_strbuf_puts(html, n);+ cmark_strbuf_puts(html, "\">↩<sup class=\"footnote-ref\">");+ cmark_strbuf_puts(html, n);+ cmark_strbuf_puts(html, "</sup></a>");+ }+ }+ return true; } @@ -273,7 +301,7 @@ } else { if (parent->type == CMARK_NODE_FOOTNOTE_DEFINITION && node->next == NULL) { cmark_strbuf_putc(html, ' ');- S_put_footnote_backref(renderer, html);+ S_put_footnote_backref(renderer, html, parent); } cmark_strbuf_puts(html, "</p>\n"); }@@ -336,10 +364,12 @@ break; case CMARK_NODE_STRONG:- if (entering) {- cmark_strbuf_puts(html, "<strong>");- } else {- cmark_strbuf_puts(html, "</strong>");+ if (node->parent == NULL || node->parent->type != CMARK_NODE_STRONG) {+ if (entering) {+ cmark_strbuf_puts(html, "<strong>");+ } else {+ cmark_strbuf_puts(html, "</strong>");+ } } break; @@ -354,8 +384,8 @@ case CMARK_NODE_LINK: if (entering) { cmark_strbuf_puts(html, "<a href=\"");- if (!(!(options & CMARK_OPT_UNSAFE) &&- 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); }@@ -372,8 +402,8 @@ case CMARK_NODE_IMAGE: if (entering) { cmark_strbuf_puts(html, "<img src=\"");- if (!(!(options & CMARK_OPT_UNSAFE) &&- 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); }@@ -392,16 +422,15 @@ case CMARK_NODE_FOOTNOTE_DEFINITION: if (entering) { if (renderer->footnote_ix == 0) {- cmark_strbuf_puts(html, "<section class=\"footnotes\">\n<ol>\n");+ cmark_strbuf_puts(html, "<section class=\"footnotes\" data-footnotes>\n<ol>\n"); } ++renderer->footnote_ix;- cmark_strbuf_puts(html, "<li id=\"fn");- char n[32];- snprintf(n, sizeof(n), "%d", renderer->footnote_ix);- cmark_strbuf_puts(html, n);++ cmark_strbuf_puts(html, "<li id=\"fn-");+ houdini_escape_href(html, node->as.literal.data, node->as.literal.len); cmark_strbuf_puts(html, "\">\n"); } else {- if (S_put_footnote_backref(renderer, html)) {+ if (S_put_footnote_backref(renderer, html, node)) { cmark_strbuf_putc(html, '\n'); } cmark_strbuf_puts(html, "</li>\n");@@ -410,12 +439,20 @@ case CMARK_NODE_FOOTNOTE_REFERENCE: if (entering) {- cmark_strbuf_puts(html, "<sup class=\"footnote-ref\"><a href=\"#fn");- cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);- cmark_strbuf_puts(html, "\" id=\"fnref");- cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);- cmark_strbuf_puts(html, "\">");- cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);+ cmark_strbuf_puts(html, "<sup class=\"footnote-ref\"><a href=\"#fn-");+ houdini_escape_href(html, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);+ cmark_strbuf_puts(html, "\" id=\"fnref-");+ houdini_escape_href(html, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);++ if (node->footnote.ref_ix > 1) {+ char n[32];+ snprintf(n, sizeof(n), "%d", node->footnote.ref_ix);+ cmark_strbuf_puts(html, "-");+ cmark_strbuf_puts(html, n);+ }++ cmark_strbuf_puts(html, "\" data-footnote-ref>");+ houdini_escape_href(html, node->as.literal.data, node->as.literal.len); cmark_strbuf_puts(html, "</a></sup>"); } break;
cbits/inlines.c view
@@ -35,17 +35,24 @@ typedef struct bracket { struct bracket *previous;- struct delimiter *previous_delimiter; cmark_node *inl_text; bufsize_t position; bool image; bool active; bool bracket_after;+ bool in_bracket_image0;+ bool in_bracket_image1; } bracket; +#define FLAG_SKIP_HTML_CDATA (1u << 0)+#define FLAG_SKIP_HTML_DECLARATION (1u << 1)+#define FLAG_SKIP_HTML_PI (1u << 2)+#define FLAG_SKIP_HTML_COMMENT (1u << 3)+ typedef struct subject{ cmark_mem *mem; cmark_chunk input;+ unsigned flags; int line; bufsize_t pos; int block_offset;@@ -55,6 +62,7 @@ bracket *last_bracket; bufsize_t backticks[MAXBACKTICKS + 1]; bool scanned_for_backticks;+ bool no_link_openers; } subject; // Extensions may populate this.@@ -109,6 +117,24 @@ } } +// Like cmark_node_append_child but without costly sanity checks.+// Assumes that child was newly created.+static void append_child(cmark_node *node, cmark_node *child) {+ cmark_node *old_last_child = node->last_child;++ child->next = NULL;+ child->prev = old_last_child;+ child->parent = node;+ node->last_child = child;++ if (old_last_child) {+ old_last_child->next = child;+ } else {+ // Also set first_child if node previously had no children.+ node->first_child = child;+ }+}+ // Duplicate a chunk by creating a copy of the buffer not by reusing the // buffer like cmark_chunk_dup does. static cmark_chunk chunk_clone(cmark_mem *mem, cmark_chunk *src) {@@ -152,7 +178,7 @@ 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));+ append_child(link, make_str_with_entities(subj, start_column + 1, end_column - 1, &url)); return link; } @@ -161,6 +187,7 @@ int i; e->mem = mem; e->input = *chunk;+ e->flags = 0; e->line = line_number; e->pos = 0; e->block_offset = block_offset;@@ -172,6 +199,7 @@ e->backticks[i] = 0; } e->scanned_for_backticks = false;+ e->no_link_openers = true; } static CMARK_INLINE int isbacktick(int c) { return (c == '`'); }@@ -322,9 +350,11 @@ } // Destructively modify string, converting newlines to-// spaces, then removing a single leading + trailing space.+// 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]) {@@ -339,10 +369,14 @@ default: s->ptr[w++] = s->ptr[r]; }+ if (s->ptr[r] != ' ') {+ contains_nonspace = true;+ } } // begins and ends with space?- if (s->ptr[0] == ' ' && s->ptr[w - 1] == ' ') {+ if (contains_nonspace &&+ s->ptr[0] == ' ' && s->ptr[w - 1] == ' ') { cmark_strbuf_drop(s, 1); cmark_strbuf_truncate(s, w - 2); } else {@@ -497,6 +531,7 @@ delim->can_open = can_open; delim->can_close = can_close; delim->inl_text = inl_text;+ delim->position = subj->pos; delim->length = inl_text->as.literal.len; delim->previous = subj->last_delim; delim->next = NULL;@@ -510,15 +545,24 @@ bracket *b = (bracket *)subj->mem->calloc(1, sizeof(bracket)); if (subj->last_bracket != NULL) { subj->last_bracket->bracket_after = true;+ b->in_bracket_image0 = subj->last_bracket->in_bracket_image0;+ b->in_bracket_image1 = subj->last_bracket->in_bracket_image1; } b->image = image; b->active = true; b->inl_text = inl_text; b->previous = subj->last_bracket;- b->previous_delimiter = subj->last_delim; b->position = subj->pos; b->bracket_after = false;+ if (image) {+ b->in_bracket_image1 = true;+ } else {+ b->in_bracket_image0 = true;+ } subj->last_bracket = b;+ if (!image) {+ subj->no_link_openers = false;+ } } // Assumes the subject has a c at the current position.@@ -625,13 +669,13 @@ return NULL; } -static void process_emphasis(cmark_parser *parser, subject *subj, delimiter *stack_bottom) {- delimiter *closer = subj->last_delim;+static void process_emphasis(cmark_parser *parser, subject *subj, bufsize_t stack_bottom) {+ delimiter *candidate;+ delimiter *closer = NULL; delimiter *opener; delimiter *old_closer; bool opener_found;- bool odd_match;- delimiter *openers_bottom[3][128];+ bufsize_t openers_bottom[3][128]; int i; // initialize openers_bottom:@@ -644,8 +688,10 @@ } // move back to first relevant delim.- while (closer != NULL && closer->previous != stack_bottom) {- closer = closer->previous;+ candidate = subj->last_delim;+ while (candidate != NULL && candidate->position >= stack_bottom) {+ closer = candidate;+ candidate = candidate->previous; } // now move forward, looking for closers, and handling each@@ -655,15 +701,14 @@ // Now look backwards for first matching opener: opener = closer->previous; opener_found = false;- odd_match = false;- while (opener != NULL && opener != stack_bottom &&- opener != openers_bottom[closer->length % 3][closer->delim_char]) {+ while (opener != NULL && opener->position >= stack_bottom &&+ opener->position >= openers_bottom[closer->length % 3][closer->delim_char]) { if (opener->can_open && opener->delim_char == closer->delim_char) { // interior closer of size 2 can't match opener of size 1 // or of size 1 can't match 2- odd_match = (closer->can_open || opener->can_close) &&- ((opener->length + closer->length) % 3 == 0);- if (!odd_match) {+ if (!(closer->can_open || opener->can_close) ||+ closer->length % 3 == 0 ||+ (opener->length + closer->length) % 3 != 0) { opener_found = true; break; }@@ -683,27 +728,29 @@ } else { closer = closer->next; }- } else if (closer->delim_char == '\'') {+ } else if (closer->delim_char == '\'' || closer->delim_char == '"') { cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);- closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE);- if (opener_found) {- cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);- opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE);+ if (closer->delim_char == '\'') {+ closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE);+ } else {+ closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE); } closer = closer->next;- } else if (closer->delim_char == '"') {- cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);- closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE); if (opener_found) { cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);- opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE);+ if (old_closer->delim_char == '\'') {+ opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE);+ } else {+ opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE);+ }+ remove_delimiter(subj, opener);+ remove_delimiter(subj, old_closer); }- closer = closer->next; } if (!opener_found) { // set lower bound for future searches for openers openers_bottom[old_closer->length % 3][old_closer->delim_char] =- old_closer->previous;+ old_closer->position; if (!old_closer->can_open) { // we can remove a closer that can't be an // opener, once we've seen there's no@@ -716,7 +763,8 @@ } } // free all delimiters in list until stack_bottom:- while (subj->last_delim != NULL && subj->last_delim != stack_bottom) {+ while (subj->last_delim != NULL &&+ subj->last_delim->position >= stack_bottom) { remove_delimiter(subj, subj->last_delim); } }@@ -755,7 +803,8 @@ tmp = opener_inl->next; while (tmp && tmp != closer_inl) { tmpnext = tmp->next;- cmark_node_append_child(emph, tmp);+ cmark_node_unlink(tmp);+ append_child(emph, tmp); tmp = tmpnext; } cmark_node_insert_after(opener_inl, emph);@@ -886,7 +935,63 @@ } // finally, try to match an html tag- matchlen = scan_html_tag(&subj->input, subj->pos);+ if (subj->pos + 2 <= subj->input.len) {+ int c = subj->input.data[subj->pos];+ if (c == '!' && (subj->flags & FLAG_SKIP_HTML_COMMENT) == 0) {+ c = subj->input.data[subj->pos+1];+ if (c == '-' && subj->input.data[subj->pos+2] == '-') {+ if (subj->input.data[subj->pos+3] == '>') {+ matchlen = 4;+ } else if (subj->input.data[subj->pos+3] == '-' &&+ subj->input.data[subj->pos+4] == '>') {+ matchlen = 5;+ } else {+ matchlen = scan_html_comment(&subj->input, subj->pos + 1);+ if (matchlen > 0) {+ matchlen += 1; // prefix "<"+ } else { // no match through end of input: set a flag so+ // we don't reparse looking for -->:+ subj->flags |= FLAG_SKIP_HTML_COMMENT;+ }+ }+ } else if (c == '[') {+ if ((subj->flags & FLAG_SKIP_HTML_CDATA) == 0) {+ matchlen = scan_html_cdata(&subj->input, subj->pos + 2);+ if (matchlen > 0) {+ // The regex doesn't require the final "]]>". But if we're not at+ // the end of input, it must come after the match. Otherwise,+ // disable subsequent scans to avoid quadratic behavior.+ matchlen += 5; // prefix "![", suffix "]]>"+ if (subj->pos + matchlen > subj->input.len) {+ subj->flags |= FLAG_SKIP_HTML_CDATA;+ matchlen = 0;+ }+ }+ }+ } else if ((subj->flags & FLAG_SKIP_HTML_DECLARATION) == 0) {+ matchlen = scan_html_declaration(&subj->input, subj->pos + 1);+ if (matchlen > 0) {+ matchlen += 2; // prefix "!", suffix ">"+ if (subj->pos + matchlen > subj->input.len) {+ subj->flags |= FLAG_SKIP_HTML_DECLARATION;+ matchlen = 0;+ }+ }+ }+ } else if (c == '?') {+ if ((subj->flags & FLAG_SKIP_HTML_PI) == 0) {+ // Note that we allow an empty match.+ matchlen = scan_html_pi(&subj->input, subj->pos + 1);+ matchlen += 3; // prefix "?", suffix "?>"+ if (subj->pos + matchlen > subj->input.len) {+ subj->flags |= FLAG_SKIP_HTML_PI;+ matchlen = 0;+ }+ }+ } else {+ matchlen = scan_html_tag(&subj->input, subj->pos);+ }+ } if (matchlen > 0) { contents = cmark_chunk_dup(&subj->input, subj->pos - 1, matchlen + 1); subj->pos += matchlen;@@ -969,17 +1074,21 @@ else if (input->data[i] == '(') { ++nb_p; ++i;- if (nb_p > 32)- return -1;+ 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]))+ } else if (cmark_isspace(input->data[i])) {+ if (i == offset) {+ return -1;+ } break;- else+ } else { ++i;+ } } if (i >= input->len)@@ -1005,7 +1114,7 @@ } else if (input->data[i] == '\\') i += 2; else if (input->data[i] == '\n' || input->data[i] == '<')- return manual_scan_link_url_2(input, offset, output);+ return -1; else ++i; }@@ -1048,16 +1157,16 @@ return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]")); } - if (!opener->active) {+ // If we got here, we matched a potential link/image text.+ // Now we check to see if it's a link/image.+ is_image = opener->image;++ if (!is_image && subj->no_link_openers) { // take delimiter off stack pop_bracket(subj); return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]")); } - // If we got here, we matched a potential link/image text.- // Now we check to see if it's a link/image.- is_image = opener->image;- after_link_text_pos = subj->pos; // First, look for an inline link.@@ -1129,19 +1238,77 @@ // What if we're a footnote link? if (parser->options & CMARK_OPT_FOOTNOTES && opener->inl_text->next &&- opener->inl_text->next->type == CMARK_NODE_TEXT &&- !opener->inl_text->next->next) {+ opener->inl_text->next->type == CMARK_NODE_TEXT) {+ cmark_chunk *literal = &opener->inl_text->next->as.literal;- if (literal->len > 1 && literal->data[0] == '^') {- inl = make_simple(subj->mem, CMARK_NODE_FOOTNOTE_REFERENCE);- inl->as.literal = cmark_chunk_dup(literal, 1, literal->len - 1);- 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);- cmark_node_free(opener->inl_text->next);++ // look back to the opening '[', and skip ahead to the next character+ // if we're looking at a '[^' sequence, and there is other text or nodes+ // after the ^, let's call it a footnote reference.+ if ((literal->len > 0 && literal->data[0] == '^') && (literal->len > 1 || opener->inl_text->next->next)) {++ // Before we got this far, the `handle_close_bracket` function may have+ // advanced the current state beyond our footnote's actual closing+ // bracket, ie if it went looking for a `link_label`.+ // Let's just rewind the subject's position:+ subj->pos = initial_pos;++ cmark_node *fnref = make_simple(subj->mem, CMARK_NODE_FOOTNOTE_REFERENCE);++ // the start and end of the footnote ref is the opening and closing brace+ // i.e. the subject's current position, and the opener's start_column+ int fnref_end_column = subj->pos + subj->column_offset + subj->block_offset;+ int fnref_start_column = opener->inl_text->start_column;++ // any given node delineates a substring of the line being processed,+ // with the remainder of the line being pointed to thru its 'literal'+ // struct member.+ // here, we copy the literal's pointer, moving it past the '^' character+ // for a length equal to the size of footnote reference text.+ // i.e. end_col minus start_col, minus the [ and the ^ characters+ //+ // this copies the footnote reference string, even if between the+ // `opener` and the subject's current position there are other nodes+ //+ // (first, check for underflows)+ if ((fnref_start_column + 2) <= fnref_end_column) {+ fnref->as.literal = cmark_chunk_dup(literal, 1, (fnref_end_column - fnref_start_column) - 2);+ } else {+ fnref->as.literal = cmark_chunk_dup(literal, 1, 0);+ }++ fnref->start_line = fnref->end_line = subj->line;+ fnref->start_column = fnref_start_column;+ fnref->end_column = fnref_end_column;++ // we then replace the opener with this new fnref node, the net effect+ // being replacing the opening '[' text node with a `^footnote-ref]` node.+ cmark_node_insert_before(opener->inl_text, fnref);++ process_emphasis(parser, subj, opener->position);+ // sometimes, the footnote reference text gets parsed into multiple nodes+ // i.e. '[^example]' parsed into '[', '^exam', 'ple]'.+ // this happens for ex with the autolink extension. when the autolinker+ // finds the 'w' character, it will split the text into multiple nodes+ // in hopes of being able to match a 'www.' substring.+ //+ // because this function is called one character at a time via the+ // `parse_inlines` function, and the current subj->pos is pointing at the+ // closing ] brace, and because we copy all the text between the [ ]+ // braces, we should be able to safely ignore and delete any nodes after+ // the opener->inl_text->next.+ //+ // therefore, here we walk thru the list and free them all up+ cmark_node *next_node;+ cmark_node *current_node = opener->inl_text->next;+ while(current_node) {+ next_node = current_node->next;+ cmark_node_free(current_node);+ current_node = next_node;+ }+ cmark_node_free(opener->inl_text);- process_emphasis(parser, subj, opener->previous_delimiter);+ pop_bracket(subj); return NULL; }@@ -1163,31 +1330,22 @@ tmp = opener->inl_text->next; while (tmp) { tmpnext = tmp->next;- cmark_node_append_child(inl, tmp);+ cmark_node_unlink(tmp);+ append_child(inl, tmp); tmp = tmpnext; } // Free the bracket [: cmark_node_free(opener->inl_text); - process_emphasis(parser, subj, opener->previous_delimiter);+ process_emphasis(parser, subj, opener->position); pop_bracket(subj); - // Now, if we have a link, we also want to deactivate earlier link- // delimiters. (This code can be removed if we decide to allow links+ // Now, if we have a link, we also want to deactivate links until+ // we get a new opener. (This code can be removed if we decide to allow links // inside links.) if (!is_image) {- opener = subj->last_bracket;- while (opener != NULL) {- if (!opener->image) {- if (!opener->active) {- break;- } else {- opener->active = false;- }- }- opener = opener->previous;- }+ subj->no_link_openers = true; } return NULL;@@ -1365,7 +1523,7 @@ new_inl = make_str(subj, startpos, endpos - 1, contents); } if (new_inl != NULL) {- cmark_node_append_child(parent, new_inl);+ append_child(parent, new_inl); } return 1;@@ -1384,7 +1542,7 @@ while (!is_eof(&subj) && parse_inline(parser, &subj, parent, options)) ; - process_emphasis(parser, &subj, NULL);+ process_emphasis(parser, &subj, 0); // free bracket and delim stack while (subj.last_delim) { remove_delimiter(&subj, subj.last_delim);@@ -1432,8 +1590,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;@@ -1597,10 +1754,15 @@ } int cmark_inline_parser_in_bracket(cmark_inline_parser *parser, int image) {- for (bracket *b = parser->last_bracket; b; b = b->previous)- if (b->active && b->image == (image != 0))- return 1;- return 0;+ bracket *b = parser->last_bracket;+ if (!b) {+ return 0;+ }+ if (image != 0) {+ return b->in_bracket_image1;+ } else {+ return b->in_bracket_image0;+ } } void cmark_node_unput(cmark_node *node, int n) {
cbits/iterator.h view
@@ -6,7 +6,6 @@ #endif #include "cmark-gfm.h"-#include "memory.h" typedef struct { cmark_event_type ev_type;
cbits/latex.c view
@@ -385,10 +385,12 @@ break; case CMARK_NODE_STRONG:- if (entering) {- LIT("\\textbf{");- } else {- LIT("}");+ if (node->parent == NULL || node->parent->type != CMARK_NODE_STRONG) {+ if (entering) {+ LIT("\\textbf{");+ } else {+ LIT("}");+ } } break;
cbits/man.c view
@@ -74,7 +74,6 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, cmark_event_type ev_type, int options) {- cmark_node *tmp; int list_number; bool entering = (ev_type == CMARK_EVENT_ENTER); bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options);@@ -123,12 +122,7 @@ if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) { LIT("\\[bu] 2"); } else {- list_number = cmark_node_get_list_start(node->parent);- tmp = node;- while (tmp->prev) {- tmp = tmp->prev;- list_number += 1;- }+ list_number = cmark_node_get_item_index(node); char list_number_s[LIST_NUMBER_SIZE]; snprintf(list_number_s, LIST_NUMBER_SIZE, "\"%d.\" 4", list_number); LIT(list_number_s);@@ -225,10 +219,12 @@ break; case CMARK_NODE_STRONG:- if (entering) {- LIT("\\f[B]");- } else {- LIT("\\f[]");+ if (node->parent == NULL || node->parent->type != CMARK_NODE_STRONG) {+ if (entering) {+ LIT("\\f[B]");+ } else {+ LIT("\\f[]");+ } } break;
cbits/map.c view
@@ -51,7 +51,7 @@ } static void sort_map(cmark_map *map) {- unsigned int i = 0, last = 0, size = map->size;+ size_t i = 0, last = 0, size = map->size; cmark_map_entry *r = map->refs, **sorted = NULL; sorted = (cmark_map_entry **)map->mem->calloc(size, sizeof(cmark_map_entry *));@@ -73,6 +73,7 @@ cmark_map_entry *cmark_map_lookup(cmark_map *map, cmark_chunk *label) { cmark_map_entry **ref = NULL;+ cmark_map_entry *r = NULL; unsigned char *norm; if (label->len < 1 || label->len > MAX_LINK_LABEL_LENGTH)@@ -91,10 +92,15 @@ ref = (cmark_map_entry **)bsearch(norm, map->sorted, map->size, sizeof(cmark_map_entry *), refsearch); map->mem->free(norm); - if (!ref)- return NULL;+ if (ref != NULL) {+ r = ref[0];+ /* Check for expansion limit */+ if (r->size > map->max_ref_size - map->ref_size)+ return NULL;+ map->ref_size += r->size;+ } - return ref[0];+ return r; } void cmark_map_free(cmark_map *map) {@@ -118,5 +124,6 @@ cmark_map *map = (cmark_map *)mem->calloc(1, sizeof(cmark_map)); map->mem = mem; map->free = free;+ map->max_ref_size = UINT_MAX; return map; }
cbits/map.h view
@@ -1,7 +1,6 @@ #ifndef CMARK_MAP_H #define CMARK_MAP_H -#include "memory.h" #include "chunk.h" #ifdef __cplusplus@@ -11,7 +10,8 @@ struct cmark_map_entry { struct cmark_map_entry *next; unsigned char *label;- unsigned int age;+ size_t age;+ size_t size; }; typedef struct cmark_map_entry cmark_map_entry;@@ -24,7 +24,9 @@ cmark_mem *mem; cmark_map_entry *refs; cmark_map_entry **sorted;- unsigned int size;+ size_t size;+ size_t ref_size;+ size_t max_ref_size; cmark_map_free_f free; };
cbits/node.c view
@@ -5,10 +5,42 @@ #include "node.h" #include "syntax_extension.h" +/**+ * Expensive safety checks are off by default, but can be enabled+ * by calling cmark_enable_safety_checks().+ */+static bool enable_safety_checks = false;++void cmark_enable_safety_checks(bool enable) {+ enable_safety_checks = enable;+}+ static void S_node_unlink(cmark_node *node); #define NODE_MEM(node) cmark_node_mem(node) +void cmark_register_node_flag(cmark_node_internal_flags *flags) {+ static cmark_node_internal_flags nextflag = CMARK_NODE__REGISTER_FIRST;++ // flags should be a pointer to a global variable and this function+ // should only be called once to initialize its value.+ if (*flags) {+ fprintf(stderr, "flag initialization error in cmark_register_node_flag\n");+ abort();+ }++ // Check that we haven't run out of bits.+ if (nextflag == 0) {+ fprintf(stderr, "too many flags in cmark_register_node_flag\n");+ abort();+ }++ *flags = nextflag;+ nextflag <<= 1;+}++void cmark_init_standard_node_flags(void) {}+ bool cmark_node_can_contain_type(cmark_node *node, cmark_node_type child_type) { if (child_type == CMARK_NODE_DOCUMENT) { return false;@@ -48,8 +80,6 @@ } static bool S_can_contain(cmark_node *node, cmark_node *child) {- cmark_node *cur;- if (node == NULL || child == NULL) { return false; }@@ -57,14 +87,16 @@ return 0; } - // Verify that child is not an ancestor of node or equal to node.- cur = node;- do {- if (cur == child) {- return false;- }- cur = cur->parent;- } while (cur != NULL);+ if (enable_safety_checks) {+ // Verify that child is not an ancestor of node or equal to node.+ cmark_node *cur = node;+ do {+ if (cur == child) {+ return false;+ }+ cur = cur->parent;+ } while (cur != NULL);+ } return cmark_node_can_contain_type(node, (cmark_node_type) child->type); }@@ -301,6 +333,14 @@ } } +cmark_node *cmark_node_parent_footnote_def(cmark_node *node) {+ if (node == NULL) {+ return NULL;+ } else {+ return node->parent_footnote_def;+ }+}+ void *cmark_node_get_user_data(cmark_node *node) { if (node == NULL) { return NULL;@@ -337,6 +377,7 @@ case CMARK_NODE_HTML_INLINE: case CMARK_NODE_CODE: case CMARK_NODE_FOOTNOTE_REFERENCE:+ case CMARK_NODE_FOOTNOTE_DEFINITION: return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.literal); case CMARK_NODE_CODE_BLOCK:@@ -518,6 +559,31 @@ if (node->type == CMARK_NODE_LIST) { node->as.list.tight = tight == 1;+ return 1;+ } else {+ return 0;+ }+}++int cmark_node_get_item_index(cmark_node *node) {+ if (node == NULL) {+ return 0;+ }++ if (node->type == CMARK_NODE_ITEM) {+ return node->as.list.start;+ } else {+ return 0;+ }+}++int cmark_node_set_item_index(cmark_node *node, int idx) {+ if (node == NULL || idx < 0) {+ return 0;+ }++ if (node->type == CMARK_NODE_ITEM) {+ node->as.list.start = idx; return 1; } else { return 0;
cbits/node.h view
@@ -21,6 +21,7 @@ cmark_delim_type delimiter; unsigned char bullet_char; bool tight;+ bool checked; // For task list extension } cmark_list; typedef struct {@@ -50,8 +51,15 @@ enum cmark_node__internal_flags { CMARK_NODE__OPEN = (1 << 0), CMARK_NODE__LAST_LINE_BLANK = (1 << 1),+ CMARK_NODE__LAST_LINE_CHECKED = (1 << 2),++ // Extensions can register custom flags by calling `cmark_register_node_flag`.+ // This is the starting value for the custom flags.+ CMARK_NODE__REGISTER_FIRST = (1 << 3), }; +typedef uint16_t cmark_node_internal_flags;+ struct cmark_node { cmark_strbuf content; @@ -70,11 +78,26 @@ int end_column; int internal_offset; uint16_t type;- uint16_t flags;+ cmark_node_internal_flags flags; cmark_syntax_extension *extension; + /**+ * Used during cmark_render() to cache the most recent non-NULL+ * extension, if you go up the parent chain like this:+ *+ * node->parent->...parent->extension+ */+ cmark_syntax_extension *ancestor_extension;+ union {+ int ref_ix;+ int def_count;+ } footnote;++ cmark_node *parent_footnote_def;++ union { cmark_chunk literal; cmark_list list; cmark_code code;@@ -82,10 +105,31 @@ cmark_link link; cmark_custom custom; int html_block_type;+ int cell_index; // For keeping track of TABLE_CELL table alignments void *opaque; } as; }; +/**+ * Syntax extensions can use this function to register a custom node+ * flag. The flags are stored in the `flags` field of the `cmark_node`+ * struct. The `flags` parameter should be the address of a global variable+ * which will store the flag value.+ */+CMARK_GFM_EXPORT+void cmark_register_node_flag(cmark_node_internal_flags *flags);++/**+ * DEPRECATED.+ *+ * This function was added in cmark-gfm version 0.29.0.gfm.7, and was+ * required to be called at program start time, which caused+ * backwards-compatibility issues in applications that use cmark-gfm as a+ * library. It is now a no-op.+ */+CMARK_GFM_EXPORT+void cmark_init_standard_node_flags(void);+ static CMARK_INLINE cmark_mem *cmark_node_mem(cmark_node *node) { return node->content.mem; }@@ -108,6 +152,13 @@ } CMARK_GFM_EXPORT bool cmark_node_can_contain_type(cmark_node *node, cmark_node_type child_type);++/**+ * Enable (or disable) extra safety checks. These extra checks cause+ * extra performance overhead (in some cases quadratic), so they are only+ * intended to be used during testing.+ */+CMARK_GFM_EXPORT void cmark_enable_safety_checks(bool enable); #ifdef __cplusplus }
cbits/parser.h view
@@ -2,9 +2,9 @@ #define CMARK_PARSER_H #include <stdio.h>+#include "references.h" #include "node.h" #include "buffer.h"-#include "memory.h" #ifdef __cplusplus extern "C" {@@ -30,6 +30,7 @@ bufsize_t first_nonspace; /* See the documentation for cmark_parser_get_first_nonspace_column() in cmark.h */ bufsize_t first_nonspace_column;+ bufsize_t thematic_break_kill_pos; /* See the documentation for cmark_parser_get_indent() in cmark.h */ int indent; /* See the documentation for cmark_parser_is_blank() in cmark.h */@@ -45,6 +46,7 @@ /* Options set by the user, see the Options section in cmark.h */ int options; bool last_buffer_ended_with_cr;+ size_t total_size; cmark_llist *syntax_extensions; cmark_llist *inline_syntax_extensions; cmark_ispunct_func backslash_ispunct;
cbits/plaintext.c view
@@ -16,23 +16,8 @@ cmark_render_code_point(renderer, c); } -// if node is a block node, returns node.-// otherwise returns first block-level node that is an ancestor of node.-// if there is no block-level ancestor, returns NULL.-static cmark_node *get_containing_block(cmark_node *node) {- while (node) {- if (CMARK_NODE_BLOCK_P(node)) {- return node;- } else {- node = node->parent;- }- }- return NULL;-}- static int S_render_node(cmark_renderer *renderer, cmark_node *node, cmark_event_type ev_type, int options) {- cmark_node *tmp; int list_number; cmark_delim_type list_delim; int i;@@ -46,14 +31,17 @@ // Don't adjust tight list status til we've started the list. // Otherwise we loose the blank line between a paragraph and // a following list.- if (!(node->type == CMARK_NODE_ITEM && node->prev == NULL && entering)) {- tmp = get_containing_block(node);- renderer->in_tight_list_item =- tmp && // tmp might be NULL if there is no containing block- ((tmp->type == CMARK_NODE_ITEM &&- cmark_node_get_list_tight(tmp->parent)) ||- (tmp && tmp->parent && tmp->parent->type == CMARK_NODE_ITEM &&- cmark_node_get_list_tight(tmp->parent->parent)));+ if (entering) {+ if (node->parent && node->parent->type == CMARK_NODE_ITEM) {+ renderer->in_tight_list_item = node->parent->parent->as.list.tight;+ }+ } else {+ if (node->type == CMARK_NODE_LIST) {+ renderer->in_tight_list_item =+ node->parent &&+ node->parent->type == CMARK_NODE_ITEM &&+ node->parent->parent->as.list.tight;+ } } if (node->extension && node->extension->plaintext_render_func) {@@ -79,13 +67,8 @@ if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) { marker_width = 4; } else {- list_number = cmark_node_get_list_start(node->parent);+ list_number = cmark_node_get_item_index(node); list_delim = cmark_node_get_list_delim(node->parent);- tmp = node;- while (tmp->prev) {- tmp = tmp->prev;- list_number += 1;- } // we ensure a width of at least 4 so // we get nice transition from single digits // to double
cbits/references.c view
@@ -32,6 +32,7 @@ ref->title = cmark_clean_title(map->mem, title); ref->entry.age = map->size; ref->entry.next = map->refs;+ ref->entry.size = ref->url.len + ref->title.len; map->refs = (cmark_map_entry *)ref; map->size++;
cbits/render.c view
@@ -31,13 +31,7 @@ cmark_chunk remainder = cmark_chunk_literal(""); int k = renderer->buffer->size - 1; - cmark_syntax_extension *ext = NULL;- cmark_node *n = node;- while (n && !ext) {- ext = n->extension;- if (!ext)- n = n->parent;- }+ cmark_syntax_extension *ext = node->ancestor_extension; if (ext && !ext->commonmark_escape_func) ext = NULL; @@ -98,21 +92,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((char)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((char)c) == 1;+ } } else { (renderer->outc)(renderer, node, escape, c, nextc); renderer->begin_line = false;@@ -180,6 +176,20 @@ while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { cur = cmark_iter_get_node(iter);+ if (cur->extension) {+ cur->ancestor_extension = cur->extension;+ } else if (cur->parent) {+ cur->ancestor_extension = cur->parent->ancestor_extension;+ }+ if (cur->type == CMARK_NODE_ITEM) {+ // Calculate the list item's index, for the benefit of output formats+ // like commonmark and plaintext.+ if (cur->prev) {+ cmark_node_set_item_index(cur, 1 + cmark_node_get_item_index(cur->prev));+ } else {+ cmark_node_set_item_index(cur, cmark_node_get_list_start(cur->parent));+ }+ } if (!render_node(&renderer, cur, ev_type, options)) { // a false value causes us to skip processing // the node's contents. this is used for
cbits/render.h view
@@ -8,7 +8,6 @@ #include <stdlib.h> #include "buffer.h" #include "chunk.h"-#include "memory.h" typedef enum { LITERAL, NORMAL, TITLE, URL } cmark_escaping;
cbits/scanners.c view
@@ -1,10694 +1,14056 @@-/* Generated by re2c 1.1.1 */-#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;- }- }- yych = *++p;- if (yych == ':') 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:- 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:- yych = *++p;- if (yych <= 0x7F) goto yy45;- if (yych <= 0xBF) goto yy47;- goto yy45;-yy53:- yych = *++p;- if (yych <= 0x9F) goto yy45;- if (yych <= 0xBF) goto yy52;- goto yy45;-yy54:- yych = *++p;- if (yych <= 0x7F) goto yy45;- if (yych <= 0xBF) goto yy52;- goto yy45;-yy55:- yych = *++p;- if (yych <= 0x7F) goto yy45;- if (yych <= 0x9F) goto yy52;- goto yy45;-yy56:- yych = *++p;- if (yych <= 0x8F) goto yy45;- if (yych <= 0xBF) goto yy54;- goto yy45;-yy57:- yych = *++p;- if (yych <= 0x7F) goto yy45;- if (yych <= 0xBF) goto yy54;- goto yy45;-yy58:- 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;- }- }- yych = *++p;- if (yych == ':') 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:- yych = *++p;-yy93:- if (yybm[0+yych] & 128) {- goto yy92;- }- if (yych <= '>') goto yy94;- if (yych <= '@') goto yy95;-yy94:- p = marker;- goto yy90;-yy95:- 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:- 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;- }- }- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- 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 (yych <= '.') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy225;- if (yych <= '\r') goto yy250;- goto yy225;- } else {- if (yych <= ' ') goto yy250;- if (yych == '-') goto yy250;- goto yy225;- }- } else {- if (yych <= '@') {- if (yych <= '9') goto yy250;- if (yych == '>') goto yy250;- goto yy225;- } else {- if (yych <= 'Z') goto yy250;- if (yych <= '`') goto yy225;- if (yych <= 'z') goto yy250;- goto yy225;- }- }-yy230:- yych = *++p;- if (yych == '-') goto yy254;-yy231:- p = marker;- goto yy225;-yy232:- 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:- 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:- 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;- }- }- 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:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy237;- goto yy231;-yy241:- yych = *++p;- if (yych <= 0x9F) goto yy231;- if (yych <= 0xBF) goto yy240;- goto yy231;-yy242:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy240;- goto yy231;-yy243:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x9F) goto yy240;- goto yy231;-yy244:- yych = *++p;- if (yych <= 0x8F) goto yy231;- if (yych <= 0xBF) goto yy242;- goto yy231;-yy245:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy242;- goto yy231;-yy246:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x8F) goto yy242;- goto yy231;-yy247:- 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:- yych = *++p;-yy250:- 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:- 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:- 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:- 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:- 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:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy262;- goto yy231;-yy266:- yych = *++p;- if (yych <= 0x9F) goto yy231;- if (yych <= 0xBF) goto yy265;- goto yy231;-yy267:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy265;- goto yy231;-yy268:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x9F) goto yy265;- goto yy231;-yy269:- yych = *++p;- if (yych <= 0x8F) goto yy231;- if (yych <= 0xBF) goto yy267;- goto yy231;-yy270:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy267;- goto yy231;-yy271:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x8F) goto yy267;- goto yy231;-yy272:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy255;- goto yy231;-yy273:- yych = *++p;- if (yych <= 0x9F) goto yy231;- if (yych <= 0xBF) goto yy272;- goto yy231;-yy274:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy272;- goto yy231;-yy275:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x9F) goto yy272;- goto yy231;-yy276:- yych = *++p;- if (yych <= 0x8F) goto yy231;- if (yych <= 0xBF) goto yy274;- goto yy231;-yy277:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy274;- goto yy231;-yy278:- 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:- 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:- 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:- 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:- 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:- 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:- 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:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy286;- goto yy231;-yy293:- yych = *++p;- if (yych <= 0x9F) goto yy231;- if (yych <= 0xBF) goto yy292;- goto yy231;-yy294:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy292;- goto yy231;-yy295:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x9F) goto yy292;- goto yy231;-yy296:- yych = *++p;- if (yych <= 0x8F) goto yy231;- if (yych <= 0xBF) goto yy294;- goto yy231;-yy297:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy294;- goto yy231;-yy298:- 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:- yych = *++p;- if (yybm[0+yych] & 1) {- goto yy247;- }- if (yych == '/') goto yy251;- if (yych == '>') goto yy252;- goto yy231;-yy301:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy288;- goto yy231;-yy302:- yych = *++p;- if (yych <= 0x9F) goto yy231;- if (yych <= 0xBF) goto yy301;- goto yy231;-yy303:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy301;- goto yy231;-yy304:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x9F) goto yy301;- goto yy231;-yy305:- yych = *++p;- if (yych <= 0x8F) goto yy231;- if (yych <= 0xBF) goto yy303;- goto yy231;-yy306:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy303;- goto yy231;-yy307:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x8F) goto yy303;- goto yy231;-yy308:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy290;- goto yy231;-yy309:- yych = *++p;- if (yych <= 0x9F) goto yy231;- if (yych <= 0xBF) goto yy308;- goto yy231;-yy310:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy308;- goto yy231;-yy311:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x9F) goto yy308;- goto yy231;-yy312:- yych = *++p;- if (yych <= 0x8F) goto yy231;- if (yych <= 0xBF) goto yy310;- goto yy231;-yy313:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy310;- goto yy231;-yy314:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x8F) goto yy310;- goto yy231;-yy315:- yych = *++p;- if (yych != '[') goto yy231;-yy316:- 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;- }- }- 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:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy316;- goto yy231;-yy320:- yych = *++p;- if (yych <= 0x9F) goto yy231;- if (yych <= 0xBF) goto yy319;- goto yy231;-yy321:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy319;- goto yy231;-yy322:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x9F) goto yy319;- goto yy231;-yy323:- yych = *++p;- if (yych <= 0x8F) goto yy231;- if (yych <= 0xBF) goto yy321;- goto yy231;-yy324:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0xBF) goto yy321;- goto yy231;-yy325:- yych = *++p;- if (yych <= 0x7F) goto yy231;- if (yych <= 0x8F) goto yy321;- goto yy231;-yy326:- 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 (liberally) match an HTML tag after first <, returning num of chars matched.-bufsize_t _scan_liberal_html_tag(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 <= 0xE0) {- if (yych <= '\n') {- if (yych <= 0x00) goto yy329;- if (yych <= '\t') goto yy331;- } else {- if (yych <= 0x7F) goto yy331;- if (yych <= 0xC1) goto yy329;- if (yych <= 0xDF) goto yy332;- goto yy333;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy335;- goto yy334;- } else {- if (yych <= 0xF0) goto yy336;- if (yych <= 0xF3) goto yy337;- if (yych <= 0xF4) goto yy338;- }- }-yy329:- ++p;-yy330:- { return 0; }-yy331:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= '\n') {- if (yych <= 0x00) goto yy330;- if (yych <= '\t') goto yy340;- goto yy330;- } else {- if (yych <= 0x7F) goto yy340;- if (yych <= 0xC1) goto yy330;- if (yych <= 0xF4) goto yy340;- goto yy330;- }-yy332:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy330;- if (yych <= 0xBF) goto yy339;- goto yy330;-yy333:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x9F) goto yy330;- if (yych <= 0xBF) goto yy345;- goto yy330;-yy334:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy330;- if (yych <= 0xBF) goto yy345;- goto yy330;-yy335:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy330;- if (yych <= 0x9F) goto yy345;- goto yy330;-yy336:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x8F) goto yy330;- if (yych <= 0xBF) goto yy347;- goto yy330;-yy337:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy330;- if (yych <= 0xBF) goto yy347;- goto yy330;-yy338:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy330;- if (yych <= 0x8F) goto yy347;- goto yy330;-yy339:- yych = *++p;-yy340:- if (yybm[0+yych] & 64) {- goto yy339;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy341;- if (yych <= '>') goto yy342;- } else {- if (yych <= 0xDF) goto yy345;- if (yych <= 0xE0) goto yy346;- goto yy347;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy348;- if (yych <= 0xEF) goto yy347;- goto yy349;- } else {- if (yych <= 0xF3) goto yy350;- if (yych <= 0xF4) goto yy351;- }- }-yy341:- p = marker;- if (yyaccept == 0) {- goto yy330;- } else {- goto yy344;- }-yy342:- yyaccept = 1;- yych = *(marker = ++p);- if (yybm[0+yych] & 64) {- goto yy339;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy344;- if (yych <= '>') goto yy342;- } else {- if (yych <= 0xDF) goto yy345;- if (yych <= 0xE0) goto yy346;- goto yy347;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy348;- if (yych <= 0xEF) goto yy347;- goto yy349;- } else {- if (yych <= 0xF3) goto yy350;- if (yych <= 0xF4) goto yy351;- }- }-yy344:- { return (bufsize_t)(p - start); }-yy345:- yych = *++p;- if (yych <= 0x7F) goto yy341;- if (yych <= 0xBF) goto yy339;- goto yy341;-yy346:- yych = *++p;- if (yych <= 0x9F) goto yy341;- if (yych <= 0xBF) goto yy345;- goto yy341;-yy347:- yych = *++p;- if (yych <= 0x7F) goto yy341;- if (yych <= 0xBF) goto yy345;- goto yy341;-yy348:- yych = *++p;- if (yych <= 0x7F) goto yy341;- if (yych <= 0x9F) goto yy345;- goto yy341;-yy349:- yych = *++p;- if (yych <= 0x8F) goto yy341;- if (yych <= 0xBF) goto yy347;- goto yy341;-yy350:- yych = *++p;- if (yych <= 0x7F) goto yy341;- if (yych <= 0xBF) goto yy347;- goto yy341;-yy351:- yych = *++p;- if (yych <= 0x7F) goto yy341;- if (yych <= 0x8F) goto yy347;- goto yy341;-}--}--// 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 yy356;- ++p;-yy355:- { return 0; }-yy356:- yych = *(marker = ++p);- switch (yych) {- case '!': goto yy357;- case '/': goto yy359;- case '?': goto yy360;- case 'A':- case 'a': goto yy362;- case 'B':- case 'b': goto yy363;- case 'C':- case 'c': goto yy364;- case 'D':- case 'd': goto yy365;- case 'F':- case 'f': goto yy366;- case 'H':- case 'h': goto yy367;- case 'I':- case 'i': goto yy368;- case 'L':- case 'l': goto yy369;- case 'M':- case 'm': goto yy370;- case 'N':- case 'n': goto yy371;- case 'O':- case 'o': goto yy372;- case 'P':- case 'p': goto yy373;- case 'S':- case 's': goto yy374;- case 'T':- case 't': goto yy375;- case 'U':- case 'u': goto yy376;- default: goto yy355;- }-yy357:- yych = *++p;- if (yych <= '@') {- if (yych == '-') goto yy377;- } else {- if (yych <= 'Z') goto yy378;- if (yych <= '[') goto yy380;- }-yy358:- p = marker;- goto yy355;-yy359:- yych = *++p;- switch (yych) {- case 'A':- case 'a': goto yy362;- case 'B':- case 'b': goto yy363;- case 'C':- case 'c': goto yy364;- case 'D':- case 'd': goto yy365;- case 'F':- case 'f': goto yy366;- case 'H':- case 'h': goto yy367;- case 'I':- case 'i': goto yy368;- case 'L':- case 'l': goto yy369;- case 'M':- case 'm': goto yy370;- case 'N':- case 'n': goto yy371;- case 'O':- case 'o': goto yy372;- case 'P':- case 'p': goto yy381;- case 'S':- case 's': goto yy382;- case 'T':- case 't': goto yy375;- case 'U':- case 'u': goto yy376;- default: goto yy358;- }-yy360:- ++p;- { return 3; }-yy362:- yych = *++p;- if (yych <= 'S') {- if (yych <= 'D') {- if (yych <= 'C') goto yy358;- goto yy383;- } else {- if (yych <= 'Q') goto yy358;- if (yych <= 'R') goto yy384;- goto yy385;- }- } else {- if (yych <= 'q') {- if (yych == 'd') goto yy383;- goto yy358;- } else {- if (yych <= 'r') goto yy384;- if (yych <= 's') goto yy385;- goto yy358;- }- }-yy363:- yych = *++p;- if (yych <= 'O') {- if (yych <= 'K') {- if (yych == 'A') goto yy386;- goto yy358;- } else {- if (yych <= 'L') goto yy387;- if (yych <= 'N') goto yy358;- goto yy388;- }- } else {- if (yych <= 'k') {- if (yych == 'a') goto yy386;- goto yy358;- } else {- if (yych <= 'l') goto yy387;- if (yych == 'o') goto yy388;- goto yy358;- }- }-yy364:- yych = *++p;- if (yych <= 'O') {- if (yych <= 'D') {- if (yych == 'A') goto yy389;- goto yy358;- } else {- if (yych <= 'E') goto yy390;- if (yych <= 'N') goto yy358;- goto yy391;- }- } else {- if (yych <= 'd') {- if (yych == 'a') goto yy389;- goto yy358;- } else {- if (yych <= 'e') goto yy390;- if (yych == 'o') goto yy391;- goto yy358;- }- }-yy365:- yych = *++p;- switch (yych) {- case 'D':- case 'L':- case 'T':- case 'd':- case 'l':- case 't': goto yy392;- case 'E':- case 'e': goto yy393;- case 'I':- case 'i': goto yy394;- default: goto yy358;- }-yy366:- yych = *++p;- if (yych <= 'R') {- if (yych <= 'N') {- if (yych == 'I') goto yy395;- goto yy358;- } else {- if (yych <= 'O') goto yy396;- if (yych <= 'Q') goto yy358;- goto yy397;- }- } else {- if (yych <= 'n') {- if (yych == 'i') goto yy395;- goto yy358;- } else {- if (yych <= 'o') goto yy396;- if (yych == 'r') goto yy397;- goto yy358;- }- }-yy367:- yych = *++p;- if (yych <= 'S') {- if (yych <= 'D') {- if (yych <= '0') goto yy358;- if (yych <= '6') goto yy392;- goto yy358;- } else {- if (yych <= 'E') goto yy398;- if (yych == 'R') goto yy392;- goto yy358;- }- } else {- if (yych <= 'q') {- if (yych <= 'T') goto yy399;- if (yych == 'e') goto yy398;- goto yy358;- } else {- if (yych <= 'r') goto yy392;- if (yych == 't') goto yy399;- goto yy358;- }- }-yy368:- yych = *++p;- if (yych == 'F') goto yy400;- if (yych == 'f') goto yy400;- goto yy358;-yy369:- yych = *++p;- if (yych <= 'I') {- if (yych == 'E') goto yy401;- if (yych <= 'H') goto yy358;- goto yy402;- } else {- if (yych <= 'e') {- if (yych <= 'd') goto yy358;- goto yy401;- } else {- if (yych == 'i') goto yy402;- goto yy358;- }- }-yy370:- yych = *++p;- if (yych <= 'E') {- if (yych == 'A') goto yy403;- if (yych <= 'D') goto yy358;- goto yy404;- } else {- if (yych <= 'a') {- if (yych <= '`') goto yy358;- goto yy403;- } else {- if (yych == 'e') goto yy404;- goto yy358;- }- }-yy371:- yych = *++p;- if (yych <= 'O') {- if (yych == 'A') goto yy405;- if (yych <= 'N') goto yy358;- goto yy406;- } else {- if (yych <= 'a') {- if (yych <= '`') goto yy358;- goto yy405;- } else {- if (yych == 'o') goto yy406;- goto yy358;- }- }-yy372:- yych = *++p;- if (yych <= 'P') {- if (yych == 'L') goto yy392;- if (yych <= 'O') goto yy358;- goto yy407;- } else {- if (yych <= 'l') {- if (yych <= 'k') goto yy358;- goto yy392;- } else {- if (yych == 'p') goto yy407;- goto yy358;- }- }-yy373:- yych = *++p;- if (yych <= '>') {- if (yych <= ' ') {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- if (yych <= 0x1F) goto yy358;- goto yy408;- } else {- if (yych == '/') goto yy410;- if (yych <= '=') goto yy358;- goto yy408;- }- } else {- if (yych <= 'R') {- if (yych == 'A') goto yy411;- if (yych <= 'Q') goto yy358;- goto yy412;- } else {- if (yych <= 'a') {- if (yych <= '`') goto yy358;- goto yy411;- } else {- if (yych == 'r') goto yy412;- goto yy358;- }- }- }-yy374:- yych = *++p;- switch (yych) {- case 'C':- case 'c': goto yy413;- case 'E':- case 'e': goto yy414;- case 'O':- case 'o': goto yy415;- case 'T':- case 't': goto yy416;- case 'U':- case 'u': goto yy417;- default: goto yy358;- }-yy375:- yych = *++p;- switch (yych) {- case 'A':- case 'a': goto yy418;- case 'B':- case 'b': goto yy419;- case 'D':- case 'd': goto yy392;- case 'F':- case 'f': goto yy420;- case 'H':- case 'h': goto yy421;- case 'I':- case 'i': goto yy422;- case 'R':- case 'r': goto yy423;- default: goto yy358;- }-yy376:- yych = *++p;- if (yych == 'L') goto yy392;- if (yych == 'l') goto yy392;- goto yy358;-yy377:- yych = *++p;- if (yych == '-') goto yy424;- goto yy358;-yy378:- ++p;- { return 4; }-yy380:- yych = *++p;- if (yych == 'C') goto yy426;- if (yych == 'c') goto yy426;- goto yy358;-yy381:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- goto yy358;- } else {- if (yych <= ' ') goto yy408;- if (yych <= '.') goto yy358;- goto yy410;- }- } else {- if (yych <= '@') {- if (yych == '>') goto yy408;- goto yy358;- } else {- if (yych <= 'A') goto yy411;- if (yych == 'a') goto yy411;- goto yy358;- }- }-yy382:- yych = *++p;- if (yych <= 'U') {- if (yych <= 'N') {- if (yych == 'E') goto yy414;- goto yy358;- } else {- if (yych <= 'O') goto yy415;- if (yych <= 'T') goto yy358;- goto yy417;- }- } else {- if (yych <= 'n') {- if (yych == 'e') goto yy414;- goto yy358;- } else {- if (yych <= 'o') goto yy415;- if (yych == 'u') goto yy417;- goto yy358;- }- }-yy383:- yych = *++p;- if (yych == 'D') goto yy427;- if (yych == 'd') goto yy427;- goto yy358;-yy384:- yych = *++p;- if (yych == 'T') goto yy428;- if (yych == 't') goto yy428;- goto yy358;-yy385:- yych = *++p;- if (yych == 'I') goto yy429;- if (yych == 'i') goto yy429;- goto yy358;-yy386:- yych = *++p;- if (yych == 'S') goto yy430;- if (yych == 's') goto yy430;- goto yy358;-yy387:- yych = *++p;- if (yych == 'O') goto yy431;- if (yych == 'o') goto yy431;- goto yy358;-yy388:- yych = *++p;- if (yych == 'D') goto yy432;- if (yych == 'd') goto yy432;- goto yy358;-yy389:- yych = *++p;- if (yych == 'P') goto yy433;- if (yych == 'p') goto yy433;- goto yy358;-yy390:- yych = *++p;- if (yych == 'N') goto yy434;- if (yych == 'n') goto yy434;- goto yy358;-yy391:- yych = *++p;- if (yych == 'L') goto yy435;- if (yych == 'l') goto yy435;- goto yy358;-yy392:- yych = *++p;- if (yych <= ' ') {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- if (yych <= 0x1F) goto yy358;- goto yy408;- } else {- if (yych <= '/') {- if (yych <= '.') goto yy358;- goto yy410;- } else {- if (yych == '>') goto yy408;- goto yy358;- }- }-yy393:- yych = *++p;- if (yych == 'T') goto yy436;- if (yych == 't') goto yy436;- goto yy358;-yy394:- yych = *++p;- if (yych <= 'V') {- if (yych <= 'Q') {- if (yych == 'A') goto yy437;- goto yy358;- } else {- if (yych <= 'R') goto yy392;- if (yych <= 'U') goto yy358;- goto yy392;- }- } else {- if (yych <= 'q') {- if (yych == 'a') goto yy437;- goto yy358;- } else {- if (yych <= 'r') goto yy392;- if (yych == 'v') goto yy392;- goto yy358;- }- }-yy395:- yych = *++p;- if (yych <= 'G') {- if (yych == 'E') goto yy438;- if (yych <= 'F') goto yy358;- goto yy439;- } else {- if (yych <= 'e') {- if (yych <= 'd') goto yy358;- goto yy438;- } else {- if (yych == 'g') goto yy439;- goto yy358;- }- }-yy396:- yych = *++p;- if (yych <= 'R') {- if (yych == 'O') goto yy434;- if (yych <= 'Q') goto yy358;- goto yy440;- } else {- if (yych <= 'o') {- if (yych <= 'n') goto yy358;- goto yy434;- } else {- if (yych == 'r') goto yy440;- goto yy358;- }- }-yy397:- yych = *++p;- if (yych == 'A') goto yy441;- if (yych == 'a') goto yy441;- goto yy358;-yy398:- yych = *++p;- if (yych == 'A') goto yy442;- if (yych == 'a') goto yy442;- goto yy358;-yy399:- yych = *++p;- if (yych == 'M') goto yy376;- if (yych == 'm') goto yy376;- goto yy358;-yy400:- yych = *++p;- if (yych == 'R') goto yy443;- if (yych == 'r') goto yy443;- goto yy358;-yy401:- yych = *++p;- if (yych == 'G') goto yy444;- if (yych == 'g') goto yy444;- goto yy358;-yy402:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- goto yy358;- } else {- if (yych <= ' ') goto yy408;- if (yych <= '.') goto yy358;- goto yy410;- }- } else {- if (yych <= 'M') {- if (yych == '>') goto yy408;- goto yy358;- } else {- if (yych <= 'N') goto yy445;- if (yych == 'n') goto yy445;- goto yy358;- }- }-yy403:- yych = *++p;- if (yych == 'I') goto yy446;- if (yych == 'i') goto yy446;- goto yy358;-yy404:- yych = *++p;- if (yych == 'N') goto yy447;- if (yych == 'n') goto yy447;- goto yy358;-yy405:- yych = *++p;- if (yych == 'V') goto yy392;- if (yych == 'v') goto yy392;- goto yy358;-yy406:- yych = *++p;- if (yych == 'F') goto yy448;- if (yych == 'f') goto yy448;- goto yy358;-yy407:- yych = *++p;- if (yych == 'T') goto yy449;- if (yych == 't') goto yy449;- goto yy358;-yy408:- ++p;- { return 6; }-yy410:- yych = *++p;- if (yych == '>') goto yy408;- goto yy358;-yy411:- yych = *++p;- if (yych == 'R') goto yy450;- if (yych == 'r') goto yy450;- goto yy358;-yy412:- yych = *++p;- if (yych == 'E') goto yy451;- if (yych == 'e') goto yy451;- goto yy358;-yy413:- yych = *++p;- if (yych == 'R') goto yy452;- if (yych == 'r') goto yy452;- goto yy358;-yy414:- yych = *++p;- if (yych == 'C') goto yy433;- if (yych == 'c') goto yy433;- goto yy358;-yy415:- yych = *++p;- if (yych == 'U') goto yy453;- if (yych == 'u') goto yy453;- goto yy358;-yy416:- yych = *++p;- if (yych == 'Y') goto yy454;- if (yych == 'y') goto yy454;- goto yy358;-yy417:- yych = *++p;- if (yych == 'M') goto yy455;- if (yych == 'm') goto yy455;- goto yy358;-yy418:- yych = *++p;- if (yych == 'B') goto yy456;- if (yych == 'b') goto yy456;- goto yy358;-yy419:- yych = *++p;- if (yych == 'O') goto yy388;- if (yych == 'o') goto yy388;- goto yy358;-yy420:- yych = *++p;- if (yych == 'O') goto yy457;- if (yych == 'o') goto yy457;- goto yy358;-yy421:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- goto yy358;- } else {- if (yych <= ' ') goto yy408;- if (yych <= '.') goto yy358;- goto yy410;- }- } else {- if (yych <= 'D') {- if (yych == '>') goto yy408;- goto yy358;- } else {- if (yych <= 'E') goto yy458;- if (yych == 'e') goto yy458;- goto yy358;- }- }-yy422:- yych = *++p;- if (yych == 'T') goto yy456;- if (yych == 't') goto yy456;- goto yy358;-yy423:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- goto yy358;- } else {- if (yych <= ' ') goto yy408;- if (yych <= '.') goto yy358;- goto yy410;- }- } else {- if (yych <= '@') {- if (yych == '>') goto yy408;- goto yy358;- } else {- if (yych <= 'A') goto yy459;- if (yych == 'a') goto yy459;- goto yy358;- }- }-yy424:- ++p;- { return 2; }-yy426:- yych = *++p;- if (yych == 'D') goto yy460;- if (yych == 'd') goto yy460;- goto yy358;-yy427:- yych = *++p;- if (yych == 'R') goto yy461;- if (yych == 'r') goto yy461;- goto yy358;-yy428:- yych = *++p;- if (yych == 'I') goto yy462;- if (yych == 'i') goto yy462;- goto yy358;-yy429:- yych = *++p;- if (yych == 'D') goto yy463;- if (yych == 'd') goto yy463;- goto yy358;-yy430:- yych = *++p;- if (yych == 'E') goto yy464;- if (yych == 'e') goto yy464;- goto yy358;-yy431:- yych = *++p;- if (yych == 'C') goto yy465;- if (yych == 'c') goto yy465;- goto yy358;-yy432:- yych = *++p;- if (yych == 'Y') goto yy392;- if (yych == 'y') goto yy392;- goto yy358;-yy433:- yych = *++p;- if (yych == 'T') goto yy466;- if (yych == 't') goto yy466;- goto yy358;-yy434:- yych = *++p;- if (yych == 'T') goto yy467;- if (yych == 't') goto yy467;- goto yy358;-yy435:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- goto yy358;- } else {- if (yych <= ' ') goto yy408;- if (yych <= '.') goto yy358;- goto yy410;- }- } else {- if (yych <= 'F') {- if (yych == '>') goto yy408;- goto yy358;- } else {- if (yych <= 'G') goto yy468;- if (yych == 'g') goto yy468;- goto yy358;- }- }-yy436:- yych = *++p;- if (yych == 'A') goto yy469;- if (yych == 'a') goto yy469;- goto yy358;-yy437:- yych = *++p;- if (yych == 'L') goto yy470;- if (yych == 'l') goto yy470;- goto yy358;-yy438:- yych = *++p;- if (yych == 'L') goto yy471;- if (yych == 'l') goto yy471;- goto yy358;-yy439:- yych = *++p;- if (yych <= 'U') {- if (yych == 'C') goto yy472;- if (yych <= 'T') goto yy358;- goto yy473;- } else {- if (yych <= 'c') {- if (yych <= 'b') goto yy358;- goto yy472;- } else {- if (yych == 'u') goto yy473;- goto yy358;- }- }-yy440:- yych = *++p;- if (yych == 'M') goto yy392;- if (yych == 'm') goto yy392;- goto yy358;-yy441:- yych = *++p;- if (yych == 'M') goto yy474;- if (yych == 'm') goto yy474;- goto yy358;-yy442:- yych = *++p;- if (yych == 'D') goto yy475;- if (yych == 'd') goto yy475;- goto yy358;-yy443:- yych = *++p;- if (yych == 'A') goto yy476;- if (yych == 'a') goto yy476;- goto yy358;-yy444:- yych = *++p;- if (yych == 'E') goto yy477;- if (yych == 'e') goto yy477;- goto yy358;-yy445:- yych = *++p;- if (yych == 'K') goto yy392;- if (yych == 'k') goto yy392;- goto yy358;-yy446:- yych = *++p;- if (yych == 'N') goto yy392;- if (yych == 'n') goto yy392;- goto yy358;-yy447:- yych = *++p;- if (yych == 'U') goto yy478;- if (yych == 'u') goto yy478;- goto yy358;-yy448:- yych = *++p;- if (yych == 'R') goto yy479;- if (yych == 'r') goto yy479;- goto yy358;-yy449:- yych = *++p;- if (yych <= 'I') {- if (yych == 'G') goto yy468;- if (yych <= 'H') goto yy358;- goto yy480;- } else {- if (yych <= 'g') {- if (yych <= 'f') goto yy358;- goto yy468;- } else {- if (yych == 'i') goto yy480;- goto yy358;- }- }-yy450:- yych = *++p;- if (yych == 'A') goto yy440;- if (yych == 'a') goto yy440;- goto yy358;-yy451:- yych = *++p;- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy481;- goto yy358;- } else {- if (yych <= ' ') goto yy481;- if (yych == '>') goto yy481;- goto yy358;- }-yy452:- yych = *++p;- if (yych == 'I') goto yy483;- if (yych == 'i') goto yy483;- goto yy358;-yy453:- yych = *++p;- if (yych == 'R') goto yy484;- if (yych == 'r') goto yy484;- goto yy358;-yy454:- yych = *++p;- if (yych == 'L') goto yy412;- if (yych == 'l') goto yy412;- goto yy358;-yy455:- yych = *++p;- if (yych == 'M') goto yy485;- if (yych == 'm') goto yy485;- goto yy358;-yy456:- yych = *++p;- if (yych == 'L') goto yy463;- if (yych == 'l') goto yy463;- goto yy358;-yy457:- yych = *++p;- if (yych == 'O') goto yy486;- if (yych == 'o') goto yy486;- goto yy358;-yy458:- yych = *++p;- if (yych == 'A') goto yy487;- if (yych == 'a') goto yy487;- goto yy358;-yy459:- yych = *++p;- if (yych == 'C') goto yy445;- if (yych == 'c') goto yy445;- goto yy358;-yy460:- yych = *++p;- if (yych == 'A') goto yy488;- if (yych == 'a') goto yy488;- goto yy358;-yy461:- yych = *++p;- if (yych == 'E') goto yy489;- if (yych == 'e') goto yy489;- goto yy358;-yy462:- yych = *++p;- if (yych == 'C') goto yy456;- if (yych == 'c') goto yy456;- goto yy358;-yy463:- yych = *++p;- if (yych == 'E') goto yy392;- if (yych == 'e') goto yy392;- goto yy358;-yy464:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- goto yy358;- } else {- if (yych <= ' ') goto yy408;- if (yych <= '.') goto yy358;- goto yy410;- }- } else {- if (yych <= 'E') {- if (yych == '>') goto yy408;- goto yy358;- } else {- if (yych <= 'F') goto yy490;- if (yych == 'f') goto yy490;- goto yy358;- }- }-yy465:- yych = *++p;- if (yych == 'K') goto yy491;- if (yych == 'k') goto yy491;- goto yy358;-yy466:- yych = *++p;- if (yych == 'I') goto yy480;- if (yych == 'i') goto yy480;- goto yy358;-yy467:- yych = *++p;- if (yych == 'E') goto yy492;- if (yych == 'e') goto yy492;- goto yy358;-yy468:- yych = *++p;- if (yych == 'R') goto yy493;- if (yych == 'r') goto yy493;- goto yy358;-yy469:- yych = *++p;- if (yych == 'I') goto yy494;- if (yych == 'i') goto yy494;- goto yy358;-yy470:- yych = *++p;- if (yych == 'O') goto yy495;- if (yych == 'o') goto yy495;- goto yy358;-yy471:- yych = *++p;- if (yych == 'D') goto yy496;- if (yych == 'd') goto yy496;- goto yy358;-yy472:- yych = *++p;- if (yych == 'A') goto yy389;- if (yych == 'a') goto yy389;- goto yy358;-yy473:- yych = *++p;- if (yych == 'R') goto yy463;- if (yych == 'r') goto yy463;- goto yy358;-yy474:- yych = *++p;- if (yych == 'E') goto yy497;- if (yych == 'e') goto yy497;- goto yy358;-yy475:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- goto yy358;- } else {- if (yych <= ' ') goto yy408;- if (yych <= '.') goto yy358;- goto yy410;- }- } else {- if (yych <= 'D') {- if (yych == '>') goto yy408;- goto yy358;- } else {- if (yych <= 'E') goto yy492;- if (yych == 'e') goto yy492;- goto yy358;- }- }-yy476:- yych = *++p;- if (yych == 'M') goto yy463;- if (yych == 'm') goto yy463;- goto yy358;-yy477:- yych = *++p;- if (yych == 'N') goto yy487;- if (yych == 'n') goto yy487;- goto yy358;-yy478:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- goto yy358;- } else {- if (yych <= ' ') goto yy408;- if (yych <= '.') goto yy358;- goto yy410;- }- } else {- if (yych <= 'H') {- if (yych == '>') goto yy408;- goto yy358;- } else {- if (yych <= 'I') goto yy498;- if (yych == 'i') goto yy498;- goto yy358;- }- }-yy479:- yych = *++p;- if (yych == 'A') goto yy499;- if (yych == 'a') goto yy499;- goto yy358;-yy480:- yych = *++p;- if (yych == 'O') goto yy446;- if (yych == 'o') goto yy446;- goto yy358;-yy481:- ++p;- { return 1; }-yy483:- yych = *++p;- if (yych == 'P') goto yy500;- if (yych == 'p') goto yy500;- goto yy358;-yy484:- yych = *++p;- if (yych == 'C') goto yy463;- if (yych == 'c') goto yy463;- goto yy358;-yy485:- yych = *++p;- if (yych == 'A') goto yy501;- if (yych == 'a') goto yy501;- goto yy358;-yy486:- yych = *++p;- if (yych == 'T') goto yy392;- if (yych == 't') goto yy392;- goto yy358;-yy487:- yych = *++p;- if (yych == 'D') goto yy392;- if (yych == 'd') goto yy392;- goto yy358;-yy488:- yych = *++p;- if (yych == 'T') goto yy502;- if (yych == 't') goto yy502;- goto yy358;-yy489:- yych = *++p;- if (yych == 'S') goto yy503;- if (yych == 's') goto yy503;- goto yy358;-yy490:- yych = *++p;- if (yych == 'O') goto yy504;- if (yych == 'o') goto yy504;- goto yy358;-yy491:- yych = *++p;- if (yych == 'Q') goto yy505;- if (yych == 'q') goto yy505;- goto yy358;-yy492:- yych = *++p;- if (yych == 'R') goto yy392;- if (yych == 'r') goto yy392;- goto yy358;-yy493:- yych = *++p;- if (yych == 'O') goto yy506;- if (yych == 'o') goto yy506;- goto yy358;-yy494:- yych = *++p;- if (yych == 'L') goto yy503;- if (yych == 'l') goto yy503;- goto yy358;-yy495:- yych = *++p;- if (yych == 'G') goto yy392;- if (yych == 'g') goto yy392;- goto yy358;-yy496:- yych = *++p;- if (yych == 'S') goto yy507;- if (yych == 's') goto yy507;- goto yy358;-yy497:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy358;- if (yych <= '\r') goto yy408;- goto yy358;- } else {- if (yych <= ' ') goto yy408;- if (yych <= '.') goto yy358;- goto yy410;- }- } else {- if (yych <= 'R') {- if (yych == '>') goto yy408;- goto yy358;- } else {- if (yych <= 'S') goto yy507;- if (yych == 's') goto yy507;- goto yy358;- }- }-yy498:- yych = *++p;- if (yych == 'T') goto yy508;- if (yych == 't') goto yy508;- goto yy358;-yy499:- yych = *++p;- if (yych == 'M') goto yy509;- if (yych == 'm') goto yy509;- goto yy358;-yy500:- yych = *++p;- if (yych == 'T') goto yy451;- if (yych == 't') goto yy451;- goto yy358;-yy501:- yych = *++p;- if (yych == 'R') goto yy432;- if (yych == 'r') goto yy432;- goto yy358;-yy502:- yych = *++p;- if (yych == 'A') goto yy510;- if (yych == 'a') goto yy510;- goto yy358;-yy503:- yych = *++p;- if (yych == 'S') goto yy392;- if (yych == 's') goto yy392;- goto yy358;-yy504:- yych = *++p;- if (yych == 'N') goto yy486;- if (yych == 'n') goto yy486;- goto yy358;-yy505:- yych = *++p;- if (yych == 'U') goto yy511;- if (yych == 'u') goto yy511;- goto yy358;-yy506:- yych = *++p;- if (yych == 'U') goto yy512;- if (yych == 'u') goto yy512;- goto yy358;-yy507:- yych = *++p;- if (yych == 'E') goto yy486;- if (yych == 'e') goto yy486;- goto yy358;-yy508:- yych = *++p;- if (yych == 'E') goto yy440;- if (yych == 'e') goto yy440;- goto yy358;-yy509:- yych = *++p;- if (yych == 'E') goto yy503;- if (yych == 'e') goto yy503;- goto yy358;-yy510:- yych = *++p;- if (yych == '[') goto yy513;- goto yy358;-yy511:- yych = *++p;- if (yych == 'O') goto yy515;- if (yych == 'o') goto yy515;- goto yy358;-yy512:- yych = *++p;- if (yych == 'P') goto yy392;- if (yych == 'p') goto yy392;- goto yy358;-yy513:- ++p;- { return 5; }-yy515:- yych = *++p;- if (yych == 'T') goto yy463;- if (yych == 't') goto yy463;- goto yy358;-}--}--// 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 yy520;- ++p;-yy519:- { return 0; }-yy520:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= '@') {- if (yych != '/') goto yy519;- } else {- if (yych <= 'Z') goto yy523;- if (yych <= '`') goto yy519;- if (yych <= 'z') goto yy523;- goto yy519;- }- yych = *++p;- if (yych <= '@') goto yy522;- if (yych <= 'Z') goto yy525;- if (yych <= '`') goto yy522;- if (yych <= 'z') goto yy525;-yy522:- p = marker;- if (yyaccept == 0) {- goto yy519;- } else {- goto yy538;- }-yy523:- yych = *++p;- if (yybm[0+yych] & 2) {- goto yy527;- }- if (yych <= '=') {- if (yych <= '.') {- if (yych == '-') goto yy523;- goto yy522;- } else {- if (yych <= '/') goto yy529;- if (yych <= '9') goto yy523;- goto yy522;- }- } else {- if (yych <= 'Z') {- if (yych <= '>') goto yy530;- if (yych <= '@') goto yy522;- goto yy523;- } else {- if (yych <= '`') goto yy522;- if (yych <= 'z') goto yy523;- goto yy522;- }- }-yy525:- yych = *++p;- if (yych <= '/') {- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy522;- if (yych <= '\r') goto yy532;- goto yy522;- } else {- if (yych <= ' ') goto yy532;- if (yych == '-') goto yy525;- goto yy522;- }- } else {- if (yych <= '@') {- if (yych <= '9') goto yy525;- if (yych == '>') goto yy530;- goto yy522;- } else {- if (yych <= 'Z') goto yy525;- if (yych <= '`') goto yy522;- if (yych <= 'z') goto yy525;- goto yy522;- }- }-yy527:- yych = *++p;- if (yybm[0+yych] & 2) {- goto yy527;- }- if (yych <= '>') {- if (yych <= '9') {- if (yych != '/') goto yy522;- } else {- if (yych <= ':') goto yy534;- if (yych <= '=') goto yy522;- goto yy530;- }- } else {- if (yych <= '^') {- if (yych <= '@') goto yy522;- if (yych <= 'Z') goto yy534;- goto yy522;- } else {- if (yych == '`') goto yy522;- if (yych <= 'z') goto yy534;- goto yy522;- }- }-yy529:- yych = *++p;- if (yych != '>') goto yy522;-yy530:- yych = *++p;- if (yybm[0+yych] & 4) {- goto yy530;- }- if (yych <= 0x08) goto yy522;- if (yych <= '\n') goto yy536;- if (yych <= '\v') goto yy522;- if (yych <= '\r') goto yy539;- goto yy522;-yy532:- yych = *++p;- if (yych <= 0x1F) {- if (yych <= 0x08) goto yy522;- if (yych <= '\r') goto yy532;- goto yy522;- } else {- if (yych <= ' ') goto yy532;- if (yych == '>') goto yy530;- goto yy522;- }-yy534:- yych = *++p;- if (yybm[0+yych] & 8) {- goto yy534;- }- if (yych <= ',') {- if (yych <= '\r') {- if (yych <= 0x08) goto yy522;- goto yy540;- } else {- if (yych == ' ') goto yy540;- goto yy522;- }- } else {- if (yych <= '<') {- if (yych <= '/') goto yy529;- goto yy522;- } else {- if (yych <= '=') goto yy542;- if (yych <= '>') goto yy530;- goto yy522;- }- }-yy536:- yyaccept = 1;- yych = *(marker = ++p);- if (yybm[0+yych] & 4) {- goto yy530;- }- if (yych <= 0x08) goto yy538;- if (yych <= '\n') goto yy536;- if (yych <= '\v') goto yy538;- if (yych <= '\r') goto yy539;-yy538:- { return 7; }-yy539:- ++p;- goto yy538;-yy540:- yych = *++p;- if (yych <= '<') {- if (yych <= ' ') {- if (yych <= 0x08) goto yy522;- if (yych <= '\r') goto yy540;- if (yych <= 0x1F) goto yy522;- goto yy540;- } else {- if (yych <= '/') {- if (yych <= '.') goto yy522;- goto yy529;- } else {- if (yych == ':') goto yy534;- goto yy522;- }- }- } else {- if (yych <= 'Z') {- if (yych <= '=') goto yy542;- if (yych <= '>') goto yy530;- if (yych <= '@') goto yy522;- goto yy534;- } else {- if (yych <= '_') {- if (yych <= '^') goto yy522;- goto yy534;- } else {- if (yych <= '`') goto yy522;- if (yych <= 'z') goto yy534;- goto yy522;- }- }- }-yy542:- yych = *++p;- if (yybm[0+yych] & 32) {- goto yy544;- }- if (yych <= 0xE0) {- if (yych <= '"') {- if (yych <= 0x00) goto yy522;- if (yych <= ' ') goto yy542;- goto yy546;- } else {- if (yych <= '\'') goto yy548;- if (yych <= 0xC1) goto yy522;- if (yych <= 0xDF) goto yy550;- goto yy551;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy553;- goto yy552;- } else {- if (yych <= 0xF0) goto yy554;- if (yych <= 0xF3) goto yy555;- if (yych <= 0xF4) goto yy556;- goto yy522;- }- }-yy544:- yych = *++p;- if (yybm[0+yych] & 32) {- goto yy544;- }- if (yych <= 0xE0) {- if (yych <= '=') {- if (yych <= 0x00) goto yy522;- if (yych <= ' ') goto yy527;- goto yy522;- } else {- if (yych <= '>') goto yy530;- if (yych <= 0xC1) goto yy522;- if (yych <= 0xDF) goto yy550;- goto yy551;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy553;- goto yy552;- } else {- if (yych <= 0xF0) goto yy554;- if (yych <= 0xF3) goto yy555;- if (yych <= 0xF4) goto yy556;- goto yy522;- }- }-yy546:- yych = *++p;- if (yybm[0+yych] & 64) {- goto yy546;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= 0x00) goto yy522;- if (yych <= '"') goto yy557;- goto yy522;- } else {- if (yych <= 0xDF) goto yy558;- if (yych <= 0xE0) goto yy559;- goto yy560;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy561;- if (yych <= 0xEF) goto yy560;- goto yy562;- } else {- if (yych <= 0xF3) goto yy563;- if (yych <= 0xF4) goto yy564;- goto yy522;- }- }-yy548:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy548;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= 0x00) goto yy522;- if (yych <= '\'') goto yy557;- goto yy522;- } 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 yy522;- }- }-yy550:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0xBF) goto yy544;- goto yy522;-yy551:- yych = *++p;- if (yych <= 0x9F) goto yy522;- if (yych <= 0xBF) goto yy550;- goto yy522;-yy552:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0xBF) goto yy550;- goto yy522;-yy553:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0x9F) goto yy550;- goto yy522;-yy554:- yych = *++p;- if (yych <= 0x8F) goto yy522;- if (yych <= 0xBF) goto yy552;- goto yy522;-yy555:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0xBF) goto yy552;- goto yy522;-yy556:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0x8F) goto yy552;- goto yy522;-yy557:- yych = *++p;- if (yybm[0+yych] & 2) {- goto yy527;- }- if (yych == '/') goto yy529;- if (yych == '>') goto yy530;- goto yy522;-yy558:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0xBF) goto yy546;- goto yy522;-yy559:- yych = *++p;- if (yych <= 0x9F) goto yy522;- if (yych <= 0xBF) goto yy558;- goto yy522;-yy560:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0xBF) goto yy558;- goto yy522;-yy561:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0x9F) goto yy558;- goto yy522;-yy562:- yych = *++p;- if (yych <= 0x8F) goto yy522;- if (yych <= 0xBF) goto yy560;- goto yy522;-yy563:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0xBF) goto yy560;- goto yy522;-yy564:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0x8F) goto yy560;- goto yy522;-yy565:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0xBF) goto yy548;- goto yy522;-yy566:- yych = *++p;- if (yych <= 0x9F) goto yy522;- if (yych <= 0xBF) goto yy565;- goto yy522;-yy567:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0xBF) goto yy565;- goto yy522;-yy568:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0x9F) goto yy565;- goto yy522;-yy569:- yych = *++p;- if (yych <= 0x8F) goto yy522;- if (yych <= 0xBF) goto yy567;- goto yy522;-yy570:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0xBF) goto yy567;- goto yy522;-yy571:- yych = *++p;- if (yych <= 0x7F) goto yy522;- if (yych <= 0x8F) goto yy567;- goto yy522;-}--}--// 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 yy574;- if (yych != '\n') goto yy576;- } else {- if (yych <= '<') goto yy577;- if (yych <= 0x7F) goto yy576;- if (yych >= 0xC2) goto yy578;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) goto yy579;- if (yych == 0xED) goto yy581;- goto yy580;- } else {- if (yych <= 0xF0) goto yy582;- if (yych <= 0xF3) goto yy583;- if (yych <= 0xF4) goto yy584;- }- }-yy574:- ++p;-yy575:- { return 0; }-yy576:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= '\n') {- if (yych <= 0x00) goto yy575;- if (yych <= '\t') goto yy586;- goto yy575;- } else {- if (yych <= 0x7F) goto yy586;- if (yych <= 0xC1) goto yy575;- if (yych <= 0xF4) goto yy586;- goto yy575;- }-yy577:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= '.') {- if (yych <= 0x00) goto yy575;- if (yych == '\n') goto yy575;- goto yy586;- } else {- if (yych <= 0x7F) {- if (yych <= '/') goto yy597;- goto yy586;- } else {- if (yych <= 0xC1) goto yy575;- if (yych <= 0xF4) goto yy586;- goto yy575;- }- }-yy578:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy575;- if (yych <= 0xBF) goto yy585;- goto yy575;-yy579:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x9F) goto yy575;- if (yych <= 0xBF) goto yy590;- goto yy575;-yy580:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy575;- if (yych <= 0xBF) goto yy590;- goto yy575;-yy581:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy575;- if (yych <= 0x9F) goto yy590;- goto yy575;-yy582:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x8F) goto yy575;- if (yych <= 0xBF) goto yy592;- goto yy575;-yy583:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy575;- if (yych <= 0xBF) goto yy592;- goto yy575;-yy584:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy575;- if (yych <= 0x8F) goto yy592;- goto yy575;-yy585:- yych = *++p;-yy586:- if (yybm[0+yych] & 64) {- goto yy585;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy587;- if (yych <= '<') goto yy588;- } else {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- goto yy592;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy593;- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- }- }-yy587:- p = marker;- if (yyaccept == 0) {- goto yy575;- } else {- goto yy607;- }-yy588:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xDF) {- if (yych <= '.') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= '/') goto yy597;- if (yych <= 0x7F) goto yy585;- if (yych <= 0xC1) goto yy587;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) goto yy591;- if (yych == 0xED) goto yy593;- goto yy592;- } else {- if (yych <= 0xF0) goto yy594;- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }-yy590:- yych = *++p;- if (yych <= 0x7F) goto yy587;- if (yych <= 0xBF) goto yy585;- goto yy587;-yy591:- yych = *++p;- if (yych <= 0x9F) goto yy587;- if (yych <= 0xBF) goto yy590;- goto yy587;-yy592:- yych = *++p;- if (yych <= 0x7F) goto yy587;- if (yych <= 0xBF) goto yy590;- goto yy587;-yy593:- yych = *++p;- if (yych <= 0x7F) goto yy587;- if (yych <= 0x9F) goto yy590;- goto yy587;-yy594:- yych = *++p;- if (yych <= 0x8F) goto yy587;- if (yych <= 0xBF) goto yy592;- goto yy587;-yy595:- yych = *++p;- if (yych <= 0x7F) goto yy587;- if (yych <= 0xBF) goto yy592;- goto yy587;-yy596:- yych = *++p;- if (yych <= 0x7F) goto yy587;- if (yych <= 0x8F) goto yy592;- goto yy587;-yy597:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 's') {- if (yych <= 'P') {- if (yych <= '\t') {- if (yych <= 0x00) goto yy587;- goto yy585;- } else {- if (yych <= '\n') goto yy587;- if (yych <= 'O') goto yy585;- }- } else {- if (yych <= 'o') {- if (yych == 'S') goto yy599;- goto yy585;- } else {- if (yych <= 'p') goto yy598;- if (yych <= 'r') goto yy585;- goto yy599;- }- }- } else {- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= 0x7F) goto yy585;- goto yy587;- } else {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- goto yy592;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy593;- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-yy598:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xC1) {- if (yych <= 'Q') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= 'q') {- if (yych <= 'R') goto yy600;- goto yy585;- } else {- if (yych <= 'r') goto yy600;- if (yych <= 0x7F) goto yy585;- goto yy587;- }- }- } else {- if (yych <= 0xED) {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- if (yych <= 0xEC) goto yy592;- goto yy593;- } else {- if (yych <= 0xF0) {- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-yy599:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 't') {- if (yych <= 'C') {- if (yych <= '\t') {- if (yych <= 0x00) goto yy587;- goto yy585;- } else {- if (yych <= '\n') goto yy587;- if (yych <= 'B') goto yy585;- goto yy601;- }- } else {- if (yych <= 'b') {- if (yych == 'T') goto yy602;- goto yy585;- } else {- if (yych <= 'c') goto yy601;- if (yych <= 's') goto yy585;- goto yy602;- }- }- } else {- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= 0x7F) goto yy585;- goto yy587;- } else {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- goto yy592;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy593;- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-yy600:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xC1) {- if (yych <= 'D') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= 'd') {- if (yych <= 'E') goto yy603;- goto yy585;- } else {- if (yych <= 'e') goto yy603;- if (yych <= 0x7F) goto yy585;- goto yy587;- }- }- } else {- if (yych <= 0xED) {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- if (yych <= 0xEC) goto yy592;- goto yy593;- } else {- if (yych <= 0xF0) {- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-yy601:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xC1) {- if (yych <= 'Q') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= 'q') {- if (yych <= 'R') goto yy604;- goto yy585;- } else {- if (yych <= 'r') goto yy604;- if (yych <= 0x7F) goto yy585;- goto yy587;- }- }- } else {- if (yych <= 0xED) {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- if (yych <= 0xEC) goto yy592;- goto yy593;- } else {- if (yych <= 0xF0) {- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-yy602:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xC1) {- if (yych <= 'X') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= 'x') {- if (yych <= 'Y') goto yy605;- goto yy585;- } else {- if (yych <= 'y') goto yy605;- if (yych <= 0x7F) goto yy585;- goto yy587;- }- }- } else {- if (yych <= 0xED) {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- if (yych <= 0xEC) goto yy592;- goto yy593;- } else {- if (yych <= 0xF0) {- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-yy603:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xDF) {- if (yych <= '=') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= '>') goto yy606;- if (yych <= 0x7F) goto yy585;- if (yych <= 0xC1) goto yy587;- goto yy590;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) goto yy591;- if (yych == 0xED) goto yy593;- goto yy592;- } else {- if (yych <= 0xF0) goto yy594;- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }-yy604:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xC1) {- if (yych <= 'H') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= 'h') {- if (yych <= 'I') goto yy608;- goto yy585;- } else {- if (yych <= 'i') goto yy608;- if (yych <= 0x7F) goto yy585;- goto yy587;- }- }- } else {- if (yych <= 0xED) {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- if (yych <= 0xEC) goto yy592;- goto yy593;- } else {- if (yych <= 0xF0) {- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-yy605:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xC1) {- if (yych <= 'K') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= 'k') {- if (yych <= 'L') goto yy600;- goto yy585;- } else {- if (yych <= 'l') goto yy600;- if (yych <= 0x7F) goto yy585;- goto yy587;- }- }- } else {- if (yych <= 0xED) {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- if (yych <= 0xEC) goto yy592;- goto yy593;- } else {- if (yych <= 0xF0) {- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-yy606:- yyaccept = 1;- yych = *(marker = ++p);- if (yybm[0+yych] & 64) {- goto yy585;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy607;- if (yych <= '<') goto yy588;- } else {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- goto yy592;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy593;- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- }- }-yy607:- { return (bufsize_t)(p - start); }-yy608:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xC1) {- if (yych <= 'O') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= 'o') {- if (yych >= 'Q') goto yy585;- } else {- if (yych <= 'p') goto yy609;- if (yych <= 0x7F) goto yy585;- goto yy587;- }- }- } else {- if (yych <= 0xED) {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- if (yych <= 0xEC) goto yy592;- goto yy593;- } else {- if (yych <= 0xF0) {- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-yy609:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy588;- }- if (yych <= 0xC1) {- if (yych <= 'S') {- if (yych <= 0x00) goto yy587;- if (yych == '\n') goto yy587;- goto yy585;- } else {- if (yych <= 's') {- if (yych <= 'T') goto yy603;- goto yy585;- } else {- if (yych <= 't') goto yy603;- if (yych <= 0x7F) goto yy585;- goto yy587;- }- }- } else {- if (yych <= 0xED) {- if (yych <= 0xDF) goto yy590;- if (yych <= 0xE0) goto yy591;- if (yych <= 0xEC) goto yy592;- goto yy593;- } else {- if (yych <= 0xF0) {- if (yych <= 0xEF) goto yy592;- goto yy594;- } else {- if (yych <= 0xF3) goto yy595;- if (yych <= 0xF4) goto yy596;- goto yy587;- }- }- }-}--}--// 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 yy612;- if (yych != '\n') goto yy614;- } else {- if (yych <= '-') goto yy615;- if (yych <= 0x7F) goto yy614;- if (yych >= 0xC2) goto yy616;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) goto yy617;- if (yych == 0xED) goto yy619;- goto yy618;- } else {- if (yych <= 0xF0) goto yy620;- if (yych <= 0xF3) goto yy621;- if (yych <= 0xF4) goto yy622;- }- }-yy612:- ++p;-yy613:- { return 0; }-yy614:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= '\n') {- if (yych <= 0x00) goto yy613;- if (yych <= '\t') goto yy624;- goto yy613;- } else {- if (yych <= 0x7F) goto yy624;- if (yych <= 0xC1) goto yy613;- if (yych <= 0xF4) goto yy624;- goto yy613;- }-yy615:- yyaccept = 0;- yych = *(marker = ++p);- if (yybm[0+yych] & 128) {- goto yy634;- }- if (yych <= '\n') {- if (yych <= 0x00) goto yy613;- if (yych <= '\t') goto yy624;- goto yy613;- } else {- if (yych <= 0x7F) goto yy624;- if (yych <= 0xC1) goto yy613;- if (yych <= 0xF4) goto yy624;- goto yy613;- }-yy616:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy613;- if (yych <= 0xBF) goto yy623;- goto yy613;-yy617:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x9F) goto yy613;- if (yych <= 0xBF) goto yy627;- goto yy613;-yy618:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy613;- if (yych <= 0xBF) goto yy627;- goto yy613;-yy619:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy613;- if (yych <= 0x9F) goto yy627;- goto yy613;-yy620:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x8F) goto yy613;- if (yych <= 0xBF) goto yy629;- goto yy613;-yy621:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy613;- if (yych <= 0xBF) goto yy629;- goto yy613;-yy622:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy613;- if (yych <= 0x8F) goto yy629;- goto yy613;-yy623:- yych = *++p;-yy624:- if (yybm[0+yych] & 64) {- goto yy623;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy625;- if (yych <= '-') goto yy626;- } else {- if (yych <= 0xDF) goto yy627;- if (yych <= 0xE0) goto yy628;- goto yy629;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy630;- if (yych <= 0xEF) goto yy629;- goto yy631;- } else {- if (yych <= 0xF3) goto yy632;- if (yych <= 0xF4) goto yy633;- }- }-yy625:- p = marker;- if (yyaccept == 0) {- goto yy613;- } else {- goto yy637;- }-yy626:- yych = *++p;- if (yybm[0+yych] & 64) {- goto yy623;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy625;- if (yych <= '-') goto yy634;- goto yy625;- } else {- if (yych <= 0xDF) goto yy627;- if (yych <= 0xE0) goto yy628;- goto yy629;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy630;- if (yych <= 0xEF) goto yy629;- goto yy631;- } else {- if (yych <= 0xF3) goto yy632;- if (yych <= 0xF4) goto yy633;- goto yy625;- }- }-yy627:- yych = *++p;- if (yych <= 0x7F) goto yy625;- if (yych <= 0xBF) goto yy623;- goto yy625;-yy628:- yych = *++p;- if (yych <= 0x9F) goto yy625;- if (yych <= 0xBF) goto yy627;- goto yy625;-yy629:- yych = *++p;- if (yych <= 0x7F) goto yy625;- if (yych <= 0xBF) goto yy627;- goto yy625;-yy630:- yych = *++p;- if (yych <= 0x7F) goto yy625;- if (yych <= 0x9F) goto yy627;- goto yy625;-yy631:- yych = *++p;- if (yych <= 0x8F) goto yy625;- if (yych <= 0xBF) goto yy629;- goto yy625;-yy632:- yych = *++p;- if (yych <= 0x7F) goto yy625;- if (yych <= 0xBF) goto yy629;- goto yy625;-yy633:- yych = *++p;- if (yych <= 0x7F) goto yy625;- if (yych <= 0x8F) goto yy629;- goto yy625;-yy634:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy634;- }- if (yych <= 0xDF) {- if (yych <= '=') {- if (yych <= 0x00) goto yy625;- if (yych == '\n') goto yy625;- goto yy623;- } else {- if (yych <= '>') goto yy636;- if (yych <= 0x7F) goto yy623;- if (yych <= 0xC1) goto yy625;- goto yy627;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) goto yy628;- if (yych == 0xED) goto yy630;- goto yy629;- } else {- if (yych <= 0xF0) goto yy631;- if (yych <= 0xF3) goto yy632;- if (yych <= 0xF4) goto yy633;- goto yy625;- }- }-yy636:- yyaccept = 1;- yych = *(marker = ++p);- if (yybm[0+yych] & 64) {- goto yy623;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy637;- if (yych <= '-') goto yy626;- } else {- if (yych <= 0xDF) goto yy627;- if (yych <= 0xE0) goto yy628;- goto yy629;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy630;- if (yych <= 0xEF) goto yy629;- goto yy631;- } else {- if (yych <= 0xF3) goto yy632;- if (yych <= 0xF4) goto yy633;- }- }-yy637:- { 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 yy640;- if (yych != '\n') goto yy642;- } else {- if (yych <= '?') goto yy643;- if (yych <= 0x7F) goto yy642;- if (yych >= 0xC2) goto yy644;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) goto yy645;- if (yych == 0xED) goto yy647;- goto yy646;- } else {- if (yych <= 0xF0) goto yy648;- if (yych <= 0xF3) goto yy649;- if (yych <= 0xF4) goto yy650;- }- }-yy640:- ++p;-yy641:- { return 0; }-yy642:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= '\n') {- if (yych <= 0x00) goto yy641;- if (yych <= '\t') goto yy652;- goto yy641;- } else {- if (yych <= 0x7F) goto yy652;- if (yych <= 0xC1) goto yy641;- if (yych <= 0xF4) goto yy652;- goto yy641;- }-yy643:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= '=') {- if (yych <= 0x00) goto yy641;- if (yych == '\n') goto yy641;- goto yy652;- } else {- if (yych <= 0x7F) {- if (yych <= '>') goto yy663;- goto yy652;- } else {- if (yych <= 0xC1) goto yy641;- if (yych <= 0xF4) goto yy652;- goto yy641;- }- }-yy644:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy641;- if (yych <= 0xBF) goto yy651;- goto yy641;-yy645:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x9F) goto yy641;- if (yych <= 0xBF) goto yy656;- goto yy641;-yy646:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy641;- if (yych <= 0xBF) goto yy656;- goto yy641;-yy647:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy641;- if (yych <= 0x9F) goto yy656;- goto yy641;-yy648:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x8F) goto yy641;- if (yych <= 0xBF) goto yy658;- goto yy641;-yy649:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy641;- if (yych <= 0xBF) goto yy658;- goto yy641;-yy650:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy641;- if (yych <= 0x8F) goto yy658;- goto yy641;-yy651:- yych = *++p;-yy652:- if (yybm[0+yych] & 64) {- goto yy651;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy653;- if (yych <= '?') goto yy654;- } else {- if (yych <= 0xDF) goto yy656;- if (yych <= 0xE0) goto yy657;- goto yy658;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy659;- if (yych <= 0xEF) goto yy658;- goto yy660;- } else {- if (yych <= 0xF3) goto yy661;- if (yych <= 0xF4) goto yy662;- }- }-yy653:- p = marker;- if (yyaccept == 0) {- goto yy641;- } else {- goto yy664;- }-yy654:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy654;- }- if (yych <= 0xDF) {- if (yych <= '=') {- if (yych <= 0x00) goto yy653;- if (yych == '\n') goto yy653;- goto yy651;- } else {- if (yych <= '>') goto yy663;- if (yych <= 0x7F) goto yy651;- if (yych <= 0xC1) goto yy653;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) goto yy657;- if (yych == 0xED) goto yy659;- goto yy658;- } else {- if (yych <= 0xF0) goto yy660;- if (yych <= 0xF3) goto yy661;- if (yych <= 0xF4) goto yy662;- goto yy653;- }- }-yy656:- yych = *++p;- if (yych <= 0x7F) goto yy653;- if (yych <= 0xBF) goto yy651;- goto yy653;-yy657:- yych = *++p;- if (yych <= 0x9F) goto yy653;- if (yych <= 0xBF) goto yy656;- goto yy653;-yy658:- yych = *++p;- if (yych <= 0x7F) goto yy653;- if (yych <= 0xBF) goto yy656;- goto yy653;-yy659:- yych = *++p;- if (yych <= 0x7F) goto yy653;- if (yych <= 0x9F) goto yy656;- goto yy653;-yy660:- yych = *++p;- if (yych <= 0x8F) goto yy653;- if (yych <= 0xBF) goto yy658;- goto yy653;-yy661:- yych = *++p;- if (yych <= 0x7F) goto yy653;- if (yych <= 0xBF) goto yy658;- goto yy653;-yy662:- yych = *++p;- if (yych <= 0x7F) goto yy653;- if (yych <= 0x8F) goto yy658;- goto yy653;-yy663:- yyaccept = 1;- yych = *(marker = ++p);- if (yybm[0+yych] & 64) {- goto yy651;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy664;- if (yych <= '?') goto yy654;- } else {- if (yych <= 0xDF) goto yy656;- if (yych <= 0xE0) goto yy657;- goto yy658;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy659;- if (yych <= 0xEF) goto yy658;- goto yy660;- } else {- if (yych <= 0xF3) goto yy661;- if (yych <= 0xF4) goto yy662;- }- }-yy664:- { 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 yy670;- }- if (yych <= 0xE0) {- if (yych <= '\n') {- if (yych <= 0x00) goto yy667;- if (yych <= '\t') goto yy669;- } else {- if (yych <= 0x7F) goto yy669;- if (yych <= 0xC1) goto yy667;- if (yych <= 0xDF) goto yy673;- goto yy674;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy676;- goto yy675;- } else {- if (yych <= 0xF0) goto yy677;- if (yych <= 0xF3) goto yy678;- if (yych <= 0xF4) goto yy679;- }- }-yy667:- ++p;-yy668:- { return 0; }-yy669:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= '\n') {- if (yych <= 0x00) goto yy668;- if (yych <= '\t') goto yy681;- goto yy668;- } else {- if (yych <= 0x7F) goto yy681;- if (yych <= 0xC1) goto yy668;- if (yych <= 0xF4) goto yy681;- goto yy668;- }-yy670:- yyaccept = 1;- yych = *(marker = ++p);- if (yybm[0+yych] & 128) {- goto yy680;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy672;- if (yych <= '>') goto yy670;- } else {- if (yych <= 0xDF) goto yy683;- if (yych <= 0xE0) goto yy684;- goto yy685;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy686;- if (yych <= 0xEF) goto yy685;- goto yy687;- } else {- if (yych <= 0xF3) goto yy688;- if (yych <= 0xF4) goto yy689;- }- }-yy672:- { return (bufsize_t)(p - start); }-yy673:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy668;- if (yych <= 0xBF) goto yy680;- goto yy668;-yy674:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x9F) goto yy668;- if (yych <= 0xBF) goto yy683;- goto yy668;-yy675:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy668;- if (yych <= 0xBF) goto yy683;- goto yy668;-yy676:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy668;- if (yych <= 0x9F) goto yy683;- goto yy668;-yy677:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x8F) goto yy668;- if (yych <= 0xBF) goto yy685;- goto yy668;-yy678:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy668;- if (yych <= 0xBF) goto yy685;- goto yy668;-yy679:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy668;- if (yych <= 0x8F) goto yy685;- goto yy668;-yy680:- yych = *++p;-yy681:- if (yybm[0+yych] & 128) {- goto yy680;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy682;- if (yych <= '>') goto yy670;- } else {- if (yych <= 0xDF) goto yy683;- if (yych <= 0xE0) goto yy684;- goto yy685;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy686;- if (yych <= 0xEF) goto yy685;- goto yy687;- } else {- if (yych <= 0xF3) goto yy688;- if (yych <= 0xF4) goto yy689;- }- }-yy682:- p = marker;- if (yyaccept == 0) {- goto yy668;- } else {- goto yy672;- }-yy683:- yych = *++p;- if (yych <= 0x7F) goto yy682;- if (yych <= 0xBF) goto yy680;- goto yy682;-yy684:- yych = *++p;- if (yych <= 0x9F) goto yy682;- if (yych <= 0xBF) goto yy683;- goto yy682;-yy685:- yych = *++p;- if (yych <= 0x7F) goto yy682;- if (yych <= 0xBF) goto yy683;- goto yy682;-yy686:- yych = *++p;- if (yych <= 0x7F) goto yy682;- if (yych <= 0x9F) goto yy683;- goto yy682;-yy687:- yych = *++p;- if (yych <= 0x8F) goto yy682;- if (yych <= 0xBF) goto yy685;- goto yy682;-yy688:- yych = *++p;- if (yych <= 0x7F) goto yy682;- if (yych <= 0xBF) goto yy685;- goto yy682;-yy689:- yych = *++p;- if (yych <= 0x7F) goto yy682;- if (yych <= 0x8F) goto yy685;- goto yy682;-}--}--// 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 yy692;- if (yych != '\n') goto yy694;- } else {- if (yych <= ']') goto yy695;- if (yych <= 0x7F) goto yy694;- if (yych >= 0xC2) goto yy696;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) goto yy697;- if (yych == 0xED) goto yy699;- goto yy698;- } else {- if (yych <= 0xF0) goto yy700;- if (yych <= 0xF3) goto yy701;- if (yych <= 0xF4) goto yy702;- }- }-yy692:- ++p;-yy693:- { return 0; }-yy694:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= '\n') {- if (yych <= 0x00) goto yy693;- if (yych <= '\t') goto yy704;- goto yy693;- } else {- if (yych <= 0x7F) goto yy704;- if (yych <= 0xC1) goto yy693;- if (yych <= 0xF4) goto yy704;- goto yy693;- }-yy695:- yyaccept = 0;- yych = *(marker = ++p);- if (yybm[0+yych] & 128) {- goto yy714;- }- if (yych <= '\n') {- if (yych <= 0x00) goto yy693;- if (yych <= '\t') goto yy704;- goto yy693;- } else {- if (yych <= 0x7F) goto yy704;- if (yych <= 0xC1) goto yy693;- if (yych <= 0xF4) goto yy704;- goto yy693;- }-yy696:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy693;- if (yych <= 0xBF) goto yy703;- goto yy693;-yy697:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x9F) goto yy693;- if (yych <= 0xBF) goto yy707;- goto yy693;-yy698:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy693;- if (yych <= 0xBF) goto yy707;- goto yy693;-yy699:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy693;- if (yych <= 0x9F) goto yy707;- goto yy693;-yy700:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x8F) goto yy693;- if (yych <= 0xBF) goto yy709;- goto yy693;-yy701:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy693;- if (yych <= 0xBF) goto yy709;- goto yy693;-yy702:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x7F) goto yy693;- if (yych <= 0x8F) goto yy709;- goto yy693;-yy703:- yych = *++p;-yy704:- if (yybm[0+yych] & 64) {- goto yy703;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy705;- if (yych <= ']') goto yy706;- } else {- if (yych <= 0xDF) goto yy707;- if (yych <= 0xE0) goto yy708;- goto yy709;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy710;- if (yych <= 0xEF) goto yy709;- goto yy711;- } else {- if (yych <= 0xF3) goto yy712;- if (yych <= 0xF4) goto yy713;- }- }-yy705:- p = marker;- if (yyaccept == 0) {- goto yy693;- } else {- goto yy717;- }-yy706:- yych = *++p;- if (yybm[0+yych] & 64) {- goto yy703;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy705;- if (yych <= ']') goto yy714;- goto yy705;- } else {- if (yych <= 0xDF) goto yy707;- if (yych <= 0xE0) goto yy708;- goto yy709;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy710;- if (yych <= 0xEF) goto yy709;- goto yy711;- } else {- if (yych <= 0xF3) goto yy712;- if (yych <= 0xF4) goto yy713;- goto yy705;- }- }-yy707:- yych = *++p;- if (yych <= 0x7F) goto yy705;- if (yych <= 0xBF) goto yy703;- goto yy705;-yy708:- yych = *++p;- if (yych <= 0x9F) goto yy705;- if (yych <= 0xBF) goto yy707;- goto yy705;-yy709:- yych = *++p;- if (yych <= 0x7F) goto yy705;- if (yych <= 0xBF) goto yy707;- goto yy705;-yy710:- yych = *++p;- if (yych <= 0x7F) goto yy705;- if (yych <= 0x9F) goto yy707;- goto yy705;-yy711:- yych = *++p;- if (yych <= 0x8F) goto yy705;- if (yych <= 0xBF) goto yy709;- goto yy705;-yy712:- yych = *++p;- if (yych <= 0x7F) goto yy705;- if (yych <= 0xBF) goto yy709;- goto yy705;-yy713:- yych = *++p;- if (yych <= 0x7F) goto yy705;- if (yych <= 0x8F) goto yy709;- goto yy705;-yy714:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy714;- }- if (yych <= 0xDF) {- if (yych <= '=') {- if (yych <= 0x00) goto yy705;- if (yych == '\n') goto yy705;- goto yy703;- } else {- if (yych <= '>') goto yy716;- if (yych <= 0x7F) goto yy703;- if (yych <= 0xC1) goto yy705;- goto yy707;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) goto yy708;- if (yych == 0xED) goto yy710;- goto yy709;- } else {- if (yych <= 0xF0) goto yy711;- if (yych <= 0xF3) goto yy712;- if (yych <= 0xF4) goto yy713;- goto yy705;- }- }-yy716:- yyaccept = 1;- yych = *(marker = ++p);- if (yybm[0+yych] & 64) {- goto yy703;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= '\n') goto yy717;- if (yych <= ']') goto yy706;- } else {- if (yych <= 0xDF) goto yy707;- if (yych <= 0xE0) goto yy708;- goto yy709;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy710;- if (yych <= 0xEF) goto yy709;- goto yy711;- } else {- if (yych <= 0xF3) goto yy712;- if (yych <= 0xF4) goto yy713;- }- }-yy717:- { 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, - 208, 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 yy722;- } else {- if (yych <= '\'') goto yy723;- if (yych <= '(') goto yy724;- }- ++p;-yy721:- { return 0; }-yy722:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x00) goto yy721;- if (yych <= 0x7F) goto yy726;- if (yych <= 0xC1) goto yy721;- if (yych <= 0xF4) goto yy726;- goto yy721;-yy723:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x00) goto yy721;- if (yych <= 0x7F) goto yy740;- if (yych <= 0xC1) goto yy721;- if (yych <= 0xF4) goto yy740;- goto yy721;-yy724:- yyaccept = 0;- yych = *(marker = ++p);- if (yych <= 0x00) goto yy721;- if (yych <= 0x7F) goto yy753;- if (yych <= 0xC1) goto yy721;- if (yych <= 0xF4) goto yy753;- goto yy721;-yy725:- yych = *++p;-yy726:- if (yybm[0+yych] & 16) {- goto yy725;- }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= 0x00) goto yy727;- if (yych <= '"') goto yy728;- goto yy730;- } else {- if (yych <= 0xC1) goto yy727;- if (yych <= 0xDF) goto yy732;- goto yy733;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy735;- goto yy734;- } else {- if (yych <= 0xF0) goto yy736;- if (yych <= 0xF3) goto yy737;- if (yych <= 0xF4) goto yy738;- }- }-yy727:- p = marker;- if (yyaccept <= 1) {- if (yyaccept == 0) {- goto yy721;- } else {- goto yy729;- }- } else {- if (yyaccept == 2) {- goto yy742;- } else {- goto yy755;- }- }-yy728:- ++p;-yy729:- { return (bufsize_t)(p - start); }-yy730:- yych = *++p;- if (yybm[0+yych] & 16) {- goto yy725;- }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= 0x00) goto yy727;- if (yych <= '"') goto yy765;- goto yy730;- } else {- if (yych <= 0xC1) goto yy727;- if (yych >= 0xE0) goto yy733;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy735;- goto yy734;- } else {- if (yych <= 0xF0) goto yy736;- if (yych <= 0xF3) goto yy737;- if (yych <= 0xF4) goto yy738;- goto yy727;- }- }-yy732:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0xBF) goto yy725;- goto yy727;-yy733:- yych = *++p;- if (yych <= 0x9F) goto yy727;- if (yych <= 0xBF) goto yy732;- goto yy727;-yy734:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0xBF) goto yy732;- goto yy727;-yy735:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0x9F) goto yy732;- goto yy727;-yy736:- yych = *++p;- if (yych <= 0x8F) goto yy727;- if (yych <= 0xBF) goto yy734;- goto yy727;-yy737:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0xBF) goto yy734;- goto yy727;-yy738:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0x8F) goto yy734;- goto yy727;-yy739:- yych = *++p;-yy740:- if (yybm[0+yych] & 64) {- goto yy739;- }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= 0x00) goto yy727;- if (yych >= '(') goto yy743;- } else {- if (yych <= 0xC1) goto yy727;- if (yych <= 0xDF) goto yy745;- goto yy746;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy748;- goto yy747;- } else {- if (yych <= 0xF0) goto yy749;- if (yych <= 0xF3) goto yy750;- if (yych <= 0xF4) goto yy751;- goto yy727;- }- }-yy741:- ++p;-yy742:- { return (bufsize_t)(p - start); }-yy743:- yych = *++p;- if (yybm[0+yych] & 64) {- goto yy739;- }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= 0x00) goto yy727;- if (yych <= '\'') goto yy766;- goto yy743;- } else {- if (yych <= 0xC1) goto yy727;- if (yych >= 0xE0) goto yy746;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy748;- goto yy747;- } else {- if (yych <= 0xF0) goto yy749;- if (yych <= 0xF3) goto yy750;- if (yych <= 0xF4) goto yy751;- goto yy727;- }- }-yy745:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0xBF) goto yy739;- goto yy727;-yy746:- yych = *++p;- if (yych <= 0x9F) goto yy727;- if (yych <= 0xBF) goto yy745;- goto yy727;-yy747:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0xBF) goto yy745;- goto yy727;-yy748:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0x9F) goto yy745;- goto yy727;-yy749:- yych = *++p;- if (yych <= 0x8F) goto yy727;- if (yych <= 0xBF) goto yy747;- goto yy727;-yy750:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0xBF) goto yy747;- goto yy727;-yy751:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0x8F) goto yy747;- goto yy727;-yy752:- yych = *++p;-yy753:- if (yybm[0+yych] & 128) {- goto yy752;- }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= 0x00) goto yy727;- if (yych >= '*') goto yy756;- } else {- if (yych <= 0xC1) goto yy727;- if (yych <= 0xDF) goto yy758;- goto yy759;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy761;- goto yy760;- } else {- if (yych <= 0xF0) goto yy762;- if (yych <= 0xF3) goto yy763;- if (yych <= 0xF4) goto yy764;- goto yy727;- }- }-yy754:- ++p;-yy755:- { return (bufsize_t)(p - start); }-yy756:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy752;- }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= 0x00) goto yy727;- if (yych <= ')') goto yy767;- goto yy756;- } else {- if (yych <= 0xC1) goto yy727;- if (yych >= 0xE0) goto yy759;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy761;- goto yy760;- } else {- if (yych <= 0xF0) goto yy762;- if (yych <= 0xF3) goto yy763;- if (yych <= 0xF4) goto yy764;- goto yy727;- }- }-yy758:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0xBF) goto yy752;- goto yy727;-yy759:- yych = *++p;- if (yych <= 0x9F) goto yy727;- if (yych <= 0xBF) goto yy758;- goto yy727;-yy760:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0xBF) goto yy758;- goto yy727;-yy761:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0x9F) goto yy758;- goto yy727;-yy762:- yych = *++p;- if (yych <= 0x8F) goto yy727;- if (yych <= 0xBF) goto yy760;- goto yy727;-yy763:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0xBF) goto yy760;- goto yy727;-yy764:- yych = *++p;- if (yych <= 0x7F) goto yy727;- if (yych <= 0x8F) goto yy760;- goto yy727;-yy765:- yyaccept = 1;- yych = *(marker = ++p);- if (yybm[0+yych] & 16) {- goto yy725;- }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= 0x00) goto yy729;- if (yych <= '"') goto yy728;- goto yy730;- } else {- if (yych <= 0xC1) goto yy729;- if (yych <= 0xDF) goto yy732;- goto yy733;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy735;- goto yy734;- } else {- if (yych <= 0xF0) goto yy736;- if (yych <= 0xF3) goto yy737;- if (yych <= 0xF4) goto yy738;- goto yy729;- }- }-yy766:- yyaccept = 2;- yych = *(marker = ++p);- if (yybm[0+yych] & 64) {- goto yy739;- }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= 0x00) goto yy742;- if (yych <= '\'') goto yy741;- goto yy743;- } else {- if (yych <= 0xC1) goto yy742;- if (yych <= 0xDF) goto yy745;- goto yy746;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy748;- goto yy747;- } else {- if (yych <= 0xF0) goto yy749;- if (yych <= 0xF3) goto yy750;- if (yych <= 0xF4) goto yy751;- goto yy742;- }- }-yy767:- yyaccept = 3;- yych = *(marker = ++p);- if (yybm[0+yych] & 128) {- goto yy752;- }- if (yych <= 0xE0) {- if (yych <= '\\') {- if (yych <= 0x00) goto yy755;- if (yych <= ')') goto yy754;- goto yy756;- } else {- if (yych <= 0xC1) goto yy755;- if (yych <= 0xDF) goto yy758;- goto yy759;- }- } else {- if (yych <= 0xEF) {- if (yych == 0xED) goto yy761;- goto yy760;- } else {- if (yych <= 0xF0) goto yy762;- if (yych <= 0xF3) goto yy763;- if (yych <= 0xF4) goto yy764;- goto yy755;- }- }-}--}--// 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 yy772;- }- ++p;- { return 0; }-yy772:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy772;- }- { 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 yy779;- ++p;-yy778:- { return 0; }-yy779:- yych = *(marker = ++p);- if (yybm[0+yych] & 128) {- goto yy780;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy778;- if (yych <= '\n') goto yy783;- goto yy778;- } else {- if (yych <= '\r') goto yy783;- if (yych == '#') goto yy784;- goto yy778;- }-yy780:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy780;- }-yy782:- { return (bufsize_t)(p - start); }-yy783:- ++p;- goto yy782;-yy784:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy780;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy785;- if (yych <= '\n') goto yy783;- } else {- if (yych <= '\r') goto yy783;- if (yych == '#') goto yy786;- }-yy785:- p = marker;- goto yy778;-yy786:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy780;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy785;- if (yych <= '\n') goto yy783;- goto yy785;- } else {- if (yych <= '\r') goto yy783;- if (yych != '#') goto yy785;- }- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy780;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy785;- if (yych <= '\n') goto yy783;- goto yy785;- } else {- if (yych <= '\r') goto yy783;- if (yych != '#') goto yy785;- }- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy780;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy785;- if (yych <= '\n') goto yy783;- goto yy785;- } else {- if (yych <= '\r') goto yy783;- if (yych != '#') goto yy785;- }- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy780;- }- if (yych <= 0x08) goto yy785;- if (yych <= '\n') goto yy783;- if (yych == '\r') goto yy783;- goto yy785;-}--}--// 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 yy794;- if (yych == '=') goto yy795;- ++p;-yy793:- { return 0; }-yy794:- yych = *(marker = ++p);- if (yybm[0+yych] & 64) {- goto yy801;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy793;- if (yych <= '\n') goto yy797;- goto yy793;- } else {- if (yych <= '\r') goto yy797;- if (yych == ' ') goto yy797;- goto yy793;- }-yy795:- yych = *(marker = ++p);- if (yybm[0+yych] & 128) {- goto yy807;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy793;- if (yych <= '\n') goto yy804;- goto yy793;- } else {- if (yych <= '\r') goto yy804;- if (yych == ' ') goto yy804;- goto yy793;- }-yy796:- yych = *++p;-yy797:- if (yybm[0+yych] & 32) {- goto yy796;- }- if (yych <= 0x08) goto yy798;- if (yych <= '\n') goto yy799;- if (yych == '\r') goto yy799;-yy798:- p = marker;- goto yy793;-yy799:- ++p;- { return 2; }-yy801:- yych = *++p;- if (yybm[0+yych] & 32) {- goto yy796;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy798;- if (yych <= '\n') goto yy799;- goto yy798;- } else {- if (yych <= '\r') goto yy799;- if (yych == '-') goto yy801;- goto yy798;- }-yy803:- yych = *++p;-yy804:- if (yych <= '\f') {- if (yych <= 0x08) goto yy798;- if (yych <= '\t') goto yy803;- if (yych >= '\v') goto yy798;- } else {- if (yych <= '\r') goto yy805;- if (yych == ' ') goto yy803;- goto yy798;- }-yy805:- ++p;- { return 1; }-yy807:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy807;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy798;- if (yych <= '\t') goto yy803;- if (yych <= '\n') goto yy805;- goto yy798;- } else {- if (yych <= '\r') goto yy805;- if (yych == ' ') goto yy803;- goto yy798;- }-}--}--// 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, 32, 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, 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, - };- yych = *p;- if (yych <= ',') {- if (yych == '*') goto yy813;- } else {- if (yych <= '-') goto yy814;- if (yych == '_') goto yy815;- }- ++p;-yy812:- { return 0; }-yy813:- yych = *(marker = ++p);- if (yybm[0+yych] & 16) {- goto yy816;- }- if (yych == '*') goto yy819;- goto yy812;-yy814:- yych = *(marker = ++p);- if (yych <= 0x1F) {- if (yych == '\t') goto yy821;- goto yy812;- } else {- if (yych <= ' ') goto yy821;- if (yych == '-') goto yy823;- goto yy812;- }-yy815:- yych = *(marker = ++p);- if (yych <= 0x1F) {- if (yych == '\t') goto yy825;- goto yy812;- } else {- if (yych <= ' ') goto yy825;- if (yych == '_') goto yy827;- goto yy812;- }-yy816:- yych = *++p;- if (yybm[0+yych] & 16) {- goto yy816;- }- if (yych == '*') goto yy819;-yy818:- p = marker;- goto yy812;-yy819:- yych = *++p;- if (yych <= 0x1F) {- if (yych == '\t') goto yy819;- goto yy818;- } else {- if (yych <= ' ') goto yy819;- if (yych == '*') goto yy829;- goto yy818;- }-yy821:- yych = *++p;- if (yych <= 0x1F) {- if (yych == '\t') goto yy821;- goto yy818;- } else {- if (yych <= ' ') goto yy821;- if (yych != '-') goto yy818;- }-yy823:- yych = *++p;- if (yych <= 0x1F) {- if (yych == '\t') goto yy823;- goto yy818;- } else {- if (yych <= ' ') goto yy823;- if (yych == '-') goto yy831;- goto yy818;- }-yy825:- yych = *++p;- if (yych <= 0x1F) {- if (yych == '\t') goto yy825;- goto yy818;- } else {- if (yych <= ' ') goto yy825;- if (yych != '_') goto yy818;- }-yy827:- yych = *++p;- if (yych <= 0x1F) {- if (yych == '\t') goto yy827;- goto yy818;- } else {- if (yych <= ' ') goto yy827;- if (yych == '_') goto yy833;- goto yy818;- }-yy829:- yych = *++p;- if (yybm[0+yych] & 32) {- goto yy829;- }- if (yych <= 0x08) goto yy818;- if (yych <= '\n') goto yy835;- if (yych == '\r') goto yy835;- goto yy818;-yy831:- yych = *++p;- if (yybm[0+yych] & 64) {- goto yy831;- }- if (yych <= 0x08) goto yy818;- if (yych <= '\n') goto yy837;- if (yych == '\r') goto yy837;- goto yy818;-yy833:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy833;- }- if (yych <= 0x08) goto yy818;- if (yych <= '\n') goto yy839;- if (yych == '\r') goto yy839;- goto yy818;-yy835:- ++p;- { return (bufsize_t)(p - start); }-yy837:- ++p;- { return (bufsize_t)(p - start); }-yy839:- ++p;- { return (bufsize_t)(p - start); }-}--}--// 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 yy845;- if (yych == '~') goto yy846;- ++p;-yy844:- { return 0; }-yy845:- yych = *(marker = ++p);- if (yych == '`') goto yy847;- goto yy844;-yy846:- yych = *(marker = ++p);- if (yych == '~') goto yy849;- goto yy844;-yy847:- yych = *++p;- if (yybm[0+yych] & 16) {- goto yy850;- }-yy848:- p = marker;- goto yy844;-yy849:- yych = *++p;- if (yybm[0+yych] & 32) {- goto yy852;- }- goto yy848;-yy850:- yych = *++p;- if (yybm[0+yych] & 16) {- goto yy850;- }- if (yych <= 0xDF) {- if (yych <= '\f') {- if (yych <= 0x00) goto yy848;- if (yych == '\n') {- marker = p;- goto yy856;- }- marker = p;- goto yy854;- } else {- if (yych <= '\r') {- marker = p;- goto yy856;- }- if (yych <= 0x7F) {- marker = p;- goto yy854;- }- if (yych <= 0xC1) goto yy848;- marker = p;- goto yy858;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) {- marker = p;- goto yy859;- }- if (yych == 0xED) {- marker = p;- goto yy861;- }- marker = p;- goto yy860;- } else {- if (yych <= 0xF0) {- marker = p;- goto yy862;- }- if (yych <= 0xF3) {- marker = p;- goto yy863;- }- if (yych <= 0xF4) {- marker = p;- goto yy864;- }- goto yy848;- }- }-yy852:- yych = *++p;- if (yybm[0+yych] & 32) {- goto yy852;- }- if (yych <= 0xDF) {- if (yych <= '\f') {- if (yych <= 0x00) goto yy848;- if (yych == '\n') {- marker = p;- goto yy867;- }- marker = p;- goto yy865;- } else {- if (yych <= '\r') {- marker = p;- goto yy867;- }- if (yych <= 0x7F) {- marker = p;- goto yy865;- }- if (yych <= 0xC1) goto yy848;- marker = p;- goto yy869;- }- } else {- if (yych <= 0xEF) {- if (yych <= 0xE0) {- marker = p;- goto yy870;- }- if (yych == 0xED) {- marker = p;- goto yy872;- }- marker = p;- goto yy871;- } else {- if (yych <= 0xF0) {- marker = p;- goto yy873;- }- if (yych <= 0xF3) {- marker = p;- goto yy874;- }- if (yych <= 0xF4) {- marker = p;- goto yy875;- }- goto yy848;- }- }-yy854:- yych = *++p;- if (yybm[0+yych] & 64) {- goto yy854;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= 0x00) goto yy848;- if (yych >= 0x0E) goto yy848;- } else {- if (yych <= 0xDF) goto yy858;- if (yych <= 0xE0) goto yy859;- goto yy860;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy861;- if (yych <= 0xEF) goto yy860;- goto yy862;- } else {- if (yych <= 0xF3) goto yy863;- if (yych <= 0xF4) goto yy864;- goto yy848;- }- }-yy856:- ++p;- p = marker;- { return (bufsize_t)(p - start); }-yy858:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0xBF) goto yy854;- goto yy848;-yy859:- yych = *++p;- if (yych <= 0x9F) goto yy848;- if (yych <= 0xBF) goto yy858;- goto yy848;-yy860:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0xBF) goto yy858;- goto yy848;-yy861:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0x9F) goto yy858;- goto yy848;-yy862:- yych = *++p;- if (yych <= 0x8F) goto yy848;- if (yych <= 0xBF) goto yy860;- goto yy848;-yy863:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0xBF) goto yy860;- goto yy848;-yy864:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0x8F) goto yy860;- goto yy848;-yy865:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy865;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= 0x00) goto yy848;- if (yych >= 0x0E) goto yy848;- } else {- if (yych <= 0xDF) goto yy869;- if (yych <= 0xE0) goto yy870;- goto yy871;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy872;- if (yych <= 0xEF) goto yy871;- goto yy873;- } else {- if (yych <= 0xF3) goto yy874;- if (yych <= 0xF4) goto yy875;- goto yy848;- }- }-yy867:- ++p;- p = marker;- { return (bufsize_t)(p - start); }-yy869:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0xBF) goto yy865;- goto yy848;-yy870:- yych = *++p;- if (yych <= 0x9F) goto yy848;- if (yych <= 0xBF) goto yy869;- goto yy848;-yy871:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0xBF) goto yy869;- goto yy848;-yy872:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0x9F) goto yy869;- goto yy848;-yy873:- yych = *++p;- if (yych <= 0x8F) goto yy848;- if (yych <= 0xBF) goto yy871;- goto yy848;-yy874:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0xBF) goto yy871;- goto yy848;-yy875:- yych = *++p;- if (yych <= 0x7F) goto yy848;- if (yych <= 0x8F) goto yy871;- goto yy848;-}--}--// 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 yy880;- if (yych == '~') goto yy881;- ++p;-yy879:- { return 0; }-yy880:- yych = *(marker = ++p);- if (yych == '`') goto yy882;- goto yy879;-yy881:- yych = *(marker = ++p);- if (yych == '~') goto yy884;- goto yy879;-yy882:- yych = *++p;- if (yybm[0+yych] & 32) {- goto yy885;- }-yy883:- p = marker;- goto yy879;-yy884:- yych = *++p;- if (yybm[0+yych] & 64) {- goto yy887;- }- goto yy883;-yy885:- yych = *++p;- if (yybm[0+yych] & 32) {- goto yy885;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy883;- if (yych <= '\t') {- marker = p;- goto yy889;- }- if (yych <= '\n') {- marker = p;- goto yy891;- }- goto yy883;- } else {- if (yych <= '\r') {- marker = p;- goto yy891;- }- if (yych == ' ') {- marker = p;- goto yy889;- }- goto yy883;- }-yy887:- yych = *++p;- if (yybm[0+yych] & 64) {- goto yy887;- }- if (yych <= '\f') {- if (yych <= 0x08) goto yy883;- if (yych <= '\t') {- marker = p;- goto yy893;- }- if (yych <= '\n') {- marker = p;- goto yy895;- }- goto yy883;- } else {- if (yych <= '\r') {- marker = p;- goto yy895;- }- if (yych == ' ') {- marker = p;- goto yy893;- }- goto yy883;- }-yy889:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy889;- }- if (yych <= 0x08) goto yy883;- if (yych <= '\n') goto yy891;- if (yych != '\r') goto yy883;-yy891:- ++p;- p = marker;- { return (bufsize_t)(p - start); }-yy893:- yych = *++p;- if (yych <= '\f') {- if (yych <= 0x08) goto yy883;- if (yych <= '\t') goto yy893;- if (yych >= '\v') goto yy883;- } else {- if (yych <= '\r') goto yy895;- if (yych == ' ') goto yy893;- goto yy883;- }-yy895:- ++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 yy901;- ++p;-yy900:- { return 0; }-yy901:- yych = *(marker = ++p);- if (yych <= '@') {- if (yych != '#') goto yy900;- } else {- if (yych <= 'Z') goto yy904;- if (yych <= '`') goto yy900;- if (yych <= 'z') goto yy904;- goto yy900;- }- yych = *++p;- if (yych <= 'W') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy905;- } else {- if (yych <= 'X') goto yy906;- if (yych == 'x') goto yy906;- }-yy903:- p = marker;- goto yy900;-yy904:- yych = *++p;- if (yych <= '@') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy907;- goto yy903;- } else {- if (yych <= 'Z') goto yy907;- if (yych <= '`') goto yy903;- if (yych <= 'z') goto yy907;- goto yy903;- }-yy905:- yych = *++p;- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy908;- if (yych == ';') goto yy909;- goto yy903;-yy906:- yych = *++p;- if (yych <= '@') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy911;- goto yy903;- } else {- if (yych <= 'F') goto yy911;- if (yych <= '`') goto yy903;- if (yych <= 'f') goto yy911;- goto yy903;- }-yy907:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy912;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- goto yy912;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'z') goto yy912;- goto yy903;- }- }-yy908:- yych = *++p;- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy913;- if (yych != ';') goto yy903;-yy909:- ++p;- { return (bufsize_t)(p - start); }-yy911:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy914;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'F') {- if (yych <= '@') goto yy903;- goto yy914;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'f') goto yy914;- goto yy903;- }- }-yy912:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy915;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- goto yy915;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'z') goto yy915;- goto yy903;- }- }-yy913:- yych = *++p;- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy916;- if (yych == ';') goto yy909;- goto yy903;-yy914:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy917;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'F') {- if (yych <= '@') goto yy903;- goto yy917;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'f') goto yy917;- goto yy903;- }- }-yy915:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy918;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- goto yy918;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'z') goto yy918;- goto yy903;- }- }-yy916:- yych = *++p;- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy919;- if (yych == ';') goto yy909;- goto yy903;-yy917:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy920;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'F') {- if (yych <= '@') goto yy903;- goto yy920;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'f') goto yy920;- goto yy903;- }- }-yy918:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy921;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- goto yy921;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'z') goto yy921;- goto yy903;- }- }-yy919:- yych = *++p;- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy922;- if (yych == ';') goto yy909;- goto yy903;-yy920:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy923;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'F') {- if (yych <= '@') goto yy903;- goto yy923;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'f') goto yy923;- goto yy903;- }- }-yy921:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy924;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- goto yy924;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'z') goto yy924;- goto yy903;- }- }-yy922:- yych = *++p;- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy925;- if (yych == ';') goto yy909;- goto yy903;-yy923:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy925;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'F') {- if (yych <= '@') goto yy903;- goto yy925;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'f') goto yy925;- goto yy903;- }- }-yy924:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy926;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- goto yy926;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'z') goto yy926;- goto yy903;- }- }-yy925:- yych = *++p;- if (yych == ';') goto yy909;- goto yy903;-yy926:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy927;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy927:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy928;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy928:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy929;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy929:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy930;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy930:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy931;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy931:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy932;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy932:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy933;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy933:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy934;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy934:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy935;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy935:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy936;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy936:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy937;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy937:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy938;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy938:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy939;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy939:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy940;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy940:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy941;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy941:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy942;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy942:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy943;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy943:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy944;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy944:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy945;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy945:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy946;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy946:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy947;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy947:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy948;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy948:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy949;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- } else {- if (yych <= '`') goto yy903;- if (yych >= '{') goto yy903;- }- }-yy949:- yych = *++p;- if (yych <= ';') {- if (yych <= '/') goto yy903;- if (yych <= '9') goto yy925;- if (yych <= ':') goto yy903;- goto yy909;- } else {- if (yych <= 'Z') {- if (yych <= '@') goto yy903;- goto yy925;- } else {- if (yych <= '`') goto yy903;- if (yych <= 'z') goto yy925;- goto yy903;- }- }-}--}--// 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 yy954;- if (yych >= 'F') goto yy955;- } else {- if (yych == 'J') goto yy956;- if (yych >= 'V') goto yy957;- }- } else {- if (yych <= 'f') {- if (yych == 'd') goto yy954;- if (yych >= 'f') goto yy955;- } else {- if (yych <= 'j') {- if (yych >= 'j') goto yy956;- } else {- if (yych == 'v') goto yy957;- }- }- }- ++p;-yy953:- { return 0; }-yy954:- yyaccept = 0;- yych = *(marker = ++p);- if (yych == 'A') goto yy958;- if (yych == 'a') goto yy958;- goto yy953;-yy955:- yyaccept = 0;- yych = *(marker = ++p);- if (yych == 'I') goto yy960;- if (yych == 'i') goto yy960;- goto yy953;-yy956:- yyaccept = 0;- yych = *(marker = ++p);- if (yych == 'A') goto yy961;- if (yych == 'a') goto yy961;- goto yy953;-yy957:- yyaccept = 0;- yych = *(marker = ++p);- if (yych == 'B') goto yy962;- if (yych == 'b') goto yy962;- goto yy953;-yy958:- yych = *++p;- if (yych == 'T') goto yy963;- if (yych == 't') goto yy963;-yy959:- p = marker;- if (yyaccept == 0) {- goto yy953;- } else {- goto yy971;- }-yy960:- yych = *++p;- if (yych == 'L') goto yy964;- if (yych == 'l') goto yy964;- goto yy959;-yy961:- yych = *++p;- if (yych == 'V') goto yy965;- if (yych == 'v') goto yy965;- goto yy959;-yy962:- yych = *++p;- if (yych == 'S') goto yy966;- if (yych == 's') goto yy966;- goto yy959;-yy963:- yych = *++p;- if (yych == 'A') goto yy967;- if (yych == 'a') goto yy967;- goto yy959;-yy964:- yych = *++p;- if (yych == 'E') goto yy968;- if (yych == 'e') goto yy968;- goto yy959;-yy965:- yych = *++p;- if (yych == 'A') goto yy962;- if (yych == 'a') goto yy962;- goto yy959;-yy966:- yych = *++p;- if (yych == 'C') goto yy969;- if (yych == 'c') goto yy969;- goto yy959;-yy967:- yych = *++p;- if (yych == ':') goto yy970;- goto yy959;-yy968:- yych = *++p;- if (yych == ':') goto yy972;- goto yy959;-yy969:- yych = *++p;- if (yych == 'R') goto yy973;- if (yych == 'r') goto yy973;- goto yy959;-yy970:- yyaccept = 1;- yych = *(marker = ++p);- if (yych == 'I') goto yy974;- if (yych == 'i') goto yy974;-yy971:- { return (bufsize_t)(p - start); }-yy972:- ++p;- goto yy971;-yy973:- yych = *++p;- if (yych == 'I') goto yy975;- if (yych == 'i') goto yy975;- goto yy959;-yy974:- yych = *++p;- if (yych == 'M') goto yy976;- if (yych == 'm') goto yy976;- goto yy959;-yy975:- yych = *++p;- if (yych == 'P') goto yy977;- if (yych == 'p') goto yy977;- goto yy959;-yy976:- yych = *++p;- if (yych == 'A') goto yy978;- if (yych == 'a') goto yy978;- goto yy959;-yy977:- yych = *++p;- if (yych == 'T') goto yy968;- if (yych == 't') goto yy968;- goto yy959;-yy978:- yych = *++p;- if (yych == 'G') goto yy979;- if (yych != 'g') goto yy959;-yy979:- yych = *++p;- if (yych == 'E') goto yy980;- if (yych != 'e') goto yy959;-yy980:- yych = *++p;- if (yych != '/') goto yy959;- yych = *++p;- if (yych <= 'W') {- if (yych <= 'J') {- if (yych == 'G') goto yy982;- if (yych <= 'I') goto yy959;- goto yy983;- } else {- if (yych == 'P') goto yy984;- if (yych <= 'V') goto yy959;- goto yy985;- }- } else {- if (yych <= 'j') {- if (yych == 'g') goto yy982;- if (yych <= 'i') goto yy959;- goto yy983;- } else {- if (yych <= 'p') {- if (yych <= 'o') goto yy959;- goto yy984;- } else {- if (yych == 'w') goto yy985;- goto yy959;- }- }- }-yy982:- yych = *++p;- if (yych == 'I') goto yy986;- if (yych == 'i') goto yy986;- goto yy959;-yy983:- yych = *++p;- if (yych == 'P') goto yy987;- if (yych == 'p') goto yy987;- goto yy959;-yy984:- yych = *++p;- if (yych == 'N') goto yy988;- if (yych == 'n') goto yy988;- goto yy959;-yy985:- yych = *++p;- if (yych == 'E') goto yy989;- if (yych == 'e') goto yy989;- goto yy959;-yy986:- yych = *++p;- if (yych == 'F') goto yy990;- if (yych == 'f') goto yy990;- goto yy959;-yy987:- yych = *++p;- if (yych == 'E') goto yy988;- if (yych != 'e') goto yy959;-yy988:- yych = *++p;- if (yych == 'G') goto yy990;- if (yych == 'g') goto yy990;- goto yy959;-yy989:- yych = *++p;- if (yych == 'B') goto yy992;- if (yych == 'b') goto yy992;- goto yy959;-yy990:- ++p;- { return 0; }-yy992:- yych = *++p;- if (yych == 'P') goto yy990;- if (yych == 'p') goto yy990;- goto yy959;-}--}--// Scans a footnote definition opening.-bufsize_t _scan_footnote_definition(const unsigned char *p)-{- const unsigned char *marker = NULL;- const unsigned char *start = p;--{- unsigned char yych;- static const unsigned char yybm[] = {- 0, 64, 64, 64, 64, 64, 64, 64, - 64, 128, 0, 64, 64, 0, 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 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 yy997;- ++p;-yy996:- { return 0; }-yy997:- yych = *(marker = ++p);- if (yych != '^') goto yy996;- yych = *++p;- if (yych != ']') goto yy1001;-yy999:- p = marker;- goto yy996;-yy1000:- yych = *++p;-yy1001:- if (yybm[0+yych] & 64) {- goto yy1000;- }- if (yych <= 0xEC) {- if (yych <= 0xC1) {- if (yych <= ' ') goto yy999;- if (yych <= ']') goto yy1009;- goto yy999;- } else {- if (yych <= 0xDF) goto yy1002;- if (yych <= 0xE0) goto yy1003;- goto yy1004;- }- } else {- if (yych <= 0xF0) {- if (yych <= 0xED) goto yy1005;- if (yych <= 0xEF) goto yy1004;- goto yy1006;- } else {- if (yych <= 0xF3) goto yy1007;- if (yych <= 0xF4) goto yy1008;- goto yy999;- }- }-yy1002:- yych = *++p;- if (yych <= 0x7F) goto yy999;- if (yych <= 0xBF) goto yy1000;- goto yy999;-yy1003:- yych = *++p;- if (yych <= 0x9F) goto yy999;- if (yych <= 0xBF) goto yy1002;- goto yy999;-yy1004:- yych = *++p;- if (yych <= 0x7F) goto yy999;- if (yych <= 0xBF) goto yy1002;- goto yy999;-yy1005:- yych = *++p;- if (yych <= 0x7F) goto yy999;- if (yych <= 0x9F) goto yy1002;- goto yy999;-yy1006:- yych = *++p;- if (yych <= 0x8F) goto yy999;- if (yych <= 0xBF) goto yy1004;- goto yy999;-yy1007:- yych = *++p;- if (yych <= 0x7F) goto yy999;- if (yych <= 0xBF) goto yy1004;- goto yy999;-yy1008:- yych = *++p;- if (yych <= 0x7F) goto yy999;- if (yych <= 0x8F) goto yy1004;- goto yy999;-yy1009:- yych = *++p;- if (yych != ':') goto yy999;-yy1010:- yych = *++p;- if (yybm[0+yych] & 128) {- goto yy1010;- }- { return (bufsize_t)(p - start); }-}-+/* Generated by re2c 3.0 */+#include "scanners.h"+#include "chunk.h"+#include <stdlib.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 yy1;+ if (yych <= 'Z')+ goto yy3;+ if (yych <= '`')+ goto yy1;+ if (yych <= 'z')+ goto yy3;+ yy1:+ ++p;+ yy2 : { return 0; }+ yy3:+ yych = *(marker = ++p);+ if (yych <= '/') {+ if (yych <= '+') {+ if (yych <= '*')+ goto yy2;+ } else {+ if (yych <= ',')+ goto yy2;+ if (yych >= '/')+ goto yy2;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '9')+ goto yy4;+ if (yych <= '@')+ goto yy2;+ } else {+ if (yych <= '`')+ goto yy2;+ if (yych >= '{')+ goto yy2;+ }+ }+ yy4:+ 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 >= 'A')+ goto yy6;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych <= 'z')+ goto yy6;+ }+ }+ yy5:+ p = marker;+ goto yy2;+ yy6:+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych == '+')+ goto yy8;+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ goto yy8;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ goto yy8;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych <= 'z')+ goto yy8;+ goto yy5;+ }+ }+ yy7:+ ++p;+ { return (bufsize_t)(p - start); }+ yy8:+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy5;+ } else {+ if (yych == '/')+ goto yy5;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy7;+ if (yych <= '@')+ goto yy5;+ } else {+ if (yych <= '`')+ goto yy5;+ if (yych >= '{')+ goto yy5;+ }+ }+ yych = *++p;+ if (yych == ':')+ goto yy7;+ goto yy5;+ }+}++// 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 yy10;+ if (yych <= 'Z')+ goto yy12;+ if (yych <= '`')+ goto yy10;+ if (yych <= 'z')+ goto yy12;+ yy10:+ ++p;+ yy11 : { return 0; }+ yy12:+ yych = *(marker = ++p);+ if (yych <= '/') {+ if (yych <= '+') {+ if (yych <= '*')+ goto yy11;+ } else {+ if (yych <= ',')+ goto yy11;+ if (yych >= '/')+ goto yy11;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '9')+ goto yy13;+ if (yych <= '@')+ goto yy11;+ } else {+ if (yych <= '`')+ goto yy11;+ if (yych >= '{')+ goto yy11;+ }+ }+ yy13:+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych == '+')+ goto yy15;+ } else {+ if (yych != '/')+ goto yy15;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych >= 'A')+ goto yy15;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych <= 'z')+ goto yy15;+ }+ }+ yy14:+ p = marker;+ goto yy11;+ yy15:+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych == '+')+ goto yy17;+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ goto yy17;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ goto yy17;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych <= 'z')+ goto yy17;+ goto yy14;+ }+ }+ yy16:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy16;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '<')+ goto yy14;+ if (yych <= '>')+ goto yy18;+ goto yy14;+ } else {+ if (yych <= 0xDF)+ goto yy19;+ if (yych <= 0xE0)+ goto yy20;+ goto yy21;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy22;+ if (yych <= 0xEF)+ goto yy21;+ goto yy23;+ } else {+ if (yych <= 0xF3)+ goto yy24;+ if (yych <= 0xF4)+ goto yy25;+ goto yy14;+ }+ }+ yy17:+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych == '+')+ goto yy26;+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ goto yy26;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ goto yy26;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych <= 'z')+ goto yy26;+ goto yy14;+ }+ }+ yy18:+ ++p;+ { return (bufsize_t)(p - start); }+ yy19:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy14;+ if (yych <= 0xBF)+ goto yy16;+ goto yy14;+ yy20:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy14;+ if (yych <= 0xBF)+ goto yy19;+ goto yy14;+ yy21:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy14;+ if (yych <= 0xBF)+ goto yy19;+ goto yy14;+ yy22:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy14;+ if (yych <= 0x9F)+ goto yy19;+ goto yy14;+ yy23:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy14;+ if (yych <= 0xBF)+ goto yy21;+ goto yy14;+ yy24:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy14;+ if (yych <= 0xBF)+ goto yy21;+ goto yy14;+ yy25:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy14;+ if (yych <= 0x8F)+ goto yy21;+ goto yy14;+ yy26:+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych <= ',') {+ if (yych != '+')+ goto yy14;+ } else {+ if (yych == '/')+ goto yy14;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= ':')+ goto yy16;+ if (yych <= '@')+ goto yy14;+ } else {+ if (yych <= '`')+ goto yy14;+ if (yych >= '{')+ goto yy14;+ }+ }+ yych = *++p;+ if (yych == ':')+ goto yy16;+ goto yy14;+ }+}++// 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 yy30;+ if (yych >= '#')+ goto yy30;+ } else {+ if (yych <= ')')+ goto yy28;+ if (yych != ',')+ goto yy30;+ }+ } else {+ if (yych <= '?') {+ if (yych == '=')+ goto yy30;+ if (yych >= '?')+ goto yy30;+ } else {+ if (yych <= 'Z') {+ if (yych >= 'A')+ goto yy30;+ } else {+ if (yych <= ']')+ goto yy28;+ if (yych <= '~')+ goto yy30;+ }+ }+ }+ yy28:+ ++p;+ yy29 : { return 0; }+ yy30:+ yych = *(marker = ++p);+ if (yych <= ',') {+ if (yych <= '"') {+ if (yych == '!')+ goto yy32;+ goto yy29;+ } else {+ if (yych <= '\'')+ goto yy32;+ if (yych <= ')')+ goto yy29;+ if (yych <= '+')+ goto yy32;+ goto yy29;+ }+ } else {+ if (yych <= '>') {+ if (yych <= '9')+ goto yy32;+ if (yych == '=')+ goto yy32;+ goto yy29;+ } else {+ if (yych <= 'Z')+ goto yy32;+ if (yych <= ']')+ goto yy29;+ if (yych <= '~')+ goto yy32;+ goto yy29;+ }+ }+ yy31:+ yych = *++p;+ yy32:+ if (yybm[0 + yych] & 128) {+ goto yy31;+ }+ if (yych <= '>')+ goto yy33;+ if (yych <= '@')+ goto yy34;+ yy33:+ p = marker;+ goto yy29;+ yy34:+ yych = *++p;+ if (yych <= '@') {+ if (yych <= '/')+ goto yy33;+ if (yych >= ':')+ goto yy33;+ } else {+ if (yych <= 'Z')+ goto yy35;+ if (yych <= '`')+ goto yy33;+ if (yych >= '{')+ goto yy33;+ }+ yy35:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy36;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy36;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy36;+ goto yy33;+ }+ }+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy38;+ if (yych <= '/')+ goto yy33;+ goto yy39;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy39;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy39;+ goto yy33;+ }+ }+ yy36:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych <= '-')+ goto yy38;+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy39;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy39;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy39;+ goto yy33;+ }+ }+ yy37:+ ++p;+ { return (bufsize_t)(p - start); }+ yy38:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy40;+ if (yych <= '/')+ goto yy33;+ goto yy41;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy41;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy41;+ goto yy33;+ }+ }+ yy39:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy41;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy41;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy41;+ goto yy33;+ }+ }+ yy40:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy42;+ if (yych <= '/')+ goto yy33;+ goto yy43;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy43;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy43;+ goto yy33;+ }+ }+ yy41:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy43;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy43;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy43;+ goto yy33;+ }+ }+ yy42:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy44;+ if (yych <= '/')+ goto yy33;+ goto yy45;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy45;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy45;+ goto yy33;+ }+ }+ yy43:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy45;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy45;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy45;+ goto yy33;+ }+ }+ yy44:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy46;+ if (yych <= '/')+ goto yy33;+ goto yy47;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy47;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy47;+ goto yy33;+ }+ }+ yy45:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy47;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy47;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy47;+ goto yy33;+ }+ }+ yy46:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy48;+ if (yych <= '/')+ goto yy33;+ goto yy49;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy49;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy49;+ goto yy33;+ }+ }+ yy47:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy49;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy49;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy49;+ goto yy33;+ }+ }+ yy48:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy50;+ if (yych <= '/')+ goto yy33;+ goto yy51;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy51;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy51;+ goto yy33;+ }+ }+ yy49:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy51;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy51;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy51;+ goto yy33;+ }+ }+ yy50:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy52;+ if (yych <= '/')+ goto yy33;+ goto yy53;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy53;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy53;+ goto yy33;+ }+ }+ yy51:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy53;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy53;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy53;+ goto yy33;+ }+ }+ yy52:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy54;+ if (yych <= '/')+ goto yy33;+ goto yy55;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy55;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy55;+ goto yy33;+ }+ }+ yy53:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy55;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy55;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy55;+ goto yy33;+ }+ }+ yy54:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy56;+ if (yych <= '/')+ goto yy33;+ goto yy57;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy57;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy57;+ goto yy33;+ }+ }+ yy55:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy57;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy57;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy57;+ goto yy33;+ }+ }+ yy56:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy58;+ if (yych <= '/')+ goto yy33;+ goto yy59;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy59;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy59;+ goto yy33;+ }+ }+ yy57:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy59;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy59;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy59;+ goto yy33;+ }+ }+ yy58:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy60;+ if (yych <= '/')+ goto yy33;+ goto yy61;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy61;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy61;+ goto yy33;+ }+ }+ yy59:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy61;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy61;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy61;+ goto yy33;+ }+ }+ yy60:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy62;+ if (yych <= '/')+ goto yy33;+ goto yy63;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy63;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy63;+ goto yy33;+ }+ }+ yy61:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy63;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy63;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy63;+ goto yy33;+ }+ }+ yy62:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy64;+ if (yych <= '/')+ goto yy33;+ goto yy65;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy65;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy65;+ goto yy33;+ }+ }+ yy63:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy65;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy65;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy65;+ goto yy33;+ }+ }+ yy64:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy66;+ if (yych <= '/')+ goto yy33;+ goto yy67;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy67;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy67;+ goto yy33;+ }+ }+ yy65:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy67;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy67;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy67;+ goto yy33;+ }+ }+ yy66:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy68;+ if (yych <= '/')+ goto yy33;+ goto yy69;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy69;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy69;+ goto yy33;+ }+ }+ yy67:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy69;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy69;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy69;+ goto yy33;+ }+ }+ yy68:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy70;+ if (yych <= '/')+ goto yy33;+ goto yy71;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy71;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy71;+ goto yy33;+ }+ }+ yy69:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy71;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy71;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy71;+ goto yy33;+ }+ }+ yy70:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy72;+ if (yych <= '/')+ goto yy33;+ goto yy73;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy73;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy73;+ goto yy33;+ }+ }+ yy71:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy73;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy73;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy73;+ goto yy33;+ }+ }+ yy72:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy74;+ if (yych <= '/')+ goto yy33;+ goto yy75;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy75;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy75;+ goto yy33;+ }+ }+ yy73:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy75;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy75;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy75;+ goto yy33;+ }+ }+ yy74:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy76;+ if (yych <= '/')+ goto yy33;+ goto yy77;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy77;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy77;+ goto yy33;+ }+ }+ yy75:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy77;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy77;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy77;+ goto yy33;+ }+ }+ yy76:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy78;+ if (yych <= '/')+ goto yy33;+ goto yy79;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy79;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy79;+ goto yy33;+ }+ }+ yy77:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy79;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy79;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy79;+ goto yy33;+ }+ }+ yy78:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy80;+ if (yych <= '/')+ goto yy33;+ goto yy81;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy81;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy81;+ goto yy33;+ }+ }+ yy79:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy81;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy81;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy81;+ goto yy33;+ }+ }+ yy80:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy82;+ if (yych <= '/')+ goto yy33;+ goto yy83;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy83;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy83;+ goto yy33;+ }+ }+ yy81:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy83;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy83;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy83;+ goto yy33;+ }+ }+ yy82:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy84;+ if (yych <= '/')+ goto yy33;+ goto yy85;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy85;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy85;+ goto yy33;+ }+ }+ yy83:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy85;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy85;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy85;+ goto yy33;+ }+ }+ yy84:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy86;+ if (yych <= '/')+ goto yy33;+ goto yy87;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy87;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy87;+ goto yy33;+ }+ }+ yy85:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy87;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy87;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy87;+ goto yy33;+ }+ }+ yy86:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy88;+ if (yych <= '/')+ goto yy33;+ goto yy89;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy89;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy89;+ goto yy33;+ }+ }+ yy87:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy89;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy89;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy89;+ goto yy33;+ }+ }+ yy88:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy90;+ if (yych <= '/')+ goto yy33;+ goto yy91;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy91;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy91;+ goto yy33;+ }+ }+ yy89:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy91;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy91;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy91;+ goto yy33;+ }+ }+ yy90:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy92;+ if (yych <= '/')+ goto yy33;+ goto yy93;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy93;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy93;+ goto yy33;+ }+ }+ yy91:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy93;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy93;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy93;+ goto yy33;+ }+ }+ yy92:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy94;+ if (yych <= '/')+ goto yy33;+ goto yy95;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy95;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy95;+ goto yy33;+ }+ }+ yy93:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy95;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy95;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy95;+ goto yy33;+ }+ }+ yy94:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy96;+ if (yych <= '/')+ goto yy33;+ goto yy97;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy97;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy97;+ goto yy33;+ }+ }+ yy95:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy97;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy97;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy97;+ goto yy33;+ }+ }+ yy96:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy98;+ if (yych <= '/')+ goto yy33;+ goto yy99;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy99;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy99;+ goto yy33;+ }+ }+ yy97:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy99;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy99;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy99;+ goto yy33;+ }+ }+ yy98:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy100;+ if (yych <= '/')+ goto yy33;+ goto yy101;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy101;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy101;+ goto yy33;+ }+ }+ yy99:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy101;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy101;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy101;+ goto yy33;+ }+ }+ yy100:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy102;+ if (yych <= '/')+ goto yy33;+ goto yy103;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy103;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy103;+ goto yy33;+ }+ }+ yy101:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy103;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy103;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy103;+ goto yy33;+ }+ }+ yy102:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy104;+ if (yych <= '/')+ goto yy33;+ goto yy105;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy105;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy105;+ goto yy33;+ }+ }+ yy103:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy105;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy105;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy105;+ goto yy33;+ }+ }+ yy104:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy106;+ if (yych <= '/')+ goto yy33;+ goto yy107;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy107;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy107;+ goto yy33;+ }+ }+ yy105:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy107;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy107;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy107;+ goto yy33;+ }+ }+ yy106:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy108;+ if (yych <= '/')+ goto yy33;+ goto yy109;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy109;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy109;+ goto yy33;+ }+ }+ yy107:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy109;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy109;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy109;+ goto yy33;+ }+ }+ yy108:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy110;+ if (yych <= '/')+ goto yy33;+ goto yy111;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy111;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy111;+ goto yy33;+ }+ }+ yy109:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy111;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy111;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy111;+ goto yy33;+ }+ }+ yy110:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy112;+ if (yych <= '/')+ goto yy33;+ goto yy113;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy113;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy113;+ goto yy33;+ }+ }+ yy111:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy113;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy113;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy113;+ goto yy33;+ }+ }+ yy112:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy114;+ if (yych <= '/')+ goto yy33;+ goto yy115;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy115;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy115;+ goto yy33;+ }+ }+ yy113:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy115;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy115;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy115;+ goto yy33;+ }+ }+ yy114:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy116;+ if (yych <= '/')+ goto yy33;+ goto yy117;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy117;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy117;+ goto yy33;+ }+ }+ yy115:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy117;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy117;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy117;+ goto yy33;+ }+ }+ yy116:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy118;+ if (yych <= '/')+ goto yy33;+ goto yy119;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy119;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy119;+ goto yy33;+ }+ }+ yy117:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy119;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy119;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy119;+ goto yy33;+ }+ }+ yy118:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy120;+ if (yych <= '/')+ goto yy33;+ goto yy121;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy121;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy121;+ goto yy33;+ }+ }+ yy119:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy121;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy121;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy121;+ goto yy33;+ }+ }+ yy120:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy122;+ if (yych <= '/')+ goto yy33;+ goto yy123;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy123;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy123;+ goto yy33;+ }+ }+ yy121:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy123;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy123;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy123;+ goto yy33;+ }+ }+ yy122:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy124;+ if (yych <= '/')+ goto yy33;+ goto yy125;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy125;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy125;+ goto yy33;+ }+ }+ yy123:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy125;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy125;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy125;+ goto yy33;+ }+ }+ yy124:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy126;+ if (yych <= '/')+ goto yy33;+ goto yy127;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy127;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy127;+ goto yy33;+ }+ }+ yy125:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy127;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy127;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy127;+ goto yy33;+ }+ }+ yy126:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy128;+ if (yych <= '/')+ goto yy33;+ goto yy129;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy129;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy129;+ goto yy33;+ }+ }+ yy127:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy129;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy129;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy129;+ goto yy33;+ }+ }+ yy128:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy130;+ if (yych <= '/')+ goto yy33;+ goto yy131;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy131;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy131;+ goto yy33;+ }+ }+ yy129:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy131;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy131;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy131;+ goto yy33;+ }+ }+ yy130:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy132;+ if (yych <= '/')+ goto yy33;+ goto yy133;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy133;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy133;+ goto yy33;+ }+ }+ yy131:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy133;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy133;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy133;+ goto yy33;+ }+ }+ yy132:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy134;+ if (yych <= '/')+ goto yy33;+ goto yy135;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy135;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy135;+ goto yy33;+ }+ }+ yy133:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy135;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy135;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy135;+ goto yy33;+ }+ }+ yy134:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy136;+ if (yych <= '/')+ goto yy33;+ goto yy137;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy137;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy137;+ goto yy33;+ }+ }+ yy135:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy137;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy137;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy137;+ goto yy33;+ }+ }+ yy136:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy138;+ if (yych <= '/')+ goto yy33;+ goto yy139;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy139;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy139;+ goto yy33;+ }+ }+ yy137:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy139;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy139;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy139;+ goto yy33;+ }+ }+ yy138:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy140;+ if (yych <= '/')+ goto yy33;+ goto yy141;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy141;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy141;+ goto yy33;+ }+ }+ yy139:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy141;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy141;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy141;+ goto yy33;+ }+ }+ yy140:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy142;+ if (yych <= '/')+ goto yy33;+ goto yy143;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy143;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy143;+ goto yy33;+ }+ }+ yy141:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy143;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy143;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy143;+ goto yy33;+ }+ }+ yy142:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy144;+ if (yych <= '/')+ goto yy33;+ goto yy145;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy145;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy145;+ goto yy33;+ }+ }+ yy143:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy145;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy145;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy145;+ goto yy33;+ }+ }+ yy144:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy146;+ if (yych <= '/')+ goto yy33;+ goto yy147;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy147;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy147;+ goto yy33;+ }+ }+ yy145:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy147;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy147;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy147;+ goto yy33;+ }+ }+ yy146:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy148;+ if (yych <= '/')+ goto yy33;+ goto yy149;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy149;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy149;+ goto yy33;+ }+ }+ yy147:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy149;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy149;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy149;+ goto yy33;+ }+ }+ yy148:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy150;+ if (yych <= '/')+ goto yy33;+ goto yy151;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy151;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy151;+ goto yy33;+ }+ }+ yy149:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy151;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy151;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy151;+ goto yy33;+ }+ }+ yy150:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy152;+ if (yych <= '/')+ goto yy33;+ goto yy153;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy153;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy153;+ goto yy33;+ }+ }+ yy151:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy153;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy153;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy153;+ goto yy33;+ }+ }+ yy152:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy154;+ if (yych <= '/')+ goto yy33;+ goto yy155;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy155;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy155;+ goto yy33;+ }+ }+ yy153:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy155;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy155;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy155;+ goto yy33;+ }+ }+ yy154:+ yych = *++p;+ if (yych <= '9') {+ if (yych == '-')+ goto yy156;+ if (yych <= '/')+ goto yy33;+ goto yy157;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy33;+ goto yy157;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy157;+ goto yy33;+ }+ }+ yy155:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= ',')+ goto yy33;+ if (yych >= '.')+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy157;+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ goto yy157;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy157;+ goto yy33;+ }+ }+ yy156:+ yych = *++p;+ if (yych <= '@') {+ if (yych <= '/')+ goto yy33;+ if (yych <= '9')+ goto yy158;+ goto yy33;+ } else {+ if (yych <= 'Z')+ goto yy158;+ if (yych <= '`')+ goto yy33;+ if (yych <= 'z')+ goto yy158;+ goto yy33;+ }+ yy157:+ yych = *++p;+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych <= '-')+ goto yy33;+ goto yy34;+ } else {+ if (yych <= '/')+ goto yy33;+ if (yych >= ':')+ goto yy33;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy37;+ if (yych <= '@')+ goto yy33;+ } else {+ if (yych <= '`')+ goto yy33;+ if (yych >= '{')+ goto yy33;+ }+ }+ yy158:+ yych = *++p;+ if (yych == '.')+ goto yy34;+ if (yych == '>')+ goto yy37;+ goto yy33;+ }+}++// 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[] = {+ 0, 224, 224, 224, 224, 224, 224, 224, 224, 200, 200, 200, 200, 200,+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,+ 224, 224, 224, 224, 200, 224, 128, 224, 224, 224, 224, 64, 224, 224,+ 224, 224, 224, 244, 240, 224, 244, 244, 244, 244, 244, 244, 244, 244,+ 244, 244, 240, 224, 192, 192, 192, 224, 224, 244, 244, 244, 244, 244,+ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,+ 244, 244, 244, 244, 244, 244, 244, 224, 224, 224, 224, 240, 192, 244,+ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,+ 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 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 yy162;+ } else {+ if (yych <= 'Z')+ goto yy163;+ if (yych <= '`')+ goto yy160;+ if (yych <= 'z')+ goto yy163;+ }+ yy160:+ ++p;+ yy161 : { return 0; }+ yy162:+ yych = *(marker = ++p);+ if (yych <= '@')+ goto yy161;+ if (yych <= 'Z')+ goto yy164;+ if (yych <= '`')+ goto yy161;+ if (yych <= 'z')+ goto yy164;+ goto yy161;+ yy163:+ yych = *(marker = ++p);+ if (yych <= '.') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy161;+ if (yych <= '\r')+ goto yy168;+ goto yy161;+ } else {+ if (yych <= ' ')+ goto yy168;+ if (yych == '-')+ goto yy168;+ goto yy161;+ }+ } else {+ if (yych <= '@') {+ if (yych <= '9')+ goto yy168;+ if (yych == '>')+ goto yy168;+ goto yy161;+ } else {+ if (yych <= 'Z')+ goto yy168;+ if (yych <= '`')+ goto yy161;+ if (yych <= 'z')+ goto yy168;+ goto yy161;+ }+ }+ yy164:+ yych = *++p;+ if (yybm[0 + yych] & 4) {+ goto yy164;+ }+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy165;+ if (yych <= '\r')+ goto yy171;+ } else {+ if (yych <= ' ')+ goto yy171;+ if (yych == '>')+ goto yy170;+ }+ yy165:+ p = marker;+ goto yy161;+ yy166:+ yych = *++p;+ if (yybm[0 + yych] & 8) {+ goto yy166;+ }+ if (yych <= '>') {+ if (yych <= '9') {+ if (yych == '/')+ goto yy169;+ goto yy165;+ } else {+ if (yych <= ':')+ goto yy172;+ if (yych <= '=')+ goto yy165;+ goto yy170;+ }+ } else {+ if (yych <= '^') {+ if (yych <= '@')+ goto yy165;+ if (yych <= 'Z')+ goto yy172;+ goto yy165;+ } else {+ if (yych == '`')+ goto yy165;+ if (yych <= 'z')+ goto yy172;+ goto yy165;+ }+ }+ yy167:+ yych = *++p;+ yy168:+ if (yybm[0 + yych] & 8) {+ goto yy166;+ }+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych == '-')+ goto yy167;+ goto yy165;+ } else {+ if (yych <= '/')+ goto yy169;+ if (yych <= '9')+ goto yy167;+ goto yy165;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy170;+ if (yych <= '@')+ goto yy165;+ goto yy167;+ } else {+ if (yych <= '`')+ goto yy165;+ if (yych <= 'z')+ goto yy167;+ goto yy165;+ }+ }+ yy169:+ yych = *++p;+ if (yych != '>')+ goto yy165;+ yy170:+ ++p;+ { return (bufsize_t)(p - start); }+ yy171:+ yych = *++p;+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy165;+ if (yych <= '\r')+ goto yy171;+ goto yy165;+ } else {+ if (yych <= ' ')+ goto yy171;+ if (yych == '>')+ goto yy170;+ goto yy165;+ }+ yy172:+ yych = *++p;+ if (yybm[0 + yych] & 16) {+ goto yy172;+ }+ if (yych <= ',') {+ if (yych <= '\r') {+ if (yych <= 0x08)+ goto yy165;+ } else {+ if (yych != ' ')+ goto yy165;+ }+ } else {+ if (yych <= '<') {+ if (yych <= '/')+ goto yy169;+ goto yy165;+ } else {+ if (yych <= '=')+ goto yy174;+ if (yych <= '>')+ goto yy170;+ goto yy165;+ }+ }+ yy173:+ yych = *++p;+ if (yych <= '<') {+ if (yych <= ' ') {+ if (yych <= 0x08)+ goto yy165;+ if (yych <= '\r')+ goto yy173;+ if (yych <= 0x1F)+ goto yy165;+ goto yy173;+ } else {+ if (yych <= '/') {+ if (yych <= '.')+ goto yy165;+ goto yy169;+ } else {+ if (yych == ':')+ goto yy172;+ goto yy165;+ }+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '=')+ goto yy174;+ if (yych <= '>')+ goto yy170;+ if (yych <= '@')+ goto yy165;+ goto yy172;+ } else {+ if (yych <= '_') {+ if (yych <= '^')+ goto yy165;+ goto yy172;+ } else {+ if (yych <= '`')+ goto yy165;+ if (yych <= 'z')+ goto yy172;+ goto yy165;+ }+ }+ }+ yy174:+ yych = *++p;+ if (yybm[0 + yych] & 32) {+ goto yy175;+ }+ if (yych <= 0xE0) {+ if (yych <= '"') {+ if (yych <= 0x00)+ goto yy165;+ if (yych <= ' ')+ goto yy174;+ goto yy176;+ } else {+ if (yych <= '\'')+ goto yy177;+ if (yych <= 0xC1)+ goto yy165;+ if (yych <= 0xDF)+ goto yy178;+ goto yy179;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy181;+ goto yy180;+ } else {+ if (yych <= 0xF0)+ goto yy182;+ if (yych <= 0xF3)+ goto yy183;+ if (yych <= 0xF4)+ goto yy184;+ goto yy165;+ }+ }+ yy175:+ yych = *++p;+ if (yybm[0 + yych] & 32) {+ goto yy175;+ }+ if (yych <= 0xE0) {+ if (yych <= '=') {+ if (yych <= 0x00)+ goto yy165;+ if (yych <= ' ')+ goto yy166;+ goto yy165;+ } else {+ if (yych <= '>')+ goto yy170;+ if (yych <= 0xC1)+ goto yy165;+ if (yych <= 0xDF)+ goto yy178;+ goto yy179;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy181;+ goto yy180;+ } else {+ if (yych <= 0xF0)+ goto yy182;+ if (yych <= 0xF3)+ goto yy183;+ if (yych <= 0xF4)+ goto yy184;+ goto yy165;+ }+ }+ yy176:+ yych = *++p;+ if (yybm[0 + yych] & 64) {+ goto yy176;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy165;+ if (yych <= '"')+ goto yy185;+ goto yy165;+ } else {+ if (yych <= 0xDF)+ goto yy186;+ if (yych <= 0xE0)+ goto yy187;+ goto yy188;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy189;+ if (yych <= 0xEF)+ goto yy188;+ goto yy190;+ } else {+ if (yych <= 0xF3)+ goto yy191;+ if (yych <= 0xF4)+ goto yy192;+ goto yy165;+ }+ }+ yy177:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy177;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy165;+ if (yych <= '\'')+ goto yy185;+ goto yy165;+ } else {+ if (yych <= 0xDF)+ goto yy193;+ if (yych <= 0xE0)+ goto yy194;+ goto yy195;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy196;+ if (yych <= 0xEF)+ goto yy195;+ goto yy197;+ } else {+ if (yych <= 0xF3)+ goto yy198;+ if (yych <= 0xF4)+ goto yy199;+ goto yy165;+ }+ }+ yy178:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy175;+ goto yy165;+ yy179:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy178;+ goto yy165;+ yy180:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy178;+ goto yy165;+ yy181:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0x9F)+ goto yy178;+ goto yy165;+ yy182:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy180;+ goto yy165;+ yy183:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy180;+ goto yy165;+ yy184:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0x8F)+ goto yy180;+ goto yy165;+ yy185:+ yych = *++p;+ if (yybm[0 + yych] & 8) {+ goto yy166;+ }+ if (yych == '/')+ goto yy169;+ if (yych == '>')+ goto yy170;+ goto yy165;+ yy186:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy176;+ goto yy165;+ yy187:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy186;+ goto yy165;+ yy188:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy186;+ goto yy165;+ yy189:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0x9F)+ goto yy186;+ goto yy165;+ yy190:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy188;+ goto yy165;+ yy191:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy188;+ goto yy165;+ yy192:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0x8F)+ goto yy188;+ goto yy165;+ yy193:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy177;+ goto yy165;+ yy194:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy193;+ goto yy165;+ yy195:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy193;+ goto yy165;+ yy196:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0x9F)+ goto yy193;+ goto yy165;+ yy197:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy195;+ goto yy165;+ yy198:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0xBF)+ goto yy195;+ goto yy165;+ yy199:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy165;+ if (yych <= 0x8F)+ goto yy195;+ goto yy165;+ }+}++// Try to (liberally) match an HTML tag after first <, returning num of chars+// matched.+bufsize_t _scan_liberal_html_tag(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 <= 0xE0) {+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy201;+ if (yych <= '\t')+ goto yy203;+ } else {+ if (yych <= 0x7F)+ goto yy203;+ if (yych <= 0xC1)+ goto yy201;+ if (yych <= 0xDF)+ goto yy204;+ goto yy205;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy207;+ goto yy206;+ } else {+ if (yych <= 0xF0)+ goto yy208;+ if (yych <= 0xF3)+ goto yy209;+ if (yych <= 0xF4)+ goto yy210;+ }+ }+ yy201:+ ++p;+ yy202 : { return 0; }+ yy203:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy202;+ if (yych <= '\t')+ goto yy212;+ goto yy202;+ } else {+ if (yych <= 0x7F)+ goto yy212;+ if (yych <= 0xC1)+ goto yy202;+ if (yych <= 0xF4)+ goto yy212;+ goto yy202;+ }+ yy204:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy202;+ if (yych <= 0xBF)+ goto yy211;+ goto yy202;+ yy205:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x9F)+ goto yy202;+ if (yych <= 0xBF)+ goto yy216;+ goto yy202;+ yy206:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy202;+ if (yych <= 0xBF)+ goto yy216;+ goto yy202;+ yy207:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy202;+ if (yych <= 0x9F)+ goto yy216;+ goto yy202;+ yy208:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x8F)+ goto yy202;+ if (yych <= 0xBF)+ goto yy218;+ goto yy202;+ yy209:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy202;+ if (yych <= 0xBF)+ goto yy218;+ goto yy202;+ yy210:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy202;+ if (yych <= 0x8F)+ goto yy218;+ goto yy202;+ yy211:+ yych = *++p;+ yy212:+ if (yybm[0 + yych] & 64) {+ goto yy211;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy213;+ if (yych <= '>')+ goto yy214;+ } else {+ if (yych <= 0xDF)+ goto yy216;+ if (yych <= 0xE0)+ goto yy217;+ goto yy218;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy219;+ if (yych <= 0xEF)+ goto yy218;+ goto yy220;+ } else {+ if (yych <= 0xF3)+ goto yy221;+ if (yych <= 0xF4)+ goto yy222;+ }+ }+ yy213:+ p = marker;+ if (yyaccept == 0) {+ goto yy202;+ } else {+ goto yy215;+ }+ yy214:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 64) {+ goto yy211;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy215;+ if (yych <= '>')+ goto yy214;+ } else {+ if (yych <= 0xDF)+ goto yy216;+ if (yych <= 0xE0)+ goto yy217;+ goto yy218;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy219;+ if (yych <= 0xEF)+ goto yy218;+ goto yy220;+ } else {+ if (yych <= 0xF3)+ goto yy221;+ if (yych <= 0xF4)+ goto yy222;+ }+ }+ yy215 : { return (bufsize_t)(p - start); }+ yy216:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy213;+ if (yych <= 0xBF)+ goto yy211;+ goto yy213;+ yy217:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy213;+ if (yych <= 0xBF)+ goto yy216;+ goto yy213;+ yy218:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy213;+ if (yych <= 0xBF)+ goto yy216;+ goto yy213;+ yy219:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy213;+ if (yych <= 0x9F)+ goto yy216;+ goto yy213;+ yy220:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy213;+ if (yych <= 0xBF)+ goto yy218;+ goto yy213;+ yy221:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy213;+ if (yych <= 0xBF)+ goto yy218;+ goto yy213;+ yy222:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy213;+ if (yych <= 0x8F)+ goto yy218;+ goto yy213;+ }+}++bufsize_t _scan_html_comment(const unsigned char *p) {+ const unsigned char *marker = NULL;+ const unsigned char *start = p;++ {+ unsigned char yych;+ static const unsigned char yybm[] = {+ 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, 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, 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 yy225;+ ++p;+ yy224 : { return 0; }+ yy225:+ yych = *(marker = ++p);+ if (yych != '-')+ goto yy224;+ yy226:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy226;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy227;+ if (yych <= '-')+ goto yy228;+ } else {+ if (yych <= 0xDF)+ goto yy229;+ if (yych <= 0xE0)+ goto yy230;+ goto yy231;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy232;+ if (yych <= 0xEF)+ goto yy231;+ goto yy233;+ } else {+ if (yych <= 0xF3)+ goto yy234;+ if (yych <= 0xF4)+ goto yy235;+ }+ }+ yy227:+ p = marker;+ goto yy224;+ yy228:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy226;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy227;+ if (yych <= '-')+ goto yy236;+ goto yy227;+ } else {+ if (yych <= 0xDF)+ goto yy229;+ if (yych <= 0xE0)+ goto yy230;+ goto yy231;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy232;+ if (yych <= 0xEF)+ goto yy231;+ goto yy233;+ } else {+ if (yych <= 0xF3)+ goto yy234;+ if (yych <= 0xF4)+ goto yy235;+ goto yy227;+ }+ }+ yy229:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy227;+ if (yych <= 0xBF)+ goto yy226;+ goto yy227;+ yy230:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy227;+ if (yych <= 0xBF)+ goto yy229;+ goto yy227;+ yy231:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy227;+ if (yych <= 0xBF)+ goto yy229;+ goto yy227;+ yy232:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy227;+ if (yych <= 0x9F)+ goto yy229;+ goto yy227;+ yy233:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy227;+ if (yych <= 0xBF)+ goto yy231;+ goto yy227;+ yy234:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy227;+ if (yych <= 0xBF)+ goto yy231;+ goto yy227;+ yy235:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy227;+ if (yych <= 0x8F)+ goto yy231;+ goto yy227;+ yy236:+ yych = *++p;+ if (yych <= 0xE0) {+ if (yych <= '>') {+ if (yych <= 0x00)+ goto yy227;+ if (yych <= '=')+ goto yy226;+ } else {+ if (yych <= 0x7F)+ goto yy226;+ if (yych <= 0xC1)+ goto yy227;+ if (yych <= 0xDF)+ goto yy229;+ goto yy230;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy232;+ goto yy231;+ } else {+ if (yych <= 0xF0)+ goto yy233;+ if (yych <= 0xF3)+ goto yy234;+ if (yych <= 0xF4)+ goto yy235;+ goto yy227;+ }+ }+ ++p;+ { return (bufsize_t)(p - start); }+ }+}++bufsize_t _scan_html_pi(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, 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, 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] & 128) {+ goto yy240;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy238;+ if (yych <= '?')+ goto yy243;+ } else {+ if (yych <= 0xDF)+ goto yy244;+ if (yych <= 0xE0)+ goto yy245;+ goto yy246;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy247;+ if (yych <= 0xEF)+ goto yy246;+ goto yy248;+ } else {+ if (yych <= 0xF3)+ goto yy249;+ if (yych <= 0xF4)+ goto yy250;+ }+ }+ yy238:+ ++p;+ yy239 : { return 0; }+ yy240:+ yyaccept = 0;+ yych = *(marker = ++p);+ yy241:+ if (yybm[0 + yych] & 128) {+ goto yy240;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy242;+ if (yych <= '?')+ goto yy251;+ } else {+ if (yych <= 0xDF)+ goto yy253;+ if (yych <= 0xE0)+ goto yy254;+ goto yy255;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy256;+ if (yych <= 0xEF)+ goto yy255;+ goto yy257;+ } else {+ if (yych <= 0xF3)+ goto yy258;+ if (yych <= 0xF4)+ goto yy259;+ }+ }+ yy242 : { return (bufsize_t)(p - start); }+ yy243:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= '?') {+ if (yych <= 0x00)+ goto yy239;+ if (yych <= '=')+ goto yy241;+ if (yych <= '>')+ goto yy239;+ goto yy240;+ } else {+ if (yych <= 0x7F)+ goto yy241;+ if (yych <= 0xC1)+ goto yy239;+ if (yych <= 0xF4)+ goto yy241;+ goto yy239;+ }+ yy244:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy239;+ if (yych <= 0xBF)+ goto yy240;+ goto yy239;+ yy245:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x9F)+ goto yy239;+ if (yych <= 0xBF)+ goto yy253;+ goto yy239;+ yy246:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy239;+ if (yych <= 0xBF)+ goto yy253;+ goto yy239;+ yy247:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy239;+ if (yych <= 0x9F)+ goto yy253;+ goto yy239;+ yy248:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x8F)+ goto yy239;+ if (yych <= 0xBF)+ goto yy255;+ goto yy239;+ yy249:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy239;+ if (yych <= 0xBF)+ goto yy255;+ goto yy239;+ yy250:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy239;+ if (yych <= 0x8F)+ goto yy255;+ goto yy239;+ yy251:+ yych = *++p;+ if (yych <= 0xE0) {+ if (yych <= '>') {+ if (yych <= 0x00)+ goto yy252;+ if (yych <= '=')+ goto yy240;+ } else {+ if (yych <= 0x7F)+ goto yy240;+ if (yych <= 0xC1)+ goto yy252;+ if (yych <= 0xDF)+ goto yy253;+ goto yy254;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy256;+ goto yy255;+ } else {+ if (yych <= 0xF0)+ goto yy257;+ if (yych <= 0xF3)+ goto yy258;+ if (yych <= 0xF4)+ goto yy259;+ }+ }+ yy252:+ p = marker;+ if (yyaccept == 0) {+ goto yy242;+ } else {+ goto yy239;+ }+ yy253:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy252;+ if (yych <= 0xBF)+ goto yy240;+ goto yy252;+ yy254:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy252;+ if (yych <= 0xBF)+ goto yy253;+ goto yy252;+ yy255:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy252;+ if (yych <= 0xBF)+ goto yy253;+ goto yy252;+ yy256:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy252;+ if (yych <= 0x9F)+ goto yy253;+ goto yy252;+ yy257:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy252;+ if (yych <= 0xBF)+ goto yy255;+ goto yy252;+ yy258:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy252;+ if (yych <= 0xBF)+ goto yy255;+ goto yy252;+ yy259:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy252;+ if (yych <= 0x8F)+ goto yy255;+ goto yy252;+ }+}++bufsize_t _scan_html_declaration(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, 64, 64, 64, 64,+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 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, 64, 64, 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, 64, 64, 64, 64, 64, 64, 64,+ 64, 64, 64, 64, 64, 64, 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 <= '@')+ goto yy261;+ if (yych <= 'Z')+ goto yy263;+ yy261:+ ++p;+ yy262 : { return 0; }+ yy263:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 128) {+ goto yy266;+ }+ if (yych <= 0x08)+ goto yy262;+ if (yych <= '\r')+ goto yy264;+ if (yych != ' ')+ goto yy262;+ yy264:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 64) {+ goto yy264;+ }+ if (yych <= 0xED) {+ if (yych <= 0xDF) {+ if (yych >= 0xC2)+ goto yy268;+ } else {+ if (yych <= 0xE0)+ goto yy269;+ if (yych <= 0xEC)+ goto yy270;+ goto yy271;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy270;+ goto yy272;+ } else {+ if (yych <= 0xF3)+ goto yy273;+ if (yych <= 0xF4)+ goto yy274;+ }+ }+ yy265 : { return (bufsize_t)(p - start); }+ yy266:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy266;+ }+ if (yych <= 0x08)+ goto yy267;+ if (yych <= '\r')+ goto yy264;+ if (yych == ' ')+ goto yy264;+ yy267:+ p = marker;+ if (yyaccept == 0) {+ goto yy262;+ } else {+ goto yy265;+ }+ yy268:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy267;+ if (yych <= 0xBF)+ goto yy264;+ goto yy267;+ yy269:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy267;+ if (yych <= 0xBF)+ goto yy268;+ goto yy267;+ yy270:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy267;+ if (yych <= 0xBF)+ goto yy268;+ goto yy267;+ yy271:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy267;+ if (yych <= 0x9F)+ goto yy268;+ goto yy267;+ yy272:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy267;+ if (yych <= 0xBF)+ goto yy270;+ goto yy267;+ yy273:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy267;+ if (yych <= 0xBF)+ goto yy270;+ goto yy267;+ yy274:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy267;+ if (yych <= 0x8F)+ goto yy270;+ goto yy267;+ }+}++bufsize_t _scan_html_cdata(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, 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, 128, 128, 128, 128, 128, 128, 128, 128, 128,+ 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 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 == 'C')+ goto yy277;+ if (yych == 'c')+ goto yy277;+ ++p;+ yy276 : { return 0; }+ yy277:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych == 'D')+ goto yy278;+ if (yych != 'd')+ goto yy276;+ yy278:+ yych = *++p;+ if (yych == 'A')+ goto yy280;+ if (yych == 'a')+ goto yy280;+ yy279:+ p = marker;+ if (yyaccept == 0) {+ goto yy276;+ } else {+ goto yy284;+ }+ yy280:+ yych = *++p;+ if (yych == 'T')+ goto yy281;+ if (yych != 't')+ goto yy279;+ yy281:+ yych = *++p;+ if (yych == 'A')+ goto yy282;+ if (yych != 'a')+ goto yy279;+ yy282:+ yych = *++p;+ if (yych != '[')+ goto yy279;+ yy283:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 128) {+ goto yy283;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy284;+ if (yych <= ']')+ goto yy285;+ } else {+ if (yych <= 0xDF)+ goto yy286;+ if (yych <= 0xE0)+ goto yy287;+ goto yy288;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy289;+ if (yych <= 0xEF)+ goto yy288;+ goto yy290;+ } else {+ if (yych <= 0xF3)+ goto yy291;+ if (yych <= 0xF4)+ goto yy292;+ }+ }+ yy284 : { return (bufsize_t)(p - start); }+ yy285:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy283;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy279;+ if (yych <= ']')+ goto yy293;+ goto yy279;+ } else {+ if (yych <= 0xDF)+ goto yy286;+ if (yych <= 0xE0)+ goto yy287;+ goto yy288;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy289;+ if (yych <= 0xEF)+ goto yy288;+ goto yy290;+ } else {+ if (yych <= 0xF3)+ goto yy291;+ if (yych <= 0xF4)+ goto yy292;+ goto yy279;+ }+ }+ yy286:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy279;+ if (yych <= 0xBF)+ goto yy283;+ goto yy279;+ yy287:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy279;+ if (yych <= 0xBF)+ goto yy286;+ goto yy279;+ yy288:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy279;+ if (yych <= 0xBF)+ goto yy286;+ goto yy279;+ yy289:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy279;+ if (yych <= 0x9F)+ goto yy286;+ goto yy279;+ yy290:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy279;+ if (yych <= 0xBF)+ goto yy288;+ goto yy279;+ yy291:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy279;+ if (yych <= 0xBF)+ goto yy288;+ goto yy279;+ yy292:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy279;+ if (yych <= 0x8F)+ goto yy288;+ goto yy279;+ yy293:+ yych = *++p;+ if (yych <= 0xE0) {+ if (yych <= '>') {+ if (yych <= 0x00)+ goto yy279;+ if (yych <= '=')+ goto yy283;+ goto yy279;+ } else {+ if (yych <= 0x7F)+ goto yy283;+ if (yych <= 0xC1)+ goto yy279;+ if (yych <= 0xDF)+ goto yy286;+ goto yy287;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy289;+ goto yy288;+ } else {+ if (yych <= 0xF0)+ goto yy290;+ if (yych <= 0xF3)+ goto yy291;+ if (yych <= 0xF4)+ goto yy292;+ goto yy279;+ }+ }+ }+}++// 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 yy296;+ ++p;+ yy295 : { return 0; }+ yy296:+ yych = *(marker = ++p);+ switch (yych) {+ case '!':+ goto yy297;+ case '/':+ goto yy299;+ case '?':+ goto yy300;+ case 'A':+ case 'a':+ goto yy301;+ case 'B':+ case 'b':+ goto yy302;+ case 'C':+ case 'c':+ goto yy303;+ case 'D':+ case 'd':+ goto yy304;+ case 'F':+ case 'f':+ goto yy305;+ case 'H':+ case 'h':+ goto yy306;+ case 'I':+ case 'i':+ goto yy307;+ case 'L':+ case 'l':+ goto yy308;+ case 'M':+ case 'm':+ goto yy309;+ case 'N':+ case 'n':+ goto yy310;+ case 'O':+ case 'o':+ goto yy311;+ case 'P':+ case 'p':+ goto yy312;+ case 'S':+ case 's':+ goto yy313;+ case 'T':+ case 't':+ goto yy314;+ case 'U':+ case 'u':+ goto yy315;+ default:+ goto yy295;+ }+ yy297:+ yych = *++p;+ if (yych <= '@') {+ if (yych == '-')+ goto yy316;+ } else {+ if (yych <= 'Z')+ goto yy317;+ if (yych <= '[')+ goto yy318;+ }+ yy298:+ p = marker;+ goto yy295;+ yy299:+ yych = *++p;+ switch (yych) {+ case 'A':+ case 'a':+ goto yy301;+ case 'B':+ case 'b':+ goto yy302;+ case 'C':+ case 'c':+ goto yy303;+ case 'D':+ case 'd':+ goto yy304;+ case 'F':+ case 'f':+ goto yy305;+ case 'H':+ case 'h':+ goto yy306;+ case 'I':+ case 'i':+ goto yy307;+ case 'L':+ case 'l':+ goto yy308;+ case 'M':+ case 'm':+ goto yy309;+ case 'N':+ case 'n':+ goto yy310;+ case 'O':+ case 'o':+ goto yy311;+ case 'P':+ case 'p':+ goto yy319;+ case 'S':+ case 's':+ goto yy320;+ case 'T':+ case 't':+ goto yy321;+ case 'U':+ case 'u':+ goto yy315;+ default:+ goto yy298;+ }+ yy300:+ ++p;+ { return 3; }+ yy301:+ yych = *++p;+ if (yych <= 'S') {+ if (yych <= 'D') {+ if (yych <= 'C')+ goto yy298;+ goto yy322;+ } else {+ if (yych <= 'Q')+ goto yy298;+ if (yych <= 'R')+ goto yy323;+ goto yy324;+ }+ } else {+ if (yych <= 'q') {+ if (yych == 'd')+ goto yy322;+ goto yy298;+ } else {+ if (yych <= 'r')+ goto yy323;+ if (yych <= 's')+ goto yy324;+ goto yy298;+ }+ }+ yy302:+ yych = *++p;+ if (yych <= 'O') {+ if (yych <= 'K') {+ if (yych == 'A')+ goto yy325;+ goto yy298;+ } else {+ if (yych <= 'L')+ goto yy326;+ if (yych <= 'N')+ goto yy298;+ goto yy327;+ }+ } else {+ if (yych <= 'k') {+ if (yych == 'a')+ goto yy325;+ goto yy298;+ } else {+ if (yych <= 'l')+ goto yy326;+ if (yych == 'o')+ goto yy327;+ goto yy298;+ }+ }+ yy303:+ yych = *++p;+ if (yych <= 'O') {+ if (yych <= 'D') {+ if (yych == 'A')+ goto yy328;+ goto yy298;+ } else {+ if (yych <= 'E')+ goto yy329;+ if (yych <= 'N')+ goto yy298;+ goto yy330;+ }+ } else {+ if (yych <= 'd') {+ if (yych == 'a')+ goto yy328;+ goto yy298;+ } else {+ if (yych <= 'e')+ goto yy329;+ if (yych == 'o')+ goto yy330;+ goto yy298;+ }+ }+ yy304:+ yych = *++p;+ switch (yych) {+ case 'D':+ case 'L':+ case 'T':+ case 'd':+ case 'l':+ case 't':+ goto yy331;+ case 'E':+ case 'e':+ goto yy332;+ case 'I':+ case 'i':+ goto yy333;+ default:+ goto yy298;+ }+ yy305:+ yych = *++p;+ if (yych <= 'R') {+ if (yych <= 'N') {+ if (yych == 'I')+ goto yy334;+ goto yy298;+ } else {+ if (yych <= 'O')+ goto yy335;+ if (yych <= 'Q')+ goto yy298;+ goto yy336;+ }+ } else {+ if (yych <= 'n') {+ if (yych == 'i')+ goto yy334;+ goto yy298;+ } else {+ if (yych <= 'o')+ goto yy335;+ if (yych == 'r')+ goto yy336;+ goto yy298;+ }+ }+ yy306:+ yych = *++p;+ if (yych <= 'S') {+ if (yych <= 'D') {+ if (yych <= '0')+ goto yy298;+ if (yych <= '6')+ goto yy331;+ goto yy298;+ } else {+ if (yych <= 'E')+ goto yy337;+ if (yych == 'R')+ goto yy331;+ goto yy298;+ }+ } else {+ if (yych <= 'q') {+ if (yych <= 'T')+ goto yy338;+ if (yych == 'e')+ goto yy337;+ goto yy298;+ } else {+ if (yych <= 'r')+ goto yy331;+ if (yych == 't')+ goto yy338;+ goto yy298;+ }+ }+ yy307:+ yych = *++p;+ if (yych == 'F')+ goto yy339;+ if (yych == 'f')+ goto yy339;+ goto yy298;+ yy308:+ yych = *++p;+ if (yych <= 'I') {+ if (yych == 'E')+ goto yy340;+ if (yych <= 'H')+ goto yy298;+ goto yy341;+ } else {+ if (yych <= 'e') {+ if (yych <= 'd')+ goto yy298;+ goto yy340;+ } else {+ if (yych == 'i')+ goto yy341;+ goto yy298;+ }+ }+ yy309:+ yych = *++p;+ if (yych <= 'E') {+ if (yych == 'A')+ goto yy342;+ if (yych <= 'D')+ goto yy298;+ goto yy343;+ } else {+ if (yych <= 'a') {+ if (yych <= '`')+ goto yy298;+ goto yy342;+ } else {+ if (yych == 'e')+ goto yy343;+ goto yy298;+ }+ }+ yy310:+ yych = *++p;+ if (yych <= 'O') {+ if (yych == 'A')+ goto yy344;+ if (yych <= 'N')+ goto yy298;+ goto yy345;+ } else {+ if (yych <= 'a') {+ if (yych <= '`')+ goto yy298;+ goto yy344;+ } else {+ if (yych == 'o')+ goto yy345;+ goto yy298;+ }+ }+ yy311:+ yych = *++p;+ if (yych <= 'P') {+ if (yych == 'L')+ goto yy331;+ if (yych <= 'O')+ goto yy298;+ goto yy346;+ } else {+ if (yych <= 'l') {+ if (yych <= 'k')+ goto yy298;+ goto yy331;+ } else {+ if (yych == 'p')+ goto yy346;+ goto yy298;+ }+ }+ yy312:+ yych = *++p;+ if (yych <= '>') {+ if (yych <= ' ') {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ if (yych <= 0x1F)+ goto yy298;+ goto yy347;+ } else {+ if (yych == '/')+ goto yy348;+ if (yych <= '=')+ goto yy298;+ goto yy347;+ }+ } else {+ if (yych <= 'R') {+ if (yych == 'A')+ goto yy349;+ if (yych <= 'Q')+ goto yy298;+ goto yy350;+ } else {+ if (yych <= 'a') {+ if (yych <= '`')+ goto yy298;+ goto yy349;+ } else {+ if (yych == 'r')+ goto yy350;+ goto yy298;+ }+ }+ }+ yy313:+ yych = *++p;+ switch (yych) {+ case 'C':+ case 'c':+ goto yy351;+ case 'E':+ case 'e':+ goto yy352;+ case 'O':+ case 'o':+ goto yy353;+ case 'T':+ case 't':+ goto yy354;+ case 'U':+ case 'u':+ goto yy355;+ default:+ goto yy298;+ }+ yy314:+ yych = *++p;+ switch (yych) {+ case 'A':+ case 'a':+ goto yy356;+ case 'B':+ case 'b':+ goto yy357;+ case 'D':+ case 'd':+ goto yy331;+ case 'E':+ case 'e':+ goto yy358;+ case 'F':+ case 'f':+ goto yy359;+ case 'H':+ case 'h':+ goto yy360;+ case 'I':+ case 'i':+ goto yy361;+ case 'R':+ case 'r':+ goto yy362;+ default:+ goto yy298;+ }+ yy315:+ yych = *++p;+ if (yych == 'L')+ goto yy331;+ if (yych == 'l')+ goto yy331;+ goto yy298;+ yy316:+ yych = *++p;+ if (yych == '-')+ goto yy363;+ goto yy298;+ yy317:+ ++p;+ { return 4; }+ yy318:+ yych = *++p;+ if (yych == 'C')+ goto yy364;+ if (yych == 'c')+ goto yy364;+ goto yy298;+ yy319:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy347;+ if (yych <= '.')+ goto yy298;+ goto yy348;+ }+ } else {+ if (yych <= '@') {+ if (yych == '>')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= 'A')+ goto yy349;+ if (yych == 'a')+ goto yy349;+ goto yy298;+ }+ }+ yy320:+ yych = *++p;+ if (yych <= 'U') {+ if (yych <= 'N') {+ if (yych == 'E')+ goto yy352;+ goto yy298;+ } else {+ if (yych <= 'O')+ goto yy353;+ if (yych <= 'T')+ goto yy298;+ goto yy355;+ }+ } else {+ if (yych <= 'n') {+ if (yych == 'e')+ goto yy352;+ goto yy298;+ } else {+ if (yych <= 'o')+ goto yy353;+ if (yych == 'u')+ goto yy355;+ goto yy298;+ }+ }+ yy321:+ yych = *++p;+ switch (yych) {+ case 'A':+ case 'a':+ goto yy356;+ case 'B':+ case 'b':+ goto yy357;+ case 'D':+ case 'd':+ goto yy331;+ case 'F':+ case 'f':+ goto yy359;+ case 'H':+ case 'h':+ goto yy360;+ case 'I':+ case 'i':+ goto yy361;+ case 'R':+ case 'r':+ goto yy362;+ default:+ goto yy298;+ }+ yy322:+ yych = *++p;+ if (yych == 'D')+ goto yy365;+ if (yych == 'd')+ goto yy365;+ goto yy298;+ yy323:+ yych = *++p;+ if (yych == 'T')+ goto yy366;+ if (yych == 't')+ goto yy366;+ goto yy298;+ yy324:+ yych = *++p;+ if (yych == 'I')+ goto yy367;+ if (yych == 'i')+ goto yy367;+ goto yy298;+ yy325:+ yych = *++p;+ if (yych == 'S')+ goto yy368;+ if (yych == 's')+ goto yy368;+ goto yy298;+ yy326:+ yych = *++p;+ if (yych == 'O')+ goto yy369;+ if (yych == 'o')+ goto yy369;+ goto yy298;+ yy327:+ yych = *++p;+ if (yych == 'D')+ goto yy370;+ if (yych == 'd')+ goto yy370;+ goto yy298;+ yy328:+ yych = *++p;+ if (yych == 'P')+ goto yy371;+ if (yych == 'p')+ goto yy371;+ goto yy298;+ yy329:+ yych = *++p;+ if (yych == 'N')+ goto yy372;+ if (yych == 'n')+ goto yy372;+ goto yy298;+ yy330:+ yych = *++p;+ if (yych == 'L')+ goto yy373;+ if (yych == 'l')+ goto yy373;+ goto yy298;+ yy331:+ yych = *++p;+ if (yych <= ' ') {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ if (yych <= 0x1F)+ goto yy298;+ goto yy347;+ } else {+ if (yych <= '/') {+ if (yych <= '.')+ goto yy298;+ goto yy348;+ } else {+ if (yych == '>')+ goto yy347;+ goto yy298;+ }+ }+ yy332:+ yych = *++p;+ if (yych == 'T')+ goto yy374;+ if (yych == 't')+ goto yy374;+ goto yy298;+ yy333:+ yych = *++p;+ if (yych <= 'V') {+ if (yych <= 'Q') {+ if (yych == 'A')+ goto yy375;+ goto yy298;+ } else {+ if (yych <= 'R')+ goto yy331;+ if (yych <= 'U')+ goto yy298;+ goto yy331;+ }+ } else {+ if (yych <= 'q') {+ if (yych == 'a')+ goto yy375;+ goto yy298;+ } else {+ if (yych <= 'r')+ goto yy331;+ if (yych == 'v')+ goto yy331;+ goto yy298;+ }+ }+ yy334:+ yych = *++p;+ if (yych <= 'G') {+ if (yych == 'E')+ goto yy376;+ if (yych <= 'F')+ goto yy298;+ goto yy377;+ } else {+ if (yych <= 'e') {+ if (yych <= 'd')+ goto yy298;+ goto yy376;+ } else {+ if (yych == 'g')+ goto yy377;+ goto yy298;+ }+ }+ yy335:+ yych = *++p;+ if (yych <= 'R') {+ if (yych == 'O')+ goto yy372;+ if (yych <= 'Q')+ goto yy298;+ goto yy378;+ } else {+ if (yych <= 'o') {+ if (yych <= 'n')+ goto yy298;+ goto yy372;+ } else {+ if (yych == 'r')+ goto yy378;+ goto yy298;+ }+ }+ yy336:+ yych = *++p;+ if (yych == 'A')+ goto yy379;+ if (yych == 'a')+ goto yy379;+ goto yy298;+ yy337:+ yych = *++p;+ if (yych == 'A')+ goto yy380;+ if (yych == 'a')+ goto yy380;+ goto yy298;+ yy338:+ yych = *++p;+ if (yych == 'M')+ goto yy315;+ if (yych == 'm')+ goto yy315;+ goto yy298;+ yy339:+ yych = *++p;+ if (yych == 'R')+ goto yy381;+ if (yych == 'r')+ goto yy381;+ goto yy298;+ yy340:+ yych = *++p;+ if (yych == 'G')+ goto yy382;+ if (yych == 'g')+ goto yy382;+ goto yy298;+ yy341:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy347;+ if (yych <= '.')+ goto yy298;+ goto yy348;+ }+ } else {+ if (yych <= 'M') {+ if (yych == '>')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= 'N')+ goto yy383;+ if (yych == 'n')+ goto yy383;+ goto yy298;+ }+ }+ yy342:+ yych = *++p;+ if (yych == 'I')+ goto yy384;+ if (yych == 'i')+ goto yy384;+ goto yy298;+ yy343:+ yych = *++p;+ if (yych == 'N')+ goto yy385;+ if (yych == 'n')+ goto yy385;+ goto yy298;+ yy344:+ yych = *++p;+ if (yych == 'V')+ goto yy331;+ if (yych == 'v')+ goto yy331;+ goto yy298;+ yy345:+ yych = *++p;+ if (yych == 'F')+ goto yy386;+ if (yych == 'f')+ goto yy386;+ goto yy298;+ yy346:+ yych = *++p;+ if (yych == 'T')+ goto yy387;+ if (yych == 't')+ goto yy387;+ goto yy298;+ yy347:+ ++p;+ { return 6; }+ yy348:+ yych = *++p;+ if (yych == '>')+ goto yy347;+ goto yy298;+ yy349:+ yych = *++p;+ if (yych == 'R')+ goto yy388;+ if (yych == 'r')+ goto yy388;+ goto yy298;+ yy350:+ yych = *++p;+ if (yych == 'E')+ goto yy389;+ if (yych == 'e')+ goto yy389;+ goto yy298;+ yy351:+ yych = *++p;+ if (yych == 'R')+ goto yy390;+ if (yych == 'r')+ goto yy390;+ goto yy298;+ yy352:+ yych = *++p;+ if (yych == 'C')+ goto yy371;+ if (yych == 'c')+ goto yy371;+ goto yy298;+ yy353:+ yych = *++p;+ if (yych == 'U')+ goto yy391;+ if (yych == 'u')+ goto yy391;+ goto yy298;+ yy354:+ yych = *++p;+ if (yych == 'Y')+ goto yy392;+ if (yych == 'y')+ goto yy392;+ goto yy298;+ yy355:+ yych = *++p;+ if (yych == 'M')+ goto yy393;+ if (yych == 'm')+ goto yy393;+ goto yy298;+ yy356:+ yych = *++p;+ if (yych == 'B')+ goto yy394;+ if (yych == 'b')+ goto yy394;+ goto yy298;+ yy357:+ yych = *++p;+ if (yych == 'O')+ goto yy327;+ if (yych == 'o')+ goto yy327;+ goto yy298;+ yy358:+ yych = *++p;+ if (yych == 'X')+ goto yy395;+ if (yych == 'x')+ goto yy395;+ goto yy298;+ yy359:+ yych = *++p;+ if (yych == 'O')+ goto yy396;+ if (yych == 'o')+ goto yy396;+ goto yy298;+ yy360:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy347;+ if (yych <= '.')+ goto yy298;+ goto yy348;+ }+ } else {+ if (yych <= 'D') {+ if (yych == '>')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= 'E')+ goto yy397;+ if (yych == 'e')+ goto yy397;+ goto yy298;+ }+ }+ yy361:+ yych = *++p;+ if (yych == 'T')+ goto yy394;+ if (yych == 't')+ goto yy394;+ goto yy298;+ yy362:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy347;+ if (yych <= '.')+ goto yy298;+ goto yy348;+ }+ } else {+ if (yych <= '@') {+ if (yych == '>')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= 'A')+ goto yy398;+ if (yych == 'a')+ goto yy398;+ goto yy298;+ }+ }+ yy363:+ ++p;+ { return 2; }+ yy364:+ yych = *++p;+ if (yych == 'D')+ goto yy399;+ if (yych == 'd')+ goto yy399;+ goto yy298;+ yy365:+ yych = *++p;+ if (yych == 'R')+ goto yy400;+ if (yych == 'r')+ goto yy400;+ goto yy298;+ yy366:+ yych = *++p;+ if (yych == 'I')+ goto yy401;+ if (yych == 'i')+ goto yy401;+ goto yy298;+ yy367:+ yych = *++p;+ if (yych == 'D')+ goto yy402;+ if (yych == 'd')+ goto yy402;+ goto yy298;+ yy368:+ yych = *++p;+ if (yych == 'E')+ goto yy403;+ if (yych == 'e')+ goto yy403;+ goto yy298;+ yy369:+ yych = *++p;+ if (yych == 'C')+ goto yy404;+ if (yych == 'c')+ goto yy404;+ goto yy298;+ yy370:+ yych = *++p;+ if (yych == 'Y')+ goto yy331;+ if (yych == 'y')+ goto yy331;+ goto yy298;+ yy371:+ yych = *++p;+ if (yych == 'T')+ goto yy405;+ if (yych == 't')+ goto yy405;+ goto yy298;+ yy372:+ yych = *++p;+ if (yych == 'T')+ goto yy406;+ if (yych == 't')+ goto yy406;+ goto yy298;+ yy373:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy347;+ if (yych <= '.')+ goto yy298;+ goto yy348;+ }+ } else {+ if (yych <= 'F') {+ if (yych == '>')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= 'G')+ goto yy407;+ if (yych == 'g')+ goto yy407;+ goto yy298;+ }+ }+ yy374:+ yych = *++p;+ if (yych == 'A')+ goto yy408;+ if (yych == 'a')+ goto yy408;+ goto yy298;+ yy375:+ yych = *++p;+ if (yych == 'L')+ goto yy409;+ if (yych == 'l')+ goto yy409;+ goto yy298;+ yy376:+ yych = *++p;+ if (yych == 'L')+ goto yy410;+ if (yych == 'l')+ goto yy410;+ goto yy298;+ yy377:+ yych = *++p;+ if (yych <= 'U') {+ if (yych == 'C')+ goto yy411;+ if (yych <= 'T')+ goto yy298;+ goto yy412;+ } else {+ if (yych <= 'c') {+ if (yych <= 'b')+ goto yy298;+ goto yy411;+ } else {+ if (yych == 'u')+ goto yy412;+ goto yy298;+ }+ }+ yy378:+ yych = *++p;+ if (yych == 'M')+ goto yy331;+ if (yych == 'm')+ goto yy331;+ goto yy298;+ yy379:+ yych = *++p;+ if (yych == 'M')+ goto yy413;+ if (yych == 'm')+ goto yy413;+ goto yy298;+ yy380:+ yych = *++p;+ if (yych == 'D')+ goto yy414;+ if (yych == 'd')+ goto yy414;+ goto yy298;+ yy381:+ yych = *++p;+ if (yych == 'A')+ goto yy415;+ if (yych == 'a')+ goto yy415;+ goto yy298;+ yy382:+ yych = *++p;+ if (yych == 'E')+ goto yy416;+ if (yych == 'e')+ goto yy416;+ goto yy298;+ yy383:+ yych = *++p;+ if (yych == 'K')+ goto yy331;+ if (yych == 'k')+ goto yy331;+ goto yy298;+ yy384:+ yych = *++p;+ if (yych == 'N')+ goto yy331;+ if (yych == 'n')+ goto yy331;+ goto yy298;+ yy385:+ yych = *++p;+ if (yych == 'U')+ goto yy417;+ if (yych == 'u')+ goto yy417;+ goto yy298;+ yy386:+ yych = *++p;+ if (yych == 'R')+ goto yy418;+ if (yych == 'r')+ goto yy418;+ goto yy298;+ yy387:+ yych = *++p;+ if (yych <= 'I') {+ if (yych == 'G')+ goto yy407;+ if (yych <= 'H')+ goto yy298;+ goto yy419;+ } else {+ if (yych <= 'g') {+ if (yych <= 'f')+ goto yy298;+ goto yy407;+ } else {+ if (yych == 'i')+ goto yy419;+ goto yy298;+ }+ }+ yy388:+ yych = *++p;+ if (yych == 'A')+ goto yy378;+ if (yych == 'a')+ goto yy378;+ goto yy298;+ yy389:+ yych = *++p;+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy420;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy420;+ if (yych == '>')+ goto yy420;+ goto yy298;+ }+ yy390:+ yych = *++p;+ if (yych == 'I')+ goto yy421;+ if (yych == 'i')+ goto yy421;+ goto yy298;+ yy391:+ yych = *++p;+ if (yych == 'R')+ goto yy422;+ if (yych == 'r')+ goto yy422;+ goto yy298;+ yy392:+ yych = *++p;+ if (yych == 'L')+ goto yy350;+ if (yych == 'l')+ goto yy350;+ goto yy298;+ yy393:+ yych = *++p;+ if (yych == 'M')+ goto yy423;+ if (yych == 'm')+ goto yy423;+ goto yy298;+ yy394:+ yych = *++p;+ if (yych == 'L')+ goto yy402;+ if (yych == 'l')+ goto yy402;+ goto yy298;+ yy395:+ yych = *++p;+ if (yych == 'T')+ goto yy424;+ if (yych == 't')+ goto yy424;+ goto yy298;+ yy396:+ yych = *++p;+ if (yych == 'O')+ goto yy425;+ if (yych == 'o')+ goto yy425;+ goto yy298;+ yy397:+ yych = *++p;+ if (yych == 'A')+ goto yy426;+ if (yych == 'a')+ goto yy426;+ goto yy298;+ yy398:+ yych = *++p;+ if (yych == 'C')+ goto yy383;+ if (yych == 'c')+ goto yy383;+ goto yy298;+ yy399:+ yych = *++p;+ if (yych == 'A')+ goto yy427;+ if (yych == 'a')+ goto yy427;+ goto yy298;+ yy400:+ yych = *++p;+ if (yych == 'E')+ goto yy428;+ if (yych == 'e')+ goto yy428;+ goto yy298;+ yy401:+ yych = *++p;+ if (yych == 'C')+ goto yy394;+ if (yych == 'c')+ goto yy394;+ goto yy298;+ yy402:+ yych = *++p;+ if (yych == 'E')+ goto yy331;+ if (yych == 'e')+ goto yy331;+ goto yy298;+ yy403:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy347;+ if (yych <= '.')+ goto yy298;+ goto yy348;+ }+ } else {+ if (yych <= 'E') {+ if (yych == '>')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= 'F')+ goto yy429;+ if (yych == 'f')+ goto yy429;+ goto yy298;+ }+ }+ yy404:+ yych = *++p;+ if (yych == 'K')+ goto yy430;+ if (yych == 'k')+ goto yy430;+ goto yy298;+ yy405:+ yych = *++p;+ if (yych == 'I')+ goto yy419;+ if (yych == 'i')+ goto yy419;+ goto yy298;+ yy406:+ yych = *++p;+ if (yych == 'E')+ goto yy431;+ if (yych == 'e')+ goto yy431;+ goto yy298;+ yy407:+ yych = *++p;+ if (yych == 'R')+ goto yy432;+ if (yych == 'r')+ goto yy432;+ goto yy298;+ yy408:+ yych = *++p;+ if (yych == 'I')+ goto yy433;+ if (yych == 'i')+ goto yy433;+ goto yy298;+ yy409:+ yych = *++p;+ if (yych == 'O')+ goto yy434;+ if (yych == 'o')+ goto yy434;+ goto yy298;+ yy410:+ yych = *++p;+ if (yych == 'D')+ goto yy435;+ if (yych == 'd')+ goto yy435;+ goto yy298;+ yy411:+ yych = *++p;+ if (yych == 'A')+ goto yy328;+ if (yych == 'a')+ goto yy328;+ goto yy298;+ yy412:+ yych = *++p;+ if (yych == 'R')+ goto yy402;+ if (yych == 'r')+ goto yy402;+ goto yy298;+ yy413:+ yych = *++p;+ if (yych == 'E')+ goto yy436;+ if (yych == 'e')+ goto yy436;+ goto yy298;+ yy414:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy347;+ if (yych <= '.')+ goto yy298;+ goto yy348;+ }+ } else {+ if (yych <= 'D') {+ if (yych == '>')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= 'E')+ goto yy431;+ if (yych == 'e')+ goto yy431;+ goto yy298;+ }+ }+ yy415:+ yych = *++p;+ if (yych == 'M')+ goto yy402;+ if (yych == 'm')+ goto yy402;+ goto yy298;+ yy416:+ yych = *++p;+ if (yych == 'N')+ goto yy426;+ if (yych == 'n')+ goto yy426;+ goto yy298;+ yy417:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy347;+ if (yych <= '.')+ goto yy298;+ goto yy348;+ }+ } else {+ if (yych <= 'H') {+ if (yych == '>')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= 'I')+ goto yy437;+ if (yych == 'i')+ goto yy437;+ goto yy298;+ }+ }+ yy418:+ yych = *++p;+ if (yych == 'A')+ goto yy438;+ if (yych == 'a')+ goto yy438;+ goto yy298;+ yy419:+ yych = *++p;+ if (yych == 'O')+ goto yy384;+ if (yych == 'o')+ goto yy384;+ goto yy298;+ yy420:+ ++p;+ { return 1; }+ yy421:+ yych = *++p;+ if (yych == 'P')+ goto yy439;+ if (yych == 'p')+ goto yy439;+ goto yy298;+ yy422:+ yych = *++p;+ if (yych == 'C')+ goto yy402;+ if (yych == 'c')+ goto yy402;+ goto yy298;+ yy423:+ yych = *++p;+ if (yych == 'A')+ goto yy440;+ if (yych == 'a')+ goto yy440;+ goto yy298;+ yy424:+ yych = *++p;+ if (yych == 'A')+ goto yy441;+ if (yych == 'a')+ goto yy441;+ goto yy298;+ yy425:+ yych = *++p;+ if (yych == 'T')+ goto yy331;+ if (yych == 't')+ goto yy331;+ goto yy298;+ yy426:+ yych = *++p;+ if (yych == 'D')+ goto yy331;+ if (yych == 'd')+ goto yy331;+ goto yy298;+ yy427:+ yych = *++p;+ if (yych == 'T')+ goto yy442;+ if (yych == 't')+ goto yy442;+ goto yy298;+ yy428:+ yych = *++p;+ if (yych == 'S')+ goto yy443;+ if (yych == 's')+ goto yy443;+ goto yy298;+ yy429:+ yych = *++p;+ if (yych == 'O')+ goto yy444;+ if (yych == 'o')+ goto yy444;+ goto yy298;+ yy430:+ yych = *++p;+ if (yych == 'Q')+ goto yy445;+ if (yych == 'q')+ goto yy445;+ goto yy298;+ yy431:+ yych = *++p;+ if (yych == 'R')+ goto yy331;+ if (yych == 'r')+ goto yy331;+ goto yy298;+ yy432:+ yych = *++p;+ if (yych == 'O')+ goto yy446;+ if (yych == 'o')+ goto yy446;+ goto yy298;+ yy433:+ yych = *++p;+ if (yych == 'L')+ goto yy443;+ if (yych == 'l')+ goto yy443;+ goto yy298;+ yy434:+ yych = *++p;+ if (yych == 'G')+ goto yy331;+ if (yych == 'g')+ goto yy331;+ goto yy298;+ yy435:+ yych = *++p;+ if (yych == 'S')+ goto yy447;+ if (yych == 's')+ goto yy447;+ goto yy298;+ yy436:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy298;+ if (yych <= '\r')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= ' ')+ goto yy347;+ if (yych <= '.')+ goto yy298;+ goto yy348;+ }+ } else {+ if (yych <= 'R') {+ if (yych == '>')+ goto yy347;+ goto yy298;+ } else {+ if (yych <= 'S')+ goto yy447;+ if (yych == 's')+ goto yy447;+ goto yy298;+ }+ }+ yy437:+ yych = *++p;+ if (yych == 'T')+ goto yy448;+ if (yych == 't')+ goto yy448;+ goto yy298;+ yy438:+ yych = *++p;+ if (yych == 'M')+ goto yy449;+ if (yych == 'm')+ goto yy449;+ goto yy298;+ yy439:+ yych = *++p;+ if (yych == 'T')+ goto yy389;+ if (yych == 't')+ goto yy389;+ goto yy298;+ yy440:+ yych = *++p;+ if (yych == 'R')+ goto yy370;+ if (yych == 'r')+ goto yy370;+ goto yy298;+ yy441:+ yych = *++p;+ if (yych == 'R')+ goto yy450;+ if (yych == 'r')+ goto yy450;+ goto yy298;+ yy442:+ yych = *++p;+ if (yych == 'A')+ goto yy451;+ if (yych == 'a')+ goto yy451;+ goto yy298;+ yy443:+ yych = *++p;+ if (yych == 'S')+ goto yy331;+ if (yych == 's')+ goto yy331;+ goto yy298;+ yy444:+ yych = *++p;+ if (yych == 'N')+ goto yy425;+ if (yych == 'n')+ goto yy425;+ goto yy298;+ yy445:+ yych = *++p;+ if (yych == 'U')+ goto yy452;+ if (yych == 'u')+ goto yy452;+ goto yy298;+ yy446:+ yych = *++p;+ if (yych == 'U')+ goto yy453;+ if (yych == 'u')+ goto yy453;+ goto yy298;+ yy447:+ yych = *++p;+ if (yych == 'E')+ goto yy425;+ if (yych == 'e')+ goto yy425;+ goto yy298;+ yy448:+ yych = *++p;+ if (yych == 'E')+ goto yy378;+ if (yych == 'e')+ goto yy378;+ goto yy298;+ yy449:+ yych = *++p;+ if (yych == 'E')+ goto yy443;+ if (yych == 'e')+ goto yy443;+ goto yy298;+ yy450:+ yych = *++p;+ if (yych == 'E')+ goto yy454;+ if (yych == 'e')+ goto yy454;+ goto yy298;+ yy451:+ yych = *++p;+ if (yych == '[')+ goto yy455;+ goto yy298;+ yy452:+ yych = *++p;+ if (yych == 'O')+ goto yy456;+ if (yych == 'o')+ goto yy456;+ goto yy298;+ yy453:+ yych = *++p;+ if (yych == 'P')+ goto yy331;+ if (yych == 'p')+ goto yy331;+ goto yy298;+ yy454:+ yych = *++p;+ if (yych == 'A')+ goto yy389;+ if (yych == 'a')+ goto yy389;+ goto yy298;+ yy455:+ ++p;+ { return 5; }+ yy456:+ yych = *++p;+ if (yych == 'T')+ goto yy402;+ if (yych == 't')+ goto yy402;+ goto yy298;+ }+}++// 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 yy459;+ ++p;+ yy458 : { return 0; }+ yy459:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '@') {+ if (yych != '/')+ goto yy458;+ } else {+ if (yych <= 'Z')+ goto yy461;+ if (yych <= '`')+ goto yy458;+ if (yych <= 'z')+ goto yy461;+ goto yy458;+ }+ yych = *++p;+ if (yych <= '@')+ goto yy460;+ if (yych <= 'Z')+ goto yy462;+ if (yych <= '`')+ goto yy460;+ if (yych <= 'z')+ goto yy462;+ yy460:+ p = marker;+ if (yyaccept == 0) {+ goto yy458;+ } else {+ goto yy469;+ }+ yy461:+ yych = *++p;+ if (yybm[0 + yych] & 2) {+ goto yy463;+ }+ if (yych <= '=') {+ if (yych <= '.') {+ if (yych == '-')+ goto yy461;+ goto yy460;+ } else {+ if (yych <= '/')+ goto yy464;+ if (yych <= '9')+ goto yy461;+ goto yy460;+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '>')+ goto yy465;+ if (yych <= '@')+ goto yy460;+ goto yy461;+ } else {+ if (yych <= '`')+ goto yy460;+ if (yych <= 'z')+ goto yy461;+ goto yy460;+ }+ }+ yy462:+ yych = *++p;+ if (yych <= '/') {+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy460;+ if (yych <= '\r')+ goto yy466;+ goto yy460;+ } else {+ if (yych <= ' ')+ goto yy466;+ if (yych == '-')+ goto yy462;+ goto yy460;+ }+ } else {+ if (yych <= '@') {+ if (yych <= '9')+ goto yy462;+ if (yych == '>')+ goto yy465;+ goto yy460;+ } else {+ if (yych <= 'Z')+ goto yy462;+ if (yych <= '`')+ goto yy460;+ if (yych <= 'z')+ goto yy462;+ goto yy460;+ }+ }+ yy463:+ yych = *++p;+ if (yybm[0 + yych] & 2) {+ goto yy463;+ }+ if (yych <= '>') {+ if (yych <= '9') {+ if (yych != '/')+ goto yy460;+ } else {+ if (yych <= ':')+ goto yy467;+ if (yych <= '=')+ goto yy460;+ goto yy465;+ }+ } else {+ if (yych <= '^') {+ if (yych <= '@')+ goto yy460;+ if (yych <= 'Z')+ goto yy467;+ goto yy460;+ } else {+ if (yych == '`')+ goto yy460;+ if (yych <= 'z')+ goto yy467;+ goto yy460;+ }+ }+ yy464:+ yych = *++p;+ if (yych != '>')+ goto yy460;+ yy465:+ yych = *++p;+ if (yybm[0 + yych] & 4) {+ goto yy465;+ }+ if (yych <= 0x08)+ goto yy460;+ if (yych <= '\n')+ goto yy468;+ if (yych <= '\v')+ goto yy460;+ if (yych <= '\r')+ goto yy470;+ goto yy460;+ yy466:+ yych = *++p;+ if (yych <= 0x1F) {+ if (yych <= 0x08)+ goto yy460;+ if (yych <= '\r')+ goto yy466;+ goto yy460;+ } else {+ if (yych <= ' ')+ goto yy466;+ if (yych == '>')+ goto yy465;+ goto yy460;+ }+ yy467:+ yych = *++p;+ if (yybm[0 + yych] & 8) {+ goto yy467;+ }+ if (yych <= ',') {+ if (yych <= '\r') {+ if (yych <= 0x08)+ goto yy460;+ goto yy471;+ } else {+ if (yych == ' ')+ goto yy471;+ goto yy460;+ }+ } else {+ if (yych <= '<') {+ if (yych <= '/')+ goto yy464;+ goto yy460;+ } else {+ if (yych <= '=')+ goto yy472;+ if (yych <= '>')+ goto yy465;+ goto yy460;+ }+ }+ yy468:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 4) {+ goto yy465;+ }+ if (yych <= 0x08)+ goto yy469;+ if (yych <= '\n')+ goto yy468;+ if (yych <= '\v')+ goto yy469;+ if (yych <= '\r')+ goto yy470;+ yy469 : { return 7; }+ yy470:+ ++p;+ goto yy469;+ yy471:+ yych = *++p;+ if (yych <= '<') {+ if (yych <= ' ') {+ if (yych <= 0x08)+ goto yy460;+ if (yych <= '\r')+ goto yy471;+ if (yych <= 0x1F)+ goto yy460;+ goto yy471;+ } else {+ if (yych <= '/') {+ if (yych <= '.')+ goto yy460;+ goto yy464;+ } else {+ if (yych == ':')+ goto yy467;+ goto yy460;+ }+ }+ } else {+ if (yych <= 'Z') {+ if (yych <= '=')+ goto yy472;+ if (yych <= '>')+ goto yy465;+ if (yych <= '@')+ goto yy460;+ goto yy467;+ } else {+ if (yych <= '_') {+ if (yych <= '^')+ goto yy460;+ goto yy467;+ } else {+ if (yych <= '`')+ goto yy460;+ if (yych <= 'z')+ goto yy467;+ goto yy460;+ }+ }+ }+ yy472:+ yych = *++p;+ if (yybm[0 + yych] & 32) {+ goto yy473;+ }+ if (yych <= 0xE0) {+ if (yych <= '"') {+ if (yych <= 0x00)+ goto yy460;+ if (yych <= ' ')+ goto yy472;+ goto yy474;+ } else {+ if (yych <= '\'')+ goto yy475;+ if (yych <= 0xC1)+ goto yy460;+ if (yych <= 0xDF)+ goto yy476;+ goto yy477;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy479;+ goto yy478;+ } else {+ if (yych <= 0xF0)+ goto yy480;+ if (yych <= 0xF3)+ goto yy481;+ if (yych <= 0xF4)+ goto yy482;+ goto yy460;+ }+ }+ yy473:+ yych = *++p;+ if (yybm[0 + yych] & 32) {+ goto yy473;+ }+ if (yych <= 0xE0) {+ if (yych <= '=') {+ if (yych <= 0x00)+ goto yy460;+ if (yych <= ' ')+ goto yy463;+ goto yy460;+ } else {+ if (yych <= '>')+ goto yy465;+ if (yych <= 0xC1)+ goto yy460;+ if (yych <= 0xDF)+ goto yy476;+ goto yy477;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy479;+ goto yy478;+ } else {+ if (yych <= 0xF0)+ goto yy480;+ if (yych <= 0xF3)+ goto yy481;+ if (yych <= 0xF4)+ goto yy482;+ goto yy460;+ }+ }+ yy474:+ yych = *++p;+ if (yybm[0 + yych] & 64) {+ goto yy474;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy460;+ if (yych <= '"')+ goto yy483;+ goto yy460;+ } else {+ if (yych <= 0xDF)+ goto yy484;+ if (yych <= 0xE0)+ goto yy485;+ goto yy486;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy487;+ if (yych <= 0xEF)+ goto yy486;+ goto yy488;+ } else {+ if (yych <= 0xF3)+ goto yy489;+ if (yych <= 0xF4)+ goto yy490;+ goto yy460;+ }+ }+ yy475:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy475;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy460;+ if (yych <= '\'')+ goto yy483;+ goto yy460;+ } else {+ if (yych <= 0xDF)+ goto yy491;+ if (yych <= 0xE0)+ goto yy492;+ goto yy493;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy494;+ if (yych <= 0xEF)+ goto yy493;+ goto yy495;+ } else {+ if (yych <= 0xF3)+ goto yy496;+ if (yych <= 0xF4)+ goto yy497;+ goto yy460;+ }+ }+ yy476:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy473;+ goto yy460;+ yy477:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy476;+ goto yy460;+ yy478:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy476;+ goto yy460;+ yy479:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0x9F)+ goto yy476;+ goto yy460;+ yy480:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy478;+ goto yy460;+ yy481:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy478;+ goto yy460;+ yy482:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0x8F)+ goto yy478;+ goto yy460;+ yy483:+ yych = *++p;+ if (yybm[0 + yych] & 2) {+ goto yy463;+ }+ if (yych == '/')+ goto yy464;+ if (yych == '>')+ goto yy465;+ goto yy460;+ yy484:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy474;+ goto yy460;+ yy485:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy484;+ goto yy460;+ yy486:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy484;+ goto yy460;+ yy487:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0x9F)+ goto yy484;+ goto yy460;+ yy488:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy486;+ goto yy460;+ yy489:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy486;+ goto yy460;+ yy490:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0x8F)+ goto yy486;+ goto yy460;+ yy491:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy475;+ goto yy460;+ yy492:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy491;+ goto yy460;+ yy493:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy491;+ goto yy460;+ yy494:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0x9F)+ goto yy491;+ goto yy460;+ yy495:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy493;+ goto yy460;+ yy496:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0xBF)+ goto yy493;+ goto yy460;+ yy497:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy460;+ if (yych <= 0x8F)+ goto yy493;+ goto yy460;+ }+}++// 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 yy499;+ if (yych != '\n')+ goto yy501;+ } else {+ if (yych <= '<')+ goto yy502;+ if (yych <= 0x7F)+ goto yy501;+ if (yych >= 0xC2)+ goto yy503;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0)+ goto yy504;+ if (yych == 0xED)+ goto yy506;+ goto yy505;+ } else {+ if (yych <= 0xF0)+ goto yy507;+ if (yych <= 0xF3)+ goto yy508;+ if (yych <= 0xF4)+ goto yy509;+ }+ }+ yy499:+ ++p;+ yy500 : { return 0; }+ yy501:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy500;+ if (yych <= '\t')+ goto yy511;+ goto yy500;+ } else {+ if (yych <= 0x7F)+ goto yy511;+ if (yych <= 0xC1)+ goto yy500;+ if (yych <= 0xF4)+ goto yy511;+ goto yy500;+ }+ yy502:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '.') {+ if (yych <= 0x00)+ goto yy500;+ if (yych == '\n')+ goto yy500;+ goto yy511;+ } else {+ if (yych <= 0x7F) {+ if (yych <= '/')+ goto yy521;+ goto yy511;+ } else {+ if (yych <= 0xC1)+ goto yy500;+ if (yych <= 0xF4)+ goto yy511;+ goto yy500;+ }+ }+ yy503:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy500;+ if (yych <= 0xBF)+ goto yy510;+ goto yy500;+ yy504:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x9F)+ goto yy500;+ if (yych <= 0xBF)+ goto yy514;+ goto yy500;+ yy505:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy500;+ if (yych <= 0xBF)+ goto yy514;+ goto yy500;+ yy506:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy500;+ if (yych <= 0x9F)+ goto yy514;+ goto yy500;+ yy507:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x8F)+ goto yy500;+ if (yych <= 0xBF)+ goto yy516;+ goto yy500;+ yy508:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy500;+ if (yych <= 0xBF)+ goto yy516;+ goto yy500;+ yy509:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy500;+ if (yych <= 0x8F)+ goto yy516;+ goto yy500;+ yy510:+ yych = *++p;+ yy511:+ if (yybm[0 + yych] & 64) {+ goto yy510;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy512;+ if (yych <= '<')+ goto yy513;+ } else {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ goto yy516;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy517;+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ }+ }+ yy512:+ p = marker;+ if (yyaccept == 0) {+ goto yy500;+ } else {+ goto yy534;+ }+ yy513:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xDF) {+ if (yych <= '.') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= '/')+ goto yy521;+ if (yych <= 0x7F)+ goto yy510;+ if (yych <= 0xC1)+ goto yy512;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0)+ goto yy515;+ if (yych == 0xED)+ goto yy517;+ goto yy516;+ } else {+ if (yych <= 0xF0)+ goto yy518;+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ yy514:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy512;+ if (yych <= 0xBF)+ goto yy510;+ goto yy512;+ yy515:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy512;+ if (yych <= 0xBF)+ goto yy514;+ goto yy512;+ yy516:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy512;+ if (yych <= 0xBF)+ goto yy514;+ goto yy512;+ yy517:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy512;+ if (yych <= 0x9F)+ goto yy514;+ goto yy512;+ yy518:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy512;+ if (yych <= 0xBF)+ goto yy516;+ goto yy512;+ yy519:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy512;+ if (yych <= 0xBF)+ goto yy516;+ goto yy512;+ yy520:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy512;+ if (yych <= 0x8F)+ goto yy516;+ goto yy512;+ yy521:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 's') {+ if (yych <= 'R') {+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy512;+ if (yych <= '\t')+ goto yy510;+ goto yy512;+ } else {+ if (yych != 'P')+ goto yy510;+ }+ } else {+ if (yych <= 'o') {+ if (yych <= 'S')+ goto yy523;+ if (yych <= 'T')+ goto yy524;+ goto yy510;+ } else {+ if (yych <= 'p')+ goto yy522;+ if (yych <= 'r')+ goto yy510;+ goto yy523;+ }+ }+ } else {+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 't')+ goto yy524;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ } else {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ goto yy516;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy517;+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy522:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'Q') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'q') {+ if (yych <= 'R')+ goto yy525;+ goto yy510;+ } else {+ if (yych <= 'r')+ goto yy525;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy523:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 't') {+ if (yych <= 'C') {+ if (yych <= '\t') {+ if (yych <= 0x00)+ goto yy512;+ goto yy510;+ } else {+ if (yych <= '\n')+ goto yy512;+ if (yych <= 'B')+ goto yy510;+ goto yy526;+ }+ } else {+ if (yych <= 'b') {+ if (yych == 'T')+ goto yy527;+ goto yy510;+ } else {+ if (yych <= 'c')+ goto yy526;+ if (yych <= 's')+ goto yy510;+ goto yy527;+ }+ }+ } else {+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ } else {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ goto yy516;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy517;+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy524:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'D') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'd') {+ if (yych <= 'E')+ goto yy528;+ goto yy510;+ } else {+ if (yych <= 'e')+ goto yy528;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy525:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'D') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'd') {+ if (yych <= 'E')+ goto yy529;+ goto yy510;+ } else {+ if (yych <= 'e')+ goto yy529;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy526:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'Q') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'q') {+ if (yych <= 'R')+ goto yy530;+ goto yy510;+ } else {+ if (yych <= 'r')+ goto yy530;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy527:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'X') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'x') {+ if (yych <= 'Y')+ goto yy531;+ goto yy510;+ } else {+ if (yych <= 'y')+ goto yy531;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy528:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'W') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'w') {+ if (yych <= 'X')+ goto yy532;+ goto yy510;+ } else {+ if (yych <= 'x')+ goto yy532;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy529:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xDF) {+ if (yych <= '=') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= '>')+ goto yy533;+ if (yych <= 0x7F)+ goto yy510;+ if (yych <= 0xC1)+ goto yy512;+ goto yy514;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0)+ goto yy515;+ if (yych == 0xED)+ goto yy517;+ goto yy516;+ } else {+ if (yych <= 0xF0)+ goto yy518;+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ yy530:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'H') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'h') {+ if (yych <= 'I')+ goto yy535;+ goto yy510;+ } else {+ if (yych <= 'i')+ goto yy535;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy531:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'K') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'k') {+ if (yych <= 'L')+ goto yy525;+ goto yy510;+ } else {+ if (yych <= 'l')+ goto yy525;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy532:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'S') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 's') {+ if (yych <= 'T')+ goto yy536;+ goto yy510;+ } else {+ if (yych <= 't')+ goto yy536;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy533:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 64) {+ goto yy510;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy534;+ if (yych <= '<')+ goto yy513;+ } else {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ goto yy516;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy517;+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ }+ }+ yy534 : { return (bufsize_t)(p - start); }+ yy535:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'O') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'o') {+ if (yych <= 'P')+ goto yy537;+ goto yy510;+ } else {+ if (yych <= 'p')+ goto yy537;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy536:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= '@') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= '`') {+ if (yych <= 'A')+ goto yy538;+ goto yy510;+ } else {+ if (yych <= 'a')+ goto yy538;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy537:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'S') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 's') {+ if (yych <= 'T')+ goto yy529;+ goto yy510;+ } else {+ if (yych <= 't')+ goto yy529;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy538:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'Q') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'q') {+ if (yych >= 'S')+ goto yy510;+ } else {+ if (yych <= 'r')+ goto yy539;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy539:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= 'D') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= 'd') {+ if (yych >= 'F')+ goto yy510;+ } else {+ if (yych <= 'e')+ goto yy540;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ yy540:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy513;+ }+ if (yych <= 0xC1) {+ if (yych <= '@') {+ if (yych <= 0x00)+ goto yy512;+ if (yych == '\n')+ goto yy512;+ goto yy510;+ } else {+ if (yych <= '`') {+ if (yych <= 'A')+ goto yy529;+ goto yy510;+ } else {+ if (yych <= 'a')+ goto yy529;+ if (yych <= 0x7F)+ goto yy510;+ goto yy512;+ }+ }+ } else {+ if (yych <= 0xED) {+ if (yych <= 0xDF)+ goto yy514;+ if (yych <= 0xE0)+ goto yy515;+ if (yych <= 0xEC)+ goto yy516;+ goto yy517;+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xEF)+ goto yy516;+ goto yy518;+ } else {+ if (yych <= 0xF3)+ goto yy519;+ if (yych <= 0xF4)+ goto yy520;+ goto yy512;+ }+ }+ }+ }+}++// 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 yy542;+ if (yych != '\n')+ goto yy544;+ } else {+ if (yych <= '-')+ goto yy545;+ if (yych <= 0x7F)+ goto yy544;+ if (yych >= 0xC2)+ goto yy546;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0)+ goto yy547;+ if (yych == 0xED)+ goto yy549;+ goto yy548;+ } else {+ if (yych <= 0xF0)+ goto yy550;+ if (yych <= 0xF3)+ goto yy551;+ if (yych <= 0xF4)+ goto yy552;+ }+ }+ yy542:+ ++p;+ yy543 : { return 0; }+ yy544:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy543;+ if (yych <= '\t')+ goto yy554;+ goto yy543;+ } else {+ if (yych <= 0x7F)+ goto yy554;+ if (yych <= 0xC1)+ goto yy543;+ if (yych <= 0xF4)+ goto yy554;+ goto yy543;+ }+ yy545:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 128) {+ goto yy564;+ }+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy543;+ if (yych <= '\t')+ goto yy554;+ goto yy543;+ } else {+ if (yych <= 0x7F)+ goto yy554;+ if (yych <= 0xC1)+ goto yy543;+ if (yych <= 0xF4)+ goto yy554;+ goto yy543;+ }+ yy546:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy543;+ if (yych <= 0xBF)+ goto yy553;+ goto yy543;+ yy547:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x9F)+ goto yy543;+ if (yych <= 0xBF)+ goto yy557;+ goto yy543;+ yy548:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy543;+ if (yych <= 0xBF)+ goto yy557;+ goto yy543;+ yy549:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy543;+ if (yych <= 0x9F)+ goto yy557;+ goto yy543;+ yy550:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x8F)+ goto yy543;+ if (yych <= 0xBF)+ goto yy559;+ goto yy543;+ yy551:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy543;+ if (yych <= 0xBF)+ goto yy559;+ goto yy543;+ yy552:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy543;+ if (yych <= 0x8F)+ goto yy559;+ goto yy543;+ yy553:+ yych = *++p;+ yy554:+ if (yybm[0 + yych] & 64) {+ goto yy553;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy555;+ if (yych <= '-')+ goto yy556;+ } else {+ if (yych <= 0xDF)+ goto yy557;+ if (yych <= 0xE0)+ goto yy558;+ goto yy559;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy560;+ if (yych <= 0xEF)+ goto yy559;+ goto yy561;+ } else {+ if (yych <= 0xF3)+ goto yy562;+ if (yych <= 0xF4)+ goto yy563;+ }+ }+ yy555:+ p = marker;+ if (yyaccept == 0) {+ goto yy543;+ } else {+ goto yy566;+ }+ yy556:+ yych = *++p;+ if (yybm[0 + yych] & 64) {+ goto yy553;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy555;+ if (yych <= '-')+ goto yy564;+ goto yy555;+ } else {+ if (yych <= 0xDF)+ goto yy557;+ if (yych <= 0xE0)+ goto yy558;+ goto yy559;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy560;+ if (yych <= 0xEF)+ goto yy559;+ goto yy561;+ } else {+ if (yych <= 0xF3)+ goto yy562;+ if (yych <= 0xF4)+ goto yy563;+ goto yy555;+ }+ }+ yy557:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy555;+ if (yych <= 0xBF)+ goto yy553;+ goto yy555;+ yy558:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy555;+ if (yych <= 0xBF)+ goto yy557;+ goto yy555;+ yy559:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy555;+ if (yych <= 0xBF)+ goto yy557;+ goto yy555;+ yy560:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy555;+ if (yych <= 0x9F)+ goto yy557;+ goto yy555;+ yy561:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy555;+ if (yych <= 0xBF)+ goto yy559;+ goto yy555;+ yy562:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy555;+ if (yych <= 0xBF)+ goto yy559;+ goto yy555;+ yy563:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy555;+ if (yych <= 0x8F)+ goto yy559;+ goto yy555;+ yy564:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy564;+ }+ if (yych <= 0xDF) {+ if (yych <= '=') {+ if (yych <= 0x00)+ goto yy555;+ if (yych == '\n')+ goto yy555;+ goto yy553;+ } else {+ if (yych <= '>')+ goto yy565;+ if (yych <= 0x7F)+ goto yy553;+ if (yych <= 0xC1)+ goto yy555;+ goto yy557;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0)+ goto yy558;+ if (yych == 0xED)+ goto yy560;+ goto yy559;+ } else {+ if (yych <= 0xF0)+ goto yy561;+ if (yych <= 0xF3)+ goto yy562;+ if (yych <= 0xF4)+ goto yy563;+ goto yy555;+ }+ }+ yy565:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 64) {+ goto yy553;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy566;+ if (yych <= '-')+ goto yy556;+ } else {+ if (yych <= 0xDF)+ goto yy557;+ if (yych <= 0xE0)+ goto yy558;+ goto yy559;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy560;+ if (yych <= 0xEF)+ goto yy559;+ goto yy561;+ } else {+ if (yych <= 0xF3)+ goto yy562;+ if (yych <= 0xF4)+ goto yy563;+ }+ }+ yy566 : { 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 yy568;+ if (yych != '\n')+ goto yy570;+ } else {+ if (yych <= '?')+ goto yy571;+ if (yych <= 0x7F)+ goto yy570;+ if (yych >= 0xC2)+ goto yy572;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0)+ goto yy573;+ if (yych == 0xED)+ goto yy575;+ goto yy574;+ } else {+ if (yych <= 0xF0)+ goto yy576;+ if (yych <= 0xF3)+ goto yy577;+ if (yych <= 0xF4)+ goto yy578;+ }+ }+ yy568:+ ++p;+ yy569 : { return 0; }+ yy570:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy569;+ if (yych <= '\t')+ goto yy580;+ goto yy569;+ } else {+ if (yych <= 0x7F)+ goto yy580;+ if (yych <= 0xC1)+ goto yy569;+ if (yych <= 0xF4)+ goto yy580;+ goto yy569;+ }+ yy571:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '=') {+ if (yych <= 0x00)+ goto yy569;+ if (yych == '\n')+ goto yy569;+ goto yy580;+ } else {+ if (yych <= 0x7F) {+ if (yych <= '>')+ goto yy590;+ goto yy580;+ } else {+ if (yych <= 0xC1)+ goto yy569;+ if (yych <= 0xF4)+ goto yy580;+ goto yy569;+ }+ }+ yy572:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy569;+ if (yych <= 0xBF)+ goto yy579;+ goto yy569;+ yy573:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x9F)+ goto yy569;+ if (yych <= 0xBF)+ goto yy583;+ goto yy569;+ yy574:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy569;+ if (yych <= 0xBF)+ goto yy583;+ goto yy569;+ yy575:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy569;+ if (yych <= 0x9F)+ goto yy583;+ goto yy569;+ yy576:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x8F)+ goto yy569;+ if (yych <= 0xBF)+ goto yy585;+ goto yy569;+ yy577:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy569;+ if (yych <= 0xBF)+ goto yy585;+ goto yy569;+ yy578:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy569;+ if (yych <= 0x8F)+ goto yy585;+ goto yy569;+ yy579:+ yych = *++p;+ yy580:+ if (yybm[0 + yych] & 64) {+ goto yy579;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy581;+ if (yych <= '?')+ goto yy582;+ } else {+ if (yych <= 0xDF)+ goto yy583;+ if (yych <= 0xE0)+ goto yy584;+ goto yy585;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy586;+ if (yych <= 0xEF)+ goto yy585;+ goto yy587;+ } else {+ if (yych <= 0xF3)+ goto yy588;+ if (yych <= 0xF4)+ goto yy589;+ }+ }+ yy581:+ p = marker;+ if (yyaccept == 0) {+ goto yy569;+ } else {+ goto yy591;+ }+ yy582:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy582;+ }+ if (yych <= 0xDF) {+ if (yych <= '=') {+ if (yych <= 0x00)+ goto yy581;+ if (yych == '\n')+ goto yy581;+ goto yy579;+ } else {+ if (yych <= '>')+ goto yy590;+ if (yych <= 0x7F)+ goto yy579;+ if (yych <= 0xC1)+ goto yy581;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0)+ goto yy584;+ if (yych == 0xED)+ goto yy586;+ goto yy585;+ } else {+ if (yych <= 0xF0)+ goto yy587;+ if (yych <= 0xF3)+ goto yy588;+ if (yych <= 0xF4)+ goto yy589;+ goto yy581;+ }+ }+ yy583:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy581;+ if (yych <= 0xBF)+ goto yy579;+ goto yy581;+ yy584:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy581;+ if (yych <= 0xBF)+ goto yy583;+ goto yy581;+ yy585:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy581;+ if (yych <= 0xBF)+ goto yy583;+ goto yy581;+ yy586:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy581;+ if (yych <= 0x9F)+ goto yy583;+ goto yy581;+ yy587:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy581;+ if (yych <= 0xBF)+ goto yy585;+ goto yy581;+ yy588:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy581;+ if (yych <= 0xBF)+ goto yy585;+ goto yy581;+ yy589:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy581;+ if (yych <= 0x8F)+ goto yy585;+ goto yy581;+ yy590:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 64) {+ goto yy579;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy591;+ if (yych <= '?')+ goto yy582;+ } else {+ if (yych <= 0xDF)+ goto yy583;+ if (yych <= 0xE0)+ goto yy584;+ goto yy585;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy586;+ if (yych <= 0xEF)+ goto yy585;+ goto yy587;+ } else {+ if (yych <= 0xF3)+ goto yy588;+ if (yych <= 0xF4)+ goto yy589;+ }+ }+ yy591 : { 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 yy596;+ }+ if (yych <= 0xE0) {+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy593;+ if (yych <= '\t')+ goto yy595;+ } else {+ if (yych <= 0x7F)+ goto yy595;+ if (yych <= 0xC1)+ goto yy593;+ if (yych <= 0xDF)+ goto yy598;+ goto yy599;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy601;+ goto yy600;+ } else {+ if (yych <= 0xF0)+ goto yy602;+ if (yych <= 0xF3)+ goto yy603;+ if (yych <= 0xF4)+ goto yy604;+ }+ }+ yy593:+ ++p;+ yy594 : { return 0; }+ yy595:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy594;+ if (yych <= '\t')+ goto yy606;+ goto yy594;+ } else {+ if (yych <= 0x7F)+ goto yy606;+ if (yych <= 0xC1)+ goto yy594;+ if (yych <= 0xF4)+ goto yy606;+ goto yy594;+ }+ yy596:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 128) {+ goto yy605;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy597;+ if (yych <= '>')+ goto yy596;+ } else {+ if (yych <= 0xDF)+ goto yy608;+ if (yych <= 0xE0)+ goto yy609;+ goto yy610;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy611;+ if (yych <= 0xEF)+ goto yy610;+ goto yy612;+ } else {+ if (yych <= 0xF3)+ goto yy613;+ if (yych <= 0xF4)+ goto yy614;+ }+ }+ yy597 : { return (bufsize_t)(p - start); }+ yy598:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy594;+ if (yych <= 0xBF)+ goto yy605;+ goto yy594;+ yy599:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x9F)+ goto yy594;+ if (yych <= 0xBF)+ goto yy608;+ goto yy594;+ yy600:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy594;+ if (yych <= 0xBF)+ goto yy608;+ goto yy594;+ yy601:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy594;+ if (yych <= 0x9F)+ goto yy608;+ goto yy594;+ yy602:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x8F)+ goto yy594;+ if (yych <= 0xBF)+ goto yy610;+ goto yy594;+ yy603:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy594;+ if (yych <= 0xBF)+ goto yy610;+ goto yy594;+ yy604:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy594;+ if (yych <= 0x8F)+ goto yy610;+ goto yy594;+ yy605:+ yych = *++p;+ yy606:+ if (yybm[0 + yych] & 128) {+ goto yy605;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy607;+ if (yych <= '>')+ goto yy596;+ } else {+ if (yych <= 0xDF)+ goto yy608;+ if (yych <= 0xE0)+ goto yy609;+ goto yy610;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy611;+ if (yych <= 0xEF)+ goto yy610;+ goto yy612;+ } else {+ if (yych <= 0xF3)+ goto yy613;+ if (yych <= 0xF4)+ goto yy614;+ }+ }+ yy607:+ p = marker;+ if (yyaccept == 0) {+ goto yy594;+ } else {+ goto yy597;+ }+ yy608:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy607;+ if (yych <= 0xBF)+ goto yy605;+ goto yy607;+ yy609:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy607;+ if (yych <= 0xBF)+ goto yy608;+ goto yy607;+ yy610:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy607;+ if (yych <= 0xBF)+ goto yy608;+ goto yy607;+ yy611:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy607;+ if (yych <= 0x9F)+ goto yy608;+ goto yy607;+ yy612:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy607;+ if (yych <= 0xBF)+ goto yy610;+ goto yy607;+ yy613:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy607;+ if (yych <= 0xBF)+ goto yy610;+ goto yy607;+ yy614:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy607;+ if (yych <= 0x8F)+ goto yy610;+ goto yy607;+ }+}++// 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 yy616;+ if (yych != '\n')+ goto yy618;+ } else {+ if (yych <= ']')+ goto yy619;+ if (yych <= 0x7F)+ goto yy618;+ if (yych >= 0xC2)+ goto yy620;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0)+ goto yy621;+ if (yych == 0xED)+ goto yy623;+ goto yy622;+ } else {+ if (yych <= 0xF0)+ goto yy624;+ if (yych <= 0xF3)+ goto yy625;+ if (yych <= 0xF4)+ goto yy626;+ }+ }+ yy616:+ ++p;+ yy617 : { return 0; }+ yy618:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy617;+ if (yych <= '\t')+ goto yy628;+ goto yy617;+ } else {+ if (yych <= 0x7F)+ goto yy628;+ if (yych <= 0xC1)+ goto yy617;+ if (yych <= 0xF4)+ goto yy628;+ goto yy617;+ }+ yy619:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 128) {+ goto yy638;+ }+ if (yych <= '\n') {+ if (yych <= 0x00)+ goto yy617;+ if (yych <= '\t')+ goto yy628;+ goto yy617;+ } else {+ if (yych <= 0x7F)+ goto yy628;+ if (yych <= 0xC1)+ goto yy617;+ if (yych <= 0xF4)+ goto yy628;+ goto yy617;+ }+ yy620:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy617;+ if (yych <= 0xBF)+ goto yy627;+ goto yy617;+ yy621:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x9F)+ goto yy617;+ if (yych <= 0xBF)+ goto yy631;+ goto yy617;+ yy622:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy617;+ if (yych <= 0xBF)+ goto yy631;+ goto yy617;+ yy623:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy617;+ if (yych <= 0x9F)+ goto yy631;+ goto yy617;+ yy624:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x8F)+ goto yy617;+ if (yych <= 0xBF)+ goto yy633;+ goto yy617;+ yy625:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy617;+ if (yych <= 0xBF)+ goto yy633;+ goto yy617;+ yy626:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x7F)+ goto yy617;+ if (yych <= 0x8F)+ goto yy633;+ goto yy617;+ yy627:+ yych = *++p;+ yy628:+ if (yybm[0 + yych] & 64) {+ goto yy627;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy629;+ if (yych <= ']')+ goto yy630;+ } 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;+ }+ }+ yy629:+ p = marker;+ if (yyaccept == 0) {+ goto yy617;+ } else {+ goto yy640;+ }+ yy630:+ yych = *++p;+ if (yybm[0 + yych] & 64) {+ goto yy627;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy629;+ if (yych <= ']')+ goto yy638;+ 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;+ goto yy629;+ }+ }+ yy631:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy629;+ if (yych <= 0xBF)+ goto yy627;+ goto yy629;+ yy632:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy629;+ if (yych <= 0xBF)+ goto yy631;+ goto yy629;+ yy633:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy629;+ if (yych <= 0xBF)+ goto yy631;+ goto yy629;+ yy634:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy629;+ if (yych <= 0x9F)+ goto yy631;+ goto yy629;+ yy635:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy629;+ if (yych <= 0xBF)+ goto yy633;+ goto yy629;+ yy636:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy629;+ if (yych <= 0xBF)+ goto yy633;+ goto yy629;+ yy637:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy629;+ if (yych <= 0x8F)+ goto yy633;+ goto yy629;+ yy638:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy638;+ }+ if (yych <= 0xDF) {+ if (yych <= '=') {+ if (yych <= 0x00)+ goto yy629;+ if (yych == '\n')+ goto yy629;+ goto yy627;+ } else {+ if (yych <= '>')+ goto yy639;+ if (yych <= 0x7F)+ goto yy627;+ if (yych <= 0xC1)+ goto yy629;+ goto yy631;+ }+ } 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 yy629;+ }+ }+ yy639:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 64) {+ goto yy627;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= '\n')+ goto yy640;+ if (yych <= ']')+ goto yy630;+ } 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;+ }+ }+ yy640 : { 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 yy643;+ } else {+ if (yych <= '\'')+ goto yy644;+ if (yych <= '(')+ goto yy645;+ }+ ++p;+ yy642 : { return 0; }+ yy643:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x00)+ goto yy642;+ if (yych <= 0x7F)+ goto yy647;+ if (yych <= 0xC1)+ goto yy642;+ if (yych <= 0xF4)+ goto yy647;+ goto yy642;+ yy644:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= 0x00)+ goto yy642;+ if (yych <= 0x7F)+ goto yy660;+ if (yych <= 0xC1)+ goto yy642;+ if (yych <= 0xF4)+ goto yy660;+ goto yy642;+ yy645:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych <= '(') {+ if (yych <= 0x00)+ goto yy642;+ if (yych <= '\'')+ goto yy672;+ goto yy642;+ } else {+ if (yych <= 0x7F)+ goto yy672;+ if (yych <= 0xC1)+ goto yy642;+ if (yych <= 0xF4)+ goto yy672;+ goto yy642;+ }+ yy646:+ yych = *++p;+ yy647:+ if (yybm[0 + yych] & 16) {+ goto yy646;+ }+ if (yych <= 0xE0) {+ if (yych <= '\\') {+ if (yych <= 0x00)+ goto yy648;+ if (yych <= '"')+ goto yy649;+ goto yy651;+ } else {+ if (yych <= 0xC1)+ goto yy648;+ if (yych <= 0xDF)+ goto yy652;+ goto yy653;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy655;+ goto yy654;+ } else {+ if (yych <= 0xF0)+ goto yy656;+ if (yych <= 0xF3)+ goto yy657;+ if (yych <= 0xF4)+ goto yy658;+ }+ }+ yy648:+ p = marker;+ if (yyaccept <= 1) {+ if (yyaccept == 0) {+ goto yy642;+ } else {+ goto yy650;+ }+ } else {+ if (yyaccept == 2) {+ goto yy662;+ } else {+ goto yy674;+ }+ }+ yy649:+ ++p;+ yy650 : { return (bufsize_t)(p - start); }+ yy651:+ yych = *++p;+ if (yybm[0 + yych] & 16) {+ goto yy646;+ }+ if (yych <= 0xE0) {+ if (yych <= '\\') {+ if (yych <= 0x00)+ goto yy648;+ if (yych <= '"')+ goto yy683;+ goto yy651;+ } else {+ if (yych <= 0xC1)+ goto yy648;+ if (yych >= 0xE0)+ goto yy653;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy655;+ goto yy654;+ } else {+ if (yych <= 0xF0)+ goto yy656;+ if (yych <= 0xF3)+ goto yy657;+ if (yych <= 0xF4)+ goto yy658;+ goto yy648;+ }+ }+ yy652:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy646;+ goto yy648;+ yy653:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy652;+ goto yy648;+ yy654:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy652;+ goto yy648;+ yy655:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0x9F)+ goto yy652;+ goto yy648;+ yy656:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy654;+ goto yy648;+ yy657:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy654;+ goto yy648;+ yy658:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0x8F)+ goto yy654;+ goto yy648;+ yy659:+ yych = *++p;+ yy660:+ if (yybm[0 + yych] & 64) {+ goto yy659;+ }+ if (yych <= 0xE0) {+ if (yych <= '\\') {+ if (yych <= 0x00)+ goto yy648;+ if (yych >= '(')+ goto yy663;+ } else {+ if (yych <= 0xC1)+ goto yy648;+ if (yych <= 0xDF)+ goto yy664;+ goto yy665;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy667;+ goto yy666;+ } else {+ if (yych <= 0xF0)+ goto yy668;+ if (yych <= 0xF3)+ goto yy669;+ if (yych <= 0xF4)+ goto yy670;+ goto yy648;+ }+ }+ yy661:+ ++p;+ yy662 : { return (bufsize_t)(p - start); }+ yy663:+ yych = *++p;+ if (yybm[0 + yych] & 64) {+ goto yy659;+ }+ if (yych <= 0xE0) {+ if (yych <= '\\') {+ if (yych <= 0x00)+ goto yy648;+ if (yych <= '\'')+ goto yy684;+ goto yy663;+ } else {+ if (yych <= 0xC1)+ goto yy648;+ if (yych >= 0xE0)+ goto yy665;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy667;+ goto yy666;+ } else {+ if (yych <= 0xF0)+ goto yy668;+ if (yych <= 0xF3)+ goto yy669;+ if (yych <= 0xF4)+ goto yy670;+ goto yy648;+ }+ }+ yy664:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy659;+ goto yy648;+ yy665:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy664;+ goto yy648;+ yy666:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy664;+ goto yy648;+ yy667:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0x9F)+ goto yy664;+ goto yy648;+ yy668:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy666;+ goto yy648;+ yy669:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy666;+ goto yy648;+ yy670:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0x8F)+ goto yy666;+ goto yy648;+ yy671:+ yych = *++p;+ yy672:+ if (yybm[0 + yych] & 128) {+ goto yy671;+ }+ if (yych <= 0xE0) {+ if (yych <= '\\') {+ if (yych <= '(')+ goto yy648;+ if (yych >= '*')+ goto yy675;+ } else {+ if (yych <= 0xC1)+ goto yy648;+ if (yych <= 0xDF)+ goto yy676;+ goto yy677;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy679;+ goto yy678;+ } else {+ if (yych <= 0xF0)+ goto yy680;+ if (yych <= 0xF3)+ goto yy681;+ if (yych <= 0xF4)+ goto yy682;+ goto yy648;+ }+ }+ yy673:+ ++p;+ yy674 : { return (bufsize_t)(p - start); }+ yy675:+ yych = *++p;+ if (yych <= 0xDF) {+ if (yych <= '[') {+ if (yych <= 0x00)+ goto yy648;+ if (yych == ')')+ goto yy685;+ goto yy671;+ } else {+ if (yych <= '\\')+ goto yy675;+ if (yych <= 0x7F)+ goto yy671;+ if (yych <= 0xC1)+ goto yy648;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0)+ goto yy677;+ if (yych == 0xED)+ goto yy679;+ goto yy678;+ } else {+ if (yych <= 0xF0)+ goto yy680;+ if (yych <= 0xF3)+ goto yy681;+ if (yych <= 0xF4)+ goto yy682;+ goto yy648;+ }+ }+ yy676:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy671;+ goto yy648;+ yy677:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy676;+ goto yy648;+ yy678:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy676;+ goto yy648;+ yy679:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0x9F)+ goto yy676;+ goto yy648;+ yy680:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy678;+ goto yy648;+ yy681:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0xBF)+ goto yy678;+ goto yy648;+ yy682:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy648;+ if (yych <= 0x8F)+ goto yy678;+ goto yy648;+ yy683:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 16) {+ goto yy646;+ }+ if (yych <= 0xE0) {+ if (yych <= '\\') {+ if (yych <= 0x00)+ goto yy650;+ if (yych <= '"')+ goto yy649;+ goto yy651;+ } else {+ if (yych <= 0xC1)+ goto yy650;+ if (yych <= 0xDF)+ goto yy652;+ goto yy653;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy655;+ goto yy654;+ } else {+ if (yych <= 0xF0)+ goto yy656;+ if (yych <= 0xF3)+ goto yy657;+ if (yych <= 0xF4)+ goto yy658;+ goto yy650;+ }+ }+ yy684:+ yyaccept = 2;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 64) {+ goto yy659;+ }+ if (yych <= 0xE0) {+ if (yych <= '\\') {+ if (yych <= 0x00)+ goto yy662;+ if (yych <= '\'')+ goto yy661;+ goto yy663;+ } else {+ if (yych <= 0xC1)+ goto yy662;+ if (yych <= 0xDF)+ goto yy664;+ goto yy665;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy667;+ goto yy666;+ } else {+ if (yych <= 0xF0)+ goto yy668;+ if (yych <= 0xF3)+ goto yy669;+ if (yych <= 0xF4)+ goto yy670;+ goto yy662;+ }+ }+ yy685:+ yyaccept = 3;+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 128) {+ goto yy671;+ }+ if (yych <= 0xE0) {+ if (yych <= '\\') {+ if (yych <= '(')+ goto yy674;+ if (yych <= ')')+ goto yy673;+ goto yy675;+ } else {+ if (yych <= 0xC1)+ goto yy674;+ if (yych <= 0xDF)+ goto yy676;+ goto yy677;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych == 0xED)+ goto yy679;+ goto yy678;+ } else {+ if (yych <= 0xF0)+ goto yy680;+ if (yych <= 0xF3)+ goto yy681;+ if (yych <= 0xF4)+ goto yy682;+ goto yy674;+ }+ }+ }+}++// 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 yy687;+ }+ ++p;+ { return 0; }+ yy687:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy687;+ }+ { 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 yy690;+ ++p;+ yy689 : { return 0; }+ yy690:+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 128) {+ goto yy691;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy689;+ if (yych <= '\n')+ goto yy693;+ goto yy689;+ } else {+ if (yych <= '\r')+ goto yy693;+ if (yych == '#')+ goto yy694;+ goto yy689;+ }+ yy691:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy691;+ }+ yy692 : { return (bufsize_t)(p - start); }+ yy693:+ ++p;+ goto yy692;+ yy694:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy691;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy695;+ if (yych <= '\n')+ goto yy693;+ } else {+ if (yych <= '\r')+ goto yy693;+ if (yych == '#')+ goto yy696;+ }+ yy695:+ p = marker;+ goto yy689;+ yy696:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy691;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy695;+ if (yych <= '\n')+ goto yy693;+ goto yy695;+ } else {+ if (yych <= '\r')+ goto yy693;+ if (yych != '#')+ goto yy695;+ }+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy691;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy695;+ if (yych <= '\n')+ goto yy693;+ goto yy695;+ } else {+ if (yych <= '\r')+ goto yy693;+ if (yych != '#')+ goto yy695;+ }+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy691;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy695;+ if (yych <= '\n')+ goto yy693;+ goto yy695;+ } else {+ if (yych <= '\r')+ goto yy693;+ if (yych != '#')+ goto yy695;+ }+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy691;+ }+ if (yych <= 0x08)+ goto yy695;+ if (yych <= '\n')+ goto yy693;+ if (yych == '\r')+ goto yy693;+ goto yy695;+ }+}++// 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 yy699;+ if (yych == '=')+ goto yy700;+ ++p;+ yy698 : { return 0; }+ yy699:+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 64) {+ goto yy705;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy698;+ if (yych <= '\n')+ goto yy702;+ goto yy698;+ } else {+ if (yych <= '\r')+ goto yy702;+ if (yych == ' ')+ goto yy702;+ goto yy698;+ }+ yy700:+ yych = *(marker = ++p);+ if (yybm[0 + yych] & 128) {+ goto yy709;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy698;+ if (yych <= '\n')+ goto yy707;+ goto yy698;+ } else {+ if (yych <= '\r')+ goto yy707;+ if (yych == ' ')+ goto yy707;+ goto yy698;+ }+ yy701:+ yych = *++p;+ yy702:+ if (yybm[0 + yych] & 32) {+ goto yy701;+ }+ if (yych <= 0x08)+ goto yy703;+ if (yych <= '\n')+ goto yy704;+ if (yych == '\r')+ goto yy704;+ yy703:+ p = marker;+ goto yy698;+ yy704:+ ++p;+ { return 2; }+ yy705:+ yych = *++p;+ if (yybm[0 + yych] & 32) {+ goto yy701;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy703;+ if (yych <= '\n')+ goto yy704;+ goto yy703;+ } else {+ if (yych <= '\r')+ goto yy704;+ if (yych == '-')+ goto yy705;+ goto yy703;+ }+ yy706:+ yych = *++p;+ yy707:+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy703;+ if (yych <= '\t')+ goto yy706;+ if (yych >= '\v')+ goto yy703;+ } else {+ if (yych <= '\r')+ goto yy708;+ if (yych == ' ')+ goto yy706;+ goto yy703;+ }+ yy708:+ ++p;+ { return 1; }+ yy709:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy709;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy703;+ if (yych <= '\t')+ goto yy706;+ if (yych <= '\n')+ goto yy708;+ goto yy703;+ } else {+ if (yych <= '\r')+ goto yy708;+ if (yych == ' ')+ goto yy706;+ goto yy703;+ }+ }+}++// 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 yy712;+ if (yych == '~')+ goto yy713;+ ++p;+ yy711 : { return 0; }+ yy712:+ yych = *(marker = ++p);+ if (yych == '`')+ goto yy714;+ goto yy711;+ yy713:+ yych = *(marker = ++p);+ if (yych == '~')+ goto yy716;+ goto yy711;+ yy714:+ yych = *++p;+ if (yybm[0 + yych] & 16) {+ goto yy717;+ }+ yy715:+ p = marker;+ goto yy711;+ yy716:+ yych = *++p;+ if (yybm[0 + yych] & 32) {+ goto yy718;+ }+ goto yy715;+ yy717:+ yych = *++p;+ if (yybm[0 + yych] & 16) {+ goto yy717;+ }+ if (yych <= 0xDF) {+ if (yych <= '\f') {+ if (yych <= 0x00)+ goto yy715;+ if (yych == '\n') {+ marker = p;+ goto yy720;+ }+ marker = p;+ goto yy719;+ } else {+ if (yych <= '\r') {+ marker = p;+ goto yy720;+ }+ if (yych <= 0x7F) {+ marker = p;+ goto yy719;+ }+ if (yych <= 0xC1)+ goto yy715;+ marker = p;+ goto yy721;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0) {+ marker = p;+ goto yy722;+ }+ if (yych == 0xED) {+ marker = p;+ goto yy724;+ }+ marker = p;+ goto yy723;+ } else {+ if (yych <= 0xF0) {+ marker = p;+ goto yy725;+ }+ if (yych <= 0xF3) {+ marker = p;+ goto yy726;+ }+ if (yych <= 0xF4) {+ marker = p;+ goto yy727;+ }+ goto yy715;+ }+ }+ yy718:+ yych = *++p;+ if (yybm[0 + yych] & 32) {+ goto yy718;+ }+ if (yych <= 0xDF) {+ if (yych <= '\f') {+ if (yych <= 0x00)+ goto yy715;+ if (yych == '\n') {+ marker = p;+ goto yy729;+ }+ marker = p;+ goto yy728;+ } else {+ if (yych <= '\r') {+ marker = p;+ goto yy729;+ }+ if (yych <= 0x7F) {+ marker = p;+ goto yy728;+ }+ if (yych <= 0xC1)+ goto yy715;+ marker = p;+ goto yy730;+ }+ } else {+ if (yych <= 0xEF) {+ if (yych <= 0xE0) {+ marker = p;+ goto yy731;+ }+ if (yych == 0xED) {+ marker = p;+ goto yy733;+ }+ marker = p;+ goto yy732;+ } else {+ if (yych <= 0xF0) {+ marker = p;+ goto yy734;+ }+ if (yych <= 0xF3) {+ marker = p;+ goto yy735;+ }+ if (yych <= 0xF4) {+ marker = p;+ goto yy736;+ }+ goto yy715;+ }+ }+ yy719:+ yych = *++p;+ if (yybm[0 + yych] & 64) {+ goto yy719;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy715;+ if (yych >= 0x0E)+ goto yy715;+ } else {+ if (yych <= 0xDF)+ goto yy721;+ if (yych <= 0xE0)+ goto yy722;+ goto yy723;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy724;+ if (yych <= 0xEF)+ goto yy723;+ goto yy725;+ } else {+ if (yych <= 0xF3)+ goto yy726;+ if (yych <= 0xF4)+ goto yy727;+ goto yy715;+ }+ }+ yy720:+ ++p;+ p = marker;+ { return (bufsize_t)(p - start); }+ yy721:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy719;+ goto yy715;+ yy722:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy721;+ goto yy715;+ yy723:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy721;+ goto yy715;+ yy724:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0x9F)+ goto yy721;+ goto yy715;+ yy725:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy723;+ goto yy715;+ yy726:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy723;+ goto yy715;+ yy727:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0x8F)+ goto yy723;+ goto yy715;+ yy728:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy728;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= 0x00)+ goto yy715;+ if (yych >= 0x0E)+ goto yy715;+ } else {+ if (yych <= 0xDF)+ goto yy730;+ if (yych <= 0xE0)+ goto yy731;+ goto yy732;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy733;+ if (yych <= 0xEF)+ goto yy732;+ goto yy734;+ } else {+ if (yych <= 0xF3)+ goto yy735;+ if (yych <= 0xF4)+ goto yy736;+ goto yy715;+ }+ }+ yy729:+ ++p;+ p = marker;+ { return (bufsize_t)(p - start); }+ yy730:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy728;+ goto yy715;+ yy731:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy730;+ goto yy715;+ yy732:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy730;+ goto yy715;+ yy733:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0x9F)+ goto yy730;+ goto yy715;+ yy734:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy732;+ goto yy715;+ yy735:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0xBF)+ goto yy732;+ goto yy715;+ yy736:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy715;+ if (yych <= 0x8F)+ goto yy732;+ goto yy715;+ }+}++// 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 yy739;+ if (yych == '~')+ goto yy740;+ ++p;+ yy738 : { return 0; }+ yy739:+ yych = *(marker = ++p);+ if (yych == '`')+ goto yy741;+ goto yy738;+ yy740:+ yych = *(marker = ++p);+ if (yych == '~')+ goto yy743;+ goto yy738;+ yy741:+ yych = *++p;+ if (yybm[0 + yych] & 32) {+ goto yy744;+ }+ yy742:+ p = marker;+ goto yy738;+ yy743:+ yych = *++p;+ if (yybm[0 + yych] & 64) {+ goto yy745;+ }+ goto yy742;+ yy744:+ yych = *++p;+ if (yybm[0 + yych] & 32) {+ goto yy744;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy742;+ if (yych <= '\t') {+ marker = p;+ goto yy746;+ }+ if (yych <= '\n') {+ marker = p;+ goto yy747;+ }+ goto yy742;+ } else {+ if (yych <= '\r') {+ marker = p;+ goto yy747;+ }+ if (yych == ' ') {+ marker = p;+ goto yy746;+ }+ goto yy742;+ }+ yy745:+ yych = *++p;+ if (yybm[0 + yych] & 64) {+ goto yy745;+ }+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy742;+ if (yych <= '\t') {+ marker = p;+ goto yy748;+ }+ if (yych <= '\n') {+ marker = p;+ goto yy749;+ }+ goto yy742;+ } else {+ if (yych <= '\r') {+ marker = p;+ goto yy749;+ }+ if (yych == ' ') {+ marker = p;+ goto yy748;+ }+ goto yy742;+ }+ yy746:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy746;+ }+ if (yych <= 0x08)+ goto yy742;+ if (yych <= '\n')+ goto yy747;+ if (yych != '\r')+ goto yy742;+ yy747:+ ++p;+ p = marker;+ { return (bufsize_t)(p - start); }+ yy748:+ yych = *++p;+ if (yych <= '\f') {+ if (yych <= 0x08)+ goto yy742;+ if (yych <= '\t')+ goto yy748;+ if (yych >= '\v')+ goto yy742;+ } else {+ if (yych <= '\r')+ goto yy749;+ if (yych == ' ')+ goto yy748;+ goto yy742;+ }+ yy749:+ ++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 yy752;+ ++p;+ yy751 : { return 0; }+ yy752:+ yych = *(marker = ++p);+ if (yych <= '@') {+ if (yych != '#')+ goto yy751;+ } else {+ if (yych <= 'Z')+ goto yy754;+ if (yych <= '`')+ goto yy751;+ if (yych <= 'z')+ goto yy754;+ goto yy751;+ }+ yych = *++p;+ if (yych <= 'W') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy755;+ } else {+ if (yych <= 'X')+ goto yy756;+ if (yych == 'x')+ goto yy756;+ }+ yy753:+ p = marker;+ goto yy751;+ yy754:+ yych = *++p;+ if (yych <= '@') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy757;+ goto yy753;+ } else {+ if (yych <= 'Z')+ goto yy757;+ if (yych <= '`')+ goto yy753;+ if (yych <= 'z')+ goto yy757;+ goto yy753;+ }+ yy755:+ yych = *++p;+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy758;+ if (yych == ';')+ goto yy759;+ goto yy753;+ yy756:+ yych = *++p;+ if (yych <= '@') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy760;+ goto yy753;+ } else {+ if (yych <= 'F')+ goto yy760;+ if (yych <= '`')+ goto yy753;+ if (yych <= 'f')+ goto yy760;+ goto yy753;+ }+ yy757:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy761;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ goto yy761;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'z')+ goto yy761;+ goto yy753;+ }+ }+ yy758:+ yych = *++p;+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy762;+ if (yych != ';')+ goto yy753;+ yy759:+ ++p;+ { return (bufsize_t)(p - start); }+ yy760:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy763;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'F') {+ if (yych <= '@')+ goto yy753;+ goto yy763;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'f')+ goto yy763;+ goto yy753;+ }+ }+ yy761:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy764;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ goto yy764;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'z')+ goto yy764;+ goto yy753;+ }+ }+ yy762:+ yych = *++p;+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy765;+ if (yych == ';')+ goto yy759;+ goto yy753;+ yy763:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy766;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'F') {+ if (yych <= '@')+ goto yy753;+ goto yy766;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'f')+ goto yy766;+ goto yy753;+ }+ }+ yy764:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy767;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ goto yy767;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'z')+ goto yy767;+ goto yy753;+ }+ }+ yy765:+ yych = *++p;+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy768;+ if (yych == ';')+ goto yy759;+ goto yy753;+ yy766:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy769;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'F') {+ if (yych <= '@')+ goto yy753;+ goto yy769;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'f')+ goto yy769;+ goto yy753;+ }+ }+ yy767:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy770;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ goto yy770;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'z')+ goto yy770;+ goto yy753;+ }+ }+ yy768:+ yych = *++p;+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy771;+ if (yych == ';')+ goto yy759;+ goto yy753;+ yy769:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy772;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'F') {+ if (yych <= '@')+ goto yy753;+ goto yy772;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'f')+ goto yy772;+ goto yy753;+ }+ }+ yy770:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy773;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ goto yy773;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'z')+ goto yy773;+ goto yy753;+ }+ }+ yy771:+ yych = *++p;+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy774;+ if (yych == ';')+ goto yy759;+ goto yy753;+ yy772:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy774;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'F') {+ if (yych <= '@')+ goto yy753;+ goto yy774;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'f')+ goto yy774;+ goto yy753;+ }+ }+ yy773:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy775;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ goto yy775;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'z')+ goto yy775;+ goto yy753;+ }+ }+ yy774:+ yych = *++p;+ if (yych == ';')+ goto yy759;+ goto yy753;+ yy775:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy776;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy776:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy777;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy777:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy778;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy778:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy779;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy779:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy780;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy780:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy781;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy781:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy782;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy782:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy783;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy783:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy784;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy784:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy785;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy785:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy786;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy786:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy787;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy787:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy788;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy788:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy789;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy789:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy790;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy790:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy791;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy791:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy792;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy792:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy793;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy793:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy794;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy794:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy795;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy795:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy796;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy796:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy797;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy797:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy798;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych >= '{')+ goto yy753;+ }+ }+ yy798:+ yych = *++p;+ if (yych <= ';') {+ if (yych <= '/')+ goto yy753;+ if (yych <= '9')+ goto yy774;+ if (yych <= ':')+ goto yy753;+ goto yy759;+ } else {+ if (yych <= 'Z') {+ if (yych <= '@')+ goto yy753;+ goto yy774;+ } else {+ if (yych <= '`')+ goto yy753;+ if (yych <= 'z')+ goto yy774;+ goto yy753;+ }+ }+ }+}++// 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 yy801;+ if (yych >= 'F')+ goto yy802;+ } else {+ if (yych == 'J')+ goto yy803;+ if (yych >= 'V')+ goto yy804;+ }+ } else {+ if (yych <= 'f') {+ if (yych == 'd')+ goto yy801;+ if (yych >= 'f')+ goto yy802;+ } else {+ if (yych <= 'j') {+ if (yych >= 'j')+ goto yy803;+ } else {+ if (yych == 'v')+ goto yy804;+ }+ }+ }+ ++p;+ yy800 : { return 0; }+ yy801:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych == 'A')+ goto yy805;+ if (yych == 'a')+ goto yy805;+ goto yy800;+ yy802:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych == 'I')+ goto yy807;+ if (yych == 'i')+ goto yy807;+ goto yy800;+ yy803:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych == 'A')+ goto yy808;+ if (yych == 'a')+ goto yy808;+ goto yy800;+ yy804:+ yyaccept = 0;+ yych = *(marker = ++p);+ if (yych == 'B')+ goto yy809;+ if (yych == 'b')+ goto yy809;+ goto yy800;+ yy805:+ yych = *++p;+ if (yych == 'T')+ goto yy810;+ if (yych == 't')+ goto yy810;+ yy806:+ p = marker;+ if (yyaccept == 0) {+ goto yy800;+ } else {+ goto yy818;+ }+ yy807:+ yych = *++p;+ if (yych == 'L')+ goto yy811;+ if (yych == 'l')+ goto yy811;+ goto yy806;+ yy808:+ yych = *++p;+ if (yych == 'V')+ goto yy812;+ if (yych == 'v')+ goto yy812;+ goto yy806;+ yy809:+ yych = *++p;+ if (yych == 'S')+ goto yy813;+ if (yych == 's')+ goto yy813;+ goto yy806;+ yy810:+ yych = *++p;+ if (yych == 'A')+ goto yy814;+ if (yych == 'a')+ goto yy814;+ goto yy806;+ yy811:+ yych = *++p;+ if (yych == 'E')+ goto yy815;+ if (yych == 'e')+ goto yy815;+ goto yy806;+ yy812:+ yych = *++p;+ if (yych == 'A')+ goto yy809;+ if (yych == 'a')+ goto yy809;+ goto yy806;+ yy813:+ yych = *++p;+ if (yych == 'C')+ goto yy816;+ if (yych == 'c')+ goto yy816;+ goto yy806;+ yy814:+ yych = *++p;+ if (yych == ':')+ goto yy817;+ goto yy806;+ yy815:+ yych = *++p;+ if (yych == ':')+ goto yy819;+ goto yy806;+ yy816:+ yych = *++p;+ if (yych == 'R')+ goto yy820;+ if (yych == 'r')+ goto yy820;+ goto yy806;+ yy817:+ yyaccept = 1;+ yych = *(marker = ++p);+ if (yych == 'I')+ goto yy821;+ if (yych == 'i')+ goto yy821;+ yy818 : { return (bufsize_t)(p - start); }+ yy819:+ ++p;+ goto yy818;+ yy820:+ yych = *++p;+ if (yych == 'I')+ goto yy822;+ if (yych == 'i')+ goto yy822;+ goto yy806;+ yy821:+ yych = *++p;+ if (yych == 'M')+ goto yy823;+ if (yych == 'm')+ goto yy823;+ goto yy806;+ yy822:+ yych = *++p;+ if (yych == 'P')+ goto yy824;+ if (yych == 'p')+ goto yy824;+ goto yy806;+ yy823:+ yych = *++p;+ if (yych == 'A')+ goto yy825;+ if (yych == 'a')+ goto yy825;+ goto yy806;+ yy824:+ yych = *++p;+ if (yych == 'T')+ goto yy815;+ if (yych == 't')+ goto yy815;+ goto yy806;+ yy825:+ yych = *++p;+ if (yych == 'G')+ goto yy826;+ if (yych != 'g')+ goto yy806;+ yy826:+ yych = *++p;+ if (yych == 'E')+ goto yy827;+ if (yych != 'e')+ goto yy806;+ yy827:+ yych = *++p;+ if (yych != '/')+ goto yy806;+ yych = *++p;+ if (yych <= 'W') {+ if (yych <= 'J') {+ if (yych == 'G')+ goto yy828;+ if (yych <= 'I')+ goto yy806;+ goto yy829;+ } else {+ if (yych == 'P')+ goto yy830;+ if (yych <= 'V')+ goto yy806;+ goto yy831;+ }+ } else {+ if (yych <= 'j') {+ if (yych == 'g')+ goto yy828;+ if (yych <= 'i')+ goto yy806;+ goto yy829;+ } else {+ if (yych <= 'p') {+ if (yych <= 'o')+ goto yy806;+ goto yy830;+ } else {+ if (yych == 'w')+ goto yy831;+ goto yy806;+ }+ }+ }+ yy828:+ yych = *++p;+ if (yych == 'I')+ goto yy832;+ if (yych == 'i')+ goto yy832;+ goto yy806;+ yy829:+ yych = *++p;+ if (yych == 'P')+ goto yy833;+ if (yych == 'p')+ goto yy833;+ goto yy806;+ yy830:+ yych = *++p;+ if (yych == 'N')+ goto yy834;+ if (yych == 'n')+ goto yy834;+ goto yy806;+ yy831:+ yych = *++p;+ if (yych == 'E')+ goto yy835;+ if (yych == 'e')+ goto yy835;+ goto yy806;+ yy832:+ yych = *++p;+ if (yych == 'F')+ goto yy836;+ if (yych == 'f')+ goto yy836;+ goto yy806;+ yy833:+ yych = *++p;+ if (yych == 'E')+ goto yy834;+ if (yych != 'e')+ goto yy806;+ yy834:+ yych = *++p;+ if (yych == 'G')+ goto yy836;+ if (yych == 'g')+ goto yy836;+ goto yy806;+ yy835:+ yych = *++p;+ if (yych == 'B')+ goto yy837;+ if (yych == 'b')+ goto yy837;+ goto yy806;+ yy836:+ ++p;+ { return 0; }+ yy837:+ yych = *++p;+ if (yych == 'P')+ goto yy836;+ if (yych == 'p')+ goto yy836;+ goto yy806;+ }+}++// Scans a footnote definition opening.+bufsize_t _scan_footnote_definition(const unsigned char *p) {+ const unsigned char *marker = NULL;+ const unsigned char *start = p;++ {+ unsigned char yych;+ static const unsigned char yybm[] = {+ 0, 64, 64, 64, 64, 64, 64, 64, 64, 128, 0, 64, 64, 0, 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, 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,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 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 yy840;+ ++p;+ yy839 : { return 0; }+ yy840:+ yych = *(marker = ++p);+ if (yych != '^')+ goto yy839;+ yych = *++p;+ if (yych != ']')+ goto yy843;+ yy841:+ p = marker;+ goto yy839;+ yy842:+ yych = *++p;+ yy843:+ if (yybm[0 + yych] & 64) {+ goto yy842;+ }+ if (yych <= 0xEC) {+ if (yych <= 0xC1) {+ if (yych <= ' ')+ goto yy841;+ if (yych <= ']')+ goto yy851;+ goto yy841;+ } else {+ if (yych <= 0xDF)+ goto yy844;+ if (yych <= 0xE0)+ goto yy845;+ goto yy846;+ }+ } else {+ if (yych <= 0xF0) {+ if (yych <= 0xED)+ goto yy847;+ if (yych <= 0xEF)+ goto yy846;+ goto yy848;+ } else {+ if (yych <= 0xF3)+ goto yy849;+ if (yych <= 0xF4)+ goto yy850;+ goto yy841;+ }+ }+ yy844:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy841;+ if (yych <= 0xBF)+ goto yy842;+ goto yy841;+ yy845:+ yych = *++p;+ if (yych <= 0x9F)+ goto yy841;+ if (yych <= 0xBF)+ goto yy844;+ goto yy841;+ yy846:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy841;+ if (yych <= 0xBF)+ goto yy844;+ goto yy841;+ yy847:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy841;+ if (yych <= 0x9F)+ goto yy844;+ goto yy841;+ yy848:+ yych = *++p;+ if (yych <= 0x8F)+ goto yy841;+ if (yych <= 0xBF)+ goto yy846;+ goto yy841;+ yy849:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy841;+ if (yych <= 0xBF)+ goto yy846;+ goto yy841;+ yy850:+ yych = *++p;+ if (yych <= 0x7F)+ goto yy841;+ if (yych <= 0x8F)+ goto yy846;+ goto yy841;+ yy851:+ yych = *++p;+ if (yych != ':')+ goto yy841;+ yy852:+ yych = *++p;+ if (yybm[0 + yych] & 128) {+ goto yy852;+ }+ { return (bufsize_t)(p - start); }+ } }
cbits/scanners.h view
@@ -15,6 +15,10 @@ bufsize_t _scan_autolink_email(const unsigned char *p); bufsize_t _scan_html_tag(const unsigned char *p); bufsize_t _scan_liberal_html_tag(const unsigned char *p);+bufsize_t _scan_html_comment(const unsigned char *p);+bufsize_t _scan_html_pi(const unsigned char *p);+bufsize_t _scan_html_declaration(const unsigned char *p);+bufsize_t _scan_html_cdata(const unsigned char *p); bufsize_t _scan_html_block_start(const unsigned char *p); bufsize_t _scan_html_block_start_7(const unsigned char *p); bufsize_t _scan_html_block_end_1(const unsigned char *p);@@ -26,7 +30,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);@@ -38,6 +41,10 @@ #define scan_autolink_email(c, n) _scan_at(&_scan_autolink_email, c, n) #define scan_html_tag(c, n) _scan_at(&_scan_html_tag, c, n) #define scan_liberal_html_tag(c, n) _scan_at(&_scan_liberal_html_tag, c, n)+#define scan_html_comment(c, n) _scan_at(&_scan_html_comment, c, n)+#define scan_html_pi(c, n) _scan_at(&_scan_html_pi, c, n)+#define scan_html_declaration(c, n) _scan_at(&_scan_html_declaration, c, n)+#define scan_html_cdata(c, n) _scan_at(&_scan_html_cdata, c, n) #define scan_html_block_start(c, n) _scan_at(&_scan_html_block_start, c, n) #define scan_html_block_start_7(c, n) _scan_at(&_scan_html_block_start_7, c, n) #define scan_html_block_end_1(c, n) _scan_at(&_scan_html_block_end_1, c, n)@@ -50,7 +57,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)
cbits/strikethrough.c view
@@ -67,6 +67,7 @@ strikethrough->end_column = closer->inl_text->start_column + closer->inl_text->as.literal.len - 1; cmark_node_free(closer->inl_text); +done: delim = closer; while (delim != NULL && delim != opener) { tmp_delim = delim->previous;@@ -76,7 +77,6 @@ cmark_inline_parser_remove_delimiter(inline_parser, opener); -done: return res; }
cbits/table.c view
@@ -11,41 +11,55 @@ #include "table.h" #include "cmark-gfm-core-extensions.h" +// Limit to prevent a malicious input from causing a denial of service.+#define MAX_AUTOCOMPLETED_CELLS 0x80000++// Custom node flag, initialized in `create_table_extension`.+static cmark_node_internal_flags CMARK_NODE__TABLE_VISITED;+ cmark_node_type CMARK_NODE_TABLE, CMARK_NODE_TABLE_ROW, CMARK_NODE_TABLE_CELL; typedef struct {+ cmark_strbuf *buf;+ int start_offset, end_offset, internal_offset;+} node_cell;++typedef struct { uint16_t n_columns;- cmark_llist *cells;+ int paragraph_offset;+ node_cell *cells; } table_row; typedef struct { uint16_t n_columns; uint8_t *alignments;+ int n_rows;+ int n_nonempty_cells; } node_table; typedef struct { bool is_header; } node_table_row; -typedef struct {- cmark_strbuf *buf;- int start_offset, end_offset, internal_offset;-} node_cell;--static void free_table_cell(cmark_mem *mem, void *data) {- node_cell *cell = (node_cell *)data;+static void free_table_cell(cmark_mem *mem, node_cell *cell) { cmark_strbuf_free((cmark_strbuf *)cell->buf); mem->free(cell->buf);- mem->free(cell); } +static void free_row_cells(cmark_mem *mem, table_row *row) {+ while (row->n_columns > 0) {+ free_table_cell(mem, &row->cells[--row->n_columns]);+ }+ mem->free(row->cells);+ row->cells = NULL;+}+ static void free_table_row(cmark_mem *mem, table_row *row) { if (!row) return; - cmark_llist_free_full(mem, row->cells, (cmark_free_func)free_table_cell);-+ free_row_cells(mem, row); mem->free(row); } @@ -74,6 +88,33 @@ return 1; } +// Increment the number of rows in the table. Also update n_nonempty_cells,+// which keeps track of the number of cells which were parsed from the+// input file. (If one of the rows is too short, then the trailing cells+// are autocompleted. Autocompleted cells are not counted in n_nonempty_cells.)+// The purpose of this is to prevent a malicious input from generating a very+// large number of autocompleted cells, which could cause a denial of service+// vulnerability.+static int incr_table_row_count(cmark_node *node, int i) {+ if (!node || node->type != CMARK_NODE_TABLE) {+ return 0;+ }++ ((node_table *)node->as.opaque)->n_rows++;+ ((node_table *)node->as.opaque)->n_nonempty_cells += i;+ return 1;+}++// Calculate the number of autocompleted cells.+static int get_n_autocompleted_cells(cmark_node *node) {+ if (!node || node->type != CMARK_NODE_TABLE) {+ return 0;+ }++ const node_table *nt = (node_table *)node->as.opaque;+ return (nt->n_columns * nt->n_rows) - nt->n_nonempty_cells;+}+ static uint8_t *get_table_alignments(cmark_node *node) { if (!node || node->type != CMARK_NODE_TABLE) return 0;@@ -89,6 +130,23 @@ return 1; } +static uint8_t get_cell_alignment(cmark_node *node) {+ if (!node || node->type != CMARK_NODE_TABLE_CELL)+ return 0;++ const uint8_t *alignments = get_table_alignments(node->parent->parent);+ int i = node->as.cell_index;+ return alignments[i];+}++static int set_cell_index(cmark_node *node, int i) {+ if (!node || node->type != CMARK_NODE_TABLE_CELL)+ return 0;++ node->as.cell_index = i;+ return 1;+}+ static cmark_strbuf *unescape_pipes(cmark_mem *mem, unsigned char *string, bufsize_t len) { cmark_strbuf *res = (cmark_strbuf *)mem->calloc(1, sizeof(cmark_strbuf));@@ -110,50 +168,111 @@ return res; } +// Adds a new cell to the end of the row. A pointer to the new cell is returned+// for the caller to initialize.+static node_cell* append_row_cell(cmark_mem *mem, table_row *row) {+ const uint32_t n_columns = row->n_columns + 1;+ // realloc when n_columns is a power of 2+ if ((n_columns & (n_columns-1)) == 0) {+ // make sure we never wrap row->n_columns+ // offset will != len and our exit will clean up as intended+ if (n_columns > UINT16_MAX) {+ return NULL;+ }+ // Use realloc to double the size of the buffer.+ row->cells = (node_cell *)mem->realloc(row->cells, (2 * n_columns - 1) * sizeof(node_cell));+ }+ row->n_columns = (uint16_t)n_columns;+ return &row->cells[n_columns-1];+}+ static table_row *row_from_string(cmark_syntax_extension *self, cmark_parser *parser, unsigned char *string, int len) {+ // Parses a single table row. It has the following form:+ // `delim? table_cell (delim table_cell)* delim? newline`+ // Note that cells are allowed to be empty.+ //+ // From the GitHub-flavored Markdown specification:+ //+ // > Each row consists of cells containing arbitrary text, in which inlines+ // > are parsed, separated by pipes (|). A leading and trailing pipe is also+ // > recommended for clarity of reading, and if there’s otherwise parsing+ // > ambiguity.+ table_row *row = NULL; bufsize_t cell_matched = 1, pipe_matched = 1, offset;+ int expect_more_cells = 1;+ int row_end_offset = 0;+ int int_overflow_abort = 0; row = (table_row *)parser->mem->calloc(1, sizeof(table_row)); row->n_columns = 0; row->cells = NULL; + // Scan past the (optional) leading pipe. offset = scan_table_cell_end(string, len, 0); // Parse the cells of the row. Stop if we reach the end of the input, or if we // cannot detect any more cells.- while (offset < len && (cell_matched || pipe_matched)) {+ while (offset < len && expect_more_cells) { cell_matched = scan_table_cell(string, len, offset); pipe_matched = scan_table_cell_end(string, len, offset + cell_matched); if (cell_matched || pipe_matched) {+ // We are guaranteed to have a cell, since (1) either we found some+ // content and cell_matched, or (2) we found an empty cell followed by a+ // pipe. cmark_strbuf *cell_buf = unescape_pipes(parser->mem, string + offset, cell_matched); cmark_strbuf_trim(cell_buf); - node_cell *cell = (node_cell *)parser->mem->calloc(1, sizeof(*cell));+ node_cell *cell = append_row_cell(parser->mem, row);+ if (!cell) {+ int_overflow_abort = 1;+ cmark_strbuf_free(cell_buf);+ parser->mem->free(cell_buf);+ break;+ } cell->buf = cell_buf; cell->start_offset = offset; cell->end_offset = offset + cell_matched - 1;- while (cell->start_offset > 0 && string[cell->start_offset - 1] != '|') {+ cell->internal_offset = 0;++ while (cell->start_offset > row->paragraph_offset && string[cell->start_offset - 1] != '|') { --cell->start_offset; ++cell->internal_offset; }- row->n_columns += 1;- row->cells = cmark_llist_append(parser->mem, row->cells, cell); } offset += cell_matched + pipe_matched; - if (!pipe_matched) {- pipe_matched = scan_table_row_end(string, len, offset);- offset += pipe_matched;+ if (pipe_matched) {+ expect_more_cells = 1;+ } else {+ // We've scanned the last cell. Check if we have reached the end of the row+ row_end_offset = scan_table_row_end(string, len, offset);+ offset += row_end_offset;++ // If the end of the row is not the end of the input,+ // the row is not a real row but potentially part of the paragraph+ // preceding the table.+ if (row_end_offset && offset != len) {+ row->paragraph_offset = offset;++ free_row_cells(parser->mem, row);++ // Scan past the (optional) leading pipe.+ offset += scan_table_cell_end(string, len, offset);++ expect_more_cells = 1;+ } else {+ expect_more_cells = 0;+ } } } - if (offset != len || !row->n_columns) {+ if (offset != len || row->n_columns == 0 || int_overflow_abort) { free_table_row(parser->mem, row); row = NULL; }@@ -161,73 +280,107 @@ return row; } +static void try_inserting_table_header_paragraph(cmark_parser *parser,+ cmark_node *parent_container,+ unsigned char *parent_string,+ int paragraph_offset) {+ cmark_node *paragraph;+ cmark_strbuf *paragraph_content;++ paragraph = cmark_node_new_with_mem(CMARK_NODE_PARAGRAPH, parser->mem);++ paragraph_content = unescape_pipes(parser->mem, parent_string, paragraph_offset);+ cmark_strbuf_trim(paragraph_content);+ cmark_node_set_string_content(paragraph, (char *) paragraph_content->ptr);+ cmark_strbuf_free(paragraph_content);+ parser->mem->free(paragraph_content);++ if (!cmark_node_insert_before(parent_container, paragraph)) {+ parser->mem->free(paragraph);+ }+}+ static cmark_node *try_opening_table_header(cmark_syntax_extension *self, cmark_parser *parser, cmark_node *parent_container, unsigned char *input, int len) {- bufsize_t matched =- scan_table_start(input, len, cmark_parser_get_first_nonspace(parser)); cmark_node *table_header; table_row *header_row = NULL;- table_row *marker_row = NULL;+ table_row *delimiter_row = NULL; node_table_row *ntr; const char *parent_string; uint16_t i; - if (!matched)+ if (parent_container->flags & CMARK_NODE__TABLE_VISITED) { return parent_container;+ } - parent_string = cmark_node_get_string_content(parent_container);+ if (!scan_table_start(input, len, cmark_parser_get_first_nonspace(parser))) {+ return parent_container;+ } + // Since scan_table_start was successful, we must have a delimiter row.+ delimiter_row = row_from_string(+ self, parser, input + cmark_parser_get_first_nonspace(parser),+ len - cmark_parser_get_first_nonspace(parser));+ // assert may be optimized out, don't rely on it for security boundaries+ if (!delimiter_row) {+ return parent_container;+ }++ assert(delimiter_row);+ cmark_arena_push(); + // Check for a matching header row. We call `row_from_string` with the entire+ // (potentially long) parent container as input, but this should be safe since+ // `row_from_string` bails out early if it does not find a row.+ parent_string = cmark_node_get_string_content(parent_container); header_row = row_from_string(self, parser, (unsigned char *)parent_string, (int)strlen(parent_string));-- if (!header_row) {+ if (!header_row || header_row->n_columns != delimiter_row->n_columns) {+ free_table_row(parser->mem, delimiter_row); free_table_row(parser->mem, header_row); cmark_arena_pop();- return parent_container;- }-- marker_row = row_from_string(self, parser,- input + cmark_parser_get_first_nonspace(parser),- len - cmark_parser_get_first_nonspace(parser));-- assert(marker_row);-- if (header_row->n_columns != marker_row->n_columns) {- free_table_row(parser->mem, header_row);- free_table_row(parser->mem, marker_row);- cmark_arena_pop();+ parent_container->flags |= CMARK_NODE__TABLE_VISITED; return parent_container; } if (cmark_arena_pop()) {+ delimiter_row = row_from_string(+ self, parser, input + cmark_parser_get_first_nonspace(parser),+ len - cmark_parser_get_first_nonspace(parser)); header_row = row_from_string(self, parser, (unsigned char *)parent_string, (int)strlen(parent_string));- marker_row = row_from_string(self, parser,- input + cmark_parser_get_first_nonspace(parser),- len - cmark_parser_get_first_nonspace(parser));+ // row_from_string can return NULL, add additional check to ensure n_columns match+ if (!delimiter_row || !header_row || header_row->n_columns != delimiter_row->n_columns) {+ free_table_row(parser->mem, delimiter_row);+ free_table_row(parser->mem, header_row);+ return parent_container;+ } } if (!cmark_node_set_type(parent_container, CMARK_NODE_TABLE)) { free_table_row(parser->mem, header_row);- free_table_row(parser->mem, marker_row);+ free_table_row(parser->mem, delimiter_row); return parent_container; } - cmark_node_set_syntax_extension(parent_container, self);+ if (header_row->paragraph_offset) {+ try_inserting_table_header_paragraph(parser, parent_container, (unsigned char *)parent_string,+ header_row->paragraph_offset);+ } + cmark_node_set_syntax_extension(parent_container, self); parent_container->as.opaque = parser->mem->calloc(1, sizeof(node_table));- set_n_table_columns(parent_container, header_row->n_columns); + // allocate alignments based on delimiter_row->n_columns+ // since we populate the alignments array based on delimiter_row->cells uint8_t *alignments =- (uint8_t *)parser->mem->calloc(header_row->n_columns, sizeof(uint8_t));- cmark_llist *it = marker_row->cells;- for (i = 0; it; it = it->next, ++i) {- node_cell *node = (node_cell *)it->data;+ (uint8_t *)parser->mem->calloc(delimiter_row->n_columns, sizeof(uint8_t));+ for (i = 0; i < delimiter_row->n_columns; ++i) {+ node_cell *node = &delimiter_row->cells[i]; bool left = node->buf->ptr[0] == ':', right = node->buf->ptr[node->buf->size - 1] == ':'; if (left && right)@@ -249,27 +402,26 @@ table_header->as.opaque = ntr = (node_table_row *)parser->mem->calloc(1, sizeof(node_table_row)); ntr->is_header = true; - {- cmark_llist *tmp;-- for (tmp = header_row->cells; tmp; tmp = tmp->next) {- node_cell *cell = (node_cell *) tmp->data;- cmark_node *header_cell = cmark_parser_add_child(parser, table_header,- CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset);- header_cell->start_line = header_cell->end_line = parent_container->start_line;- header_cell->internal_offset = cell->internal_offset;- header_cell->end_column = parent_container->start_column + cell->end_offset;- cmark_node_set_string_content(header_cell, (char *) cell->buf->ptr);- cmark_node_set_syntax_extension(header_cell, self);- }+ for (i = 0; i < header_row->n_columns; ++i) {+ node_cell *cell = &header_row->cells[i];+ cmark_node *header_cell = cmark_parser_add_child(parser, table_header,+ CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset);+ header_cell->start_line = header_cell->end_line = parent_container->start_line;+ header_cell->internal_offset = cell->internal_offset;+ header_cell->end_column = parent_container->start_column + cell->end_offset;+ cmark_node_set_string_content(header_cell, (char *) cell->buf->ptr);+ cmark_node_set_syntax_extension(header_cell, self);+ set_cell_index(header_cell, i); } + incr_table_row_count(parent_container, i);+ cmark_parser_advance_offset( parser, (char *)input, (int)strlen((char *)input) - 1 - cmark_parser_get_offset(parser), false); free_table_row(parser->mem, header_row);- free_table_row(parser->mem, marker_row);+ free_table_row(parser->mem, delimiter_row); return parent_container; } @@ -283,6 +435,10 @@ if (cmark_parser_is_blank(parser)) return NULL; + if (get_n_autocompleted_cells(parent_container) > MAX_AUTOCOMPLETED_CELLS) {+ return NULL;+ }+ table_row_block = cmark_parser_add_child(parser, parent_container, CMARK_NODE_TABLE_ROW, parent_container->start_column);@@ -293,24 +449,33 @@ row = row_from_string(self, parser, input + cmark_parser_get_first_nonspace(parser), len - cmark_parser_get_first_nonspace(parser)); + if (!row) {+ // clean up the dangling node+ cmark_node_free(table_row_block);+ return NULL;+ }+ {- cmark_llist *tmp; int i, table_columns = get_n_table_columns(parent_container); - for (tmp = row->cells, i = 0; tmp && i < table_columns; tmp = tmp->next, ++i) {- node_cell *cell = (node_cell *) tmp->data;+ for (i = 0; i < row->n_columns && i < table_columns; ++i) {+ node_cell *cell = &row->cells[i]; cmark_node *node = cmark_parser_add_child(parser, table_row_block, CMARK_NODE_TABLE_CELL, parent_container->start_column + cell->start_offset); node->internal_offset = cell->internal_offset; node->end_column = parent_container->start_column + cell->end_offset; cmark_node_set_string_content(node, (char *) cell->buf->ptr); cmark_node_set_syntax_extension(node, self);+ set_cell_index(node, i); } + incr_table_row_count(parent_container, i);+ for (; i < table_columns; ++i) { cmark_node *node = cmark_parser_add_child( parser, table_row_block, CMARK_NODE_TABLE_CELL, 0); cmark_node_set_syntax_extension(node, self);+ set_cell_index(node, i); } } @@ -495,13 +660,7 @@ cmark_node *node) { if (node->type == CMARK_NODE_TABLE_CELL) { if (cmark_gfm_extensions_get_table_row_is_header(node->parent)) {- uint8_t *alignments = get_table_alignments(node->parent->parent);- int i = 0;- cmark_node *n;- for (n = node->parent->first_child; n; n = n->next, ++i)- if (n == node)- break;- switch (alignments[i]) {+ switch (get_cell_alignment(node)) { case 'l': return " align=\"left\""; case 'c': return " align=\"center\""; case 'r': return " align=\"right\"";@@ -589,7 +748,6 @@ cmark_event_type ev_type, int options) { bool entering = (ev_type == CMARK_EVENT_ENTER); cmark_strbuf *html = renderer->html;- cmark_node *n; // XXX: we just monopolise renderer->opaque. struct html_table_state *table_state =@@ -638,7 +796,6 @@ } } } else if (node->type == CMARK_NODE_TABLE_CELL) {- uint8_t *alignments = get_table_alignments(node->parent->parent); if (entering) { cmark_html_render_cr(html); if (table_state->in_table_header) {@@ -647,12 +804,7 @@ cmark_strbuf_puts(html, "<td"); } - int i = 0;- for (n = node->parent->first_child; n; n = n->next, ++i)- if (n == node)- break;-- switch (alignments[i]) {+ switch (get_cell_alignment(node)) { case 'l': html_table_add_align(html, "left", options); break; case 'c': html_table_add_align(html, "center", options); break; case 'r': html_table_add_align(html, "right", options); break;@@ -701,6 +853,7 @@ cmark_syntax_extension *create_table_extension(void) { cmark_syntax_extension *self = cmark_syntax_extension_new("table"); + cmark_register_node_flag(&CMARK_NODE__TABLE_VISITED); cmark_syntax_extension_set_match_block_func(self, matches); cmark_syntax_extension_set_open_block_func(self, try_opening_table_block); cmark_syntax_extension_set_get_type_string_func(self, get_type_string);
cbits/tasklist.c view
@@ -9,19 +9,33 @@ CMARK_TASKLIST_CHECKED, } cmark_tasklist_type; +// Local constants+static const char *TYPE_STRING = "tasklist";+ static const char *get_type_string(cmark_syntax_extension *extension, cmark_node *node) {- return "tasklist";+ return TYPE_STRING; } -char *cmark_gfm_extensions_get_tasklist_state(cmark_node *node) {- if (!node || ((int)node->as.opaque != CMARK_TASKLIST_CHECKED && (int)node->as.opaque != CMARK_TASKLIST_NOCHECKED))++// Return 1 if state was set, 0 otherwise+int cmark_gfm_extensions_set_tasklist_item_checked(cmark_node *node, bool is_checked) {+ // The node has to exist, and be an extension, and actually be the right type in order to get the value.+ if (!node || !node->extension || strcmp(cmark_node_get_type_string(node), TYPE_STRING)) return 0; - if ((int)node->as.opaque != CMARK_TASKLIST_CHECKED) {- return "checked";+ node->as.list.checked = is_checked;+ return 1;+}++bool cmark_gfm_extensions_get_tasklist_item_checked(cmark_node *node) {+ if (!node || !node->extension || strcmp(cmark_node_get_type_string(node), TYPE_STRING))+ return false;++ if (node->as.list.checked) {+ return true; } else {- return "unchecked";+ return false; } } @@ -74,11 +88,8 @@ cmark_node_set_syntax_extension(parent_container, self); cmark_parser_advance_offset(parser, (char *)input, 3, false); - if (strstr((char*)input, "[x]")) {- parent_container->as.opaque = (void *)CMARK_TASKLIST_CHECKED;- } else {- parent_container->as.opaque = (void *)CMARK_TASKLIST_NOCHECKED;- }+ // Either an upper or lower case X means the task is completed.+ parent_container->as.list.checked = (strstr((char*)input, "[x]") || strstr((char*)input, "[X]")); return NULL; }@@ -89,7 +100,7 @@ bool entering = (ev_type == CMARK_EVENT_ENTER); if (entering) { renderer->cr(renderer);- if ((int)node->as.opaque == CMARK_TASKLIST_CHECKED) {+ if (node->as.list.checked) { renderer->out(renderer, node, "- [x] ", false, LITERAL); } else { renderer->out(renderer, node, "- [ ] ", false, LITERAL);@@ -110,7 +121,7 @@ cmark_strbuf_puts(renderer->html, "<li"); cmark_html_render_sourcepos(node, renderer->html, options); cmark_strbuf_putc(renderer->html, '>');- if ((int)node->as.opaque == CMARK_TASKLIST_CHECKED) {+ if (node->as.list.checked) { cmark_strbuf_puts(renderer->html, "<input type=\"checkbox\" checked=\"\" disabled=\"\" /> "); } else { cmark_strbuf_puts(renderer->html, "<input type=\"checkbox\" disabled=\"\" /> ");@@ -120,6 +131,15 @@ } } +static const char *xml_attr(cmark_syntax_extension *extension,+ cmark_node *node) {+ if (node->as.list.checked) {+ return " completed=\"true\"";+ } else {+ return " completed=\"false\"";+ }+}+ cmark_syntax_extension *create_tasklist_extension(void) { cmark_syntax_extension *ext = cmark_syntax_extension_new("tasklist"); @@ -130,6 +150,7 @@ cmark_syntax_extension_set_commonmark_render_func(ext, commonmark_render); cmark_syntax_extension_set_plaintext_render_func(ext, commonmark_render); cmark_syntax_extension_set_html_render_func(ext, html_render);+ cmark_syntax_extension_set_xml_attr_func(ext, xml_attr); return ext; }
cbits/xml.c view
@@ -11,6 +11,7 @@ #include "syntax_extension.h" #define BUFFER_SIZE 100+#define MAX_INDENT 40 // Functions to convert cmark_nodes to XML strings. @@ -26,7 +27,7 @@ static CMARK_INLINE void indent(struct render_state *state) { int i;- for (i = 0; i < state->indent; i++) {+ for (i = 0; i < state->indent && i < MAX_INDENT; i++) { cmark_strbuf_putc(state->xml, ' '); } }
changelog view
@@ -1,3 +1,37 @@+cmark-gfm 0.2.6 (28 Aug 2023)++ * Pull in upstream changes (includes security fixes).++cmark-gfm 0.2.5 (27 Sep 2022)++ * Add support for enabling footnotes (#26, Anton Sorokin).++cmark-gfm 0.2.4 (22 Sep 2022)++ * Pull in upstream changes (includes security fix).++cmark-gfm 0.2.3 (9 Mar 2022)++ * Pull in upstream changes.++cmark-gfm 0.2.2 (16 Sep 2020)++ * Pull in upstream changes.++cmark-gfm 0.2.1 (15 Nov 2019)++ * Add tasklist support (#16, Christian Gill).++cmark-gfm 0.2.0 (8 Apr 2019)++ * Pull in upstream changes.++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-gfm 0.1.8 (14 Mar 2019) * Pull in upstream changes.
cmark-gfm.cabal view
@@ -1,22 +1,21 @@ name: cmark-gfm-version: 0.1.8+version: 0.2.6 synopsis: Fast, accurate GitHub Flavored Markdown parser and renderer description: This package provides Haskell bindings for <https://github.com/github/cmark-gfm libcmark-gfm>, the reference parser for <https://github.github.com/gfm/ GitHub Flavored Markdown>, a fully specified variant of Markdown. It includes sources for- libcmark-gfm (0.28.3.gfm.20) and does not require prior installation of the+ libcmark-gfm (0.29.0.gfm.13) and does not require prior installation of the C library. homepage: https://github.com/kivikakk/cmark-gfm-hs license: BSD3 license-file: LICENSE-author: Ashe Connor-maintainer: kivikakk@github.com+author: Asherah Connor+maintainer: ashe@kivikakk.ee copyright: (C) 2015--17 John MacFarlane, (C) 2017--19 Ashe Connor 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@@ -52,7 +51,6 @@ cbits/table.h cbits/tagfilter.h cbits/tasklist.h- cbits/cmark-gfm-extensions_export.h cbits/map.h cbits/footnotes.h bench/sample.md@@ -70,8 +68,8 @@ library exposed-modules: CMarkGFM build-depends: base >=4.5 && < 5.0,- text >= 1.0 && < 1.3,- bytestring+ text >= 1.0 && < 2.1,+ bytestring >= 0.11.5 && < 0.12 if impl(ghc < 7.6) build-depends: ghc-prim >= 0.2 default-language: Haskell2010@@ -136,4 +134,4 @@ hs-source-dirs: test build-depends: base, cmark-gfm, text, HUnit >= 1.2 && < 1.7 ghc-options: -Wall -fno-warn-unused-do-bind -threaded- default-language: Haskell98+ default-language: Haskell2010
test/test-cmark.hs view
@@ -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 [] [] "[trick](javascript:alert('hi'))"+ , "<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 (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*"+ , 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") []]]]]) , "<p>~hi~</p>\n" ~=? commonmarkToHtml [] [] "~hi~" , "<p><del>hi</del></p>\n" ~=? commonmarkToHtml [] [extStrikethrough] "~hi~"@@ -32,4 +32,7 @@ , Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 3, endColumn = 17})) DOCUMENT [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 3, endColumn = 17})) (TABLE [LeftAligned,CenterAligned,NoAlignment,RightAligned]) [Node (Just (PosInfo {startLine = 1, startColumn = 1, endLine = 1, endColumn = 17})) TABLE_ROW [Node (Just (PosInfo {startLine = 1, startColumn = 2, endLine = 1, endColumn = 4})) TABLE_CELL [Node (Just (PosInfo {startLine = 1, startColumn = 3, endLine = 1, endColumn = 3})) (TEXT "a") []],Node (Just (PosInfo {startLine = 1, startColumn = 6, endLine = 1, endColumn = 8})) TABLE_CELL [Node (Just (PosInfo {startLine = 1, startColumn = 7, endLine = 1, endColumn = 7})) (TEXT "b") []],Node (Just (PosInfo {startLine = 1, startColumn = 10, endLine = 1, endColumn = 12})) TABLE_CELL [Node (Just (PosInfo {startLine = 1, startColumn = 11, endLine = 1, endColumn = 11})) (TEXT "c") []],Node (Just (PosInfo {startLine = 1, startColumn = 14, endLine = 1, endColumn = 16})) TABLE_CELL [Node (Just (PosInfo {startLine = 1, startColumn = 15, endLine = 1, endColumn = 15})) (TEXT "d") []]],Node (Just (PosInfo {startLine = 3, startColumn = 1, endLine = 3, endColumn = 17})) TABLE_ROW [Node (Just (PosInfo {startLine = 3, startColumn = 2, endLine = 3, endColumn = 4})) TABLE_CELL [Node (Just (PosInfo {startLine = 3, startColumn = 3, endLine = 3, endColumn = 3})) (TEXT "y") []],Node (Just (PosInfo {startLine = 3, startColumn = 6, endLine = 3, endColumn = 8})) TABLE_CELL [Node (Just (PosInfo {startLine = 3, startColumn = 7, endLine = 3, endColumn = 7})) (TEXT "o") []],Node (Just (PosInfo {startLine = 3, startColumn = 10, endLine = 3, endColumn = 12})) TABLE_CELL [Node (Just (PosInfo {startLine = 3, startColumn = 11, endLine = 3, endColumn = 11})) (TEXT "s") []],Node (Just (PosInfo {startLine = 3, startColumn = 14, endLine = 3, endColumn = 16})) TABLE_CELL [Node (Just (PosInfo {startLine = 3, startColumn = 15, endLine = 3, endColumn = 15})) (TEXT "h") []]]]] ~=? commonmarkToNode [] [extTable] "| a | b | c | d |\n| :-- | :-: | --- | --: |\n| y | o | s | h |" , "<xmp>\n" ~=? commonmarkToHtml [optUnsafe] [] "<xmp>" , "<xmp>\n" ~=? commonmarkToHtml [optUnsafe] [extTagfilter] "<xmp>"+ , "<ul>\n<li><input type=\"checkbox\" disabled=\"\" /> foo</li>\n<li><input type=\"checkbox\" checked=\"\" disabled=\"\" /> bar</li>\n</ul>\n" ~=? commonmarkToHtml [] [extTaskList] "- [ ] foo\n- [x] bar"+ , "<p>Here is footnote<sup class=\"footnote-ref\"><a href=\"#fn-1\" id=\"fnref-1\" data-footnote-ref>1</a></sup></p>\n<section class=\"footnotes\" data-footnotes>\n<ol>\n<li id=\"fn-1\">\n<p>abc <a href=\"#fnref-1\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"1\" aria-label=\"Back to reference 1\">↩</a></p>\n</li>\n</ol>\n</section>\n" ~=? commonmarkToHtml [optFootnotes] [] "Here is footnote[^1]\n\n[^1]: abc" ]+