From 59d78f236b0b7b05739a0b2c7896d371472712e4 Mon Sep 17 00:00:00 2001 From: jcadam Date: Mon, 18 Jan 2016 16:40:42 -0500 Subject: [PATCH 1/6] updated to cmark 0.24.1 --- cmark_version.h | 4 ++-- commonmark.c | 35 ++++++++++++++++++++++------------- iterator.c | 3 +++ render.c | 20 ++++++++++++++++---- 4 files changed, 43 insertions(+), 19 deletions(-) diff --git a/cmark_version.h b/cmark_version.h index b7af51d..a56570f 100644 --- a/cmark_version.h +++ b/cmark_version.h @@ -1,7 +1,7 @@ #ifndef CMARK_VERSION_H #define CMARK_VERSION_H -#define CMARK_VERSION ((0 << 16) | (24 << 8) | 0) -#define CMARK_VERSION_STRING "0.24.0" +#define CMARK_VERSION ((0 << 16) | (24 << 8) | 1) +#define CMARK_VERSION_STRING "0.24.1" #endif diff --git a/commonmark.c b/commonmark.c index 1a61334..751a5df 100644 --- a/commonmark.c +++ b/commonmark.c @@ -24,6 +24,8 @@ static inline void outc(cmark_renderer *renderer, cmark_escaping escape, int32_t c, unsigned char nextc) { bool needs_escaping = false; char encoded[20]; + bool follows_digit = renderer->buffer->size > 0 && + cmark_isdigit(renderer->buffer->ptr[renderer->buffer->size - 1]); needs_escaping = escape != LITERAL && @@ -31,9 +33,12 @@ static inline void outc(cmark_renderer *renderer, cmark_escaping escape, (c == '*' || c == '_' || c == '[' || c == ']' || c == '#' || c == '<' || c == '>' || c == '\\' || c == '`' || c == '!' || (c == '&' && isalpha(nextc)) || (c == '!' && nextc == '[') || - (renderer->begin_content && (c == '-' || c == '+' || c == '=')) || - ((c == '.' || c == ')') && - isdigit(renderer->buffer->ptr[renderer->buffer->size - 1])))) || + (renderer->begin_content && (c == '-' || c == '+' || c == '=') && + // begin_content doesn't get set to false til we've passed digits + // at the beginning of line, so... + !follows_digit) || + (renderer->begin_content && (c == '.' || c == ')') && follows_digit && + (nextc == 0 || cmark_isspace(nextc))))) || (escape == URL && (c == '`' || c == '<' || c == '>' || isspace(c) || c == '\\' || c == ')' || c == '(')) || (escape == TITLE && @@ -121,6 +126,9 @@ static bool is_autolink(cmark_node *node) { } link_text = node->first_child; + if (link_text == NULL) { + return false; + } cmark_consolidate_text_nodes(link_text); realurl = (char *)url->data; realurllen = url->len; @@ -193,15 +201,17 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, case CMARK_NODE_LIST: if (!entering && node->next && (node->next->type == CMARK_NODE_CODE_BLOCK || node->next->type == CMARK_NODE_LIST)) { - // this ensures 2 blank lines after list, - // if before code block or list: - LIT("\n"); + // this ensures that a following code block or list will be + // inteprereted correctly. + CR(); + LIT(""); + BLANKLINE(); } break; case CMARK_NODE_ITEM: if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) { - marker_width = 2; + marker_width = 4; } else { list_number = cmark_node_get_list_start(node->parent); list_delim = cmark_node_get_list_delim(node->parent); @@ -220,15 +230,14 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, } if (entering) { if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) { - LIT("* "); + LIT(" - "); renderer->begin_content = true; - cmark_strbuf_puts(renderer->prefix, " "); } else { LIT(listmarker); renderer->begin_content = true; - for (i = marker_width; i--;) { - cmark_strbuf_putc(renderer->prefix, ' '); - } + } + for (i = marker_width; i--;) { + cmark_strbuf_putc(renderer->prefix, ' '); } } else { cmark_strbuf_truncate(renderer->prefix, @@ -320,7 +329,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, case CMARK_NODE_LINEBREAK: if (!(CMARK_OPT_HARDBREAKS & options)) { - LIT("\\"); + LIT(" "); } CR(); break; diff --git a/iterator.c b/iterator.c index c477f01..351b81f 100644 --- a/iterator.c +++ b/iterator.c @@ -89,6 +89,9 @@ cmark_event_type cmark_iter_get_event_type(cmark_iter *iter) { cmark_node *cmark_iter_get_root(cmark_iter *iter) { return iter->root; } void cmark_consolidate_text_nodes(cmark_node *root) { + if (root == NULL) { + return; + } cmark_iter *iter = cmark_iter_new(root); cmark_strbuf buf = GH_BUF_INIT; cmark_event_type ev_type; diff --git a/render.c b/render.c index d477363..2c941bf 100644 --- a/render.c +++ b/render.c @@ -23,6 +23,7 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, unsigned char nextc; int32_t c; int i = 0; + int last_nonspace; int len; cmark_chunk remainder = cmark_chunk_literal(""); int k = renderer->buffer->size - 1; @@ -63,15 +64,20 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, nextc = source[i + len]; if (c == 32 && wrap) { if (!renderer->begin_line) { + last_nonspace = renderer->buffer->size; cmark_strbuf_putc(renderer->buffer, ' '); renderer->column += 1; renderer->begin_line = false; renderer->begin_content = false; - renderer->last_breakable = renderer->buffer->size - 1; // skip following spaces while (source[i + 1] == ' ') { i++; } + // We don't allow breaks that make a digit the first character + // because this causes problems with commonmark output. + if (!cmark_isdigit(source[i + 1])) { + renderer->last_breakable = last_nonspace; + } } } else if (c == 10) { @@ -83,11 +89,17 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, } else if (escape == LITERAL) { cmark_render_code_point(renderer, c); renderer->begin_line = false; - renderer->begin_content = false; + // we don't set 'begin_content' to false til we've + // finished parsing a digit. Reason: in commonmark + // we need to escape a potential list marker after + // a digit: + renderer->begin_content = renderer->begin_content && + cmark_isdigit(c) == 1; } else { (renderer->outc)(renderer, escape, c, nextc); renderer->begin_line = false; - renderer->begin_content = false; + renderer->begin_content = renderer->begin_content && + cmark_isdigit(c) == 1; } // If adding the character went beyond width, look for an @@ -142,7 +154,7 @@ char *cmark_render(cmark_node *root, int options, int width, cmark_iter *iter = cmark_iter_new(root); cmark_renderer renderer = {&buf, &pref, 0, width, 0, 0, true, - false, false, false, + true, false, false, outc, S_cr, S_blankline, S_out}; while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { From 3026c7ac78d79db4a750b99a087d87dbcded0905 Mon Sep 17 00:00:00 2001 From: rhinoman Date: Sat, 26 Mar 2016 19:59:52 -0400 Subject: [PATCH 2/6] updated to cmark 0.25.2 --- .gitignore | 3 + .travis.yml | 2 +- blocks.c | 652 +++--- buffer.c | 5 +- chunk.h | 8 +- cmark.h | 6 +- cmark_version.h | 4 +- commonmark.c | 35 +- commonmark_test.go | 3 + config.h | 51 + html.c | 16 +- inlines.c | 22 +- latex.c | 8 +- man.c | 5 +- node.c | 4 +- node.go | 15 +- parser.h | 2 + render.c | 26 +- scanners.c | 5051 +++++++++++++++++++++----------------------- xml.c | 20 +- 20 files changed, 2993 insertions(+), 2945 deletions(-) diff --git a/.gitignore b/.gitignore index 58ce8ad..57c6d8d 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ _testmain.go #Misc junk *.swp + +.idea/ +*.iml diff --git a/.travis.yml b/.travis.yml index e810723..cddd1a2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ # Travis build settings for go-commonmark language: go go: - - 1.4 - 1.5 + - 1.6 before_install: - echo "yes" | sudo add-apt-repository ppa:kalakris/cmake - sudo apt-get update -qq diff --git a/blocks.c b/blocks.c index 9f41e1f..f49ad4e 100644 --- a/blocks.c +++ b/blocks.c @@ -1,3 +1,10 @@ +/** + * Block parsing implementation. + * + * For a high-level overview of the block parsing process, + * see http://spec.commonmark.org/0.24/#phase-1-block-structure + */ + #include #include #include @@ -17,12 +24,20 @@ #define CODE_INDENT 4 #define TAB_STOP 4 +#ifndef MIN +#define MIN(x, y) ((x < y) ? x : y) +#endif + #define peek_at(i, n) (i)->data[n] -static inline bool S_is_line_end_char(char c) { +static CMARK_INLINE bool S_is_line_end_char(char c) { return (c == '\n' || c == '\r'); } +static CMARK_INLINE bool S_is_space_or_tab(char c) { + return (c == ' ' || c == '\t'); +} + static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, size_t len, bool eof); @@ -70,10 +85,12 @@ cmark_parser *cmark_parser_new(int options) { parser->first_nonspace_column = 0; parser->indent = 0; parser->blank = false; + parser->partially_consumed_tab = false; parser->curline = line; parser->last_line_length = 0; parser->linebuf = buf; parser->options = options; + parser->last_buffer_ended_with_cr = false; return parser; } @@ -110,7 +127,7 @@ static bool is_blank(cmark_strbuf *s, bufsize_t offset) { return true; } -static inline bool can_contain(cmark_node_type parent_type, +static CMARK_INLINE bool can_contain(cmark_node_type parent_type, cmark_node_type child_type) { return (parent_type == CMARK_NODE_DOCUMENT || parent_type == CMARK_NODE_BLOCK_QUOTE || @@ -118,15 +135,32 @@ static inline bool can_contain(cmark_node_type parent_type, (parent_type == CMARK_NODE_LIST && child_type == CMARK_NODE_ITEM)); } -static inline bool accepts_lines(cmark_node_type block_type) { +static CMARK_INLINE bool accepts_lines(cmark_node_type block_type) { return (block_type == CMARK_NODE_PARAGRAPH || block_type == CMARK_NODE_HEADING || block_type == CMARK_NODE_CODE_BLOCK); } -static void add_line(cmark_node *node, cmark_chunk *ch, bufsize_t offset) { +static CMARK_INLINE bool contains_inlines(cmark_node_type block_type) { + return (block_type == CMARK_NODE_PARAGRAPH || + block_type == CMARK_NODE_HEADING); +} + +static void add_line(cmark_node *node, cmark_chunk *ch, cmark_parser *parser) { + int chars_to_tab; + int i; assert(node->open); - cmark_strbuf_put(&node->string_content, ch->data + offset, ch->len - offset); + if (parser->partially_consumed_tab) { + parser->offset += 1; // skip over tab + // add space characters: + chars_to_tab = TAB_STOP - (parser->column % TAB_STOP); + for (i = 0; i < chars_to_tab; i++) { + cmark_strbuf_putc(&node->string_content, ' '); + } + } + cmark_strbuf_put(&node->string_content, + ch->data + parser->offset, + ch->len - parser->offset); } static void remove_trailing_blank_lines(cmark_strbuf *ln) { @@ -336,8 +370,7 @@ static void process_inlines(cmark_node *root, cmark_reference_map *refmap, while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { cur = cmark_iter_get_node(iter); if (ev_type == CMARK_EVENT_ENTER) { - if (cur->type == CMARK_NODE_PARAGRAPH || - cur->type == CMARK_NODE_HEADING) { + if (contains_inlines(cur->type)) { cmark_parse_inlines(cur, refmap, options); } } @@ -474,6 +507,11 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, const unsigned char *end = buffer + len; static const uint8_t repl[] = {239, 191, 189}; + if (parser->last_buffer_ended_with_cr && *buffer == '\n') { + // skip NL if last buffer ended with CR ; see #117 + buffer++; + } + parser->last_buffer_ended_with_cr = false; while (buffer < end) { const unsigned char *eol; bufsize_t chunk_len; @@ -514,8 +552,11 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, buffer += chunk_len; // skip over line ending characters: - if (buffer < end && *buffer == '\r') + if (buffer < end && *buffer == '\r') { buffer++; + if (buffer == end) + parser->last_buffer_ended_with_cr = true; + } if (buffer < end && *buffer == '\n') buffer++; } @@ -532,13 +573,15 @@ static void chop_trailing_hashtags(cmark_chunk *ch) { n--; // Check for a space before the final #s: - if (n != orig_n && n >= 0 && - (peek_at(ch, n) == ' ' || peek_at(ch, n) == '\t')) { + if (n != orig_n && n >= 0 && S_is_space_or_tab(peek_at(ch, n))) { ch->len = n; cmark_chunk_rtrim(ch); } } +// 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. static void S_find_first_nonspace(cmark_parser *parser, cmark_chunk *input) { char c; int chars_to_tab = TAB_STOP - (parser->column % TAB_STOP); @@ -566,17 +609,37 @@ static void S_find_first_nonspace(cmark_parser *parser, cmark_chunk *input) { parser->blank = S_is_line_end_char(peek_at(input, parser->first_nonspace)); } +// Advance parser->offset and parser->column. parser->offset is the +// byte position in input; parser->column is a virtual column number +// that takes into account tabs. (Multibyte characters are not taken +// into account, because the Markdown line prefixes we are interested in +// analyzing are entirely ASCII.) The count parameter indicates +// how far to advance the offset. If columns is true, then count +// indicates a number of columns; otherwise, a number of bytes. +// If advancing a certain number of columns partially consumes +// a tab character, parser->partially_consumed_tab is set to true. static void S_advance_offset(cmark_parser *parser, cmark_chunk *input, bufsize_t count, bool columns) { char c; int chars_to_tab; + int chars_to_advance; while (count > 0 && (c = peek_at(input, parser->offset))) { if (c == '\t') { chars_to_tab = TAB_STOP - (parser->column % TAB_STOP); - parser->column += chars_to_tab; - parser->offset += 1; - count -= (columns ? chars_to_tab : 1); + if (columns) { + parser->partially_consumed_tab = chars_to_tab > count; + chars_to_advance = MIN(count, chars_to_tab); + parser->column += chars_to_advance; + parser->offset += (parser->partially_consumed_tab ? 0 : 1); + count -= chars_to_advance; + } else { + parser->partially_consumed_tab = false; + parser->column += chars_to_tab; + parser->offset += 1; + count -= 1; + } } else { + parser->partially_consumed_tab = false; parser->offset += 1; parser->column += 1; // assume ascii; block starts are ascii count -= 1; @@ -584,263 +647,314 @@ static void S_advance_offset(cmark_parser *parser, cmark_chunk *input, } } -static void S_process_line(cmark_parser *parser, const unsigned char *buffer, - bufsize_t bytes) { - cmark_node *last_matched_container; +static bool S_last_child_is_open(cmark_node *container) { + return container->last_child && container->last_child->open; +} + +static bool parse_block_quote_prefix(cmark_parser *parser, + cmark_chunk *input) +{ + bool res = false; bufsize_t matched = 0; - int lev = 0; - int i; - cmark_list *data = NULL; - bool all_matched = true; - cmark_node *container; - bool indented; - cmark_chunk input; - bool maybe_lazy; - if (parser->options & CMARK_OPT_VALIDATE_UTF8) { - cmark_utf8proc_check(parser->curline, buffer, bytes); - } else { - cmark_strbuf_put(parser->curline, buffer, bytes); - } - // ensure line ends with a newline: - if (bytes == 0 || !S_is_line_end_char(parser->curline->ptr[bytes - 1])) { - cmark_strbuf_putc(parser->curline, '\n'); - } - parser->offset = 0; - parser->column = 0; - parser->blank = false; + matched = + parser->indent <= 3 && peek_at(input, parser->first_nonspace) == '>'; + if (matched) { - input.data = parser->curline->ptr; - input.len = parser->curline->size; + S_advance_offset(parser, input, parser->indent + 1, true); - // container starts at the document root. - container = parser->root; + if (S_is_space_or_tab(peek_at(input, parser->offset))) { + S_advance_offset(parser, input, 1, true); + } - parser->line_number++; + res = true; + } + return res; +} - // for each containing node, try to parse the associated line start. - // bail out on failure: container will point to the last matching node. +static bool parse_node_item_prefix(cmark_parser *parser, + cmark_chunk *input, + cmark_node *container) +{ + bool res = false; + + if (parser->indent >= + container->as.list.marker_offset + container->as.list.padding) { + S_advance_offset(parser, input, container->as.list.marker_offset + + container->as.list.padding, + true); + res = true; + } else if (parser->blank && container->first_child != NULL) { + // if container->first_child is NULL, then the opening line + // of the list item was blank after the list marker; in this + // case, we are done with the list item. + S_advance_offset(parser, input, + parser->first_nonspace - parser->offset, false); + res = true; + } + return res; +} - while (container->last_child && container->last_child->open) { - container = container->last_child; +static bool parse_code_block_prefix(cmark_parser *parser, + cmark_chunk *input, + cmark_node *container, + bool *should_continue) +{ + bool res = false; + + if (!container->as.code.fenced) { // indented + if (parser->indent >= CODE_INDENT) { + S_advance_offset(parser, input, CODE_INDENT, true); + res = true; + } else if (parser->blank) { + S_advance_offset(parser, input, + parser->first_nonspace - parser->offset, false); + res = true; + } + } else { // fenced + bufsize_t matched = 0; - S_find_first_nonspace(parser, &input); + if (parser->indent <= 3 && (peek_at(input, parser->first_nonspace) == + container->as.code.fence_char)) { + matched = scan_close_code_fence(input, parser->first_nonspace); + } - if (container->type == CMARK_NODE_BLOCK_QUOTE) { - matched = - parser->indent <= 3 && peek_at(&input, parser->first_nonspace) == '>'; - if (matched) { - S_advance_offset(parser, &input, parser->indent + 1, true); - if (peek_at(&input, parser->offset) == ' ') - parser->offset++; - } else { - all_matched = false; - } + if (matched >= container->as.code.fence_length) { + // closing fence - and since we're at + // the end of a line, we can stop processing it: + *should_continue = false; + S_advance_offset(parser, input, matched, false); + parser->current = finalize(parser, container); + } else { + // skip opt. spaces of fence parser->offset + int i = container->as.code.fence_offset; - } else if (container->type == CMARK_NODE_ITEM) { - if (parser->indent >= - container->as.list.marker_offset + container->as.list.padding) { - S_advance_offset(parser, &input, container->as.list.marker_offset + - container->as.list.padding, - true); - } else if (parser->blank && container->first_child != NULL) { - // if container->first_child is NULL, then the opening line - // of the list item was blank after the list marker; in this - // case, we are done with the list item. - S_advance_offset(parser, &input, - parser->first_nonspace - parser->offset, false); - } else { - all_matched = false; + while (i > 0 && S_is_space_or_tab(peek_at(input, parser->offset))) { + S_advance_offset(parser, input, 1, true); + i--; } + res = true; + } + } - } else if (container->type == CMARK_NODE_CODE_BLOCK) { + return res; +} - if (!container->as.code.fenced) { // indented - if (parser->indent >= CODE_INDENT) { - S_advance_offset(parser, &input, CODE_INDENT, true); - } else if (parser->blank) { - S_advance_offset(parser, &input, - parser->first_nonspace - parser->offset, false); - } else { - all_matched = false; - } - } else { // fenced - matched = 0; - if (parser->indent <= 3 && (peek_at(&input, parser->first_nonspace) == - container->as.code.fence_char)) { - matched = scan_close_code_fence(&input, parser->first_nonspace); - } - if (matched >= container->as.code.fence_length) { - // closing fence - and since we're at - // the end of a line, we can return: - all_matched = false; - S_advance_offset(parser, &input, matched, false); - parser->current = finalize(parser, container); - goto finished; - } else { - // skip opt. spaces of fence parser->offset - i = container->as.code.fence_offset; - while (i > 0 && peek_at(&input, parser->offset) == ' ') { - S_advance_offset(parser, &input, 1, false); - i--; - } - } - } - } else if (container->type == CMARK_NODE_HEADING) { +static bool parse_html_block_prefix(cmark_parser *parser, + cmark_node *container) +{ + bool res = false; + int html_block_type = container->as.html_block_type; + + assert(html_block_type >= 1 && html_block_type <= 7); + switch (html_block_type) { + case 1: + case 2: + case 3: + case 4: + case 5: + // these types of blocks can accept blanks + res = true; + break; + case 6: + case 7: + res = !parser->blank; + break; + } - // a heading can never contain more than one line - all_matched = false; + return res; +} - } else if (container->type == CMARK_NODE_HTML_BLOCK) { +/** + * For each containing node, try to parse the associated line start. + * + * Will not close unmatched blocks, as we may have a lazy continuation + * line -> http://spec.commonmark.org/0.24/#lazy-continuation-line + * + * Returns: The last matching node, or NULL + */ +static cmark_node *check_open_blocks(cmark_parser *parser, + cmark_chunk *input, + bool *all_matched) +{ + bool should_continue = true; + *all_matched = false; + cmark_node *container = parser->root; + cmark_node_type cont_type; + + while (S_last_child_is_open(container)) { + container = container->last_child; + cont_type = container->type; - switch (container->as.html_block_type) { - case 1: - case 2: - case 3: - case 4: - case 5: - // these types of blocks can accept blanks + S_find_first_nonspace(parser, input); + + switch (cont_type) { + case CMARK_NODE_BLOCK_QUOTE: + if (!parse_block_quote_prefix(parser, input)) + goto done; break; - case 6: - case 7: - if (parser->blank) { - all_matched = false; - } + case CMARK_NODE_ITEM: + if (!parse_node_item_prefix(parser, input, container)) + goto done; + break; + case CMARK_NODE_CODE_BLOCK: + if (!parse_code_block_prefix(parser, input, container, &should_continue)) + goto done; + break; + case CMARK_NODE_HEADING: + // a heading can never contain more than one line + goto done; + case CMARK_NODE_HTML_BLOCK: + if (!parse_html_block_prefix(parser, container)) + goto done; + break; + case CMARK_NODE_PARAGRAPH: + if (parser->blank) + goto done; break; default: - fprintf(stderr, "Error (%s:%d): Unknown HTML block type %d\n", __FILE__, - __LINE__, container->as.html_block_type); - exit(1); - } + break; + } + } - } else if (container->type == CMARK_NODE_PARAGRAPH) { + *all_matched = true; - if (parser->blank) { - all_matched = false; - } - } +done: + if (!*all_matched) { + container = container->parent; // back up to last matching node + } - if (!all_matched) { - container = container->parent; // back up to last matching node - break; - } + if (!should_continue) { + container = NULL; } - last_matched_container = container; + return container; +} - // check to see if we've hit 2nd blank line, break out of list: - if (parser->blank && container->last_line_blank) { - break_out_of_lists(parser, &container); - } +static void open_new_blocks(cmark_parser *parser, + cmark_node **container, + cmark_chunk *input, + bool all_matched) +{ + bool indented; + cmark_list *data = NULL; + bool maybe_lazy = parser->current->type == CMARK_NODE_PARAGRAPH; + cmark_node_type cont_type = (*container)->type; + bufsize_t matched = 0; + int lev = 0; + bool save_partially_consumed_tab; + int save_offset; + int save_column; - maybe_lazy = parser->current->type == CMARK_NODE_PARAGRAPH; - // try new container starts: - while (container->type != CMARK_NODE_CODE_BLOCK && - container->type != CMARK_NODE_HTML_BLOCK) { + while (cont_type != CMARK_NODE_CODE_BLOCK && + cont_type != CMARK_NODE_HTML_BLOCK) { - S_find_first_nonspace(parser, &input); + S_find_first_nonspace(parser, input); indented = parser->indent >= CODE_INDENT; - if (!indented && peek_at(&input, parser->first_nonspace) == '>') { + if (!indented && peek_at(input, parser->first_nonspace) == '>') { - S_advance_offset(parser, &input, + S_advance_offset(parser, input, parser->first_nonspace + 1 - parser->offset, false); // optional following character - if (peek_at(&input, parser->offset) == ' ') - S_advance_offset(parser, &input, 1, false); - container = add_child(parser, container, CMARK_NODE_BLOCK_QUOTE, + if (S_is_space_or_tab(peek_at(input, parser->offset))) { + S_advance_offset(parser, input, 1, true); + } + *container = add_child(parser, *container, CMARK_NODE_BLOCK_QUOTE, parser->offset + 1); } else if (!indented && (matched = scan_atx_heading_start( - &input, parser->first_nonspace))) { + input, parser->first_nonspace))) { + bufsize_t hashpos; + int level = 0; - S_advance_offset(parser, &input, + S_advance_offset(parser, input, parser->first_nonspace + matched - parser->offset, false); - container = - add_child(parser, container, CMARK_NODE_HEADING, parser->offset + 1); + *container = + add_child(parser, *container, CMARK_NODE_HEADING, parser->offset + 1); - bufsize_t hashpos = - cmark_chunk_strchr(&input, '#', parser->first_nonspace); - int level = 0; + hashpos = cmark_chunk_strchr(input, '#', parser->first_nonspace); - while (peek_at(&input, hashpos) == '#') { + while (peek_at(input, hashpos) == '#') { level++; hashpos++; } - container->as.heading.level = level; - container->as.heading.setext = false; - } else if (!indented && (matched = scan_open_code_fence( - &input, parser->first_nonspace))) { + (*container)->as.heading.level = level; + (*container)->as.heading.setext = false; - container = add_child(parser, container, CMARK_NODE_CODE_BLOCK, + } else if (!indented && (matched = scan_open_code_fence( + input, parser->first_nonspace))) { + *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK, parser->first_nonspace + 1); - container->as.code.fenced = true; - container->as.code.fence_char = peek_at(&input, parser->first_nonspace); - container->as.code.fence_length = matched; - container->as.code.fence_offset = + (*container)->as.code.fenced = true; + (*container)->as.code.fence_char = peek_at(input, parser->first_nonspace); + (*container)->as.code.fence_length = matched; + (*container)->as.code.fence_offset = (int8_t)(parser->first_nonspace - parser->offset); - container->as.code.info = cmark_chunk_literal(""); - S_advance_offset(parser, &input, + (*container)->as.code.info = cmark_chunk_literal(""); + S_advance_offset(parser, input, parser->first_nonspace + matched - parser->offset, false); } else if (!indented && ((matched = scan_html_block_start( - &input, parser->first_nonspace)) || - (container->type != CMARK_NODE_PARAGRAPH && + input, parser->first_nonspace)) || + (cont_type != CMARK_NODE_PARAGRAPH && (matched = scan_html_block_start_7( - &input, parser->first_nonspace))))) { - - container = add_child(parser, container, CMARK_NODE_HTML_BLOCK, + input, parser->first_nonspace))))) { + *container = add_child(parser, *container, CMARK_NODE_HTML_BLOCK, parser->first_nonspace + 1); - container->as.html_block_type = matched; + (*container)->as.html_block_type = matched; // note, we don't adjust parser->offset because the tag is part of the // text - - } else if (!indented && container->type == CMARK_NODE_PARAGRAPH && + } else if (!indented && cont_type == CMARK_NODE_PARAGRAPH && (lev = - scan_setext_heading_line(&input, parser->first_nonspace))) { - - container->type = CMARK_NODE_HEADING; - container->as.heading.level = lev; - container->as.heading.setext = true; - S_advance_offset(parser, &input, input.len - 1 - parser->offset, false); - + scan_setext_heading_line(input, parser->first_nonspace))) { + (*container)->type = 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 && - !(container->type == CMARK_NODE_PARAGRAPH && !all_matched) && + !(cont_type == CMARK_NODE_PARAGRAPH && !all_matched) && (matched = - scan_thematic_break(&input, parser->first_nonspace))) { - + scan_thematic_break(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, + *container = add_child(parser, *container, CMARK_NODE_THEMATIC_BREAK, parser->first_nonspace + 1); - S_advance_offset(parser, &input, input.len - 1 - parser->offset, false); - + S_advance_offset(parser, input, input->len - 1 - parser->offset, false); } else if ((matched = - parse_list_marker(&input, parser->first_nonspace, &data)) && - (!indented || container->type == CMARK_NODE_LIST)) { + parse_list_marker(input, parser->first_nonspace, &data)) && + (!indented || cont_type == CMARK_NODE_LIST)) { // Note that we can have new list items starting with >= 4 // spaces indent, as long as the list container is still open. + int i = 0; // compute padding: - S_advance_offset(parser, &input, + S_advance_offset(parser, input, parser->first_nonspace + matched - parser->offset, false); - i = 0; - while (i <= 5 && peek_at(&input, parser->offset + i) == ' ') { - i++; + + save_partially_consumed_tab = parser->partially_consumed_tab; + save_offset = parser->offset; + save_column = parser->column; + + while (parser->column - save_column <= 5 && + S_is_space_or_tab(peek_at(input, parser->offset))) { + S_advance_offset(parser, input, 1, true); } - // i = number of spaces after marker, up to 5 - if (i >= 5 || i < 1 || - S_is_line_end_char(peek_at(&input, parser->offset))) { + + i = parser->column - save_column; + if (i >= 5 || i < 1) { data->padding = matched + 1; + parser->offset = save_offset; + parser->column = save_column; + parser->partially_consumed_tab = save_partially_consumed_tab; if (i > 0) { - S_advance_offset(parser, &input, 1, false); + S_advance_offset(parser, input, 1, true); } } else { data->padding = matched + i; - S_advance_offset(parser, &input, i, true); } // check container; if it's a list, see if this list item @@ -848,50 +962,57 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, data->marker_offset = parser->indent; - if (container->type != CMARK_NODE_LIST || - !lists_match(&container->as.list, data)) { - container = add_child(parser, container, CMARK_NODE_LIST, + if (cont_type != CMARK_NODE_LIST || + !lists_match(&((*container)->as.list), data)) { + *container = add_child(parser, *container, CMARK_NODE_LIST, parser->first_nonspace + 1); - memcpy(&container->as.list, data, sizeof(*data)); + memcpy(&((*container)->as.list), data, sizeof(*data)); } // add the list item - container = add_child(parser, container, CMARK_NODE_ITEM, + *container = add_child(parser, *container, CMARK_NODE_ITEM, parser->first_nonspace + 1); /* TODO: static */ - memcpy(&container->as.list, data, sizeof(*data)); + memcpy(&((*container)->as.list), data, sizeof(*data)); free(data); - } else if (indented && !maybe_lazy && !parser->blank) { - S_advance_offset(parser, &input, CODE_INDENT, true); - container = add_child(parser, container, CMARK_NODE_CODE_BLOCK, + S_advance_offset(parser, input, CODE_INDENT, true); + *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK, parser->offset + 1); - container->as.code.fenced = false; - container->as.code.fence_char = 0; - container->as.code.fence_length = 0; - container->as.code.fence_offset = 0; - container->as.code.info = cmark_chunk_literal(""); + (*container)->as.code.fenced = false; + (*container)->as.code.fence_char = 0; + (*container)->as.code.fence_length = 0; + (*container)->as.code.fence_offset = 0; + (*container)->as.code.info = cmark_chunk_literal(""); } else { break; } - if (accepts_lines(container->type)) { + if (accepts_lines((*container)->type)) { // if it's a line container, it can't contain other containers break; } + + cont_type = (*container)->type; maybe_lazy = false; } +} +static void add_text_to_container (cmark_parser *parser, + cmark_node *container, + cmark_node *last_matched_container, + cmark_chunk *input) +{ + cmark_node *tmp; // what remains at parser->offset is a text line. add the text to the // appropriate container. - S_find_first_nonspace(parser, &input); + S_find_first_nonspace(parser, input); - if (parser->blank && container->last_child) { + if (parser->blank && container->last_child) container->last_child->last_line_blank = true; - } // block quote lines are never blank as they start with > // and we don't count blanks in fenced code for purposes of tight/loose @@ -906,61 +1027,61 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, !(container->type == CMARK_NODE_ITEM && container->first_child == NULL && container->start_line == parser->line_number)); - cmark_node *cont = container; - while (cont->parent) { - cont->parent->last_line_blank = false; - cont = cont->parent; + tmp = container; + while (tmp->parent) { + tmp->parent->last_line_blank = false; + tmp = tmp->parent; } + // If the last line processed belonged to a paragraph node, + // and we didn't match all of the line prefixes for the open containers, + // and we didn't start any new containers, + // and the line isn't blank, + // then treat this as a "lazy continuation line" and add it to + // the open paragraph. if (parser->current != last_matched_container && - container == last_matched_container && !parser->blank && - parser->current->type == CMARK_NODE_PARAGRAPH && - cmark_strbuf_len(&parser->current->string_content) > 0) { - - add_line(parser->current, &input, parser->offset); - + container == last_matched_container && + !parser->blank && + parser->current->type == CMARK_NODE_PARAGRAPH) { + add_line(parser->current, input, parser); } else { // not a lazy continuation - - // finalize any blocks that were not matched and set cur to container: + // Finalize any blocks that were not matched and set cur to container: while (parser->current != last_matched_container) { parser->current = finalize(parser, parser->current); assert(parser->current != NULL); } if (container->type == CMARK_NODE_CODE_BLOCK) { - - add_line(container, &input, parser->offset); - + add_line(container, input, parser); } else if (container->type == CMARK_NODE_HTML_BLOCK) { - - add_line(container, &input, parser->offset); + add_line(container, input, parser); int matches_end_condition; switch (container->as.html_block_type) { case 1: // , , matches_end_condition = - scan_html_block_end_1(&input, parser->first_nonspace); + scan_html_block_end_1(input, parser->first_nonspace); break; case 2: // --> matches_end_condition = - scan_html_block_end_2(&input, parser->first_nonspace); + scan_html_block_end_2(input, parser->first_nonspace); break; case 3: // ?> matches_end_condition = - scan_html_block_end_3(&input, parser->first_nonspace); + scan_html_block_end_3(input, parser->first_nonspace); break; case 4: // > matches_end_condition = - scan_html_block_end_4(&input, parser->first_nonspace); + scan_html_block_end_4(input, parser->first_nonspace); break; case 5: // ]]> matches_end_condition = - scan_html_block_end_5(&input, parser->first_nonspace); + scan_html_block_end_5(input, parser->first_nonspace); break; default: matches_end_condition = 0; @@ -971,28 +1092,69 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, container = finalize(parser, container); assert(parser->current != NULL); } - } else if (parser->blank) { - // ??? do nothing - } else if (accepts_lines(container->type)) { - if (container->type == CMARK_NODE_HEADING && container->as.heading.setext == false) { - chop_trailing_hashtags(&input); + chop_trailing_hashtags(input); } - add_line(container, &input, parser->first_nonspace); - + S_advance_offset(parser, input, parser->first_nonspace - parser->offset, false); + add_line(container, input, parser); } else { // create paragraph container for line container = add_child(parser, container, CMARK_NODE_PARAGRAPH, parser->first_nonspace + 1); - add_line(container, &input, parser->first_nonspace); + S_advance_offset(parser, input, parser->first_nonspace - parser->offset, false); + add_line(container, input, parser); } parser->current = container; } +} + +/* See http://spec.commonmark.org/0.24/#phase-1-block-structure */ +static void S_process_line(cmark_parser *parser, const unsigned char *buffer, + bufsize_t bytes) { + cmark_node *last_matched_container; + bool all_matched = true; + cmark_node *container; + cmark_chunk input; + + if (parser->options & CMARK_OPT_VALIDATE_UTF8) + cmark_utf8proc_check(parser->curline, buffer, bytes); + else + cmark_strbuf_put(parser->curline, buffer, bytes); + + // ensure line ends with a newline: + if (bytes == 0 || !S_is_line_end_char(parser->curline->ptr[bytes - 1])) + cmark_strbuf_putc(parser->curline, '\n'); + + parser->offset = 0; + parser->column = 0; + parser->blank = false; + parser->partially_consumed_tab = false; + + input.data = parser->curline->ptr; + input.len = parser->curline->size; + + parser->line_number++; + + last_matched_container = check_open_blocks(parser, &input, &all_matched); + + if (!last_matched_container) + goto finished; + + container = last_matched_container; + + // check to see if we've hit 2nd blank line, break out of list: + if (parser->blank && container->last_line_blank) + break_out_of_lists(parser, &container); + + open_new_blocks(parser, &container, &input, all_matched); + + add_text_to_container(parser, container, last_matched_container, &input); + finished: parser->last_line_length = input.len; if (parser->last_line_length && diff --git a/buffer.c b/buffer.c index a89c82e..4efa97b 100644 --- a/buffer.c +++ b/buffer.c @@ -33,7 +33,7 @@ void cmark_strbuf_overflow_err() { abort(); } -static inline void S_strbuf_grow_by(cmark_strbuf *buf, size_t add) { +static CMARK_INLINE void S_strbuf_grow_by(cmark_strbuf *buf, size_t add) { size_t target_size = (size_t)buf->size + add; if (target_size < add /* Integer overflow. */ @@ -217,7 +217,8 @@ bufsize_t cmark_strbuf_strrchr(const cmark_strbuf *buf, int c, bufsize_t pos) { if (pos >= buf->size) pos = buf->size - 1; - for (bufsize_t i = pos; i >= 0; i--) { + bufsize_t i; + for (i = pos; i >= 0; i--) { if (buf->ptr[i] == (unsigned char)c) return i; } diff --git a/chunk.h b/chunk.h index 7007492..b25831b 100644 --- a/chunk.h +++ b/chunk.h @@ -48,8 +48,8 @@ static CMARK_INLINE void cmark_chunk_trim(cmark_chunk *c) { cmark_chunk_rtrim(c); } -static CMARK_INLINE bufsize_t - cmark_chunk_strchr(cmark_chunk *ch, int c, bufsize_t offset) { +static CMARK_INLINE bufsize_t cmark_chunk_strchr(cmark_chunk *ch, int c, + bufsize_t offset) { const unsigned char *p = (unsigned char *)memchr(ch->data + offset, c, ch->len - offset); return p ? (bufsize_t)(p - ch->data) : ch->len; @@ -96,8 +96,8 @@ static CMARK_INLINE cmark_chunk cmark_chunk_literal(const char *data) { return c; } -static CMARK_INLINE cmark_chunk - cmark_chunk_dup(const cmark_chunk *ch, bufsize_t pos, bufsize_t len) { +static CMARK_INLINE cmark_chunk cmark_chunk_dup(const cmark_chunk *ch, + bufsize_t pos, bufsize_t len) { cmark_chunk c = {ch->data + pos, len, 0}; return c; } diff --git a/cmark.h b/cmark.h index d0f1953..7deaf31 100644 --- a/cmark.h +++ b/cmark.h @@ -20,7 +20,7 @@ extern "C" { */ /** Convert 'text' (assumed to be a UTF-8 encoded string with length - * 'len' from CommonMark Markdown to HTML, returning a null-terminated, + * 'len') from CommonMark Markdown to HTML, returning a null-terminated, * UTF-8-encoded string. */ CMARK_EXPORT @@ -96,7 +96,7 @@ typedef struct cmark_iter cmark_iter; */ CMARK_EXPORT cmark_node *cmark_node_new(cmark_node_type type); -/** Frees the memory allocated for a node. +/** Frees the memory allocated for a node and any children. */ CMARK_EXPORT void cmark_node_free(cmark_node *node); @@ -418,7 +418,7 @@ CMARK_EXPORT void cmark_consolidate_text_nodes(cmark_node *root); * Streaming interface: * * cmark_parser *parser = cmark_parser_new(CMARK_OPT_DEFAULT); - * FILE *fp = fopen("myfile.md", "r"); + * FILE *fp = fopen("myfile.md", "rb"); * while ((bytes = fread(buffer, 1, sizeof(buffer), fp)) > 0) { * cmark_parser_feed(parser, buffer, bytes); * if (bytes < sizeof(buffer)) { diff --git a/cmark_version.h b/cmark_version.h index a56570f..5e873b2 100644 --- a/cmark_version.h +++ b/cmark_version.h @@ -1,7 +1,7 @@ #ifndef CMARK_VERSION_H #define CMARK_VERSION_H -#define CMARK_VERSION ((0 << 16) | (24 << 8) | 1) -#define CMARK_VERSION_STRING "0.24.1" +#define CMARK_VERSION ((0 << 16) | (25 << 8) | 2) +#define CMARK_VERSION_STRING "0.25.2" #endif diff --git a/commonmark.c b/commonmark.c index 751a5df..f5a352d 100644 --- a/commonmark.c +++ b/commonmark.c @@ -17,15 +17,18 @@ #define LIT(s) renderer->out(renderer, s, false, LITERAL) #define CR() renderer->cr(renderer) #define BLANKLINE() renderer->blankline(renderer) +#define ENCODED_SIZE 20 +#define LISTMARKER_SIZE 20 // Functions to convert cmark_nodes to commonmark strings. -static inline void outc(cmark_renderer *renderer, cmark_escaping escape, +static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape, int32_t c, unsigned char nextc) { bool needs_escaping = false; - char encoded[20]; - bool follows_digit = renderer->buffer->size > 0 && - cmark_isdigit(renderer->buffer->ptr[renderer->buffer->size - 1]); + bool follows_digit = + renderer->buffer->size > 0 && + cmark_isdigit(renderer->buffer->ptr[renderer->buffer->size - 1]); + char encoded[ENCODED_SIZE]; needs_escaping = escape != LITERAL && @@ -34,11 +37,11 @@ static inline void outc(cmark_renderer *renderer, cmark_escaping escape, c == '>' || c == '\\' || c == '`' || c == '!' || (c == '&' && isalpha(nextc)) || (c == '!' && nextc == '[') || (renderer->begin_content && (c == '-' || c == '+' || c == '=') && - // begin_content doesn't get set to false til we've passed digits - // at the beginning of line, so... - !follows_digit) || + // begin_content doesn't get set to false til we've passed digits + // at the beginning of line, so... + !follows_digit) || (renderer->begin_content && (c == '.' || c == ')') && follows_digit && - (nextc == 0 || cmark_isspace(nextc))))) || + (nextc == 0 || cmark_isspace(nextc))))) || (escape == URL && (c == '`' || c == '<' || c == '>' || isspace(c) || c == '\\' || c == ')' || c == '(')) || (escape == TITLE && @@ -47,7 +50,7 @@ static inline void outc(cmark_renderer *renderer, cmark_escaping escape, if (needs_escaping) { if (isspace(c)) { // use percent encoding for spaces - sprintf(encoded, "%%%2x", c); + snprintf(encoded, ENCODED_SIZE, "%%%2x", c); cmark_strbuf_puts(renderer->buffer, encoded); renderer->column += 3; } else { @@ -166,7 +169,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, bool entering = (ev_type == CMARK_EVENT_ENTER); const char *info, *code, *title; size_t info_len, code_len; - char listmarker[20]; + char listmarker[LISTMARKER_SIZE]; char *emph_delim; bufsize_t marker_width; @@ -176,7 +179,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, 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 && // 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 && @@ -223,9 +226,9 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, // we ensure a width of at least 4 so // we get nice transition from single digits // to double - sprintf(listmarker, "%d%s%s", list_number, - list_delim == CMARK_PAREN_DELIM ? ")" : ".", - list_number < 10 ? " " : " "); + snprintf(listmarker, LISTMARKER_SIZE, "%d%s%s", list_number, + list_delim == CMARK_PAREN_DELIM ? ")" : ".", + list_number < 10 ? " " : " "); marker_width = safe_strlen(listmarker); } if (entering) { @@ -270,8 +273,8 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, // begin or end with a blank line, and code isn't // first thing in a list item if (info_len == 0 && - (code_len > 2 && !isspace(code[0]) && - !(isspace(code[code_len - 1]) && isspace(code[code_len - 2]))) && + (code_len > 2 && !isspace((unsigned char)code[0]) && + !(isspace((unsigned char)code[code_len - 1]) && isspace((unsigned char)code[code_len - 2]))) && !(node->prev == NULL && node->parent && node->parent->type == CMARK_NODE_ITEM)) { LIT(" "); diff --git a/commonmark_test.go b/commonmark_test.go index 0d649e1..8f112c5 100644 --- a/commonmark_test.go +++ b/commonmark_test.go @@ -171,6 +171,9 @@ func TestCMarkNodeOps(t *testing.T) { root.SetNodeUserData("STRING!") x := root.GetNodeUserData() t.Logf("X: %v", x) + if x != "STRING!"{ + t.Error("NodeUserData is wrong!") + } //header2.Free() root.Free() } diff --git a/config.h b/config.h index 2af3403..d38c7c7 100644 --- a/config.h +++ b/config.h @@ -1,3 +1,10 @@ +#ifndef CMARK_CONFIG_H +#define CMARK_CONFIG_H + +#ifdef __cplusplus +extern "C" { +#endif + #define HAVE_STDBOOL_H #ifdef HAVE_STDBOOL_H @@ -23,3 +30,47 @@ #define CMARK_INLINE inline #endif #endif + +/* snprintf and vsnprintf fallbacks for MSVC before 2015, + due to Valentin Milea http://stackoverflow.com/questions/2915672/ +*/ + +#if defined(_MSC_VER) && _MSC_VER < 1900 + +#include +#include + +#define snprintf c99_snprintf +#define vsnprintf c99_vsnprintf + +CMARK_INLINE int c99_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap) +{ + int count = -1; + + if (size != 0) + count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap); + if (count == -1) + count = _vscprintf(format, ap); + + return count; +} + +CMARK_INLINE int c99_snprintf(char *outBuf, size_t size, const char *format, ...) +{ + int count; + va_list ap; + + va_start(ap, format); + count = c99_vsnprintf(outBuf, size, format, ap); + va_end(ap); + + return count; +} + +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/html.c b/html.c index 54f27ba..9ffa08a 100644 --- a/html.c +++ b/html.c @@ -10,6 +10,8 @@ #include "houdini.h" #include "scanners.h" +#define BUFFER_SIZE 100 + // Functions to convert cmark_nodes to HTML strings. static void escape_html(cmark_strbuf *dest, const unsigned char *source, @@ -17,7 +19,7 @@ static void escape_html(cmark_strbuf *dest, const unsigned char *source, houdini_escape_html0(dest, source, length, 0); } -static inline void cr(cmark_strbuf *html) { +static CMARK_INLINE void cr(cmark_strbuf *html) { if (html->size && html->ptr[html->size - 1] != '\n') cmark_strbuf_putc(html, '\n'); } @@ -29,11 +31,11 @@ struct render_state { static void S_render_sourcepos(cmark_node *node, cmark_strbuf *html, int options) { - char buffer[100]; + char buffer[BUFFER_SIZE]; if (CMARK_OPT_SOURCEPOS & options) { - sprintf(buffer, " data-sourcepos=\"%d:%d-%d:%d\"", - cmark_node_get_start_line(node), cmark_node_get_start_column(node), - cmark_node_get_end_line(node), cmark_node_get_end_column(node)); + snprintf(buffer, BUFFER_SIZE, " data-sourcepos=\"%d:%d-%d:%d\"", + cmark_node_get_start_line(node), cmark_node_get_start_column(node), + cmark_node_get_end_line(node), cmark_node_get_end_column(node)); cmark_strbuf_puts(html, buffer); } } @@ -46,7 +48,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, char start_heading[] = "\n"); } else { - sprintf(buffer, "
    \n"); diff --git a/inlines.c b/inlines.c index 1199831..8ff8131 100644 --- a/inlines.c +++ b/inlines.c @@ -48,7 +48,7 @@ typedef struct { delimiter *last_delim; } subject; -static inline bool S_is_line_end_char(char c) { +static CMARK_INLINE bool S_is_line_end_char(char c) { return (c == '\n' || c == '\r'); } @@ -62,7 +62,7 @@ static void subject_from_buf(subject *e, cmark_strbuf *buffer, static bufsize_t subject_find_special_char(subject *subj, int options); // Create an inline with a literal string value. -static inline cmark_node *make_literal(cmark_node_type t, cmark_chunk s) { +static CMARK_INLINE cmark_node *make_literal(cmark_node_type t, cmark_chunk s) { cmark_node *e = (cmark_node *)calloc(1, sizeof(*e)); if (e != NULL) { e->type = t; @@ -81,7 +81,7 @@ static inline cmark_node *make_literal(cmark_node_type t, cmark_chunk s) { } // Create an inline with no value. -static inline cmark_node *make_simple(cmark_node_type t) { +static CMARK_INLINE cmark_node *make_simple(cmark_node_type t) { cmark_node *e = (cmark_node *)calloc(1, sizeof(*e)); if (e != NULL) { e->type = t; @@ -141,7 +141,7 @@ static cmark_chunk cmark_clean_autolink(cmark_chunk *url, int is_email) { return cmark_chunk_buf_detach(&buf); } -static inline cmark_node *make_autolink(cmark_chunk url, int is_email) { +static CMARK_INLINE cmark_node *make_autolink(cmark_chunk url, int is_email) { cmark_node *link = make_simple(CMARK_NODE_LINK); link->as.link.url = cmark_clean_autolink(&url, is_email); link->as.link.title = cmark_chunk_literal(""); @@ -159,28 +159,28 @@ static void subject_from_buf(subject *e, cmark_strbuf *buffer, e->last_delim = NULL; } -static inline int isbacktick(int c) { return (c == '`'); } +static CMARK_INLINE int isbacktick(int c) { return (c == '`'); } -static inline unsigned char peek_char(subject *subj) { +static CMARK_INLINE unsigned char peek_char(subject *subj) { // NULL bytes should have been stripped out by now. If they're // present, it's a programming error: assert(!(subj->pos < subj->input.len && subj->input.data[subj->pos] == 0)); return (subj->pos < subj->input.len) ? subj->input.data[subj->pos] : 0; } -static inline unsigned char peek_at(subject *subj, bufsize_t pos) { +static CMARK_INLINE unsigned char peek_at(subject *subj, bufsize_t pos) { return subj->input.data[pos]; } // Return true if there are more characters in the subject. -static inline int is_eof(subject *subj) { +static CMARK_INLINE int is_eof(subject *subj) { return (subj->pos >= subj->input.len); } // Advance the subject. Doesn't check for eof. #define advance(subj) (subj)->pos += 1 -static inline bool skip_spaces(subject *subj) { +static CMARK_INLINE bool skip_spaces(subject *subj) { bool skipped = false; while (peek_char(subj) == ' ' || peek_char(subj) == '\t') { advance(subj); @@ -189,7 +189,7 @@ static inline bool skip_spaces(subject *subj) { return skipped; } -static inline bool skip_line_end(subject *subj) { +static CMARK_INLINE bool skip_line_end(subject *subj) { bool seen_line_end_char = false; if (peek_char(subj) == '\r') { advance(subj); @@ -203,7 +203,7 @@ static inline bool skip_line_end(subject *subj) { } // Take characters while a predicate holds, and return a string. -static inline cmark_chunk take_while(subject *subj, int (*f)(int)) { +static CMARK_INLINE cmark_chunk take_while(subject *subj, int (*f)(int)) { unsigned char c; bufsize_t startpos = subj->pos; bufsize_t len = 0; diff --git a/latex.c b/latex.c index 57d474c..cd2f6f3 100644 --- a/latex.c +++ b/latex.c @@ -17,8 +17,9 @@ #define LIT(s) renderer->out(renderer, s, false, LITERAL) #define CR() renderer->cr(renderer) #define BLANKLINE() renderer->blankline(renderer) +#define LIST_NUMBER_STRING_SIZE 20 -static inline void outc(cmark_renderer *renderer, cmark_escaping escape, +static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape, int32_t c, unsigned char nextc) { if (escape == LITERAL) { cmark_render_code_point(renderer, c); @@ -217,7 +218,7 @@ static int S_get_enumlevel(cmark_node *node) { static int S_render_node(cmark_renderer *renderer, cmark_node *node, cmark_event_type ev_type, int options) { int list_number; - char list_number_string[20]; + char list_number_string[LIST_NUMBER_STRING_SIZE]; bool entering = (ev_type == CMARK_EVENT_ENTER); cmark_list_type list_type; const char *roman_numerals[] = {"", "i", "ii", "iii", "iv", "v", @@ -249,7 +250,8 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, CR(); list_number = cmark_node_get_list_start(node); if (list_number > 1) { - sprintf(list_number_string, "%d", list_number); + snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d", + list_number); LIT("\\setcounter{enum"); LIT((char *)roman_numerals[S_get_enumlevel(node)]); LIT("}{"); diff --git a/man.c b/man.c index 99a2803..3d8bc20 100644 --- a/man.c +++ b/man.c @@ -14,6 +14,7 @@ #define LIT(s) renderer->out(renderer, s, false, LITERAL) #define CR() renderer->cr(renderer) #define BLANKLINE() renderer->blankline(renderer) +#define LIST_NUMBER_SIZE 20 // Functions to convert cmark_nodes to groff man strings. static void S_outc(cmark_renderer *renderer, cmark_escaping escape, int32_t c, @@ -110,8 +111,8 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, tmp = tmp->prev; list_number += 1; } - char list_number_s[20]; - sprintf(list_number_s, "\"%d.\" 4", list_number); + char list_number_s[LIST_NUMBER_SIZE]; + snprintf(list_number_s, LIST_NUMBER_SIZE, "\"%d.\" 4", list_number); LIT(list_number_s); } CR(); diff --git a/node.c b/node.c index 26a8e25..00edbb1 100644 --- a/node.c +++ b/node.c @@ -6,7 +6,7 @@ static void S_node_unlink(cmark_node *node); -static inline bool S_is_block(cmark_node *node) { +static CMARK_INLINE bool S_is_block(cmark_node *node) { if (node == NULL) { return false; } @@ -14,7 +14,7 @@ static inline bool S_is_block(cmark_node *node) { node->type <= CMARK_NODE_LAST_BLOCK; } -static inline bool S_is_inline(cmark_node *node) { +static CMARK_INLINE bool S_is_inline(cmark_node *node) { if (node == NULL) { return false; } diff --git a/node.go b/node.go index 2df07cc..a7b05dd 100644 --- a/node.go +++ b/node.go @@ -2,6 +2,7 @@ package commonmark /* #include +#include #include "cmark.h" */ import "C" @@ -182,16 +183,18 @@ func (node *CMarkNode) LastChild() *CMarkNode { //Accessor functions -//Sets arbiturary user data for node -func (node *CMarkNode) SetNodeUserData(userData interface{}) bool { - return success(C.cmark_node_set_user_data(node.node, - unsafe.Pointer(&userData))) +//Sets arbitrary user data for node +func (node *CMarkNode) SetNodeUserData(userData string) bool { + cstr := C.CString(userData) + res := C.cmark_node_set_user_data(node.node, unsafe.Pointer(&cstr)) + return success(res) } //Returns the user data of the node as an //unsafe.Pointer. Hope you know what you're doing. -func (node *CMarkNode) GetNodeUserData() interface{} { - return C.cmark_node_get_user_data(node.node) +func (node *CMarkNode) GetNodeUserData() string { + data := C.cmark_node_get_user_data(node.node) + return C.GoString((*C.char)(*(*unsafe.Pointer)(data))) } //Get the node type diff --git a/parser.h b/parser.h index f359e10..ab21d0f 100644 --- a/parser.h +++ b/parser.h @@ -22,10 +22,12 @@ struct cmark_parser { bufsize_t first_nonspace_column; int indent; bool blank; + bool partially_consumed_tab; cmark_strbuf *curline; bufsize_t last_line_length; cmark_strbuf *linebuf; int options; + bool last_buffer_ended_with_cr; }; #ifdef __cplusplus diff --git a/render.c b/render.c index 2c941bf..50f03e6 100644 --- a/render.c +++ b/render.c @@ -5,13 +5,13 @@ #include "utf8.h" #include "render.h" -static inline void S_cr(cmark_renderer *renderer) { +static CMARK_INLINE void S_cr(cmark_renderer *renderer) { if (renderer->need_cr < 1) { renderer->need_cr = 1; } } -static inline void S_blankline(cmark_renderer *renderer) { +static CMARK_INLINE void S_blankline(cmark_renderer *renderer) { if (renderer->need_cr < 2) { renderer->need_cr = 2; } @@ -64,7 +64,7 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, nextc = source[i + len]; if (c == 32 && wrap) { if (!renderer->begin_line) { - last_nonspace = renderer->buffer->size; + last_nonspace = renderer->buffer->size; cmark_strbuf_putc(renderer->buffer, ' '); renderer->column += 1; renderer->begin_line = false; @@ -73,11 +73,11 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, while (source[i + 1] == ' ') { i++; } - // We don't allow breaks that make a digit the first character - // because this causes problems with commonmark output. - if (!cmark_isdigit(source[i + 1])) { + // We don't allow breaks that make a digit the first character + // because this causes problems with commonmark output. + if (!cmark_isdigit(source[i + 1])) { renderer->last_breakable = last_nonspace; - } + } } } else if (c == 10) { @@ -93,13 +93,13 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, // finished parsing a digit. Reason: in commonmark // we need to escape a potential list marker after // a digit: - renderer->begin_content = renderer->begin_content && - cmark_isdigit(c) == 1; + renderer->begin_content = + renderer->begin_content && cmark_isdigit(c) == 1; } else { (renderer->outc)(renderer, escape, c, nextc); renderer->begin_line = false; - renderer->begin_content = renderer->begin_content && - cmark_isdigit(c) == 1; + renderer->begin_content = + renderer->begin_content && cmark_isdigit(c) == 1; } // If adding the character went beyond width, look for an @@ -153,8 +153,8 @@ char *cmark_render(cmark_node *root, int options, int width, char *result; cmark_iter *iter = cmark_iter_new(root); - cmark_renderer renderer = {&buf, &pref, 0, width, 0, 0, true, - true, false, false, + cmark_renderer renderer = {&buf, &pref, 0, width, 0, + 0, true, true, false, false, outc, S_cr, S_blankline, S_out}; while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { diff --git a/scanners.c b/scanners.c index 28821ba..712093c 100644 --- a/scanners.c +++ b/scanners.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.14.3 */ +/* Generated by re2c 0.15.3 */ #include #include "chunk.h" #include "scanners.h" @@ -28,7 +28,6 @@ bufsize_t _scan_scheme(const unsigned char *p) { { unsigned char yych; - yych = *(marker = p); if (yych <= 0x7F) { if (yych <= ' ') { @@ -2074,14 +2073,14 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy119; + goto yy120; } else { if (yych <= '/') goto yy107; - if (yych <= '9') - goto yy119; - goto yy107; + if (yych >= ':') + goto yy107; } } else { if (yych <= 'Z') { @@ -2089,48 +2088,26 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy119; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy119; - goto yy107; - } - } - yych = *++p; - if (yych <= '9') { - if (yych == '-') - goto yy247; - if (yych <= '/') - goto yy107; - goto yy248; - } else { - if (yych <= 'Z') { - if (yych <= '@') - goto yy107; - goto yy248; - } else { - if (yych <= '`') + if (yych >= '{') goto yy107; - if (yych <= 'z') - goto yy248; - goto yy107; } } - yy119: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; if (yych <= '-') - goto yy247; + goto yy248; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy248; + goto yy247; goto yy107; } } else { @@ -2139,12 +2116,33 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; + goto yy247; + } else { + if (yych <= '`') + goto yy107; + if (yych <= 'z') + goto yy247; + goto yy107; + } + } + yy119: + yych = *++p; + if (yych <= '9') { + if (yych == '-') goto yy248; + if (yych <= '/') + goto yy107; + goto yy247; + } else { + if (yych <= 'Z') { + if (yych <= '@') + goto yy107; + goto yy247; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy248; + goto yy247; goto yy107; } } @@ -2176,14 +2174,14 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy125; + goto yy120; } else { if (yych <= '/') goto yy107; - if (yych <= '9') - goto yy125; - goto yy107; + if (yych >= ':') + goto yy107; } } else { if (yych <= 'Z') { @@ -2191,50 +2189,27 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy125; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy125; - goto yy107; - } - } - ++p; - yych = *p; - if (yych <= '9') { - if (yych == '-') - goto yy126; - if (yych <= '/') - goto yy107; - goto yy127; - } else { - if (yych <= 'Z') { - if (yych <= '@') - goto yy107; - goto yy127; - } else { - if (yych <= '`') + if (yych >= '{') goto yy107; - if (yych <= 'z') - goto yy127; - goto yy107; } } - yy125: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy127; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy127; + goto yy126; goto yy107; } } else { @@ -2243,51 +2218,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy127; + goto yy126; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy127; + goto yy126; goto yy107; } } - yy126: + yy125: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy128; + goto yy127; if (yych <= '/') goto yy107; - goto yy129; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy129; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy129; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy127: + yy126: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy129; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy129; + goto yy128; goto yy107; } } else { @@ -2296,51 +2269,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy129; + goto yy128; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy129; + goto yy128; goto yy107; } } - yy128: + yy127: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy130; + goto yy129; if (yych <= '/') goto yy107; - goto yy131; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy131; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy131; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy129: + yy128: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy131; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy131; + goto yy130; goto yy107; } } else { @@ -2349,51 +2320,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy131; + goto yy130; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy131; + goto yy130; goto yy107; } } - yy130: + yy129: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy132; + goto yy131; if (yych <= '/') goto yy107; - goto yy133; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy133; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy133; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy131: + yy130: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy133; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy133; + goto yy132; goto yy107; } } else { @@ -2402,51 +2371,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy133; + goto yy132; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy133; + goto yy132; goto yy107; } } - yy132: + yy131: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy134; + goto yy133; if (yych <= '/') goto yy107; - goto yy135; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy135; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy135; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy133: + yy132: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy135; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy135; + goto yy134; goto yy107; } } else { @@ -2455,51 +2422,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy135; + goto yy134; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy135; + goto yy134; goto yy107; } } - yy134: + yy133: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy136; + goto yy135; if (yych <= '/') goto yy107; - goto yy137; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy137; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy137; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy135: + yy134: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy137; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy137; + goto yy136; goto yy107; } } else { @@ -2508,51 +2473,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy137; + goto yy136; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy137; + goto yy136; goto yy107; } } - yy136: + yy135: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy138; + goto yy137; if (yych <= '/') goto yy107; - goto yy139; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy139; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy139; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy137: + yy136: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy139; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy139; + goto yy138; goto yy107; } } else { @@ -2561,51 +2524,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy139; + goto yy138; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy139; + goto yy138; goto yy107; } } - yy138: + yy137: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy140; + goto yy139; if (yych <= '/') goto yy107; - goto yy141; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy141; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy141; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy139: + yy138: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy141; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy141; + goto yy140; goto yy107; } } else { @@ -2614,51 +2575,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy141; + goto yy140; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy141; + goto yy140; goto yy107; } } - yy140: + yy139: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy142; + goto yy141; if (yych <= '/') goto yy107; - goto yy143; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy143; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy143; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy141: + yy140: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy143; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy143; + goto yy142; goto yy107; } } else { @@ -2667,51 +2626,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy143; + goto yy142; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy143; + goto yy142; goto yy107; } } - yy142: + yy141: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy144; + goto yy143; if (yych <= '/') goto yy107; - goto yy145; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy145; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy145; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy143: + yy142: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy145; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy145; + goto yy144; goto yy107; } } else { @@ -2720,51 +2677,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy145; + goto yy144; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy145; + goto yy144; goto yy107; } } - yy144: + yy143: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy146; + goto yy145; if (yych <= '/') goto yy107; - goto yy147; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy147; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy147; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy145: + yy144: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy147; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy147; + goto yy146; goto yy107; } } else { @@ -2773,51 +2728,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy147; + goto yy146; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy147; + goto yy146; goto yy107; } } - yy146: + yy145: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy148; + goto yy147; if (yych <= '/') goto yy107; - goto yy149; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy149; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy149; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy147: + yy146: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy149; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy149; + goto yy148; goto yy107; } } else { @@ -2826,51 +2779,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy149; + goto yy148; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy149; + goto yy148; goto yy107; } } - yy148: + yy147: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy150; + goto yy149; if (yych <= '/') goto yy107; - goto yy151; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy151; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy151; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy149: + yy148: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy151; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy151; + goto yy150; goto yy107; } } else { @@ -2879,51 +2830,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy151; + goto yy150; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy151; + goto yy150; goto yy107; } } - yy150: + yy149: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy152; + goto yy151; if (yych <= '/') goto yy107; - goto yy153; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy153; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy153; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy151: + yy150: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy153; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy153; + goto yy152; goto yy107; } } else { @@ -2932,51 +2881,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy153; + goto yy152; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy153; + goto yy152; goto yy107; } } - yy152: + yy151: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy154; + goto yy153; if (yych <= '/') goto yy107; - goto yy155; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy155; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy155; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy153: + yy152: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy155; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy155; + goto yy154; goto yy107; } } else { @@ -2985,51 +2932,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy155; + goto yy154; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy155; + goto yy154; goto yy107; } } - yy154: + yy153: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy156; + goto yy155; if (yych <= '/') goto yy107; - goto yy157; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy157; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy157; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy155: + yy154: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy157; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy157; + goto yy156; goto yy107; } } else { @@ -3038,51 +2983,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy157; + goto yy156; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy157; + goto yy156; goto yy107; } } - yy156: + yy155: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy158; + goto yy157; if (yych <= '/') goto yy107; - goto yy159; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy159; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy159; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy157: + yy156: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy159; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy159; + goto yy158; goto yy107; } } else { @@ -3091,51 +3034,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy159; + goto yy158; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy159; + goto yy158; goto yy107; } } - yy158: + yy157: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy160; + goto yy159; if (yych <= '/') goto yy107; - goto yy161; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy161; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy161; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy159: + yy158: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy161; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy161; + goto yy160; goto yy107; } } else { @@ -3144,51 +3085,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy161; + goto yy160; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy161; + goto yy160; goto yy107; } } - yy160: + yy159: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy162; + goto yy161; if (yych <= '/') goto yy107; - goto yy163; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy163; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy163; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy161: + yy160: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy163; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy163; + goto yy162; goto yy107; } } else { @@ -3197,51 +3136,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy163; + goto yy162; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy163; + goto yy162; goto yy107; } } - yy162: + yy161: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy164; + goto yy163; if (yych <= '/') goto yy107; - goto yy165; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy165; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy165; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy163: + yy162: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy165; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy165; + goto yy164; goto yy107; } } else { @@ -3250,51 +3187,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy165; + goto yy164; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy165; + goto yy164; goto yy107; } } - yy164: + yy163: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy166; + goto yy165; if (yych <= '/') goto yy107; - goto yy167; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy167; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy167; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy165: + yy164: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy167; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy167; + goto yy166; goto yy107; } } else { @@ -3303,51 +3238,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy167; + goto yy166; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy167; + goto yy166; goto yy107; } } - yy166: + yy165: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy168; + goto yy167; if (yych <= '/') goto yy107; - goto yy169; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy169; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy169; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy167: + yy166: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy169; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy169; + goto yy168; goto yy107; } } else { @@ -3356,51 +3289,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy169; + goto yy168; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy169; + goto yy168; goto yy107; } } - yy168: + yy167: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy170; + goto yy169; if (yych <= '/') goto yy107; - goto yy171; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy171; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy171; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy169: + yy168: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy171; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy171; + goto yy170; goto yy107; } } else { @@ -3409,51 +3340,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy171; + goto yy170; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy171; + goto yy170; goto yy107; } } - yy170: + yy169: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy172; + goto yy171; if (yych <= '/') goto yy107; - goto yy173; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy173; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy173; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy171: + yy170: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy173; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy173; + goto yy172; goto yy107; } } else { @@ -3462,51 +3391,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy173; + goto yy172; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy173; + goto yy172; goto yy107; } } - yy172: + yy171: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy174; + goto yy173; if (yych <= '/') goto yy107; - goto yy175; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy175; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy175; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy173: + yy172: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy175; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy175; + goto yy174; goto yy107; } } else { @@ -3515,51 +3442,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy175; + goto yy174; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy175; + goto yy174; goto yy107; } } - yy174: + yy173: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy176; + goto yy175; if (yych <= '/') goto yy107; - goto yy177; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy177; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy177; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy175: + yy174: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy177; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy177; + goto yy176; goto yy107; } } else { @@ -3568,51 +3493,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy177; + goto yy176; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy177; + goto yy176; goto yy107; } } - yy176: + yy175: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy178; + goto yy177; if (yych <= '/') goto yy107; - goto yy179; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy179; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy179; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy177: + yy176: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy179; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy179; + goto yy178; goto yy107; } } else { @@ -3621,51 +3544,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy179; + goto yy178; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy179; + goto yy178; goto yy107; } } - yy178: + yy177: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy180; + goto yy179; if (yych <= '/') goto yy107; - goto yy181; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy181; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy181; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy179: + yy178: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy181; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy181; + goto yy180; goto yy107; } } else { @@ -3674,51 +3595,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy181; + goto yy180; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy181; + goto yy180; goto yy107; } } - yy180: + yy179: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy182; + goto yy181; if (yych <= '/') goto yy107; - goto yy183; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy183; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy183; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy181: + yy180: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy183; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy183; + goto yy182; goto yy107; } } else { @@ -3727,51 +3646,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy183; + goto yy182; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy183; + goto yy182; goto yy107; } } - yy182: + yy181: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy184; + goto yy183; if (yych <= '/') goto yy107; - goto yy185; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy185; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy185; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy183: + yy182: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy185; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy185; + goto yy184; goto yy107; } } else { @@ -3780,51 +3697,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy185; + goto yy184; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy185; + goto yy184; goto yy107; } } - yy184: + yy183: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy186; + goto yy185; if (yych <= '/') goto yy107; - goto yy187; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy187; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy187; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy185: + yy184: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy187; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy187; + goto yy186; goto yy107; } } else { @@ -3833,51 +3748,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy187; + goto yy186; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy187; + goto yy186; goto yy107; } } - yy186: + yy185: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy188; + goto yy187; if (yych <= '/') goto yy107; - goto yy189; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy189; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy189; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy187: + yy186: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy189; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy189; + goto yy188; goto yy107; } } else { @@ -3886,51 +3799,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy189; + goto yy188; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy189; + goto yy188; goto yy107; } } - yy188: + yy187: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy190; + goto yy189; if (yych <= '/') goto yy107; - goto yy191; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy191; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy191; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy189: + yy188: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy191; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy191; + goto yy190; goto yy107; } } else { @@ -3939,51 +3850,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy191; + goto yy190; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy191; + goto yy190; goto yy107; } } - yy190: + yy189: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy192; + goto yy191; if (yych <= '/') goto yy107; - goto yy193; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy193; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy193; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy191: + yy190: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy193; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy193; + goto yy192; goto yy107; } } else { @@ -3992,51 +3901,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy193; + goto yy192; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy193; + goto yy192; goto yy107; } } - yy192: + yy191: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy194; + goto yy193; if (yych <= '/') goto yy107; - goto yy195; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy195; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy195; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy193: + yy192: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy195; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy195; + goto yy194; goto yy107; } } else { @@ -4045,51 +3952,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy195; + goto yy194; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy195; + goto yy194; goto yy107; } } - yy194: + yy193: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy196; + goto yy195; if (yych <= '/') goto yy107; - goto yy197; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy197; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy197; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy195: + yy194: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy197; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy197; + goto yy196; goto yy107; } } else { @@ -4098,51 +4003,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy197; + goto yy196; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy197; + goto yy196; goto yy107; } } - yy196: + yy195: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy198; + goto yy197; if (yych <= '/') goto yy107; - goto yy199; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy199; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy199; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy197: + yy196: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy199; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy199; + goto yy198; goto yy107; } } else { @@ -4151,51 +4054,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy199; + goto yy198; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy199; + goto yy198; goto yy107; } } - yy198: + yy197: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy200; + goto yy199; if (yych <= '/') goto yy107; - goto yy201; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy201; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy201; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy199: + yy198: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy201; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy201; + goto yy200; goto yy107; } } else { @@ -4204,51 +4105,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy201; + goto yy200; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy201; + goto yy200; goto yy107; } } - yy200: + yy199: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy202; + goto yy201; if (yych <= '/') goto yy107; - goto yy203; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy203; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy203; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy201: + yy200: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy203; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy203; + goto yy202; goto yy107; } } else { @@ -4257,51 +4156,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy203; + goto yy202; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy203; + goto yy202; goto yy107; } } - yy202: + yy201: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy204; + goto yy203; if (yych <= '/') goto yy107; - goto yy205; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy205; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy205; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy203: + yy202: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy205; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy205; + goto yy204; goto yy107; } } else { @@ -4310,51 +4207,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy205; + goto yy204; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy205; + goto yy204; goto yy107; } } - yy204: + yy203: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy206; + goto yy205; if (yych <= '/') goto yy107; - goto yy207; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy207; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy207; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy205: + yy204: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy207; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy207; + goto yy206; goto yy107; } } else { @@ -4363,51 +4258,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy207; + goto yy206; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy207; + goto yy206; goto yy107; } } - yy206: + yy205: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy208; + goto yy207; if (yych <= '/') goto yy107; - goto yy209; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy209; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy209; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy207: + yy206: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy209; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy209; + goto yy208; goto yy107; } } else { @@ -4416,51 +4309,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy209; + goto yy208; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy209; + goto yy208; goto yy107; } } - yy208: + yy207: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy210; + goto yy209; if (yych <= '/') goto yy107; - goto yy211; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy211; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy211; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy209: + yy208: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy211; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy211; + goto yy210; goto yy107; } } else { @@ -4469,51 +4360,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy211; + goto yy210; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy211; + goto yy210; goto yy107; } } - yy210: + yy209: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy212; + goto yy211; if (yych <= '/') goto yy107; - goto yy213; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy213; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy213; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy211: + yy210: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy213; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy213; + goto yy212; goto yy107; } } else { @@ -4522,51 +4411,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy213; + goto yy212; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy213; + goto yy212; goto yy107; } } - yy212: + yy211: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy214; + goto yy213; if (yych <= '/') goto yy107; - goto yy215; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy215; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy215; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy213: + yy212: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy215; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy215; + goto yy214; goto yy107; } } else { @@ -4575,51 +4462,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy215; + goto yy214; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy215; + goto yy214; goto yy107; } } - yy214: + yy213: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy216; + goto yy215; if (yych <= '/') goto yy107; - goto yy217; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy217; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy217; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy215: + yy214: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy217; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy217; + goto yy216; goto yy107; } } else { @@ -4628,51 +4513,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy217; + goto yy216; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy217; + goto yy216; goto yy107; } } - yy216: + yy215: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy218; + goto yy217; if (yych <= '/') goto yy107; - goto yy219; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy219; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy219; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy217: + yy216: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy219; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy219; + goto yy218; goto yy107; } } else { @@ -4681,51 +4564,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy219; + goto yy218; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy219; + goto yy218; goto yy107; } } - yy218: + yy217: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy220; + goto yy219; if (yych <= '/') goto yy107; - goto yy221; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy221; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy221; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy219: + yy218: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy221; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy221; + goto yy220; goto yy107; } } else { @@ -4734,51 +4615,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy221; + goto yy220; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy221; + goto yy220; goto yy107; } } - yy220: + yy219: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy222; + goto yy221; if (yych <= '/') goto yy107; - goto yy223; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy223; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy223; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy221: + yy220: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy223; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy223; + goto yy222; goto yy107; } } else { @@ -4787,51 +4666,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy223; + goto yy222; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy223; + goto yy222; goto yy107; } } - yy222: + yy221: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy224; + goto yy223; if (yych <= '/') goto yy107; - goto yy225; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy225; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy225; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy223: + yy222: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; - } else { - if (yych <= '/') + if (yych <= '-') + goto yy225; + goto yy120; + } else { + if (yych <= '/') goto yy107; if (yych <= '9') - goto yy225; + goto yy224; goto yy107; } } else { @@ -4840,51 +4717,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy225; + goto yy224; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy225; + goto yy224; goto yy107; } } - yy224: + yy223: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy226; + goto yy225; if (yych <= '/') goto yy107; - goto yy227; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy227; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy227; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy225: + yy224: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy227; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy227; + goto yy226; goto yy107; } } else { @@ -4893,51 +4768,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy227; + goto yy226; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy227; + goto yy226; goto yy107; } } - yy226: + yy225: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy228; + goto yy227; if (yych <= '/') goto yy107; - goto yy229; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy229; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy229; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy227: + yy226: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy229; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy229; + goto yy228; goto yy107; } } else { @@ -4946,51 +4819,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy229; + goto yy228; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy229; + goto yy228; goto yy107; } } - yy228: + yy227: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy230; + goto yy229; if (yych <= '/') goto yy107; - goto yy231; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy231; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy231; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy229: + yy228: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy231; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy231; + goto yy230; goto yy107; } } else { @@ -4999,51 +4870,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy231; + goto yy230; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy231; + goto yy230; goto yy107; } } - yy230: + yy229: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy232; + goto yy231; if (yych <= '/') goto yy107; - goto yy233; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy233; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy233; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy231: + yy230: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy233; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy233; + goto yy232; goto yy107; } } else { @@ -5052,51 +4921,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy233; + goto yy232; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy233; + goto yy232; goto yy107; } } - yy232: + yy231: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy234; + goto yy233; if (yych <= '/') goto yy107; - goto yy235; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy235; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy235; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy233: + yy232: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy235; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy235; + goto yy234; goto yy107; } } else { @@ -5105,51 +4972,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy235; + goto yy234; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy235; + goto yy234; goto yy107; } } - yy234: + yy233: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy236; + goto yy235; if (yych <= '/') goto yy107; - goto yy237; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy237; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy237; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy235: + yy234: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy237; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy237; + goto yy236; goto yy107; } } else { @@ -5158,51 +5023,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy237; + goto yy236; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy237; + goto yy236; goto yy107; } } - yy236: + yy235: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy238; + goto yy237; if (yych <= '/') goto yy107; - goto yy239; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy239; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy239; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy237: + yy236: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy239; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy239; + goto yy238; goto yy107; } } else { @@ -5211,51 +5074,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy239; + goto yy238; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy239; + goto yy238; goto yy107; } } - yy238: + yy237: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy240; + goto yy239; if (yych <= '/') goto yy107; - goto yy241; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy241; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy241; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy239: + yy238: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy241; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy241; + goto yy240; goto yy107; } } else { @@ -5264,51 +5125,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy241; + goto yy240; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy241; + goto yy240; goto yy107; } } - yy240: + yy239: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy242; + goto yy241; if (yych <= '/') goto yy107; - goto yy243; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy243; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy243; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy241: + yy240: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy243; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy243; + goto yy242; goto yy107; } } else { @@ -5317,51 +5176,49 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy243; + goto yy242; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy243; + goto yy242; goto yy107; } } - yy242: + yy241: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy244; + goto yy243; if (yych <= '/') goto yy107; - goto yy245; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy245; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy245; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy243: + yy242: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy245; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy245; + goto yy244; goto yy107; } } else { @@ -5370,34 +5227,35 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy245; + goto yy244; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy245; + goto yy244; goto yy107; } } - yy244: + yy243: ++p; yych = *p; - if (yych <= '@') { + if (yych <= '9') { + if (yych == '-') + goto yy245; if (yych <= '/') goto yy107; - if (yych <= '9') - goto yy246; - goto yy107; } else { - if (yych <= 'Z') - goto yy246; - if (yych <= '`') - goto yy107; - if (yych <= 'z') - goto yy246; - goto yy107; + if (yych <= 'Z') { + if (yych <= '@') + goto yy107; + } else { + if (yych <= '`') + goto yy107; + if (yych >= '{') + goto yy107; + } } - yy245: + yy244: ++p; yych = *p; if (yych <= '=') { @@ -5408,8 +5266,9 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { } else { if (yych <= '/') goto yy107; - if (yych >= ':') - goto yy107; + if (yych <= '9') + goto yy246; + goto yy107; } } else { if (yych <= 'Z') { @@ -5417,13 +5276,31 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; + goto yy246; } else { if (yych <= '`') goto yy107; - if (yych >= '{') - goto yy107; + if (yych <= 'z') + goto yy246; + goto yy107; } } + yy245: + ++p; + yych = *p; + if (yych <= '@') { + if (yych <= '/') + goto yy107; + if (yych >= ':') + goto yy107; + } else { + if (yych <= 'Z') + goto yy246; + if (yych <= '`') + goto yy107; + if (yych >= '{') + goto yy107; + } yy246: ++p; yych = *p; @@ -5433,39 +5310,19 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; goto yy107; yy247: - yych = *++p; - if (yych <= '9') { - if (yych == '-') - goto yy249; - if (yych <= '/') - goto yy107; - goto yy250; - } else { - if (yych <= 'Z') { - if (yych <= '@') - goto yy107; - goto yy250; - } else { - if (yych <= '`') - goto yy107; - if (yych <= 'z') - goto yy250; - goto yy107; - } - } - yy248: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy250; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy250; + goto yy249; goto yy107; } } else { @@ -5474,49 +5331,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy250; + goto yy249; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy250; + goto yy249; goto yy107; } } - yy249: + yy248: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy251; + goto yy250; if (yych <= '/') goto yy107; - goto yy252; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy252; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy252; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy250: + yy249: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy252; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy252; + goto yy251; goto yy107; } } else { @@ -5525,49 +5380,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy252; + goto yy251; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy252; + goto yy251; goto yy107; } } - yy251: + yy250: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy253; + goto yy252; if (yych <= '/') goto yy107; - goto yy254; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy254; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy254; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy252: + yy251: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy254; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy254; + goto yy253; goto yy107; } } else { @@ -5576,49 +5429,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy254; + goto yy253; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy254; + goto yy253; goto yy107; } } - yy253: + yy252: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy255; + goto yy254; if (yych <= '/') goto yy107; - goto yy256; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy256; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy256; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy254: + yy253: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy256; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy256; + goto yy255; goto yy107; } } else { @@ -5627,49 +5478,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy256; + goto yy255; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy256; + goto yy255; goto yy107; } } - yy255: + yy254: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy257; + goto yy256; if (yych <= '/') goto yy107; - goto yy258; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy258; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy258; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy256: + yy255: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy258; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy258; + goto yy257; goto yy107; } } else { @@ -5678,49 +5527,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy258; + goto yy257; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy258; + goto yy257; goto yy107; } } - yy257: + yy256: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy259; + goto yy258; if (yych <= '/') goto yy107; - goto yy260; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy260; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy260; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy258: + yy257: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy260; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy260; + goto yy259; goto yy107; } } else { @@ -5729,49 +5576,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy260; + goto yy259; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy260; + goto yy259; goto yy107; } } - yy259: + yy258: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy261; + goto yy260; if (yych <= '/') goto yy107; - goto yy262; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy262; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy262; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy260: + yy259: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy262; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy262; + goto yy261; goto yy107; } } else { @@ -5780,49 +5625,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy262; + goto yy261; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy262; + goto yy261; goto yy107; } } - yy261: + yy260: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy263; + goto yy262; if (yych <= '/') goto yy107; - goto yy264; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy264; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy264; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy262: + yy261: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy264; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy264; + goto yy263; goto yy107; } } else { @@ -5831,49 +5674,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy264; + goto yy263; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy264; + goto yy263; goto yy107; } } - yy263: + yy262: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy265; + goto yy264; if (yych <= '/') goto yy107; - goto yy266; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy266; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy266; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy264: + yy263: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy266; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy266; + goto yy265; goto yy107; } } else { @@ -5882,49 +5723,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy266; + goto yy265; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy266; + goto yy265; goto yy107; } } - yy265: + yy264: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy267; + goto yy266; if (yych <= '/') goto yy107; - goto yy268; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy268; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy268; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy266: + yy265: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy268; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy268; + goto yy267; goto yy107; } } else { @@ -5933,49 +5772,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy268; + goto yy267; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy268; + goto yy267; goto yy107; } } - yy267: + yy266: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy269; + goto yy268; if (yych <= '/') goto yy107; - goto yy270; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy270; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy270; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy268: + yy267: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy270; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy270; + goto yy269; goto yy107; } } else { @@ -5984,49 +5821,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy270; + goto yy269; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy270; + goto yy269; goto yy107; } } - yy269: + yy268: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy271; + goto yy270; if (yych <= '/') goto yy107; - goto yy272; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy272; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy272; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy270: + yy269: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy272; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy272; + goto yy271; goto yy107; } } else { @@ -6035,49 +5870,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy272; + goto yy271; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy272; + goto yy271; goto yy107; } } - yy271: + yy270: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy273; + goto yy272; if (yych <= '/') goto yy107; - goto yy274; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy274; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy274; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy272: + yy271: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy274; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy274; + goto yy273; goto yy107; } } else { @@ -6086,49 +5919,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy274; + goto yy273; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy274; + goto yy273; goto yy107; } } - yy273: + yy272: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy275; + goto yy274; if (yych <= '/') goto yy107; - goto yy276; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy276; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy276; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy274: + yy273: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy276; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy276; + goto yy275; goto yy107; } } else { @@ -6137,49 +5968,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy276; + goto yy275; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy276; + goto yy275; goto yy107; } } - yy275: + yy274: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy277; + goto yy276; if (yych <= '/') goto yy107; - goto yy278; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy278; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy278; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy276: + yy275: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy278; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy278; + goto yy277; goto yy107; } } else { @@ -6188,49 +6017,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy278; + goto yy277; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy278; + goto yy277; goto yy107; } } - yy277: + yy276: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy279; + goto yy278; if (yych <= '/') goto yy107; - goto yy280; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy280; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy280; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy278: + yy277: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy280; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy280; + goto yy279; goto yy107; } } else { @@ -6239,49 +6066,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy280; + goto yy279; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy280; + goto yy279; goto yy107; } } - yy279: + yy278: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy281; + goto yy280; if (yych <= '/') goto yy107; - goto yy282; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy282; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy282; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy280: + yy279: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy282; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy282; + goto yy281; goto yy107; } } else { @@ -6290,49 +6115,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy282; + goto yy281; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy282; + goto yy281; goto yy107; } } - yy281: + yy280: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy283; + goto yy282; if (yych <= '/') goto yy107; - goto yy284; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy284; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy284; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy282: + yy281: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy284; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy284; + goto yy283; goto yy107; } } else { @@ -6341,49 +6164,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy284; + goto yy283; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy284; + goto yy283; goto yy107; } } - yy283: + yy282: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy285; + goto yy284; if (yych <= '/') goto yy107; - goto yy286; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy286; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy286; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy284: + yy283: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy286; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy286; + goto yy285; goto yy107; } } else { @@ -6392,49 +6213,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy286; + goto yy285; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy286; + goto yy285; goto yy107; } } - yy285: + yy284: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy287; + goto yy286; if (yych <= '/') goto yy107; - goto yy288; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy288; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy288; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy286: + yy285: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy288; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy288; + goto yy287; goto yy107; } } else { @@ -6443,49 +6262,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy288; + goto yy287; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy288; + goto yy287; goto yy107; } } - yy287: + yy286: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy289; + goto yy288; if (yych <= '/') goto yy107; - goto yy290; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy290; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy290; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy288: + yy287: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy290; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy290; + goto yy289; goto yy107; } } else { @@ -6494,49 +6311,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy290; + goto yy289; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy290; + goto yy289; goto yy107; } } - yy289: + yy288: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy291; + goto yy290; if (yych <= '/') goto yy107; - goto yy292; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy292; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy292; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy290: + yy289: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy292; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy292; + goto yy291; goto yy107; } } else { @@ -6545,49 +6360,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy292; + goto yy291; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy292; + goto yy291; goto yy107; } } - yy291: + yy290: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy293; + goto yy292; if (yych <= '/') goto yy107; - goto yy294; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy294; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy294; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy292: + yy291: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy294; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy294; + goto yy293; goto yy107; } } else { @@ -6596,49 +6409,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy294; + goto yy293; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy294; + goto yy293; goto yy107; } } - yy293: + yy292: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy295; + goto yy294; if (yych <= '/') goto yy107; - goto yy296; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy296; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy296; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy294: + yy293: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy296; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy296; + goto yy295; goto yy107; } } else { @@ -6647,49 +6458,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy296; + goto yy295; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy296; + goto yy295; goto yy107; } } - yy295: + yy294: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy297; + goto yy296; if (yych <= '/') goto yy107; - goto yy298; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy298; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy298; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy296: + yy295: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy298; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy298; + goto yy297; goto yy107; } } else { @@ -6698,49 +6507,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy298; + goto yy297; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy298; + goto yy297; goto yy107; } } - yy297: + yy296: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy299; + goto yy298; if (yych <= '/') goto yy107; - goto yy300; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy300; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy300; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy298: + yy297: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy300; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy300; + goto yy299; goto yy107; } } else { @@ -6749,49 +6556,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy300; + goto yy299; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy300; + goto yy299; goto yy107; } } - yy299: + yy298: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy301; + goto yy300; if (yych <= '/') goto yy107; - goto yy302; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy302; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy302; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy300: + yy299: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; - } else { + if (yych <= '-') + goto yy302; + goto yy120; + } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy302; + goto yy301; goto yy107; } } else { @@ -6800,49 +6605,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy302; + goto yy301; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy302; + goto yy301; goto yy107; } } - yy301: + yy300: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy303; + goto yy302; if (yych <= '/') goto yy107; - goto yy304; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy304; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy304; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy302: + yy301: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy304; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy304; + goto yy303; goto yy107; } } else { @@ -6851,49 +6654,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy304; + goto yy303; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy304; + goto yy303; goto yy107; } } - yy303: + yy302: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy305; + goto yy304; if (yych <= '/') goto yy107; - goto yy306; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy306; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy306; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy304: + yy303: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy306; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy306; + goto yy305; goto yy107; } } else { @@ -6902,49 +6703,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy306; + goto yy305; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy306; + goto yy305; goto yy107; } } - yy305: + yy304: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy307; + goto yy306; if (yych <= '/') goto yy107; - goto yy308; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy308; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy308; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy306: + yy305: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy308; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy308; + goto yy307; goto yy107; } } else { @@ -6953,49 +6752,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy308; + goto yy307; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy308; + goto yy307; goto yy107; } } - yy307: + yy306: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy309; + goto yy308; if (yych <= '/') goto yy107; - goto yy310; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy310; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy310; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy308: + yy307: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy310; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy310; + goto yy309; goto yy107; } } else { @@ -7004,49 +6801,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy310; + goto yy309; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy310; + goto yy309; goto yy107; } } - yy309: + yy308: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy311; + goto yy310; if (yych <= '/') goto yy107; - goto yy312; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy312; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy312; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy310: + yy309: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy312; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy312; + goto yy311; goto yy107; } } else { @@ -7055,49 +6850,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy312; + goto yy311; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy312; + goto yy311; goto yy107; } } - yy311: + yy310: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy313; + goto yy312; if (yych <= '/') goto yy107; - goto yy314; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy314; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy314; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy312: + yy311: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy314; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy314; + goto yy313; goto yy107; } } else { @@ -7106,49 +6899,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy314; + goto yy313; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy314; + goto yy313; goto yy107; } } - yy313: + yy312: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy315; + goto yy314; if (yych <= '/') goto yy107; - goto yy316; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy316; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy316; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy314: + yy313: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy316; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy316; + goto yy315; goto yy107; } } else { @@ -7157,49 +6948,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy316; + goto yy315; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy316; + goto yy315; goto yy107; } } - yy315: + yy314: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy317; + goto yy316; if (yych <= '/') goto yy107; - goto yy318; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy318; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy318; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy316: + yy315: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy318; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy318; + goto yy317; goto yy107; } } else { @@ -7208,49 +6997,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy318; + goto yy317; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy318; + goto yy317; goto yy107; } } - yy317: + yy316: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy319; + goto yy318; if (yych <= '/') goto yy107; - goto yy320; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy320; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy320; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy318: + yy317: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy320; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy320; + goto yy319; goto yy107; } } else { @@ -7259,49 +7046,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy320; + goto yy319; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy320; + goto yy319; goto yy107; } } - yy319: + yy318: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy321; + goto yy320; if (yych <= '/') goto yy107; - goto yy322; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy322; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy322; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy320: + yy319: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy322; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy322; + goto yy321; goto yy107; } } else { @@ -7310,49 +7095,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy322; + goto yy321; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy322; + goto yy321; goto yy107; } } - yy321: + yy320: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy323; + goto yy322; if (yych <= '/') goto yy107; - goto yy324; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy324; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy324; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy322: + yy321: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy324; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy324; + goto yy323; goto yy107; } } else { @@ -7361,49 +7144,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy324; + goto yy323; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy324; + goto yy323; goto yy107; } } - yy323: + yy322: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy325; + goto yy324; if (yych <= '/') goto yy107; - goto yy326; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy326; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy326; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy324: + yy323: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy326; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy326; + goto yy325; goto yy107; } } else { @@ -7412,49 +7193,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy326; + goto yy325; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy326; + goto yy325; goto yy107; } } - yy325: + yy324: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy327; + goto yy326; if (yych <= '/') goto yy107; - goto yy328; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy328; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy328; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy326: + yy325: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy328; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy328; + goto yy327; goto yy107; } } else { @@ -7463,49 +7242,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy328; + goto yy327; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy328; + goto yy327; goto yy107; } } - yy327: + yy326: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy329; + goto yy328; if (yych <= '/') goto yy107; - goto yy330; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy330; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy330; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy328: + yy327: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy330; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy330; + goto yy329; goto yy107; } } else { @@ -7514,49 +7291,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy330; + goto yy329; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy330; + goto yy329; goto yy107; } } - yy329: + yy328: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy331; + goto yy330; if (yych <= '/') goto yy107; - goto yy332; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy332; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy332; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy330: + yy329: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy332; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy332; + goto yy331; goto yy107; } } else { @@ -7565,49 +7340,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy332; + goto yy331; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy332; + goto yy331; goto yy107; } } - yy331: + yy330: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy333; + goto yy332; if (yych <= '/') goto yy107; - goto yy334; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy334; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy334; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy332: + yy331: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy334; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy334; + goto yy333; goto yy107; } } else { @@ -7616,49 +7389,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy334; + goto yy333; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy334; + goto yy333; goto yy107; } } - yy333: + yy332: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy335; + goto yy334; if (yych <= '/') goto yy107; - goto yy336; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy336; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy336; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy334: + yy333: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy336; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy336; + goto yy335; goto yy107; } } else { @@ -7667,49 +7438,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy336; + goto yy335; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy336; + goto yy335; goto yy107; } } - yy335: + yy334: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy337; + goto yy336; if (yych <= '/') goto yy107; - goto yy338; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy338; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy338; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy336: + yy335: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy338; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy338; + goto yy337; goto yy107; } } else { @@ -7718,49 +7487,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy338; + goto yy337; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy338; + goto yy337; goto yy107; } } - yy337: + yy336: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy339; + goto yy338; if (yych <= '/') goto yy107; - goto yy340; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy340; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy340; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy338: + yy337: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy340; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy340; + goto yy339; goto yy107; } } else { @@ -7769,49 +7536,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy340; + goto yy339; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy340; + goto yy339; goto yy107; } } - yy339: + yy338: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy341; + goto yy340; if (yych <= '/') goto yy107; - goto yy342; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy342; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy342; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy340: + yy339: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy342; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy342; + goto yy341; goto yy107; } } else { @@ -7820,49 +7585,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy342; + goto yy341; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy342; + goto yy341; goto yy107; } } - yy341: + yy340: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy343; + goto yy342; if (yych <= '/') goto yy107; - goto yy344; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy344; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy344; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy342: + yy341: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy344; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy344; + goto yy343; goto yy107; } } else { @@ -7871,49 +7634,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy344; + goto yy343; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy344; + goto yy343; goto yy107; } } - yy343: + yy342: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy345; + goto yy344; if (yych <= '/') goto yy107; - goto yy346; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy346; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy346; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy344: + yy343: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy346; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy346; + goto yy345; goto yy107; } } else { @@ -7922,49 +7683,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy346; + goto yy345; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy346; + goto yy345; goto yy107; } } - yy345: + yy344: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy347; + goto yy346; if (yych <= '/') goto yy107; - goto yy348; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy348; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy348; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy346: + yy345: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy348; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy348; + goto yy347; goto yy107; } } else { @@ -7973,49 +7732,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy348; + goto yy347; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy348; + goto yy347; goto yy107; } } - yy347: + yy346: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy349; + goto yy348; if (yych <= '/') goto yy107; - goto yy350; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy350; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy350; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy348: + yy347: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy350; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy350; + goto yy349; goto yy107; } } else { @@ -8024,49 +7781,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy350; + goto yy349; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy350; + goto yy349; goto yy107; } } - yy349: + yy348: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy351; + goto yy350; if (yych <= '/') goto yy107; - goto yy352; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy352; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy352; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy350: + yy349: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy352; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy352; + goto yy351; goto yy107; } } else { @@ -8075,49 +7830,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy352; + goto yy351; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy352; + goto yy351; goto yy107; } } - yy351: + yy350: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy353; + goto yy352; if (yych <= '/') goto yy107; - goto yy354; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy354; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy354; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy352: + yy351: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy354; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy354; + goto yy353; goto yy107; } } else { @@ -8126,49 +7879,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy354; + goto yy353; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy354; + goto yy353; goto yy107; } } - yy353: + yy352: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy355; + goto yy354; if (yych <= '/') goto yy107; - goto yy356; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy356; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy356; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy354: + yy353: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy356; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy356; + goto yy355; goto yy107; } } else { @@ -8177,49 +7928,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy356; + goto yy355; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy356; + goto yy355; goto yy107; } } - yy355: + yy354: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy357; + goto yy356; if (yych <= '/') goto yy107; - goto yy358; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy358; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy358; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy356: + yy355: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy358; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy358; + goto yy357; goto yy107; } } else { @@ -8228,49 +7977,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy358; + goto yy357; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy358; + goto yy357; goto yy107; } } - yy357: + yy356: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy359; + goto yy358; if (yych <= '/') goto yy107; - goto yy360; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy360; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy360; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy358: + yy357: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy360; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy360; + goto yy359; goto yy107; } } else { @@ -8279,49 +8026,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy360; + goto yy359; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy360; + goto yy359; goto yy107; } } - yy359: + yy358: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy361; + goto yy360; if (yych <= '/') goto yy107; - goto yy362; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy362; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy362; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy360: + yy359: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy362; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy362; + goto yy361; goto yy107; } } else { @@ -8330,49 +8075,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy362; + goto yy361; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy362; + goto yy361; goto yy107; } } - yy361: + yy360: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy363; + goto yy362; if (yych <= '/') goto yy107; - goto yy364; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy364; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy364; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy362: + yy361: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy364; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy364; + goto yy363; goto yy107; } } else { @@ -8381,49 +8124,47 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy364; + goto yy363; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy364; + goto yy363; goto yy107; } } - yy363: + yy362: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy365; + goto yy364; if (yych <= '/') goto yy107; - goto yy366; } else { if (yych <= 'Z') { if (yych <= '@') goto yy107; - goto yy366; } else { if (yych <= '`') goto yy107; - if (yych <= 'z') - goto yy366; - goto yy107; + if (yych >= '{') + goto yy107; } } - yy364: + yy363: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') goto yy107; - if (yych >= '.') - goto yy120; + if (yych <= '-') + goto yy366; + goto yy120; } else { if (yych <= '/') goto yy107; if (yych <= '9') - goto yy366; + goto yy365; goto yy107; } } else { @@ -8432,35 +8173,36 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy121; if (yych <= '@') goto yy107; - goto yy366; + goto yy365; } else { if (yych <= '`') goto yy107; if (yych <= 'z') - goto yy366; + goto yy365; goto yy107; } } - yy365: + yy364: yych = *++p; - if (yych <= '@') { + if (yych <= '9') { + if (yych == '-') + goto yy366; if (yych <= '/') goto yy107; - if (yych <= '9') - goto yy246; - goto yy107; } else { - if (yych <= 'Z') - goto yy246; - if (yych <= '`') - goto yy107; - if (yych <= 'z') - goto yy246; - goto yy107; + if (yych <= 'Z') { + if (yych <= '@') + goto yy107; + } else { + if (yych <= '`') + goto yy107; + if (yych >= '{') + goto yy107; + } } - yy366: - ++p; - if ((yych = *p) <= '=') { + yy365: + yych = *++p; + if (yych <= '=') { if (yych <= '.') { if (yych <= '-') goto yy107; @@ -8487,6 +8229,23 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { goto yy107; } } + yy366: + ++p; + if ((yych = *p) <= '@') { + if (yych <= '/') + goto yy107; + if (yych <= '9') + goto yy246; + goto yy107; + } else { + if (yych <= 'Z') + goto yy246; + if (yych <= '`') + goto yy107; + if (yych <= 'z') + goto yy246; + goto yy107; + } } } @@ -10925,50 +10684,24 @@ bufsize_t _scan_html_block_start(const unsigned char *p) { } yy545: yych = *++p; - if (yych <= 'U') { - if (yych <= 'E') { - if (yych == 'C') - goto yy587; - if (yych <= 'D') - goto yy525; - goto yy590; - } else { - if (yych <= 'O') { - if (yych <= 'N') - goto yy525; - goto yy589; - } else { - if (yych <= 'S') - goto yy525; - if (yych <= 'T') - goto yy586; - goto yy588; - } - } - } else { - if (yych <= 'n') { - if (yych <= 'c') { - if (yych <= 'b') - goto yy525; - goto yy587; - } else { - if (yych == 'e') - goto yy590; - goto yy525; - } - } else { - if (yych <= 's') { - if (yych <= 'o') - goto yy589; - goto yy525; - } else { - if (yych <= 't') - goto yy586; - if (yych <= 'u') - goto yy588; - goto yy525; - } - } + switch (yych) { + case 'C': + case 'c': + goto yy587; + case 'E': + case 'e': + goto yy590; + case 'O': + case 'o': + goto yy589; + case 'T': + case 't': + goto yy586; + case 'U': + case 'u': + goto yy588; + default: + goto yy525; } yy546: yych = *++p; @@ -18923,9 +18656,9 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { { 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, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, @@ -18984,16 +18717,16 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1206: yych = *(marker = ++p); if (yych == ' ') - goto yy1238; + goto yy1242; if (yych == '*') - goto yy1240; + goto yy1244; goto yy1205; yy1207: yych = *(marker = ++p); if (yych == ' ') - goto yy1228; - if (yych == '_') goto yy1230; + if (yych == '_') + goto yy1232; goto yy1205; yy1208: yych = *(marker = ++p); @@ -19075,23 +18808,32 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1222: ++p; yych = *p; - if (yybm[0 + yych] & 16) { - goto yy1222; - } - if (yych <= '\n') { - if (yych <= 0x08) - goto yy1211; - if (yych >= '\n') + if (yych <= '\r') { + if (yych <= '\t') { + if (yych <= 0x08) + goto yy1211; + } else { + if (yych <= '\n') + goto yy1226; + if (yych <= '\f') + goto yy1211; goto yy1226; + } } else { - if (yych == '\r') - goto yy1226; - goto yy1211; + if (yych <= ' ') { + if (yych <= 0x1F) + goto yy1211; + goto yy1222; + } else { + if (yych == '-') + goto yy1228; + goto yy1211; + } } yy1224: ++p; yych = *p; - if (yybm[0 + yych] & 32) { + if (yybm[0 + yych] & 16) { goto yy1224; } if (yych <= 0x08) @@ -19106,10 +18848,20 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1228: ++p; yych = *p; - if (yych == ' ') + if (yybm[0 + yych] & 32) { goto yy1228; - if (yych != '_') + } + if (yych <= '\n') { + if (yych <= 0x08) + goto yy1211; + if (yych <= '\t') + goto yy1224; + goto yy1226; + } else { + if (yych == '\r') + goto yy1226; goto yy1211; + } yy1230: ++p; yych = *p; @@ -19120,89 +18872,148 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1232: ++p; yych = *p; - if (yybm[0 + yych] & 64) { + if (yych == ' ') goto yy1232; - } - if (yych <= '\n') { - if (yych <= 0x08) - goto yy1211; - if (yych >= '\n') - goto yy1236; - } else { - if (yych == '\r') - goto yy1236; + if (yych != '_') goto yy1211; - } yy1234: + ++p; + yych = *p; + if (yych <= '\r') { + if (yych <= '\t') { + if (yych <= 0x08) + goto yy1211; + } else { + if (yych <= '\n') + goto yy1238; + if (yych <= '\f') + goto yy1211; + goto yy1238; + } + } else { + if (yych <= ' ') { + if (yych <= 0x1F) + goto yy1211; + goto yy1234; + } else { + if (yych == '_') + goto yy1240; + goto yy1211; + } + } + yy1236: ++p; yych = *p; if (yych <= '\f') { if (yych <= 0x08) goto yy1211; if (yych <= '\t') - goto yy1234; + goto yy1236; if (yych >= '\v') goto yy1211; } else { if (yych <= '\r') - goto yy1236; + goto yy1238; if (yych == ' ') - goto yy1234; + goto yy1236; goto yy1211; } - yy1236: + yy1238: ++p; { return (bufsize_t)(p - start); } - yy1238: + yy1240: ++p; yych = *p; - if (yych == ' ') + if (yybm[0 + yych] & 64) { + goto yy1240; + } + if (yych <= '\n') { + if (yych <= 0x08) + goto yy1211; + if (yych <= '\t') + goto yy1236; goto yy1238; + } else { + if (yych == '\r') + goto yy1238; + goto yy1211; + } + yy1242: + ++p; + yych = *p; + if (yych == ' ') + goto yy1242; if (yych != '*') goto yy1211; - yy1240: + yy1244: ++p; yych = *p; if (yych == ' ') - goto yy1240; + goto yy1244; if (yych != '*') goto yy1211; - yy1242: + yy1246: ++p; yych = *p; - if (yybm[0 + yych] & 128) { - goto yy1242; - } - if (yych <= '\n') { - if (yych <= 0x08) - goto yy1211; - if (yych >= '\n') - goto yy1246; + if (yych <= '\r') { + if (yych <= '\t') { + if (yych <= 0x08) + goto yy1211; + } else { + if (yych <= '\n') + goto yy1250; + if (yych <= '\f') + goto yy1211; + goto yy1250; + } } else { - if (yych == '\r') + if (yych <= ' ') { + if (yych <= 0x1F) + goto yy1211; goto yy1246; - goto yy1211; + } else { + if (yych == '*') + goto yy1252; + goto yy1211; + } } - yy1244: + yy1248: ++p; yych = *p; if (yych <= '\f') { if (yych <= 0x08) goto yy1211; if (yych <= '\t') - goto yy1244; + goto yy1248; if (yych >= '\v') goto yy1211; } else { if (yych <= '\r') - goto yy1246; + goto yy1250; if (yych == ' ') - goto yy1244; + goto yy1248; goto yy1211; } - yy1246: + yy1250: ++p; { return (bufsize_t)(p - start); } + yy1252: + ++p; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy1252; + } + if (yych <= '\n') { + if (yych <= 0x08) + goto yy1211; + if (yych <= '\t') + goto yy1248; + goto yy1250; + } else { + if (yych == '\r') + goto yy1250; + goto yy1211; + } } } @@ -19238,374 +19049,374 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) { if (yych <= 0xC1) { if (yych <= '`') { if (yych == '\n') - goto yy1250; + goto yy1256; if (yych <= '_') - goto yy1253; - goto yy1251; + goto yy1259; + goto yy1257; } else { if (yych == '~') - goto yy1252; + goto yy1258; if (yych <= 0x7F) - goto yy1253; + goto yy1259; } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy1254; + goto yy1260; if (yych <= 0xE0) - goto yy1256; + goto yy1262; if (yych <= 0xEC) - goto yy1257; - goto yy1261; + goto yy1263; + goto yy1267; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy1257; - goto yy1258; + goto yy1263; + goto yy1264; } else { if (yych <= 0xF3) - goto yy1259; + goto yy1265; if (yych <= 0xF4) - goto yy1260; + goto yy1266; } } } - yy1250 : { return 0; } - yy1251: + yy1256 : { return 0; } + yy1257: yych = *(marker = ++p); if (yych == '`') - goto yy1276; - goto yy1250; - yy1252: + goto yy1282; + goto yy1256; + yy1258: yych = *(marker = ++p); if (yych == '~') - goto yy1262; - goto yy1250; - yy1253: + goto yy1268; + goto yy1256; + yy1259: yych = *++p; - goto yy1250; - yy1254: + goto yy1256; + yy1260: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1253; - yy1255: + goto yy1259; + yy1261: p = marker; - goto yy1250; - yy1256: + goto yy1256; + yy1262: yych = *++p; if (yych <= 0x9F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1254; - goto yy1255; - yy1257: + goto yy1260; + goto yy1261; + yy1263: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1254; - goto yy1255; - yy1258: + goto yy1260; + goto yy1261; + yy1264: yych = *++p; if (yych <= 0x8F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1257; - goto yy1255; - yy1259: + goto yy1263; + goto yy1261; + yy1265: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1257; - goto yy1255; - yy1260: + goto yy1263; + goto yy1261; + yy1266: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x8F) - goto yy1257; - goto yy1255; - yy1261: + goto yy1263; + goto yy1261; + yy1267: yych = *++p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x9F) - goto yy1254; - goto yy1255; - yy1262: + goto yy1260; + goto yy1261; + yy1268: yych = *++p; if (yybm[0 + yych] & 16) { - goto yy1263; + goto yy1269; } - goto yy1255; - yy1263: - marker = p + 1; + goto yy1261; + yy1269: ++p; yych = *p; + marker = p; if (yybm[0 + yych] & 32) { - goto yy1265; + goto yy1271; } if (yych <= 0xE0) { if (yych <= '~') { if (yych <= 0x00) - goto yy1255; + goto yy1261; if (yych <= '\r') - goto yy1274; - goto yy1263; + goto yy1280; + goto yy1269; } else { if (yych <= 0xC1) - goto yy1255; + goto yy1261; if (yych <= 0xDF) - goto yy1267; - goto yy1268; + goto yy1273; + goto yy1274; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1273; - goto yy1269; + goto yy1279; + goto yy1275; } else { if (yych <= 0xF0) - goto yy1270; + goto yy1276; if (yych <= 0xF3) - goto yy1271; + goto yy1277; if (yych <= 0xF4) - goto yy1272; - goto yy1255; + goto yy1278; + goto yy1261; } } - yy1265: + yy1271: ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy1265; + goto yy1271; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy1255; + goto yy1261; if (yych <= '\r') - goto yy1274; - goto yy1255; + goto yy1280; + goto yy1261; } else { if (yych <= 0xDF) - goto yy1267; + goto yy1273; if (yych <= 0xE0) - goto yy1268; - goto yy1269; + goto yy1274; + goto yy1275; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy1273; + goto yy1279; if (yych <= 0xEF) - goto yy1269; - goto yy1270; + goto yy1275; + goto yy1276; } else { if (yych <= 0xF3) - goto yy1271; + goto yy1277; if (yych <= 0xF4) - goto yy1272; - goto yy1255; + goto yy1278; + goto yy1261; } } - yy1267: + yy1273: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1265; - goto yy1255; - yy1268: + goto yy1271; + goto yy1261; + yy1274: ++p; yych = *p; if (yych <= 0x9F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1267; - goto yy1255; - yy1269: + goto yy1273; + goto yy1261; + yy1275: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1267; - goto yy1255; - yy1270: + goto yy1273; + goto yy1261; + yy1276: ++p; yych = *p; if (yych <= 0x8F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1269; - goto yy1255; - yy1271: + goto yy1275; + goto yy1261; + yy1277: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1269; - goto yy1255; - yy1272: + goto yy1275; + goto yy1261; + yy1278: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x8F) - goto yy1269; - goto yy1255; - yy1273: + goto yy1275; + goto yy1261; + yy1279: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x9F) - goto yy1267; - goto yy1255; - yy1274: + goto yy1273; + goto yy1261; + yy1280: ++p; p = marker; { return (bufsize_t)(p - start); } - yy1276: + yy1282: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy1277; + goto yy1283; } - goto yy1255; - yy1277: - marker = p + 1; + goto yy1261; + yy1283: ++p; yych = *p; + marker = p; if (yybm[0 + yych] & 128) { - goto yy1279; + goto yy1285; } if (yych <= 0xE0) { if (yych <= '`') { if (yych <= 0x00) - goto yy1255; + goto yy1261; if (yych <= '\r') - goto yy1288; - goto yy1277; + goto yy1294; + goto yy1283; } else { if (yych <= 0xC1) - goto yy1255; + goto yy1261; if (yych <= 0xDF) - goto yy1281; - goto yy1282; + goto yy1287; + goto yy1288; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1287; - goto yy1283; + goto yy1293; + goto yy1289; } else { if (yych <= 0xF0) - goto yy1284; + goto yy1290; if (yych <= 0xF3) - goto yy1285; + goto yy1291; if (yych <= 0xF4) - goto yy1286; - goto yy1255; + goto yy1292; + goto yy1261; } } - yy1279: + yy1285: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1279; + goto yy1285; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy1255; + goto yy1261; if (yych <= '\r') - goto yy1288; - goto yy1255; + goto yy1294; + goto yy1261; } else { if (yych <= 0xDF) - goto yy1281; + goto yy1287; if (yych <= 0xE0) - goto yy1282; - goto yy1283; + goto yy1288; + goto yy1289; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy1287; + goto yy1293; if (yych <= 0xEF) - goto yy1283; - goto yy1284; + goto yy1289; + goto yy1290; } else { if (yych <= 0xF3) - goto yy1285; + goto yy1291; if (yych <= 0xF4) - goto yy1286; - goto yy1255; + goto yy1292; + goto yy1261; } } - yy1281: + yy1287: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1279; - goto yy1255; - yy1282: + goto yy1285; + goto yy1261; + yy1288: ++p; yych = *p; if (yych <= 0x9F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1281; - goto yy1255; - yy1283: + goto yy1287; + goto yy1261; + yy1289: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1281; - goto yy1255; - yy1284: + goto yy1287; + goto yy1261; + yy1290: ++p; yych = *p; if (yych <= 0x8F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1283; - goto yy1255; - yy1285: + goto yy1289; + goto yy1261; + yy1291: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0xBF) - goto yy1283; - goto yy1255; - yy1286: + goto yy1289; + goto yy1261; + yy1292: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x8F) - goto yy1283; - goto yy1255; - yy1287: + goto yy1289; + goto yy1261; + yy1293: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1261; if (yych <= 0x9F) - goto yy1281; - goto yy1255; - yy1288: + goto yy1287; + goto yy1261; + yy1294: ++p; p = marker; { return (bufsize_t)(p - start); } @@ -19637,190 +19448,190 @@ bufsize_t _scan_close_code_fence(const unsigned char *p) { if (yych <= 0xC1) { if (yych <= '`') { if (yych == '\n') - goto yy1292; + goto yy1298; if (yych <= '_') - goto yy1295; - goto yy1293; + goto yy1301; + goto yy1299; } else { if (yych == '~') - goto yy1294; + goto yy1300; if (yych <= 0x7F) - goto yy1295; + goto yy1301; } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy1296; + goto yy1302; if (yych <= 0xE0) - goto yy1298; + goto yy1304; if (yych <= 0xEC) - goto yy1299; - goto yy1303; + goto yy1305; + goto yy1309; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy1299; - goto yy1300; + goto yy1305; + goto yy1306; } else { if (yych <= 0xF3) - goto yy1301; + goto yy1307; if (yych <= 0xF4) - goto yy1302; + goto yy1308; } } } - yy1292 : { return 0; } - yy1293: + yy1298 : { return 0; } + yy1299: yych = *(marker = ++p); if (yych == '`') - goto yy1311; - goto yy1292; - yy1294: + goto yy1317; + goto yy1298; + yy1300: yych = *(marker = ++p); if (yych == '~') - goto yy1304; - goto yy1292; - yy1295: + goto yy1310; + goto yy1298; + yy1301: yych = *++p; - goto yy1292; - yy1296: + goto yy1298; + yy1302: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1295; - yy1297: + goto yy1301; + yy1303: p = marker; - goto yy1292; - yy1298: + goto yy1298; + yy1304: yych = *++p; if (yych <= 0x9F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1296; - goto yy1297; - yy1299: + goto yy1302; + goto yy1303; + yy1305: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1296; - goto yy1297; - yy1300: + goto yy1302; + goto yy1303; + yy1306: yych = *++p; if (yych <= 0x8F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1299; - goto yy1297; - yy1301: + goto yy1305; + goto yy1303; + yy1307: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0xBF) - goto yy1299; - goto yy1297; - yy1302: + goto yy1305; + goto yy1303; + yy1308: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0x8F) - goto yy1299; - goto yy1297; - yy1303: + goto yy1305; + goto yy1303; + yy1309: yych = *++p; if (yych <= 0x7F) - goto yy1297; + goto yy1303; if (yych <= 0x9F) - goto yy1296; - goto yy1297; - yy1304: + goto yy1302; + goto yy1303; + yy1310: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy1305; + goto yy1311; } - goto yy1297; - yy1305: - marker = p + 1; + goto yy1303; + yy1311: ++p; yych = *p; + marker = p; if (yybm[0 + yych] & 64) { - goto yy1307; + goto yy1313; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1297; + goto yy1303; if (yych <= '\n') - goto yy1309; - goto yy1297; + goto yy1315; + goto yy1303; } else { if (yych <= '\r') - goto yy1309; + goto yy1315; if (yych == '~') - goto yy1305; - goto yy1297; + goto yy1311; + goto yy1303; } - yy1307: + yy1313: ++p; yych = *p; if (yybm[0 + yych] & 64) { - goto yy1307; + goto yy1313; } if (yych <= 0x08) - goto yy1297; + goto yy1303; if (yych <= '\n') - goto yy1309; + goto yy1315; if (yych != '\r') - goto yy1297; - yy1309: + goto yy1303; + yy1315: ++p; p = marker; { return (bufsize_t)(p - start); } - yy1311: + yy1317: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy1312; + goto yy1318; } - goto yy1297; - yy1312: - marker = p + 1; + goto yy1303; + yy1318: ++p; yych = *p; + marker = p; if (yybm[0 + yych] & 128) { - goto yy1312; + goto yy1318; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1297; + goto yy1303; if (yych <= '\t') - goto yy1314; + goto yy1320; if (yych <= '\n') - goto yy1316; - goto yy1297; + goto yy1322; + goto yy1303; } else { if (yych <= '\r') - goto yy1316; + goto yy1322; if (yych != ' ') - goto yy1297; + goto yy1303; } - yy1314: + yy1320: ++p; yych = *p; if (yych <= '\f') { if (yych <= 0x08) - goto yy1297; + goto yy1303; if (yych <= '\t') - goto yy1314; + goto yy1320; if (yych >= '\v') - goto yy1297; + goto yy1303; } else { if (yych <= '\r') - goto yy1316; + goto yy1322; if (yych == ' ') - goto yy1314; - goto yy1297; + goto yy1320; + goto yy1303; } - yy1316: + yy1322: ++p; p = marker; { return (bufsize_t)(p - start); } @@ -19839,997 +19650,997 @@ bufsize_t _scan_entity(const unsigned char *p) { if (yych <= 0xDF) { if (yych <= '%') { if (yych != '\n') - goto yy1322; + goto yy1328; } else { if (yych <= '&') - goto yy1321; + goto yy1327; if (yych <= 0x7F) - goto yy1322; + goto yy1328; if (yych >= 0xC2) - goto yy1323; + goto yy1329; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy1325; + goto yy1331; if (yych == 0xED) - goto yy1330; - goto yy1326; + goto yy1336; + goto yy1332; } else { if (yych <= 0xF0) - goto yy1327; + goto yy1333; if (yych <= 0xF3) - goto yy1328; + goto yy1334; if (yych <= 0xF4) - goto yy1329; + goto yy1335; } } - yy1320 : { return 0; } - yy1321: + yy1326 : { return 0; } + yy1327: yych = *(marker = ++p); if (yych <= '@') { if (yych == '#') - goto yy1331; - goto yy1320; + goto yy1337; + goto yy1326; } else { if (yych <= 'Z') - goto yy1332; + goto yy1338; if (yych <= '`') - goto yy1320; + goto yy1326; if (yych <= 'z') - goto yy1332; - goto yy1320; + goto yy1338; + goto yy1326; } - yy1322: + yy1328: yych = *++p; - goto yy1320; - yy1323: + goto yy1326; + yy1329: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1322; - yy1324: + goto yy1328; + yy1330: p = marker; - goto yy1320; - yy1325: + goto yy1326; + yy1331: yych = *++p; if (yych <= 0x9F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1323; - goto yy1324; - yy1326: + goto yy1329; + goto yy1330; + yy1332: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1323; - goto yy1324; - yy1327: + goto yy1329; + goto yy1330; + yy1333: yych = *++p; if (yych <= 0x8F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1326; - goto yy1324; - yy1328: + goto yy1332; + goto yy1330; + yy1334: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0xBF) - goto yy1326; - goto yy1324; - yy1329: + goto yy1332; + goto yy1330; + yy1335: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0x8F) - goto yy1326; - goto yy1324; - yy1330: + goto yy1332; + goto yy1330; + yy1336: yych = *++p; if (yych <= 0x7F) - goto yy1324; + goto yy1330; if (yych <= 0x9F) - goto yy1323; - goto yy1324; - yy1331: + goto yy1329; + goto yy1330; + yy1337: yych = *++p; if (yych <= 'W') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1367; - goto yy1324; + goto yy1373; + goto yy1330; } else { if (yych <= 'X') - goto yy1366; + goto yy1372; if (yych == 'x') - goto yy1366; - goto yy1324; + goto yy1372; + goto yy1330; } - yy1332: + yy1338: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych >= ':') - goto yy1324; + goto yy1330; } else { if (yych <= 'Z') - goto yy1333; + goto yy1339; if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } - yy1333: + yy1339: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1336; + goto yy1342; if (yych <= ':') - goto yy1324; + goto yy1330; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; - goto yy1336; + goto yy1330; + goto yy1342; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych <= 'z') - goto yy1336; - goto yy1324; + goto yy1342; + goto yy1330; } } - yy1334: + yy1340: ++p; { return (bufsize_t)(p - start); } - yy1336: + yy1342: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1337; + goto yy1343; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1337: + yy1343: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1338; + goto yy1344; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1338: + yy1344: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1339; + goto yy1345; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1339: + yy1345: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1340; + goto yy1346; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1340: + yy1346: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1341; + goto yy1347; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1341: + yy1347: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1342; + goto yy1348; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1342: + yy1348: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1343; + goto yy1349; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1343: + yy1349: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1344; + goto yy1350; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1344: + yy1350: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1345; + goto yy1351; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1345: + yy1351: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1346; + goto yy1352; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1346: + yy1352: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1347; + goto yy1353; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1347: + yy1353: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1348; + goto yy1354; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1348: + yy1354: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1349; + goto yy1355; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1349: + yy1355: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1350; + goto yy1356; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1350: + yy1356: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1351; + goto yy1357; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1351: + yy1357: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1352; + goto yy1358; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1352: + yy1358: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1353; + goto yy1359; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1353: + yy1359: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1354; + goto yy1360; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1354: + yy1360: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1355; + goto yy1361; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1355: + yy1361: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1356; + goto yy1362; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1356: + yy1362: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1357; + goto yy1363; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1357: + yy1363: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1358; + goto yy1364; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1358: + yy1364: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1359; + goto yy1365; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1359: + yy1365: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1360; + goto yy1366; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1360: + yy1366: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1361; + goto yy1367; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1361: + yy1367: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1362; + goto yy1368; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1362: + yy1368: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1363; + goto yy1369; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1363: + yy1369: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1364; + goto yy1370; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1364: + yy1370: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1365; + goto yy1371; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= '{') - goto yy1324; + goto yy1330; } } - yy1365: + yy1371: yych = *++p; if (yych == ';') - goto yy1334; - goto yy1324; - yy1366: + goto yy1340; + goto yy1330; + yy1372: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1374; - goto yy1324; + goto yy1380; + goto yy1330; } else { if (yych <= 'F') - goto yy1374; + goto yy1380; if (yych <= '`') - goto yy1324; + goto yy1330; if (yych <= 'f') - goto yy1374; - goto yy1324; + goto yy1380; + goto yy1330; } - yy1367: + yy1373: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1368; + goto yy1374; if (yych == ';') - goto yy1334; - goto yy1324; - yy1368: + goto yy1340; + goto yy1330; + yy1374: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1369; + goto yy1375; if (yych == ';') - goto yy1334; - goto yy1324; - yy1369: + goto yy1340; + goto yy1330; + yy1375: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1370; + goto yy1376; if (yych == ';') - goto yy1334; - goto yy1324; - yy1370: + goto yy1340; + goto yy1330; + yy1376: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1371; + goto yy1377; if (yych == ';') - goto yy1334; - goto yy1324; - yy1371: + goto yy1340; + goto yy1330; + yy1377: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1372; + goto yy1378; if (yych == ';') - goto yy1334; - goto yy1324; - yy1372: + goto yy1340; + goto yy1330; + yy1378: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1373; + goto yy1379; if (yych == ';') - goto yy1334; - goto yy1324; - yy1373: + goto yy1340; + goto yy1330; + yy1379: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1365; + goto yy1371; if (yych == ';') - goto yy1334; - goto yy1324; - yy1374: + goto yy1340; + goto yy1330; + yy1380: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1375; + goto yy1381; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1375: + yy1381: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1376; + goto yy1382; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1376: + yy1382: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1377; + goto yy1383; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1377: + yy1383: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1378; + goto yy1384; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1378: + yy1384: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1379; + goto yy1385; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1379: + yy1385: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1380; + goto yy1386; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1330; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych >= 'g') - goto yy1324; + goto yy1330; } } - yy1380: + yy1386: ++p; if ((yych = *p) <= ';') { if (yych <= '/') - goto yy1324; + goto yy1330; if (yych <= '9') - goto yy1365; + goto yy1371; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1330; + goto yy1340; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; - goto yy1365; + goto yy1330; + goto yy1371; } else { if (yych <= '`') - goto yy1324; + goto yy1330; if (yych <= 'f') - goto yy1365; - goto yy1324; + goto yy1371; + goto yy1330; } } } @@ -20849,415 +20660,415 @@ bufsize_t _scan_dangerous_url(const unsigned char *p) { if (yych <= 'I') { if (yych <= 'C') { if (yych != '\n') - goto yy1388; + goto yy1394; } else { if (yych <= 'D') - goto yy1384; + goto yy1390; if (yych == 'F') - goto yy1387; - goto yy1388; + goto yy1393; + goto yy1394; } } else { if (yych <= 'V') { if (yych <= 'J') - goto yy1385; + goto yy1391; if (yych <= 'U') - goto yy1388; - goto yy1386; + goto yy1394; + goto yy1392; } else { if (yych == 'd') - goto yy1384; + goto yy1390; if (yych <= 'e') - goto yy1388; - goto yy1387; + goto yy1394; + goto yy1393; } } } else { if (yych <= 0xDF) { if (yych <= 'u') { if (yych == 'j') - goto yy1385; - goto yy1388; + goto yy1391; + goto yy1394; } else { if (yych <= 'v') - goto yy1386; + goto yy1392; if (yych <= 0x7F) - goto yy1388; + goto yy1394; if (yych >= 0xC2) - goto yy1389; + goto yy1395; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy1391; + goto yy1397; if (yych == 0xED) - goto yy1396; - goto yy1392; + goto yy1402; + goto yy1398; } else { if (yych <= 0xF0) - goto yy1393; + goto yy1399; if (yych <= 0xF3) - goto yy1394; + goto yy1400; if (yych <= 0xF4) - goto yy1395; + goto yy1401; } } } - yy1383 : { return 0; } - yy1384: + yy1389 : { return 0; } + yy1390: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy1418; + goto yy1424; if (yych == 'a') - goto yy1418; - goto yy1383; - yy1385: + goto yy1424; + goto yy1389; + yy1391: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy1409; + goto yy1415; if (yych == 'a') - goto yy1409; - goto yy1383; - yy1386: + goto yy1415; + goto yy1389; + yy1392: yyaccept = 0; yych = *(marker = ++p); if (yych == 'B') - goto yy1402; + goto yy1408; if (yych == 'b') - goto yy1402; - goto yy1383; - yy1387: + goto yy1408; + goto yy1389; + yy1393: yyaccept = 0; yych = *(marker = ++p); if (yych == 'I') - goto yy1397; + goto yy1403; if (yych == 'i') - goto yy1397; - goto yy1383; - yy1388: + goto yy1403; + goto yy1389; + yy1394: yych = *++p; - goto yy1383; - yy1389: + goto yy1389; + yy1395: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1388; - yy1390: + goto yy1394; + yy1396: p = marker; if (yyaccept == 0) { - goto yy1383; + goto yy1389; } else { - goto yy1401; + goto yy1407; } - yy1391: + yy1397: yych = *++p; if (yych <= 0x9F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1389; - goto yy1390; - yy1392: + goto yy1395; + goto yy1396; + yy1398: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1389; - goto yy1390; - yy1393: + goto yy1395; + goto yy1396; + yy1399: yych = *++p; if (yych <= 0x8F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1392; - goto yy1390; - yy1394: + goto yy1398; + goto yy1396; + yy1400: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0xBF) - goto yy1392; - goto yy1390; - yy1395: + goto yy1398; + goto yy1396; + yy1401: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0x8F) - goto yy1392; - goto yy1390; - yy1396: + goto yy1398; + goto yy1396; + yy1402: yych = *++p; if (yych <= 0x7F) - goto yy1390; + goto yy1396; if (yych <= 0x9F) - goto yy1389; - goto yy1390; - yy1397: + goto yy1395; + goto yy1396; + yy1403: yych = *++p; if (yych == 'L') - goto yy1398; + goto yy1404; if (yych != 'l') - goto yy1390; - yy1398: + goto yy1396; + yy1404: yych = *++p; if (yych == 'E') - goto yy1399; + goto yy1405; if (yych != 'e') - goto yy1390; - yy1399: + goto yy1396; + yy1405: yych = *++p; if (yych != ':') - goto yy1390; - yy1400: + goto yy1396; + yy1406: ++p; - yy1401 : { return (bufsize_t)(p - start); } - yy1402: + yy1407 : { return (bufsize_t)(p - start); } + yy1408: yych = *++p; if (yych == 'S') - goto yy1403; + goto yy1409; if (yych != 's') - goto yy1390; - yy1403: + goto yy1396; + yy1409: yych = *++p; if (yych == 'C') - goto yy1404; + goto yy1410; if (yych != 'c') - goto yy1390; - yy1404: + goto yy1396; + yy1410: yych = *++p; if (yych == 'R') - goto yy1405; + goto yy1411; if (yych != 'r') - goto yy1390; - yy1405: + goto yy1396; + yy1411: yych = *++p; if (yych == 'I') - goto yy1406; + goto yy1412; if (yych != 'i') - goto yy1390; - yy1406: + goto yy1396; + yy1412: yych = *++p; if (yych == 'P') - goto yy1407; + goto yy1413; if (yych != 'p') - goto yy1390; - yy1407: + goto yy1396; + yy1413: yych = *++p; if (yych == 'T') - goto yy1408; + goto yy1414; if (yych != 't') - goto yy1390; - yy1408: + goto yy1396; + yy1414: yych = *++p; if (yych == ':') - goto yy1400; - goto yy1390; - yy1409: + goto yy1406; + goto yy1396; + yy1415: yych = *++p; if (yych == 'V') - goto yy1410; + goto yy1416; if (yych != 'v') - goto yy1390; - yy1410: + goto yy1396; + yy1416: yych = *++p; if (yych == 'A') - goto yy1411; + goto yy1417; if (yych != 'a') - goto yy1390; - yy1411: + goto yy1396; + yy1417: yych = *++p; if (yych == 'S') - goto yy1412; + goto yy1418; if (yych != 's') - goto yy1390; - yy1412: + goto yy1396; + yy1418: yych = *++p; if (yych == 'C') - goto yy1413; + goto yy1419; if (yych != 'c') - goto yy1390; - yy1413: + goto yy1396; + yy1419: yych = *++p; if (yych == 'R') - goto yy1414; + goto yy1420; if (yych != 'r') - goto yy1390; - yy1414: + goto yy1396; + yy1420: yych = *++p; if (yych == 'I') - goto yy1415; + goto yy1421; if (yych != 'i') - goto yy1390; - yy1415: + goto yy1396; + yy1421: yych = *++p; if (yych == 'P') - goto yy1416; + goto yy1422; if (yych != 'p') - goto yy1390; - yy1416: + goto yy1396; + yy1422: yych = *++p; if (yych == 'T') - goto yy1417; + goto yy1423; if (yych != 't') - goto yy1390; - yy1417: + goto yy1396; + yy1423: yych = *++p; if (yych == ':') - goto yy1400; - goto yy1390; - yy1418: + goto yy1406; + goto yy1396; + yy1424: yych = *++p; if (yych == 'T') - goto yy1419; + goto yy1425; if (yych != 't') - goto yy1390; - yy1419: + goto yy1396; + yy1425: yych = *++p; if (yych == 'A') - goto yy1420; + goto yy1426; if (yych != 'a') - goto yy1390; - yy1420: + goto yy1396; + yy1426: yych = *++p; if (yych != ':') - goto yy1390; + goto yy1396; yyaccept = 1; yych = *(marker = ++p); if (yych == 'I') - goto yy1422; + goto yy1428; if (yych != 'i') - goto yy1401; - yy1422: + goto yy1407; + yy1428: yych = *++p; if (yych == 'M') - goto yy1423; + goto yy1429; if (yych != 'm') - goto yy1390; - yy1423: + goto yy1396; + yy1429: yych = *++p; if (yych == 'A') - goto yy1424; + goto yy1430; if (yych != 'a') - goto yy1390; - yy1424: + goto yy1396; + yy1430: yych = *++p; if (yych == 'G') - goto yy1425; + goto yy1431; if (yych != 'g') - goto yy1390; - yy1425: + goto yy1396; + yy1431: yych = *++p; if (yych == 'E') - goto yy1426; + goto yy1432; if (yych != 'e') - goto yy1390; - yy1426: + goto yy1396; + yy1432: yych = *++p; if (yych != '/') - goto yy1390; + goto yy1396; yych = *++p; if (yych <= 'W') { if (yych <= 'J') { if (yych == 'G') - goto yy1429; + goto yy1435; if (yych <= 'I') - goto yy1390; - goto yy1430; + goto yy1396; + goto yy1436; } else { if (yych == 'P') - goto yy1428; + goto yy1434; if (yych <= 'V') - goto yy1390; - goto yy1431; + goto yy1396; + goto yy1437; } } else { if (yych <= 'j') { if (yych == 'g') - goto yy1429; + goto yy1435; if (yych <= 'i') - goto yy1390; - goto yy1430; + goto yy1396; + goto yy1436; } else { if (yych <= 'p') { if (yych <= 'o') - goto yy1390; + goto yy1396; } else { if (yych == 'w') - goto yy1431; - goto yy1390; + goto yy1437; + goto yy1396; } } } - yy1428: + yy1434: yych = *++p; if (yych == 'N') - goto yy1439; + goto yy1445; if (yych == 'n') - goto yy1439; - goto yy1390; - yy1429: + goto yy1445; + goto yy1396; + yy1435: yych = *++p; if (yych == 'I') - goto yy1438; + goto yy1444; if (yych == 'i') - goto yy1438; - goto yy1390; - yy1430: + goto yy1444; + goto yy1396; + yy1436: yych = *++p; if (yych == 'P') - goto yy1436; + goto yy1442; if (yych == 'p') - goto yy1436; - goto yy1390; - yy1431: + goto yy1442; + goto yy1396; + yy1437: yych = *++p; if (yych == 'E') - goto yy1432; + goto yy1438; if (yych != 'e') - goto yy1390; - yy1432: + goto yy1396; + yy1438: yych = *++p; if (yych == 'B') - goto yy1433; + goto yy1439; if (yych != 'b') - goto yy1390; - yy1433: + goto yy1396; + yy1439: yych = *++p; if (yych == 'P') - goto yy1434; + goto yy1440; if (yych != 'p') - goto yy1390; - yy1434: + goto yy1396; + yy1440: ++p; { return 0; } - yy1436: + yy1442: yych = *++p; if (yych == 'E') - goto yy1437; + goto yy1443; if (yych != 'e') - goto yy1390; - yy1437: + goto yy1396; + yy1443: yych = *++p; if (yych == 'G') - goto yy1434; + goto yy1440; if (yych == 'g') - goto yy1434; - goto yy1390; - yy1438: + goto yy1440; + goto yy1396; + yy1444: yych = *++p; if (yych == 'F') - goto yy1434; + goto yy1440; if (yych == 'f') - goto yy1434; - goto yy1390; - yy1439: + goto yy1440; + goto yy1396; + yy1445: ++p; if ((yych = *p) == 'G') - goto yy1434; + goto yy1440; if (yych == 'g') - goto yy1434; - goto yy1390; + goto yy1440; + goto yy1396; } } diff --git a/xml.c b/xml.c index a06cdd3..12bd629 100644 --- a/xml.c +++ b/xml.c @@ -9,6 +9,8 @@ #include "buffer.h" #include "houdini.h" +#define BUFFER_SIZE 100 + // Functions to convert cmark_nodes to XML strings. static void escape_xml(cmark_strbuf *dest, const unsigned char *source, @@ -21,7 +23,7 @@ struct render_state { int indent; }; -static inline void indent(struct render_state *state) { +static CMARK_INLINE void indent(struct render_state *state) { int i; for (i = 0; i < state->indent; i++) { cmark_strbuf_putc(state->xml, ' '); @@ -34,7 +36,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, bool literal = false; cmark_delim_type delim; bool entering = (ev_type == CMARK_EVENT_ENTER); - char buffer[100]; + char buffer[BUFFER_SIZE]; if (entering) { indent(state); @@ -42,8 +44,9 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, cmark_strbuf_puts(xml, cmark_node_get_type_string(node)); if (options & CMARK_OPT_SOURCEPOS && node->start_line != 0) { - sprintf(buffer, " sourcepos=\"%d:%d-%d:%d\"", node->start_line, - node->start_column, node->end_line, node->end_column); + snprintf(buffer, BUFFER_SIZE, " sourcepos=\"%d:%d-%d:%d\"", + node->start_line, node->start_column, node->end_line, + node->end_column); cmark_strbuf_puts(xml, buffer); } @@ -67,7 +70,8 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, switch (cmark_node_get_list_type(node)) { case CMARK_ORDERED_LIST: cmark_strbuf_puts(xml, " type=\"ordered\""); - sprintf(buffer, " start=\"%d\"", cmark_node_get_list_start(node)); + snprintf(buffer, BUFFER_SIZE, " start=\"%d\"", + cmark_node_get_list_start(node)); cmark_strbuf_puts(xml, buffer); delim = cmark_node_get_list_delim(node); if (delim == CMARK_PAREN_DELIM) { @@ -82,12 +86,12 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, default: break; } - sprintf(buffer, " tight=\"%s\"", - (cmark_node_get_list_tight(node) ? "true" : "false")); + snprintf(buffer, BUFFER_SIZE, " tight=\"%s\"", + (cmark_node_get_list_tight(node) ? "true" : "false")); cmark_strbuf_puts(xml, buffer); break; case CMARK_NODE_HEADING: - sprintf(buffer, " level=\"%d\"", node->as.heading.level); + snprintf(buffer, BUFFER_SIZE, " level=\"%d\"", node->as.heading.level); cmark_strbuf_puts(xml, buffer); break; case CMARK_NODE_CODE_BLOCK: From baf45d40250496d71f6431a5361c52b6d1f63c5c Mon Sep 17 00:00:00 2001 From: James Adam Date: Sat, 16 Jul 2016 16:42:30 -0700 Subject: [PATCH 3/6] updated to cmark 0.26.1 --- blocks.c | 526 ++++++------ buffer.c | 77 +- buffer.h | 29 +- chunk.h | 45 +- cmark.c | 16 + cmark.h | 52 +- cmark_ctype.c | 2 + cmark_ctype.h | 2 + cmark_version.h | 4 +- commonmark.c | 71 +- html.c | 4 +- inlines.c | 383 ++++----- inlines.h | 10 +- iterator.c | 13 +- iterator.h | 2 + latex.c | 18 +- man.c | 14 +- node.c | 64 +- node.h | 26 +- parser.h | 6 +- references.c | 48 +- references.h | 4 +- render.c | 23 +- render.h | 4 +- scanners.c | 2093 ++++++++++++++++++++++++----------------------- scanners.re | 8 +- xml.c | 2 +- 27 files changed, 1813 insertions(+), 1733 deletions(-) diff --git a/blocks.c b/blocks.c index f49ad4e..8e8c4c2 100644 --- a/blocks.c +++ b/blocks.c @@ -30,6 +30,21 @@ #define peek_at(i, n) (i)->data[n] +static bool S_last_line_blank(const cmark_node *node) { + return (node->flags & CMARK_NODE__LAST_LINE_BLANK) != 0; +} + +static CMARK_INLINE cmark_node_type S_type(const cmark_node *node) { + return (cmark_node_type)node->type; +} + +static void S_set_last_line_blank(cmark_node *node, bool is_blank) { + if (is_blank) + node->flags |= CMARK_NODE__LAST_LINE_BLANK; + else + node->flags &= ~CMARK_NODE__LAST_LINE_BLANK; +} + static CMARK_INLINE bool S_is_line_end_char(char c) { return (c == '\n' || c == '\r'); } @@ -44,38 +59,37 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, static void S_process_line(cmark_parser *parser, const unsigned char *buffer, bufsize_t bytes); -static cmark_node *make_block(cmark_node_type tag, int start_line, - int start_column) { +static cmark_node *make_block(cmark_mem *mem, cmark_node_type tag, + int start_line, int start_column) { cmark_node *e; - e = (cmark_node *)calloc(1, sizeof(*e)); - if (e != NULL) { - e->type = tag; - e->open = true; - e->start_line = start_line; - e->start_column = start_column; - e->end_line = start_line; - cmark_strbuf_init(&e->string_content, 32); - } + e = (cmark_node *)mem->calloc(1, sizeof(*e)); + cmark_strbuf_init(mem, &e->content, 32); + e->type = (uint16_t)tag; + e->flags = CMARK_NODE__OPEN; + e->start_line = start_line; + e->start_column = start_column; + e->end_line = start_line; return e; } // Create a root document node. -static cmark_node *make_document() { - cmark_node *e = make_block(CMARK_NODE_DOCUMENT, 1, 1); +static cmark_node *make_document(cmark_mem *mem) { + cmark_node *e = make_block(mem, CMARK_NODE_DOCUMENT, 1, 1); return e; } -cmark_parser *cmark_parser_new(int options) { - cmark_parser *parser = (cmark_parser *)malloc(sizeof(cmark_parser)); - cmark_node *document = make_document(); - cmark_strbuf *line = (cmark_strbuf *)malloc(sizeof(cmark_strbuf)); - cmark_strbuf *buf = (cmark_strbuf *)malloc(sizeof(cmark_strbuf)); - cmark_strbuf_init(line, 256); - cmark_strbuf_init(buf, 0); - - parser->refmap = cmark_reference_map_new(); +cmark_parser *cmark_parser_new_with_mem(int options, cmark_mem *mem) { + cmark_parser *parser = (cmark_parser *)mem->calloc(1, sizeof(cmark_parser)); + parser->mem = mem; + + cmark_node *document = make_document(mem); + + cmark_strbuf_init(mem, &parser->curline, 256); + cmark_strbuf_init(mem, &parser->linebuf, 0); + + parser->refmap = cmark_reference_map_new(mem); parser->root = document; parser->current = document; parser->line_number = 0; @@ -86,22 +100,24 @@ cmark_parser *cmark_parser_new(int options) { parser->indent = 0; parser->blank = false; parser->partially_consumed_tab = false; - parser->curline = line; parser->last_line_length = 0; - parser->linebuf = buf; parser->options = options; parser->last_buffer_ended_with_cr = false; return parser; } +cmark_parser *cmark_parser_new(int options) { + extern cmark_mem DEFAULT_MEM_ALLOCATOR; + return cmark_parser_new_with_mem(options, &DEFAULT_MEM_ALLOCATOR); +} + void cmark_parser_free(cmark_parser *parser) { - cmark_strbuf_free(parser->curline); - free(parser->curline); - cmark_strbuf_free(parser->linebuf); - free(parser->linebuf); + cmark_mem *mem = parser->mem; + cmark_strbuf_free(&parser->curline); + cmark_strbuf_free(&parser->linebuf); cmark_reference_map_free(parser->refmap); - free(parser); + mem->free(parser); } static cmark_node *finalize(cmark_parser *parser, cmark_node *b); @@ -128,7 +144,7 @@ static bool is_blank(cmark_strbuf *s, bufsize_t offset) { } static CMARK_INLINE bool can_contain(cmark_node_type parent_type, - cmark_node_type child_type) { + cmark_node_type child_type) { return (parent_type == CMARK_NODE_DOCUMENT || parent_type == CMARK_NODE_BLOCK_QUOTE || parent_type == CMARK_NODE_ITEM || @@ -149,18 +165,17 @@ static CMARK_INLINE bool contains_inlines(cmark_node_type block_type) { static void add_line(cmark_node *node, cmark_chunk *ch, cmark_parser *parser) { int chars_to_tab; int i; - assert(node->open); + assert(node->flags & CMARK_NODE__OPEN); if (parser->partially_consumed_tab) { parser->offset += 1; // skip over tab // add space characters: chars_to_tab = TAB_STOP - (parser->column % TAB_STOP); for (i = 0; i < chars_to_tab; i++) { - cmark_strbuf_putc(&node->string_content, ' '); + cmark_strbuf_putc(&node->content, ' '); } } - cmark_strbuf_put(&node->string_content, - ch->data + parser->offset, - ch->len - parser->offset); + cmark_strbuf_put(&node->content, ch->data + parser->offset, + ch->len - parser->offset); } static void remove_trailing_blank_lines(cmark_strbuf *ln) { @@ -195,10 +210,10 @@ static void remove_trailing_blank_lines(cmark_strbuf *ln) { static bool ends_with_blank_line(cmark_node *node) { cmark_node *cur = node; while (cur != NULL) { - if (cur->last_line_blank) { + if (S_last_line_blank(cur)) { return true; } - if (cur->type == CMARK_NODE_LIST || cur->type == CMARK_NODE_ITEM) { + if (S_type(cur) == CMARK_NODE_LIST || S_type(cur) == CMARK_NODE_ITEM) { cur = cur->last_child; } else { cur = NULL; @@ -207,24 +222,6 @@ static bool ends_with_blank_line(cmark_node *node) { return false; } -// Break out of all containing lists -static int break_out_of_lists(cmark_parser *parser, cmark_node **bptr) { - cmark_node *container = *bptr; - cmark_node *b = parser->root; - // find first containing NODE_LIST: - while (b && b->type != CMARK_NODE_LIST) { - b = b->last_child; - } - if (b) { - while (container && container != b) { - container = finalize(parser, container); - } - finalize(parser, b); - *bptr = b->parent; - } - return 0; -} - static cmark_node *finalize(cmark_parser *parser, cmark_node *b) { bufsize_t pos; cmark_node *item; @@ -232,37 +229,39 @@ static cmark_node *finalize(cmark_parser *parser, cmark_node *b) { cmark_node *parent; parent = b->parent; + assert(b->flags & + CMARK_NODE__OPEN); // shouldn't call finalize on closed blocks + b->flags &= ~CMARK_NODE__OPEN; - assert(b->open); // shouldn't call finalize on closed blocks - b->open = false; - - if (parser->curline->size == 0) { + if (parser->curline.size == 0) { // end of input - line number has not been incremented b->end_line = parser->line_number; b->end_column = parser->last_line_length; - } else if (b->type == CMARK_NODE_DOCUMENT || - (b->type == CMARK_NODE_CODE_BLOCK && b->as.code.fenced) || - (b->type == CMARK_NODE_HEADING && b->as.heading.setext)) { + } else if (S_type(b) == CMARK_NODE_DOCUMENT || + (S_type(b) == CMARK_NODE_CODE_BLOCK && b->as.code.fenced) || + (S_type(b) == CMARK_NODE_HEADING && b->as.heading.setext)) { b->end_line = parser->line_number; - b->end_column = parser->curline->size; - if (b->end_column && parser->curline->ptr[b->end_column - 1] == '\n') + b->end_column = parser->curline.size; + if (b->end_column && parser->curline.ptr[b->end_column - 1] == '\n') b->end_column -= 1; - if (b->end_column && parser->curline->ptr[b->end_column - 1] == '\r') + if (b->end_column && parser->curline.ptr[b->end_column - 1] == '\r') b->end_column -= 1; } else { b->end_line = parser->line_number - 1; b->end_column = parser->last_line_length; } - switch (b->type) { + cmark_strbuf *node_content = &b->content; + + switch (S_type(b)) { case CMARK_NODE_PARAGRAPH: - while (cmark_strbuf_at(&b->string_content, 0) == '[' && - (pos = cmark_parse_reference_inline(&b->string_content, + while (cmark_strbuf_at(node_content, 0) == '[' && + (pos = cmark_parse_reference_inline(parser->mem, node_content, parser->refmap))) { - cmark_strbuf_drop(&b->string_content, pos); + cmark_strbuf_drop(node_content, pos); } - if (is_blank(&b->string_content, 0)) { + if (is_blank(node_content, 0)) { // remove blank node (former reference def) cmark_node_free(b); } @@ -270,34 +269,33 @@ static cmark_node *finalize(cmark_parser *parser, cmark_node *b) { case CMARK_NODE_CODE_BLOCK: if (!b->as.code.fenced) { // indented code - remove_trailing_blank_lines(&b->string_content); - cmark_strbuf_putc(&b->string_content, '\n'); + remove_trailing_blank_lines(node_content); + cmark_strbuf_putc(node_content, '\n'); } else { - // first line of contents becomes info - for (pos = 0; pos < b->string_content.size; ++pos) { - if (S_is_line_end_char(b->string_content.ptr[pos])) + for (pos = 0; pos < node_content->size; ++pos) { + if (S_is_line_end_char(node_content->ptr[pos])) break; } - assert(pos < b->string_content.size); + assert(pos < node_content->size); - cmark_strbuf tmp = GH_BUF_INIT; - houdini_unescape_html_f(&tmp, b->string_content.ptr, pos); + cmark_strbuf tmp = CMARK_BUF_INIT(parser->mem); + houdini_unescape_html_f(&tmp, node_content->ptr, pos); cmark_strbuf_trim(&tmp); cmark_strbuf_unescape(&tmp); b->as.code.info = cmark_chunk_buf_detach(&tmp); - if (b->string_content.ptr[pos] == '\r') + if (node_content->ptr[pos] == '\r') pos += 1; - if (b->string_content.ptr[pos] == '\n') + if (node_content->ptr[pos] == '\n') pos += 1; - cmark_strbuf_drop(&b->string_content, pos); + cmark_strbuf_drop(node_content, pos); } - b->as.code.literal = cmark_chunk_buf_detach(&b->string_content); + b->as.code.literal = cmark_chunk_buf_detach(node_content); break; case CMARK_NODE_HTML_BLOCK: - b->as.literal = cmark_chunk_buf_detach(&b->string_content); + b->as.literal = cmark_chunk_buf_detach(node_content); break; case CMARK_NODE_LIST: // determine tight/loose status @@ -306,7 +304,7 @@ static cmark_node *finalize(cmark_parser *parser, cmark_node *b) { while (item) { // check for non-final non-empty list item ending with blank line: - if (item->last_line_blank && item->next) { + if (S_last_line_blank(item) && item->next) { b->as.list.tight = false; break; } @@ -331,6 +329,7 @@ static cmark_node *finalize(cmark_parser *parser, cmark_node *b) { default: break; } + return parent; } @@ -341,11 +340,12 @@ static cmark_node *add_child(cmark_parser *parser, cmark_node *parent, // if 'parent' isn't the kind of node that can accept this child, // then back up til we hit a node that can. - while (!can_contain(parent->type, block_type)) { + while (!can_contain(S_type(parent), block_type)) { parent = finalize(parser, parent); } - cmark_node *child = make_block(block_type, parser->line_number, start_column); + cmark_node *child = + make_block(parser->mem, block_type, parser->line_number, start_column); child->parent = parent; if (parent->last_child) { @@ -361,8 +361,8 @@ static cmark_node *add_child(cmark_parser *parser, cmark_node *parent, // Walk through node and all children, recursively, parsing // string content into inline content where appropriate. -static void process_inlines(cmark_node *root, cmark_reference_map *refmap, - int options) { +static void process_inlines(cmark_mem *mem, cmark_node *root, + cmark_reference_map *refmap, int options) { cmark_iter *iter = cmark_iter_new(root); cmark_node *cur; cmark_event_type ev_type; @@ -370,8 +370,8 @@ static void process_inlines(cmark_node *root, cmark_reference_map *refmap, while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { cur = cmark_iter_get_node(iter); if (ev_type == CMARK_EVENT_ENTER) { - if (contains_inlines(cur->type)) { - cmark_parse_inlines(cur, refmap, options); + if (contains_inlines(S_type(cur))) { + cmark_parse_inlines(mem, cur, refmap, options); } } } @@ -382,11 +382,13 @@ static void process_inlines(cmark_node *root, cmark_reference_map *refmap, // Attempts to parse a list item marker (bullet or enumerated). // On success, returns length of the marker, and populates // data with the details. On failure, returns 0. -static bufsize_t parse_list_marker(cmark_chunk *input, bufsize_t pos, +static bufsize_t parse_list_marker(cmark_mem *mem, cmark_chunk *input, + bufsize_t pos, bool interrupts_paragraph, cmark_list **dataptr) { unsigned char c; bufsize_t startpos; cmark_list *data; + bufsize_t i; startpos = pos; c = peek_at(input, pos); @@ -396,17 +398,25 @@ static bufsize_t parse_list_marker(cmark_chunk *input, bufsize_t pos, if (!cmark_isspace(peek_at(input, pos))) { return 0; } - data = (cmark_list *)calloc(1, sizeof(*data)); - if (data == NULL) { - return 0; - } else { - data->marker_offset = 0; // will be adjusted later - data->list_type = CMARK_BULLET_LIST; - data->bullet_char = c; - data->start = 1; - data->delimiter = CMARK_PERIOD_DELIM; - data->tight = false; + + if (interrupts_paragraph) { + i = pos; + // require non-blank content after list marker: + while (S_is_space_or_tab(peek_at(input, i))) { + i++; + } + if (peek_at(input, i) == '\n') { + return 0; + } } + + data = (cmark_list *)mem->calloc(1, sizeof(*data)); + data->marker_offset = 0; // will be adjusted later + data->list_type = CMARK_BULLET_LIST; + data->bullet_char = c; + data->start = 1; + data->delimiter = CMARK_PERIOD_DELIM; + data->tight = false; } else if (cmark_isdigit(c)) { int start = 0; int digits = 0; @@ -420,27 +430,36 @@ static bufsize_t parse_list_marker(cmark_chunk *input, bufsize_t pos, // This also seems to be the limit for 'start' in some browsers. } while (digits < 9 && cmark_isdigit(peek_at(input, pos))); + if (interrupts_paragraph && start != 1) { + return 0; + } c = peek_at(input, pos); if (c == '.' || c == ')') { pos++; if (!cmark_isspace(peek_at(input, pos))) { return 0; } - data = (cmark_list *)calloc(1, sizeof(*data)); - if (data == NULL) { - return 0; - } else { - data->marker_offset = 0; // will be adjusted later - data->list_type = CMARK_ORDERED_LIST; - data->bullet_char = 0; - data->start = start; - data->delimiter = (c == '.' ? CMARK_PERIOD_DELIM : CMARK_PAREN_DELIM); - data->tight = false; + if (interrupts_paragraph) { + // require non-blank content after list marker: + i = pos; + while (S_is_space_or_tab(peek_at(input, i))) { + i++; + } + if (S_is_line_end_char(peek_at(input, i))) { + return 0; + } } + + data = (cmark_list *)mem->calloc(1, sizeof(*data)); + data->marker_offset = 0; // will be adjusted later + data->list_type = CMARK_ORDERED_LIST; + data->bullet_char = 0; + data->start = start; + data->delimiter = (c == '.' ? CMARK_PERIOD_DELIM : CMARK_PAREN_DELIM); + data->tight = false; } else { return 0; } - } else { return 0; } @@ -463,7 +482,7 @@ static cmark_node *finalize_document(cmark_parser *parser) { } finalize(parser, parser->root); - process_inlines(parser->root, parser->refmap, parser->options); + process_inlines(parser->mem, parser->root, parser->refmap, parser->options); return parser->root; } @@ -529,24 +548,24 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, process = true; } - chunk_len = cmark_strbuf_check_bufsize(eol - buffer); + chunk_len = (eol - buffer); if (process) { - if (parser->linebuf->size > 0) { - cmark_strbuf_put(parser->linebuf, buffer, chunk_len); - S_process_line(parser, parser->linebuf->ptr, parser->linebuf->size); - cmark_strbuf_clear(parser->linebuf); + if (parser->linebuf.size > 0) { + cmark_strbuf_put(&parser->linebuf, buffer, chunk_len); + S_process_line(parser, parser->linebuf.ptr, parser->linebuf.size); + cmark_strbuf_clear(&parser->linebuf); } else { S_process_line(parser, buffer, chunk_len); } } else { if (eol < end && *eol == '\0') { // omit NULL byte - cmark_strbuf_put(parser->linebuf, buffer, chunk_len); + cmark_strbuf_put(&parser->linebuf, buffer, chunk_len); // add replacement character - cmark_strbuf_put(parser->linebuf, repl, 3); + cmark_strbuf_put(&parser->linebuf, repl, 3); chunk_len += 1; // so we advance the buffer past NULL } else { - cmark_strbuf_put(parser->linebuf, buffer, chunk_len); + cmark_strbuf_put(&parser->linebuf, buffer, chunk_len); } } @@ -555,7 +574,7 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, if (buffer < end && *buffer == '\r') { buffer++; if (buffer == end) - parser->last_buffer_ended_with_cr = true; + parser->last_buffer_ended_with_cr = true; } if (buffer < end && *buffer == '\n') buffer++; @@ -627,16 +646,16 @@ static void S_advance_offset(cmark_parser *parser, cmark_chunk *input, if (c == '\t') { chars_to_tab = TAB_STOP - (parser->column % TAB_STOP); if (columns) { - parser->partially_consumed_tab = chars_to_tab > count; - chars_to_advance = MIN(count, chars_to_tab); - parser->column += chars_to_advance; + parser->partially_consumed_tab = chars_to_tab > count; + chars_to_advance = MIN(count, chars_to_tab); + parser->column += chars_to_advance; parser->offset += (parser->partially_consumed_tab ? 0 : 1); - count -= chars_to_advance; + count -= chars_to_advance; } else { - parser->partially_consumed_tab = false; - parser->column += chars_to_tab; - parser->offset += 1; - count -= 1; + parser->partially_consumed_tab = false; + parser->column += chars_to_tab; + parser->offset += 1; + count -= 1; } } else { parser->partially_consumed_tab = false; @@ -648,12 +667,11 @@ static void S_advance_offset(cmark_parser *parser, cmark_chunk *input, } static bool S_last_child_is_open(cmark_node *container) { - return container->last_child && container->last_child->open; + return container->last_child && + (container->last_child->flags & CMARK_NODE__OPEN); } -static bool parse_block_quote_prefix(cmark_parser *parser, - cmark_chunk *input) -{ +static bool parse_block_quote_prefix(cmark_parser *parser, cmark_chunk *input) { bool res = false; bufsize_t matched = 0; @@ -672,34 +690,30 @@ static bool parse_block_quote_prefix(cmark_parser *parser, return res; } -static bool parse_node_item_prefix(cmark_parser *parser, - cmark_chunk *input, - cmark_node *container) -{ +static bool parse_node_item_prefix(cmark_parser *parser, cmark_chunk *input, + cmark_node *container) { bool res = false; if (parser->indent >= container->as.list.marker_offset + container->as.list.padding) { S_advance_offset(parser, input, container->as.list.marker_offset + - container->as.list.padding, + container->as.list.padding, true); res = true; } else if (parser->blank && container->first_child != NULL) { // if container->first_child is NULL, then the opening line // of the list item was blank after the list marker; in this // case, we are done with the list item. - S_advance_offset(parser, input, - parser->first_nonspace - parser->offset, false); + S_advance_offset(parser, input, parser->first_nonspace - parser->offset, + false); res = true; } return res; } -static bool parse_code_block_prefix(cmark_parser *parser, - cmark_chunk *input, - cmark_node *container, - bool *should_continue) -{ +static bool parse_code_block_prefix(cmark_parser *parser, cmark_chunk *input, + cmark_node *container, + bool *should_continue) { bool res = false; if (!container->as.code.fenced) { // indented @@ -707,8 +721,8 @@ static bool parse_code_block_prefix(cmark_parser *parser, S_advance_offset(parser, input, CODE_INDENT, true); res = true; } else if (parser->blank) { - S_advance_offset(parser, input, - parser->first_nonspace - parser->offset, false); + S_advance_offset(parser, input, parser->first_nonspace - parser->offset, + false); res = true; } } else { // fenced @@ -741,25 +755,24 @@ static bool parse_code_block_prefix(cmark_parser *parser, } static bool parse_html_block_prefix(cmark_parser *parser, - cmark_node *container) -{ + cmark_node *container) { bool res = false; int html_block_type = container->as.html_block_type; assert(html_block_type >= 1 && html_block_type <= 7); switch (html_block_type) { - case 1: - case 2: - case 3: - case 4: - case 5: - // these types of blocks can accept blanks - res = true; - break; - case 6: - case 7: - res = !parser->blank; - break; + case 1: + case 2: + case 3: + case 4: + case 5: + // these types of blocks can accept blanks + res = true; + break; + case 6: + case 7: + res = !parser->blank; + break; } return res; @@ -773,10 +786,8 @@ static bool parse_html_block_prefix(cmark_parser *parser, * * Returns: The last matching node, or NULL */ -static cmark_node *check_open_blocks(cmark_parser *parser, - cmark_chunk *input, - bool *all_matched) -{ +static cmark_node *check_open_blocks(cmark_parser *parser, cmark_chunk *input, + bool *all_matched) { bool should_continue = true; *all_matched = false; cmark_node *container = parser->root; @@ -784,36 +795,36 @@ static cmark_node *check_open_blocks(cmark_parser *parser, while (S_last_child_is_open(container)) { container = container->last_child; - cont_type = container->type; + cont_type = S_type(container); S_find_first_nonspace(parser, input); switch (cont_type) { - case CMARK_NODE_BLOCK_QUOTE: - if (!parse_block_quote_prefix(parser, input)) - goto done; - break; - case CMARK_NODE_ITEM: - if (!parse_node_item_prefix(parser, input, container)) - goto done; - break; - case CMARK_NODE_CODE_BLOCK: - if (!parse_code_block_prefix(parser, input, container, &should_continue)) - goto done; - break; - case CMARK_NODE_HEADING: - // a heading can never contain more than one line + case CMARK_NODE_BLOCK_QUOTE: + if (!parse_block_quote_prefix(parser, input)) goto done; - case CMARK_NODE_HTML_BLOCK: - if (!parse_html_block_prefix(parser, container)) - goto done; - break; - case CMARK_NODE_PARAGRAPH: - if (parser->blank) - goto done; - break; - default: - break; + break; + case CMARK_NODE_ITEM: + if (!parse_node_item_prefix(parser, input, container)) + goto done; + break; + case CMARK_NODE_CODE_BLOCK: + if (!parse_code_block_prefix(parser, input, container, &should_continue)) + goto done; + break; + case CMARK_NODE_HEADING: + // a heading can never contain more than one line + goto done; + case CMARK_NODE_HTML_BLOCK: + if (!parse_html_block_prefix(parser, container)) + goto done; + break; + case CMARK_NODE_PARAGRAPH: + if (parser->blank) + goto done; + break; + default: + break; } } @@ -831,15 +842,12 @@ static cmark_node *check_open_blocks(cmark_parser *parser, return container; } -static void open_new_blocks(cmark_parser *parser, - cmark_node **container, - cmark_chunk *input, - bool all_matched) -{ +static void open_new_blocks(cmark_parser *parser, cmark_node **container, + cmark_chunk *input, bool all_matched) { bool indented; cmark_list *data = NULL; - bool maybe_lazy = parser->current->type == CMARK_NODE_PARAGRAPH; - cmark_node_type cont_type = (*container)->type; + bool maybe_lazy = S_type(parser->current) == CMARK_NODE_PARAGRAPH; + cmark_node_type cont_type = S_type(*container); bufsize_t matched = 0; int lev = 0; bool save_partially_consumed_tab; @@ -854,6 +862,8 @@ static void open_new_blocks(cmark_parser *parser, if (!indented && peek_at(input, parser->first_nonspace) == '>') { + bufsize_t blockquote_startpos = parser->first_nonspace; + S_advance_offset(parser, input, parser->first_nonspace + 1 - parser->offset, false); // optional following character @@ -861,18 +871,19 @@ static void open_new_blocks(cmark_parser *parser, S_advance_offset(parser, input, 1, true); } *container = add_child(parser, *container, CMARK_NODE_BLOCK_QUOTE, - parser->offset + 1); + blockquote_startpos + 1); } else if (!indented && (matched = scan_atx_heading_start( input, parser->first_nonspace))) { bufsize_t hashpos; int level = 0; + bufsize_t heading_startpos = parser->first_nonspace; S_advance_offset(parser, input, parser->first_nonspace + matched - parser->offset, false); - *container = - add_child(parser, *container, CMARK_NODE_HEADING, parser->offset + 1); + *container = add_child(parser, *container, CMARK_NODE_HEADING, + heading_startpos + 1); hashpos = cmark_chunk_strchr(input, '#', parser->first_nonspace); @@ -887,10 +898,10 @@ static void open_new_blocks(cmark_parser *parser, } else if (!indented && (matched = scan_open_code_fence( input, parser->first_nonspace))) { *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK, - parser->first_nonspace + 1); + parser->first_nonspace + 1); (*container)->as.code.fenced = true; (*container)->as.code.fence_char = peek_at(input, parser->first_nonspace); - (*container)->as.code.fence_length = matched; + (*container)->as.code.fence_length = (matched > 255) ? 255 : matched; (*container)->as.code.fence_offset = (int8_t)(parser->first_nonspace - parser->offset); (*container)->as.code.info = cmark_chunk_literal(""); @@ -904,28 +915,29 @@ static void open_new_blocks(cmark_parser *parser, (matched = scan_html_block_start_7( input, parser->first_nonspace))))) { *container = add_child(parser, *container, CMARK_NODE_HTML_BLOCK, - parser->first_nonspace + 1); + parser->first_nonspace + 1); (*container)->as.html_block_type = matched; // note, we don't adjust parser->offset because the tag is part of the // text } else if (!indented && cont_type == CMARK_NODE_PARAGRAPH && (lev = scan_setext_heading_line(input, parser->first_nonspace))) { - (*container)->type = CMARK_NODE_HEADING; + (*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))) { + (matched = scan_thematic_break(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); + parser->first_nonspace + 1); S_advance_offset(parser, input, input->len - 1 - parser->offset, false); - } else if ((matched = - parse_list_marker(input, parser->first_nonspace, &data)) && + } else if ((matched = parse_list_marker( + parser->mem, input, parser->first_nonspace, + (*container)->type == CMARK_NODE_PARAGRAPH, &data)) && (!indented || cont_type == CMARK_NODE_LIST)) { + // Note that we can have new list items starting with >= 4 // spaces indent, as long as the list container is still open. int i = 0; @@ -940,16 +952,18 @@ static void open_new_blocks(cmark_parser *parser, save_column = parser->column; while (parser->column - save_column <= 5 && - S_is_space_or_tab(peek_at(input, parser->offset))) { + S_is_space_or_tab(peek_at(input, parser->offset))) { S_advance_offset(parser, input, 1, true); } i = parser->column - save_column; - if (i >= 5 || i < 1) { + if (i >= 5 || i < 1 || + // only spaces after list marker: + S_is_line_end_char(peek_at(input, parser->offset))) { data->padding = matched + 1; - parser->offset = save_offset; - parser->column = save_column; - parser->partially_consumed_tab = save_partially_consumed_tab; + parser->offset = save_offset; + parser->column = save_column; + parser->partially_consumed_tab = save_partially_consumed_tab; if (i > 0) { S_advance_offset(parser, input, 1, true); } @@ -965,21 +979,21 @@ static void open_new_blocks(cmark_parser *parser, if (cont_type != CMARK_NODE_LIST || !lists_match(&((*container)->as.list), data)) { *container = add_child(parser, *container, CMARK_NODE_LIST, - parser->first_nonspace + 1); + parser->first_nonspace + 1); memcpy(&((*container)->as.list), data, sizeof(*data)); } // add the list item *container = add_child(parser, *container, CMARK_NODE_ITEM, - parser->first_nonspace + 1); + parser->first_nonspace + 1); /* TODO: static */ memcpy(&((*container)->as.list), data, sizeof(*data)); free(data); } else if (indented && !maybe_lazy && !parser->blank) { S_advance_offset(parser, input, CODE_INDENT, true); *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK, - parser->offset + 1); + parser->offset + 1); (*container)->as.code.fenced = false; (*container)->as.code.fence_char = 0; (*container)->as.code.fence_length = 0; @@ -990,21 +1004,19 @@ static void open_new_blocks(cmark_parser *parser, break; } - if (accepts_lines((*container)->type)) { + if (accepts_lines(S_type(*container))) { // if it's a line container, it can't contain other containers break; } - cont_type = (*container)->type; + cont_type = S_type(*container); maybe_lazy = false; } } -static void add_text_to_container (cmark_parser *parser, - cmark_node *container, - cmark_node *last_matched_container, - cmark_chunk *input) -{ +static void add_text_to_container(cmark_parser *parser, cmark_node *container, + cmark_node *last_matched_container, + cmark_chunk *input) { cmark_node *tmp; // what remains at parser->offset is a text line. add the text to the // appropriate container. @@ -1012,24 +1024,25 @@ static void add_text_to_container (cmark_parser *parser, S_find_first_nonspace(parser, input); if (parser->blank && container->last_child) - container->last_child->last_line_blank = true; + S_set_last_line_blank(container->last_child, true); // block quote lines are never blank as they start with > // and we don't count blanks in fenced code for purposes of tight/loose // lists or breaking out of lists. we also don't set last_line_blank // on an empty list item. - container->last_line_blank = - (parser->blank && container->type != CMARK_NODE_BLOCK_QUOTE && - container->type != CMARK_NODE_HEADING && - container->type != CMARK_NODE_THEMATIC_BREAK && - !(container->type == CMARK_NODE_CODE_BLOCK && - container->as.code.fenced) && - !(container->type == CMARK_NODE_ITEM && container->first_child == NULL && + const cmark_node_type ctype = S_type(container); + const bool last_line_blank = + (parser->blank && ctype != CMARK_NODE_BLOCK_QUOTE && + ctype != CMARK_NODE_HEADING && ctype != CMARK_NODE_THEMATIC_BREAK && + !(ctype == CMARK_NODE_CODE_BLOCK && container->as.code.fenced) && + !(ctype == CMARK_NODE_ITEM && container->first_child == NULL && container->start_line == parser->line_number)); + S_set_last_line_blank(container, last_line_blank); + tmp = container; while (tmp->parent) { - tmp->parent->last_line_blank = false; + S_set_last_line_blank(tmp->parent, false); tmp = tmp->parent; } @@ -1040,9 +1053,8 @@ static void add_text_to_container (cmark_parser *parser, // then treat this as a "lazy continuation line" and add it to // the open paragraph. if (parser->current != last_matched_container && - container == last_matched_container && - !parser->blank && - parser->current->type == CMARK_NODE_PARAGRAPH) { + container == last_matched_container && !parser->blank && + S_type(parser->current) == CMARK_NODE_PARAGRAPH) { add_line(parser->current, input, parser); } else { // not a lazy continuation // Finalize any blocks that were not matched and set cur to container: @@ -1051,9 +1063,9 @@ static void add_text_to_container (cmark_parser *parser, assert(parser->current != NULL); } - if (container->type == CMARK_NODE_CODE_BLOCK) { + if (S_type(container) == CMARK_NODE_CODE_BLOCK) { add_line(container, input, parser); - } else if (container->type == CMARK_NODE_HTML_BLOCK) { + } else if (S_type(container) == CMARK_NODE_HTML_BLOCK) { add_line(container, input, parser); int matches_end_condition; @@ -1094,18 +1106,20 @@ static void add_text_to_container (cmark_parser *parser, } } else if (parser->blank) { // ??? do nothing - } else if (accepts_lines(container->type)) { - if (container->type == CMARK_NODE_HEADING && + } else if (accepts_lines(S_type(container))) { + if (S_type(container) == CMARK_NODE_HEADING && container->as.heading.setext == false) { chop_trailing_hashtags(input); } - S_advance_offset(parser, input, parser->first_nonspace - parser->offset, false); + S_advance_offset(parser, input, parser->first_nonspace - parser->offset, + false); add_line(container, input, parser); } else { // create paragraph container for line container = add_child(parser, container, CMARK_NODE_PARAGRAPH, parser->first_nonspace + 1); - S_advance_offset(parser, input, parser->first_nonspace - parser->offset, false); + S_advance_offset(parser, input, parser->first_nonspace - parser->offset, + false); add_line(container, input, parser); } @@ -1122,21 +1136,21 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, cmark_chunk input; if (parser->options & CMARK_OPT_VALIDATE_UTF8) - cmark_utf8proc_check(parser->curline, buffer, bytes); + cmark_utf8proc_check(&parser->curline, buffer, bytes); else - cmark_strbuf_put(parser->curline, buffer, bytes); + cmark_strbuf_put(&parser->curline, buffer, bytes); // ensure line ends with a newline: - if (bytes == 0 || !S_is_line_end_char(parser->curline->ptr[bytes - 1])) - cmark_strbuf_putc(parser->curline, '\n'); + if (bytes == 0 || !S_is_line_end_char(parser->curline.ptr[bytes - 1])) + cmark_strbuf_putc(&parser->curline, '\n'); parser->offset = 0; parser->column = 0; parser->blank = false; parser->partially_consumed_tab = false; - input.data = parser->curline->ptr; - input.len = parser->curline->size; + input.data = parser->curline.ptr; + input.len = parser->curline.size; parser->line_number++; @@ -1147,10 +1161,6 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, container = last_matched_container; - // check to see if we've hit 2nd blank line, break out of list: - if (parser->blank && container->last_line_blank) - break_out_of_lists(parser, &container); - open_new_blocks(parser, &container, &input, all_matched); add_text_to_container(parser, container, last_matched_container, &input); @@ -1164,13 +1174,13 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, input.data[parser->last_line_length - 1] == '\r') parser->last_line_length -= 1; - cmark_strbuf_clear(parser->curline); + cmark_strbuf_clear(&parser->curline); } cmark_node *cmark_parser_finish(cmark_parser *parser) { - if (parser->linebuf->size) { - S_process_line(parser, parser->linebuf->ptr, parser->linebuf->size); - cmark_strbuf_clear(parser->linebuf); + if (parser->linebuf.size) { + S_process_line(parser, parser->linebuf.ptr, parser->linebuf.size); + cmark_strbuf_clear(&parser->linebuf); } finalize_document(parser); @@ -1179,7 +1189,7 @@ cmark_node *cmark_parser_finish(cmark_parser *parser) { cmark_consolidate_text_nodes(parser->root); } - cmark_strbuf_free(parser->curline); + cmark_strbuf_free(&parser->curline); #if CMARK_DEBUG_NODES if (cmark_node_check(parser->root, stderr)) { diff --git a/buffer.c b/buffer.c index 4efa97b..a6754b6 100644 --- a/buffer.c +++ b/buffer.c @@ -5,10 +5,12 @@ #include #include #include +#include #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. @@ -19,7 +21,9 @@ unsigned char cmark_strbuf__initbuf[1]; #define MIN(x, y) ((x < y) ? x : y) #endif -void cmark_strbuf_init(cmark_strbuf *buf, bufsize_t initial_size) { +void cmark_strbuf_init(cmark_mem *mem, cmark_strbuf *buf, + bufsize_t initial_size) { + buf->mem = mem; buf->asize = 0; buf->size = 0; buf->ptr = cmark_strbuf__initbuf; @@ -28,68 +32,28 @@ void cmark_strbuf_init(cmark_strbuf *buf, bufsize_t initial_size) { cmark_strbuf_grow(buf, initial_size); } -void cmark_strbuf_overflow_err() { - fprintf(stderr, "String buffer overflow"); - abort(); -} - -static CMARK_INLINE void S_strbuf_grow_by(cmark_strbuf *buf, size_t add) { - size_t target_size = (size_t)buf->size + add; - - if (target_size < add /* Integer overflow. */ - || target_size > BUFSIZE_MAX /* Truncation overflow. */ - ) { - cmark_strbuf_overflow_err(); - return; /* unreachable */ - } - - if ((bufsize_t)target_size >= buf->asize) - cmark_strbuf_grow(buf, (bufsize_t)target_size); +static CMARK_INLINE void S_strbuf_grow_by(cmark_strbuf *buf, bufsize_t add) { + cmark_strbuf_grow(buf, buf->size + add); } void cmark_strbuf_grow(cmark_strbuf *buf, bufsize_t target_size) { - unsigned char *new_ptr; + assert(target_size > 0); if (target_size < buf->asize) return; - if (buf->asize == 0) { - new_ptr = NULL; - } else { - new_ptr = buf->ptr; - } + if (target_size > (bufsize_t)(INT32_MAX / 2)) + abort(); /* Oversize the buffer by 50% to guarantee amortized linear time * complexity on append operations. */ - size_t new_size = (size_t)target_size + (size_t)target_size / 2; - - /* Account for terminating null byte. */ + bufsize_t new_size = target_size + target_size / 2; new_size += 1; - - /* round allocation up to multiple of 8 */ new_size = (new_size + 7) & ~7; - if (new_size < (size_t)target_size /* Integer overflow. */ - || new_size > BUFSIZE_MAX /* Truncation overflow. */ - ) { - if (target_size >= BUFSIZE_MAX) { - /* No space for terminating null byte. */ - cmark_strbuf_overflow_err(); - return; /* unreachable */ - } - /* Oversize by the maximum possible amount. */ - new_size = BUFSIZE_MAX; - } - - new_ptr = (unsigned char *)realloc(new_ptr, new_size); - - if (!new_ptr) { - perror("realloc in cmark_strbuf_grow"); - abort(); - } - - buf->asize = (bufsize_t)new_size; - buf->ptr = new_ptr; + buf->ptr = (unsigned char *)buf->mem->realloc(buf->asize ? buf->ptr : NULL, + new_size); + buf->asize = new_size; } bufsize_t cmark_strbuf_len(const cmark_strbuf *buf) { return buf->size; } @@ -99,9 +63,9 @@ void cmark_strbuf_free(cmark_strbuf *buf) { return; if (buf->ptr != cmark_strbuf__initbuf) - free(buf->ptr); + buf->mem->free(buf->ptr); - cmark_strbuf_init(buf, 0); + cmark_strbuf_init(buf->mem, buf, 0); } void cmark_strbuf_clear(cmark_strbuf *buf) { @@ -128,7 +92,7 @@ void cmark_strbuf_set(cmark_strbuf *buf, const unsigned char *data, void cmark_strbuf_sets(cmark_strbuf *buf, const char *string) { cmark_strbuf_set(buf, (const unsigned char *)string, - string ? cmark_strbuf_safe_strlen(string) : 0); + string ? strlen(string) : 0); } void cmark_strbuf_putc(cmark_strbuf *buf, int c) { @@ -149,8 +113,7 @@ void cmark_strbuf_put(cmark_strbuf *buf, const unsigned char *data, } void cmark_strbuf_puts(cmark_strbuf *buf, const char *string) { - cmark_strbuf_put(buf, (const unsigned char *)string, - cmark_strbuf_safe_strlen(string)); + cmark_strbuf_put(buf, (const unsigned char *)string, strlen(string)); } void cmark_strbuf_copy_cstr(char *data, bufsize_t datasize, @@ -184,10 +147,10 @@ unsigned char *cmark_strbuf_detach(cmark_strbuf *buf) { if (buf->asize == 0) { /* return an empty string */ - return (unsigned char *)calloc(1, 1); + return (unsigned char *)buf->mem->calloc(1, 1); } - cmark_strbuf_init(buf, 0); + cmark_strbuf_init(buf->mem, buf, 0); return data; } diff --git a/buffer.h b/buffer.h index 6fd0cae..e878075 100644 --- a/buffer.h +++ b/buffer.h @@ -5,32 +5,35 @@ #include #include #include +#include #include "config.h" +#include "cmark.h" #ifdef __cplusplus extern "C" { #endif -typedef int bufsize_t; +typedef int32_t bufsize_t; typedef struct { + cmark_mem *mem; unsigned char *ptr; bufsize_t asize, size; } cmark_strbuf; extern unsigned char cmark_strbuf__initbuf[]; -#define GH_BUF_INIT \ - { cmark_strbuf__initbuf, 0, 0 } -#define BUFSIZE_MAX INT_MAX +#define CMARK_BUF_INIT(mem) \ + { mem, cmark_strbuf__initbuf, 0, 0 } /** * Initialize a cmark_strbuf structure. * - * For the cases where GH_BUF_INIT cannot be used to do static + * For the cases where CMARK_BUF_INIT cannot be used to do static * initialization. */ -void cmark_strbuf_init(cmark_strbuf *buf, bufsize_t initial_size); +void cmark_strbuf_init(cmark_mem *mem, cmark_strbuf *buf, + bufsize_t initial_size); /** * Grow the buffer to hold at least `target_size` bytes. @@ -72,20 +75,6 @@ void cmark_strbuf_trim(cmark_strbuf *buf); void cmark_strbuf_normalize_whitespace(cmark_strbuf *s); void cmark_strbuf_unescape(cmark_strbuf *s); -/* Print error and abort. */ -void cmark_strbuf_overflow_err(void); - -static CMARK_INLINE bufsize_t cmark_strbuf_check_bufsize(size_t size) { - if (size > BUFSIZE_MAX) { - cmark_strbuf_overflow_err(); - } - return (bufsize_t)size; -} - -static CMARK_INLINE bufsize_t cmark_strbuf_safe_strlen(const char *str) { - return cmark_strbuf_check_bufsize(strlen(str)); -} - #ifdef __cplusplus } #endif diff --git a/chunk.h b/chunk.h index b25831b..a2248f5 100644 --- a/chunk.h +++ b/chunk.h @@ -4,8 +4,10 @@ #include #include #include -#include "cmark_ctype.h" +#include "cmark.h" #include "buffer.h" +#include "memory.h" +#include "cmark_ctype.h" #define CMARK_CHUNK_EMPTY \ { NULL, 0, 0 } @@ -16,9 +18,9 @@ typedef struct { bufsize_t alloc; // also implies a NULL-terminated string } cmark_chunk; -static CMARK_INLINE void cmark_chunk_free(cmark_chunk *c) { +static CMARK_INLINE void cmark_chunk_free(cmark_mem *mem, cmark_chunk *c) { if (c->alloc) - free(c->data); + mem->free(c->data); c->data = NULL; c->alloc = 0; @@ -48,56 +50,57 @@ static CMARK_INLINE void cmark_chunk_trim(cmark_chunk *c) { cmark_chunk_rtrim(c); } -static CMARK_INLINE bufsize_t cmark_chunk_strchr(cmark_chunk *ch, int c, - bufsize_t offset) { +static CMARK_INLINE bufsize_t + cmark_chunk_strchr(cmark_chunk *ch, int c, bufsize_t offset) { const unsigned char *p = (unsigned char *)memchr(ch->data + offset, c, ch->len - offset); return p ? (bufsize_t)(p - ch->data) : ch->len; } -static CMARK_INLINE const char *cmark_chunk_to_cstr(cmark_chunk *c) { +static CMARK_INLINE const char *cmark_chunk_to_cstr(cmark_mem *mem, + cmark_chunk *c) { unsigned char *str; if (c->alloc) { return (char *)c->data; } - str = (unsigned char *)malloc(c->len + 1); - if (str != NULL) { - if (c->len > 0) { - memcpy(str, c->data, c->len); - } - str[c->len] = 0; + str = (unsigned char *)mem->calloc(c->len + 1, 1); + if (c->len > 0) { + memcpy(str, c->data, c->len); } + str[c->len] = 0; c->data = str; c->alloc = 1; return (char *)str; } -static CMARK_INLINE void cmark_chunk_set_cstr(cmark_chunk *c, const char *str) { - if (c->alloc) { - free(c->data); - } +static CMARK_INLINE void cmark_chunk_set_cstr(cmark_mem *mem, cmark_chunk *c, + const char *str) { + unsigned char *old = c->alloc ? c->data : NULL; if (str == NULL) { c->len = 0; c->data = NULL; c->alloc = 0; } else { - c->len = cmark_strbuf_safe_strlen(str); - c->data = (unsigned char *)malloc(c->len + 1); + c->len = (bufsize_t)strlen(str); + c->data = (unsigned char *)mem->calloc(c->len + 1, 1); c->alloc = 1; memcpy(c->data, str, c->len + 1); } + if (old != NULL) { + mem->free(old); + } } static CMARK_INLINE cmark_chunk cmark_chunk_literal(const char *data) { - bufsize_t len = data ? cmark_strbuf_safe_strlen(data) : 0; + bufsize_t len = data ? (bufsize_t)strlen(data) : 0; cmark_chunk c = {(unsigned char *)data, len, 0}; return c; } -static CMARK_INLINE cmark_chunk cmark_chunk_dup(const cmark_chunk *ch, - bufsize_t pos, bufsize_t len) { +static CMARK_INLINE cmark_chunk + cmark_chunk_dup(const cmark_chunk *ch, bufsize_t pos, bufsize_t len) { cmark_chunk c = {ch->data + pos, len, 0}; return c; } diff --git a/cmark.c b/cmark.c index 3491199..0d3bc16 100644 --- a/cmark.c +++ b/cmark.c @@ -10,6 +10,22 @@ int cmark_version() { return CMARK_VERSION; } const char *cmark_version_string() { return CMARK_VERSION_STRING; } +static void *xcalloc(size_t nmem, size_t size) { + void *ptr = calloc(nmem, size); + if (!ptr) + abort(); + return ptr; +} + +static void *xrealloc(void *ptr, size_t size) { + void *new_ptr = realloc(ptr, size); + if (!new_ptr) + abort(); + return new_ptr; +} + +cmark_mem DEFAULT_MEM_ALLOCATOR = {xcalloc, xrealloc, free}; + char *cmark_markdown_to_html(const char *text, size_t len, int options) { cmark_node *doc; char *result; diff --git a/cmark.h b/cmark.h index 7deaf31..a26ecb4 100644 --- a/cmark.h +++ b/cmark.h @@ -21,7 +21,8 @@ extern "C" { /** Convert 'text' (assumed to be a UTF-8 encoded string with length * 'len') from CommonMark Markdown to HTML, returning a null-terminated, - * UTF-8-encoded string. + * UTF-8-encoded string. It is the caller's responsibility + * to free the returned buffer. */ CMARK_EXPORT char *cmark_markdown_to_html(const char *text, size_t len, int options); @@ -86,6 +87,19 @@ typedef struct cmark_node cmark_node; typedef struct cmark_parser cmark_parser; typedef struct cmark_iter cmark_iter; +/** + * ## Custom memory allocator support + */ + +/** Defines the memory allocation functions to be used by CMark + * when parsing and allocating a document tree + */ +typedef struct cmark_mem { + void *(*calloc)(size_t, size_t); + void *(*realloc)(void *, size_t); + void (*free)(void *); +} cmark_mem; + /** * ## Creating and Destroying Nodes */ @@ -96,6 +110,13 @@ typedef struct cmark_iter cmark_iter; */ CMARK_EXPORT cmark_node *cmark_node_new(cmark_node_type type); +/** Same as `cmark_node_new`, but explicitly listing the memory + * allocator used to allocate the node. Note: be sure to use the same + * allocator for every node in a tree, or bad things can happen. + */ +CMARK_EXPORT cmark_node *cmark_node_new_with_mem(cmark_node_type type, + cmark_mem *mem); + /** Frees the memory allocated for a node and any children. */ CMARK_EXPORT void cmark_node_free(cmark_node *node); @@ -179,7 +200,9 @@ typedef enum { } cmark_event_type; /** Creates a new iterator starting at 'root'. The current node and event - * type are undefined until `cmark_iter_next` is called for the first time. + * type are undefined until 'cmark_iter_next' is called for the first time. + * The memory allocated for the iterator should be released using + * 'cmark_iter_free' when it is no longer needed. */ CMARK_EXPORT cmark_iter *cmark_iter_new(cmark_node *root); @@ -434,6 +457,11 @@ CMARK_EXPORT void cmark_consolidate_text_nodes(cmark_node *root); CMARK_EXPORT cmark_parser *cmark_parser_new(int options); +/** Creates a new parser object with the given memory allocator + */ +CMARK_EXPORT +cmark_parser *cmark_parser_new_with_mem(int options, cmark_mem *mem); + /** Frees memory allocated for a parser object. */ CMARK_EXPORT @@ -450,13 +478,16 @@ CMARK_EXPORT cmark_node *cmark_parser_finish(cmark_parser *parser); /** Parse a CommonMark document in 'buffer' of length 'len'. - * Returns a pointer to a tree of nodes. + * Returns a pointer to a tree of nodes. The memory allocated for + * the node tree should be released using 'cmark_node_free' + * when it is no longer needed. */ CMARK_EXPORT cmark_node *cmark_parse_document(const char *buffer, size_t len, int options); /** Parse a CommonMark document in file 'f', returning a pointer to - * a tree of nodes. + * a tree of nodes. The memory allocated for the node tree should be + * released using 'cmark_node_free' when it is no longer needed. */ CMARK_EXPORT cmark_node *cmark_parse_file(FILE *f, int options); @@ -465,28 +496,33 @@ cmark_node *cmark_parse_file(FILE *f, int options); * ## Rendering */ -/** Render a 'node' tree as XML. +/** Render a 'node' tree as XML. It is the caller's responsibility + * to free the returned buffer. */ CMARK_EXPORT char *cmark_render_xml(cmark_node *root, int options); /** Render a 'node' tree as an HTML fragment. It is up to the user - * to add an appropriate header and footer. + * to add an appropriate header and footer. It is the caller's + * responsibility to free the returned buffer. */ CMARK_EXPORT char *cmark_render_html(cmark_node *root, int options); /** Render a 'node' tree as a groff man page, without the header. + * It is the caller's responsibility to free the returned buffer. */ CMARK_EXPORT char *cmark_render_man(cmark_node *root, int options, int width); /** Render a 'node' tree as a commonmark document. + * It is the caller's responsibility to free the returned buffer. */ CMARK_EXPORT char *cmark_render_commonmark(cmark_node *root, int options, int width); /** Render a 'node' tree as a LaTeX document. + * It is the caller's responsibility to free the returned buffer. */ CMARK_EXPORT char *cmark_render_latex(cmark_node *root, int options, int width); @@ -519,6 +555,10 @@ char *cmark_render_latex(cmark_node *root, int options, int width); */ #define CMARK_OPT_SAFE (1 << 3) +/** Render `softbreak` elements as spaces. + */ +#define CMARK_OPT_NOBREAKS (1 << 4) + /** * ### Options affecting parsing */ diff --git a/cmark_ctype.c b/cmark_ctype.c index c9a9b0e..c0c4d5b 100644 --- a/cmark_ctype.c +++ b/cmark_ctype.c @@ -40,3 +40,5 @@ int cmark_isalnum(char c) { } int cmark_isdigit(char c) { return cmark_ctype_class[(uint8_t)c] == 3; } + +int cmark_isalpha(char c) { return cmark_ctype_class[(uint8_t)c] == 4; } diff --git a/cmark_ctype.h b/cmark_ctype.h index f803946..9a07618 100644 --- a/cmark_ctype.h +++ b/cmark_ctype.h @@ -17,6 +17,8 @@ int cmark_isalnum(char c); int cmark_isdigit(char c); +int cmark_isalpha(char c); + #ifdef __cplusplus } #endif diff --git a/cmark_version.h b/cmark_version.h index 5e873b2..32cb2e2 100644 --- a/cmark_version.h +++ b/cmark_version.h @@ -1,7 +1,7 @@ #ifndef CMARK_VERSION_H #define CMARK_VERSION_H -#define CMARK_VERSION ((0 << 16) | (25 << 8) | 2) -#define CMARK_VERSION_STRING "0.25.2" +#define CMARK_VERSION ((0 << 16) | (26 << 8) | 1) +#define CMARK_VERSION_STRING "0.26.1" #endif diff --git a/commonmark.c b/commonmark.c index f5a352d..b8b1820 100644 --- a/commonmark.c +++ b/commonmark.c @@ -2,7 +2,6 @@ #include #include #include -#include #include "config.h" #include "cmark.h" @@ -12,7 +11,6 @@ #include "scanners.h" #include "render.h" -#define safe_strlen(s) cmark_strbuf_safe_strlen(s) #define OUT(s, wrap, escaping) renderer->out(renderer, s, wrap, escaping) #define LIT(s) renderer->out(renderer, s, false, LITERAL) #define CR() renderer->cr(renderer) @@ -23,7 +21,7 @@ // Functions to convert cmark_nodes to commonmark strings. static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape, - int32_t c, unsigned char nextc) { + int32_t c, unsigned char nextc) { bool needs_escaping = false; bool follows_digit = renderer->buffer->size > 0 && @@ -31,24 +29,25 @@ static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape, char encoded[ENCODED_SIZE]; needs_escaping = - escape != LITERAL && + c < 0x80 && escape != LITERAL && ((escape == NORMAL && (c == '*' || c == '_' || c == '[' || c == ']' || c == '#' || c == '<' || c == '>' || c == '\\' || c == '`' || c == '!' || - (c == '&' && isalpha(nextc)) || (c == '!' && nextc == '[') || + (c == '&' && cmark_isalpha(nextc)) || (c == '!' && nextc == '[') || (renderer->begin_content && (c == '-' || c == '+' || c == '=') && // begin_content doesn't get set to false til we've passed digits // at the beginning of line, so... !follows_digit) || (renderer->begin_content && (c == '.' || c == ')') && follows_digit && (nextc == 0 || cmark_isspace(nextc))))) || - (escape == URL && (c == '`' || c == '<' || c == '>' || isspace(c) || - c == '\\' || c == ')' || c == '(')) || + (escape == URL && + (c == '`' || c == '<' || c == '>' || cmark_isspace(c) || c == '\\' || + c == ')' || c == '(')) || (escape == TITLE && (c == '`' || c == '<' || c == '>' || c == '"' || c == '\\'))); if (needs_escaping) { - if (isspace(c)) { + if (cmark_isspace(c)) { // use percent encoding for spaces snprintf(encoded, ENCODED_SIZE, "%%%2x", c); cmark_strbuf_puts(renderer->buffer, encoded); @@ -66,7 +65,7 @@ static int longest_backtick_sequence(const char *code) { int longest = 0; int current = 0; size_t i = 0; - size_t code_len = safe_strlen(code); + size_t code_len = strlen(code); while (i <= code_len) { if (code[i] == '`') { current++; @@ -85,7 +84,7 @@ static int shortest_unused_backtick_sequence(const char *code) { int32_t used = 1; int current = 0; size_t i = 0; - size_t code_len = safe_strlen(code); + size_t code_len = strlen(code); while (i <= code_len) { if (code[i] == '`') { current++; @@ -171,7 +170,10 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, size_t info_len, code_len; char listmarker[LISTMARKER_SIZE]; char *emph_delim; + bool first_in_list_item; bufsize_t marker_width; + bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options) && + !(CMARK_OPT_HARDBREAKS & options); // Don't adjust tight list status til we've started the list. // Otherwise we loose the blank line between a paragraph and @@ -204,7 +206,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, case CMARK_NODE_LIST: if (!entering && node->next && (node->next->type == CMARK_NODE_CODE_BLOCK || node->next->type == CMARK_NODE_LIST)) { - // this ensures that a following code block or list will be + // this ensures that a following indented code block or list will be // inteprereted correctly. CR(); LIT(""); @@ -229,7 +231,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, snprintf(listmarker, LISTMARKER_SIZE, "%d%s%s", list_number, list_delim == CMARK_PAREN_DELIM ? ")" : ".", list_number < 10 ? " " : " "); - marker_width = safe_strlen(listmarker); + marker_width = strlen(listmarker); } if (entering) { if (cmark_node_get_list_type(node->parent) == CMARK_BULLET_LIST) { @@ -256,27 +258,31 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, } LIT(" "); renderer->begin_content = true; - renderer->no_wrap = true; + renderer->no_linebreaks = true; } else { - renderer->no_wrap = false; + renderer->no_linebreaks = false; BLANKLINE(); } break; case CMARK_NODE_CODE_BLOCK: - BLANKLINE(); + first_in_list_item = node->prev == NULL && node->parent && + node->parent->type == CMARK_NODE_ITEM; + + if (!first_in_list_item) { + BLANKLINE(); + } info = cmark_node_get_fence_info(node); - info_len = safe_strlen(info); + info_len = strlen(info); code = cmark_node_get_literal(node); - code_len = safe_strlen(code); + code_len = strlen(code); // use indented form if no info, and code doesn't // begin or end with a blank line, and code isn't // first thing in a list item - if (info_len == 0 && - (code_len > 2 && !isspace((unsigned char)code[0]) && - !(isspace((unsigned char)code[code_len - 1]) && isspace((unsigned char)code[code_len - 2]))) && - !(node->prev == NULL && node->parent && - node->parent->type == CMARK_NODE_ITEM)) { + if (info_len == 0 && (code_len > 2 && !cmark_isspace(code[0]) && + !(cmark_isspace(code[code_len - 1]) && + cmark_isspace(code[code_len - 2]))) && + !first_in_list_item) { LIT(" "); cmark_strbuf_puts(renderer->prefix, " "); OUT(cmark_node_get_literal(node), false, LITERAL); @@ -327,7 +333,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, break; case CMARK_NODE_TEXT: - OUT(cmark_node_get_literal(node), true, NORMAL); + OUT(cmark_node_get_literal(node), allow_wrap, NORMAL); break; case CMARK_NODE_LINEBREAK: @@ -338,16 +344,21 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, break; case CMARK_NODE_SOFTBREAK: - if (renderer->width == 0 && !(CMARK_OPT_HARDBREAKS & options)) { + if (CMARK_OPT_HARDBREAKS & options) { + LIT(" "); + CR(); + } else if (!renderer->no_linebreaks && renderer->width == 0 && + !(CMARK_OPT_HARDBREAKS & options) && + !(CMARK_OPT_NOBREAKS & options)) { CR(); } else { - OUT(" ", true, LITERAL); + OUT(" ", allow_wrap, LITERAL); } break; case CMARK_NODE_CODE: code = cmark_node_get_literal(node); - code_len = safe_strlen(code); + code_len = strlen(code); numticks = shortest_unused_backtick_sequence(code); for (i = 0; i < numticks; i++) { LIT("`"); @@ -355,7 +366,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, if (code_len == 0 || code[0] == '`') { LIT(" "); } - OUT(cmark_node_get_literal(node), true, LITERAL); + OUT(cmark_node_get_literal(node), allow_wrap, LITERAL); if (code_len == 0 || code[code_len - 1] == '`') { LIT(" "); } @@ -417,7 +428,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, LIT("]("); OUT(cmark_node_get_url(node), false, URL); title = cmark_node_get_title(node); - if (safe_strlen(title) > 0) { + if (strlen(title) > 0) { LIT(" \""); OUT(title, false, TITLE); LIT("\""); @@ -434,8 +445,8 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, LIT("]("); OUT(cmark_node_get_url(node), false, URL); title = cmark_node_get_title(node); - if (safe_strlen(title) > 0) { - OUT(" \"", true, LITERAL); + if (strlen(title) > 0) { + OUT(" \"", allow_wrap, LITERAL); OUT(title, false, TITLE); LIT("\""); } diff --git a/html.c b/html.c index 9ffa08a..a680e4a 100644 --- a/html.c +++ b/html.c @@ -228,6 +228,8 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, case CMARK_NODE_SOFTBREAK: if (options & CMARK_OPT_HARDBREAKS) { cmark_strbuf_puts(html, "
    \n"); + } else if (options & CMARK_OPT_NOBREAKS) { + cmark_strbuf_putc(html, ' '); } else { cmark_strbuf_putc(html, '\n'); } @@ -322,7 +324,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, char *cmark_render_html(cmark_node *root, int options) { char *result; - cmark_strbuf html = GH_BUF_INIT; + cmark_strbuf html = CMARK_BUF_INIT(cmark_node_mem(root)); cmark_event_type ev_type; cmark_node *cur; struct render_state state = {&html, NULL}; diff --git a/inlines.c b/inlines.c index 8ff8131..e5ca8e2 100644 --- a/inlines.c +++ b/inlines.c @@ -22,30 +22,40 @@ static const char *LEFTSINGLEQUOTE = "\xE2\x80\x98"; static const char *RIGHTSINGLEQUOTE = "\xE2\x80\x99"; // Macros for creating various kinds of simple. -#define make_str(s) make_literal(CMARK_NODE_TEXT, s) -#define make_code(s) make_literal(CMARK_NODE_CODE, s) -#define make_raw_html(s) make_literal(CMARK_NODE_HTML_INLINE, s) -#define make_linebreak() make_simple(CMARK_NODE_LINEBREAK) -#define make_softbreak() make_simple(CMARK_NODE_SOFTBREAK) -#define make_emph() make_simple(CMARK_NODE_EMPH) -#define make_strong() make_simple(CMARK_NODE_STRONG) +#define make_str(mem, s) make_literal(mem, CMARK_NODE_TEXT, s) +#define make_code(mem, s) make_literal(mem, CMARK_NODE_CODE, s) +#define make_raw_html(mem, s) make_literal(mem, CMARK_NODE_HTML_INLINE, s) +#define make_linebreak(mem) make_simple(mem, CMARK_NODE_LINEBREAK) +#define make_softbreak(mem) make_simple(mem, CMARK_NODE_SOFTBREAK) +#define make_emph(mem) make_simple(mem, CMARK_NODE_EMPH) +#define make_strong(mem) make_simple(mem, CMARK_NODE_STRONG) typedef struct delimiter { struct delimiter *previous; struct delimiter *next; cmark_node *inl_text; - bufsize_t position; unsigned char delim_char; bool can_open; bool can_close; - bool active; } delimiter; +typedef struct bracket { + struct bracket *previous; + struct delimiter *previous_delimiter; + cmark_node *inl_text; + bufsize_t position; + bool image; + bool active; + bool bracket_after; +} bracket; + typedef struct { + cmark_mem *mem; cmark_chunk input; bufsize_t pos; cmark_reference_map *refmap; delimiter *last_delim; + bracket *last_bracket; } subject; static CMARK_INLINE bool S_is_line_end_char(char c) { @@ -57,66 +67,48 @@ static delimiter *S_insert_emph(subject *subj, delimiter *opener, static int parse_inline(subject *subj, cmark_node *parent, int options); -static void subject_from_buf(subject *e, cmark_strbuf *buffer, +static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer, cmark_reference_map *refmap); static bufsize_t subject_find_special_char(subject *subj, int options); // Create an inline with a literal string value. -static CMARK_INLINE cmark_node *make_literal(cmark_node_type t, cmark_chunk s) { - cmark_node *e = (cmark_node *)calloc(1, sizeof(*e)); - if (e != NULL) { - e->type = t; - e->as.literal = s; - e->next = NULL; - e->prev = NULL; - e->parent = NULL; - e->first_child = NULL; - e->last_child = NULL; - // These fields aren't used for inlines: - e->start_line = 0; - e->start_column = 0; - e->end_line = 0; - } +static CMARK_INLINE cmark_node *make_literal(cmark_mem *mem, cmark_node_type t, + cmark_chunk s) { + cmark_node *e = (cmark_node *)mem->calloc(1, sizeof(*e)); + cmark_strbuf_init(mem, &e->content, 0); + e->type = t; + e->as.literal = s; return e; } // Create an inline with no value. -static CMARK_INLINE cmark_node *make_simple(cmark_node_type t) { - cmark_node *e = (cmark_node *)calloc(1, sizeof(*e)); - if (e != NULL) { - e->type = t; - e->next = NULL; - e->prev = NULL; - e->parent = NULL; - e->first_child = NULL; - e->last_child = NULL; - // These fields aren't used for inlines: - e->start_line = 0; - e->start_column = 0; - e->end_line = 0; - } +static CMARK_INLINE cmark_node *make_simple(cmark_mem *mem, cmark_node_type t) { + cmark_node *e = (cmark_node *)mem->calloc(1, sizeof(*e)); + cmark_strbuf_init(mem, &e->content, 0); + e->type = t; return e; } // Like make_str, but parses entities. -static cmark_node *make_str_with_entities(cmark_chunk *content) { - cmark_strbuf unescaped = GH_BUF_INIT; +static cmark_node *make_str_with_entities(cmark_mem *mem, + cmark_chunk *content) { + cmark_strbuf unescaped = CMARK_BUF_INIT(mem); if (houdini_unescape_html(&unescaped, content->data, content->len)) { - return make_str(cmark_chunk_buf_detach(&unescaped)); + return make_str(mem, cmark_chunk_buf_detach(&unescaped)); } else { - return make_str(*content); + return make_str(mem, *content); } } // 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_chunk *src) { +static cmark_chunk chunk_clone(cmark_mem *mem, cmark_chunk *src) { cmark_chunk c; bufsize_t len = src->len; c.len = len; - c.data = (unsigned char *)malloc(len + 1); + c.data = (unsigned char *)mem->calloc(len + 1, 1); c.alloc = 1; memcpy(c.data, src->data, len); c.data[len] = '\0'; @@ -124,8 +116,9 @@ static cmark_chunk chunk_clone(cmark_chunk *src) { return c; } -static cmark_chunk cmark_clean_autolink(cmark_chunk *url, int is_email) { - cmark_strbuf buf = GH_BUF_INIT; +static cmark_chunk cmark_clean_autolink(cmark_mem *mem, cmark_chunk *url, + int is_email) { + cmark_strbuf buf = CMARK_BUF_INIT(mem); cmark_chunk_trim(url); @@ -141,22 +134,25 @@ static cmark_chunk cmark_clean_autolink(cmark_chunk *url, int is_email) { return cmark_chunk_buf_detach(&buf); } -static CMARK_INLINE cmark_node *make_autolink(cmark_chunk url, int is_email) { - cmark_node *link = make_simple(CMARK_NODE_LINK); - link->as.link.url = cmark_clean_autolink(&url, is_email); +static CMARK_INLINE cmark_node *make_autolink(cmark_mem *mem, cmark_chunk url, + int is_email) { + cmark_node *link = make_simple(mem, CMARK_NODE_LINK); + link->as.link.url = cmark_clean_autolink(mem, &url, is_email); link->as.link.title = cmark_chunk_literal(""); - cmark_node_append_child(link, make_str_with_entities(&url)); + cmark_node_append_child(link, make_str_with_entities(mem, &url)); return link; } -static void subject_from_buf(subject *e, cmark_strbuf *buffer, +static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer, cmark_reference_map *refmap) { + e->mem = mem; e->input.data = buffer->ptr; e->input.len = buffer->size; e->input.alloc = 0; e->pos = 0; e->refmap = refmap; e->last_delim = NULL; + e->last_bracket = NULL; } static CMARK_INLINE int isbacktick(int c) { return (c == '`'); } @@ -251,16 +247,16 @@ static cmark_node *handle_backticks(subject *subj) { if (endpos == 0) { // not found subj->pos = startpos; // rewind - return make_str(openticks); + return make_str(subj->mem, openticks); } else { - cmark_strbuf buf = GH_BUF_INIT; + cmark_strbuf buf = CMARK_BUF_INIT(subj->mem); cmark_strbuf_set(&buf, subj->input.data + startpos, endpos - startpos - openticks.len); cmark_strbuf_trim(&buf); cmark_strbuf_normalize_whitespace(&buf); - return make_code(cmark_chunk_buf_detach(&buf)); + return make_code(subj->mem, cmark_chunk_buf_detach(&buf)); } } @@ -360,12 +356,18 @@ static void remove_delimiter(subject *subj, delimiter *delim) { free(delim); } +static void pop_bracket(subject *subj) { + bracket *b; + if (subj->last_bracket == NULL) + return; + b = subj->last_bracket; + subj->last_bracket = subj->last_bracket->previous; + free(b); +} + static void push_delimiter(subject *subj, unsigned char c, bool can_open, bool can_close, cmark_node *inl_text) { - delimiter *delim = (delimiter *)malloc(sizeof(delimiter)); - if (delim == NULL) { - return; - } + delimiter *delim = (delimiter *)subj->mem->calloc(1, sizeof(delimiter)); delim->delim_char = c; delim->can_open = can_open; delim->can_close = can_close; @@ -375,11 +377,24 @@ static void push_delimiter(subject *subj, unsigned char c, bool can_open, if (delim->previous != NULL) { delim->previous->next = delim; } - delim->position = subj->pos; - delim->active = true; subj->last_delim = delim; } +static void push_bracket(subject *subj, bool image, cmark_node *inl_text) { + bracket *b = (bracket *)subj->mem->calloc(1, sizeof(bracket)); + if (subj->last_bracket != NULL) { + subj->last_bracket->bracket_after = true; + } + 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; + subj->last_bracket = b; +} + // Assumes the subject has a c at the current position. static cmark_node *handle_delim(subject *subj, unsigned char c, bool smart) { bufsize_t numdelims; @@ -398,7 +413,7 @@ static cmark_node *handle_delim(subject *subj, unsigned char c, bool smart) { contents = cmark_chunk_dup(&subj->input, subj->pos - numdelims, numdelims); } - inl_text = make_str(contents); + inl_text = make_str(subj->mem, contents); if ((can_open || can_close) && (!(c == '\'' || c == '"') || smart)) { push_delimiter(subj, c, can_open, can_close, inl_text); @@ -414,7 +429,7 @@ static cmark_node *handle_hyphen(subject *subj, bool smart) { advance(subj); if (!smart || peek_char(subj) != '-') { - return make_str(cmark_chunk_literal("-")); + return make_str(subj->mem, cmark_chunk_literal("-")); } while (smart && peek_char(subj) == '-') { @@ -425,7 +440,7 @@ static cmark_node *handle_hyphen(subject *subj, bool smart) { int en_count = 0; int em_count = 0; int i; - cmark_strbuf buf = GH_BUF_INIT; + cmark_strbuf buf = CMARK_BUF_INIT(subj->mem); if (numhyphens % 3 == 0) { // if divisible by 3, use all em dashes em_count = numhyphens / 3; @@ -447,7 +462,7 @@ static cmark_node *handle_hyphen(subject *subj, bool smart) { cmark_strbuf_puts(&buf, ENDASH); } - return make_str(cmark_chunk_buf_detach(&buf)); + return make_str(subj->mem, cmark_chunk_buf_detach(&buf)); } // Assumes we have a period at the current position. @@ -457,12 +472,12 @@ static cmark_node *handle_period(subject *subj, bool smart) { advance(subj); if (peek_char(subj) == '.') { advance(subj); - return make_str(cmark_chunk_literal(ELLIPSES)); + return make_str(subj->mem, cmark_chunk_literal(ELLIPSES)); } else { - return make_str(cmark_chunk_literal("..")); + return make_str(subj->mem, cmark_chunk_literal("..")); } } else { - return make_str(cmark_chunk_literal(".")); + return make_str(subj->mem, cmark_chunk_literal(".")); } } @@ -471,6 +486,7 @@ static void process_emphasis(subject *subj, delimiter *stack_bottom) { delimiter *opener; delimiter *old_closer; bool opener_found; + bool odd_match; delimiter *openers_bottom[128]; // initialize openers_bottom: @@ -486,15 +502,22 @@ static void process_emphasis(subject *subj, delimiter *stack_bottom) { // now move forward, looking for closers, and handling each while (closer != NULL) { - if (closer->can_close && - (closer->delim_char == '*' || closer->delim_char == '_' || - closer->delim_char == '"' || closer->delim_char == '\'')) { + if (closer->can_close) { // 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->delim_char]) { - if (opener->delim_char == closer->delim_char && opener->can_open) { + // 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->inl_text->as.literal.len + + closer->inl_text->as.literal.len) % + 3 == + 0); + if (opener->delim_char == closer->delim_char && opener->can_open && + !odd_match) { opener_found = true; break; } @@ -508,24 +531,28 @@ static void process_emphasis(subject *subj, delimiter *stack_bottom) { closer = closer->next; } } else if (closer->delim_char == '\'') { - cmark_chunk_free(&closer->inl_text->as.literal); + 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(&opener->inl_text->as.literal); + cmark_chunk_free(subj->mem, &opener->inl_text->as.literal); opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE); } closer = closer->next; } else if (closer->delim_char == '"') { - cmark_chunk_free(&closer->inl_text->as.literal); + 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(&opener->inl_text->as.literal); + cmark_chunk_free(subj->mem, &opener->inl_text->as.literal); opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE); } closer = closer->next; } - if (!opener_found) { - // set lower bound for future searches for openers: + if (!opener_found && !odd_match) { + // set lower bound for future searches for openers + // (we don't do this with 'odd_match' set because + // a ** that didn't match an earlier * might turn into + // an opener, and the * might be matched by something + // else. openers_bottom[old_closer->delim_char] = old_closer->previous; if (!old_closer->can_open) { // we can remove a closer that can't be an @@ -552,7 +579,7 @@ static delimiter *S_insert_emph(subject *subj, delimiter *opener, cmark_node *closer_inl = closer->inl_text; bufsize_t opener_num_chars = opener_inl->as.literal.len; bufsize_t closer_num_chars = closer_inl->as.literal.len; - cmark_node *tmp, *emph, *first_child, *last_child; + cmark_node *tmp, *tmpnext, *emph; // calculate the actual number of characters used from this closer if (closer_num_chars < 3 || opener_num_chars < 3) { @@ -576,37 +603,22 @@ static delimiter *S_insert_emph(subject *subj, delimiter *opener, delim = tmp_delim; } - first_child = opener_inl->next; - last_child = closer_inl->prev; + // create new emph or strong, and splice it in to our inlines + // between the opener and closer + emph = use_delims == 1 ? make_emph(subj->mem) : make_strong(subj->mem); + + tmp = opener_inl->next; + while (tmp && tmp != closer_inl) { + tmpnext = tmp->next; + cmark_node_append_child(emph, tmp); + tmp = tmpnext; + } + cmark_node_insert_after(opener_inl, emph); // if opener has 0 characters, remove it and its associated inline if (opener_num_chars == 0) { - // replace empty opener inline with emph - cmark_chunk_free(&(opener_inl->as.literal)); - emph = opener_inl; - emph->type = use_delims == 1 ? CMARK_NODE_EMPH : CMARK_NODE_STRONG; - // remove opener from list + cmark_node_free(opener_inl); remove_delimiter(subj, opener); - } else { - // create new emph or strong, and splice it in to our inlines - // between the opener and closer - emph = use_delims == 1 ? make_emph() : make_strong(); - emph->parent = opener_inl->parent; - emph->prev = opener_inl; - opener_inl->next = emph; - } - - // push children below emph - emph->next = closer_inl; - closer_inl->prev = emph; - emph->first_child = first_child; - emph->last_child = last_child; - - // fix children pointers - first_child->prev = NULL; - last_child->next = NULL; - for (tmp = first_child; tmp != NULL; tmp = tmp->next) { - tmp->parent = emph; } // if closer has 0 characters, remove it and its associated inline @@ -629,18 +641,18 @@ static cmark_node *handle_backslash(subject *subj) { if (cmark_ispunct( nextchar)) { // only ascii symbols and newline can be escaped advance(subj); - return make_str(cmark_chunk_dup(&subj->input, subj->pos - 1, 1)); + return make_str(subj->mem, cmark_chunk_dup(&subj->input, subj->pos - 1, 1)); } else if (!is_eof(subj) && skip_line_end(subj)) { - return make_linebreak(); + return make_linebreak(subj->mem); } else { - return make_str(cmark_chunk_literal("\\")); + return make_str(subj->mem, cmark_chunk_literal("\\")); } } // Parse an entity or a regular "&" string. // Assumes the subject has an '&' character at the current position. static cmark_node *handle_entity(subject *subj) { - cmark_strbuf ent = GH_BUF_INIT; + cmark_strbuf ent = CMARK_BUF_INIT(subj->mem); bufsize_t len; advance(subj); @@ -649,16 +661,16 @@ static cmark_node *handle_entity(subject *subj) { subj->input.len - subj->pos); if (len == 0) - return make_str(cmark_chunk_literal("&")); + return make_str(subj->mem, cmark_chunk_literal("&")); subj->pos += len; - return make_str(cmark_chunk_buf_detach(&ent)); + return make_str(subj->mem, cmark_chunk_buf_detach(&ent)); } // Clean a URL: remove surrounding whitespace and surrounding <>, // and remove \ that escape punctuation. -cmark_chunk cmark_clean_url(cmark_chunk *url) { - cmark_strbuf buf = GH_BUF_INIT; +cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url) { + cmark_strbuf buf = CMARK_BUF_INIT(mem); cmark_chunk_trim(url); @@ -677,8 +689,8 @@ cmark_chunk cmark_clean_url(cmark_chunk *url) { return cmark_chunk_buf_detach(&buf); } -cmark_chunk cmark_clean_title(cmark_chunk *title) { - cmark_strbuf buf = GH_BUF_INIT; +cmark_chunk cmark_clean_title(cmark_mem *mem, cmark_chunk *title) { + cmark_strbuf buf = CMARK_BUF_INIT(mem); unsigned char first, last; if (title->len == 0) { @@ -715,7 +727,7 @@ static cmark_node *handle_pointy_brace(subject *subj) { contents = cmark_chunk_dup(&subj->input, subj->pos, matchlen - 1); subj->pos += matchlen; - return make_autolink(contents, 0); + return make_autolink(subj->mem, contents, 0); } // next try to match an email autolink @@ -724,7 +736,7 @@ static cmark_node *handle_pointy_brace(subject *subj) { contents = cmark_chunk_dup(&subj->input, subj->pos, matchlen - 1); subj->pos += matchlen; - return make_autolink(contents, 1); + return make_autolink(subj->mem, contents, 1); } // finally, try to match an html tag @@ -732,11 +744,11 @@ static cmark_node *handle_pointy_brace(subject *subj) { if (matchlen > 0) { contents = cmark_chunk_dup(&subj->input, subj->pos - 1, matchlen + 1); subj->pos += matchlen; - return make_raw_html(contents); + return make_raw_html(subj->mem, contents); } // if nothing matches, just return the opening <: - return make_str(cmark_chunk_literal("<")); + return make_str(subj->mem, cmark_chunk_literal("<")); } // Parse a link label. Returns 1 if successful. @@ -786,48 +798,40 @@ static int link_label(subject *subj, cmark_chunk *raw_label) { } // Return a link, an image, or a literal close bracket. -static cmark_node *handle_close_bracket(subject *subj, cmark_node *parent) { +static cmark_node *handle_close_bracket(subject *subj) { bufsize_t initial_pos; bufsize_t starturl, endurl, starttitle, endtitle, endall; bufsize_t n; bufsize_t sps; - cmark_reference *ref; - bool is_image = false; + cmark_reference *ref = NULL; cmark_chunk url_chunk, title_chunk; cmark_chunk url, title; - delimiter *opener; - cmark_node *link_text; + bracket *opener; cmark_node *inl; cmark_chunk raw_label; int found_label; + cmark_node *tmp, *tmpnext; + bool is_image; advance(subj); // advance past ] initial_pos = subj->pos; - // look through list of delimiters for a [ or ! - opener = subj->last_delim; - while (opener) { - if (opener->delim_char == '[' || opener->delim_char == '!') { - break; - } - opener = opener->previous; - } + // get last [ or ![ + opener = subj->last_bracket; if (opener == NULL) { - return make_str(cmark_chunk_literal("]")); + return make_str(subj->mem, cmark_chunk_literal("]")); } if (!opener->active) { // take delimiter off stack - remove_delimiter(subj, opener); - return make_str(cmark_chunk_literal("]")); + pop_bracket(subj); + return make_str(subj->mem, cmark_chunk_literal("]")); } // If we got here, we matched a potential link/image text. - is_image = opener->delim_char == '!'; - link_text = opener->inl_text->next; - // Now we check to see if it's a link/image. + is_image = opener->image; // First, look for an inline link. if (peek_char(subj) == '(' && @@ -852,10 +856,10 @@ static cmark_node *handle_close_bracket(subject *subj, cmark_node *parent) { url_chunk = cmark_chunk_dup(&subj->input, starturl, endurl - starturl); title_chunk = cmark_chunk_dup(&subj->input, starttitle, endtitle - starttitle); - url = cmark_clean_url(&url_chunk); - title = cmark_clean_title(&title_chunk); - cmark_chunk_free(&url_chunk); - cmark_chunk_free(&title_chunk); + url = cmark_clean_url(subj->mem, &url_chunk); + title = cmark_clean_title(subj->mem, &title_chunk); + cmark_chunk_free(subj->mem, &url_chunk); + cmark_chunk_free(subj->mem, &title_chunk); goto match; } else { @@ -867,24 +871,27 @@ static cmark_node *handle_close_bracket(subject *subj, cmark_node *parent) { // skip spaces raw_label = cmark_chunk_literal(""); found_label = link_label(subj, &raw_label); - if (!found_label || raw_label.len == 0) { - cmark_chunk_free(&raw_label); - raw_label = cmark_chunk_dup(&subj->input, opener->position, - initial_pos - opener->position - 1); - } - if (!found_label) { // If we have a shortcut reference link, back up // to before the spacse we skipped. subj->pos = initial_pos; } - ref = cmark_reference_lookup(subj->refmap, &raw_label); - cmark_chunk_free(&raw_label); + if ((!found_label || raw_label.len == 0) && !opener->bracket_after) { + cmark_chunk_free(subj->mem, &raw_label); + raw_label = cmark_chunk_dup(&subj->input, opener->position, + initial_pos - opener->position - 1); + found_label = true; + } + + if (found_label) { + ref = cmark_reference_lookup(subj->refmap, &raw_label); + cmark_chunk_free(subj->mem, &raw_label); + } if (ref != NULL) { // found - url = chunk_clone(&ref->url); - title = chunk_clone(&ref->title); + url = chunk_clone(subj->mem, &ref->url); + title = chunk_clone(subj->mem, &ref->title); goto match; } else { goto noMatch; @@ -892,38 +899,36 @@ static cmark_node *handle_close_bracket(subject *subj, cmark_node *parent) { noMatch: // If we fall through to here, it means we didn't match a link: - remove_delimiter(subj, opener); // remove this opener from delimiter list + pop_bracket(subj); // remove this opener from delimiter list subj->pos = initial_pos; - return make_str(cmark_chunk_literal("]")); + return make_str(subj->mem, cmark_chunk_literal("]")); match: - inl = opener->inl_text; - inl->type = is_image ? CMARK_NODE_IMAGE : CMARK_NODE_LINK; - cmark_chunk_free(&inl->as.literal); - inl->first_child = link_text; - process_emphasis(subj, opener); + inl = make_simple(subj->mem, is_image ? CMARK_NODE_IMAGE : CMARK_NODE_LINK); inl->as.link.url = url; inl->as.link.title = title; - inl->next = NULL; - if (link_text) { - cmark_node *tmp; - link_text->prev = NULL; - for (tmp = link_text; tmp->next != NULL; tmp = tmp->next) { - tmp->parent = inl; - } - tmp->parent = inl; - inl->last_child = tmp; + cmark_node_insert_before(opener->inl_text, inl); + // Add link text: + tmp = opener->inl_text->next; + while (tmp) { + tmpnext = tmp->next; + cmark_node_append_child(inl, tmp); + tmp = tmpnext; } - parent->last_child = inl; + + // Free the bracket [: + cmark_node_free(opener->inl_text); + + process_emphasis(subj, opener->previous_delimiter); + 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 // inside links.) - remove_delimiter(subj, opener); if (!is_image) { - opener = subj->last_delim; + opener = subj->last_bracket; while (opener != NULL) { - if (opener->delim_char == '[') { + if (!opener->image) { if (!opener->active) { break; } else { @@ -952,9 +957,9 @@ static cmark_node *handle_newline(subject *subj) { skip_spaces(subj); if (nlpos > 1 && peek_at(subj, nlpos - 1) == ' ' && peek_at(subj, nlpos - 2) == ' ') { - return make_linebreak(); + return make_linebreak(subj->mem); } else { - return make_softbreak(); + return make_softbreak(subj->mem); } } @@ -1043,20 +1048,20 @@ static int parse_inline(subject *subj, cmark_node *parent, int options) { break; case '[': advance(subj); - new_inl = make_str(cmark_chunk_literal("[")); - push_delimiter(subj, '[', true, false, new_inl); + new_inl = make_str(subj->mem, cmark_chunk_literal("[")); + push_bracket(subj, false, new_inl); break; case ']': - new_inl = handle_close_bracket(subj, parent); + new_inl = handle_close_bracket(subj); break; case '!': advance(subj); if (peek_char(subj) == '[') { advance(subj); - new_inl = make_str(cmark_chunk_literal("![")); - push_delimiter(subj, '!', false, true, new_inl); + new_inl = make_str(subj->mem, cmark_chunk_literal("![")); + push_bracket(subj, true, new_inl); } else { - new_inl = make_str(cmark_chunk_literal("!")); + new_inl = make_str(subj->mem, cmark_chunk_literal("!")); } break; default: @@ -1069,7 +1074,7 @@ static int parse_inline(subject *subj, cmark_node *parent, int options) { cmark_chunk_rtrim(&contents); } - new_inl = make_str(contents); + new_inl = make_str(subj->mem, contents); } if (new_inl != NULL) { cmark_node_append_child(parent, new_inl); @@ -1079,16 +1084,20 @@ static int parse_inline(subject *subj, cmark_node *parent, int options) { } // Parse inlines from parent's string_content, adding as children of parent. -extern void cmark_parse_inlines(cmark_node *parent, cmark_reference_map *refmap, - int options) { +extern void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent, + cmark_reference_map *refmap, int options) { subject subj; - subject_from_buf(&subj, &parent->string_content, refmap); + subject_from_buf(mem, &subj, &parent->content, refmap); cmark_chunk_rtrim(&subj.input); while (!is_eof(&subj) && parse_inline(&subj, parent, options)) ; process_emphasis(&subj, NULL); + // free bracket stack + while (subj.last_bracket) { + pop_bracket(&subj); + } } // Parse zero or more space characters, including at most one newline. @@ -1103,7 +1112,7 @@ static void spnl(subject *subj) { // Modify refmap if a reference is encountered. // Return 0 if no reference found, otherwise position of subject // after reference is parsed. -bufsize_t cmark_parse_reference_inline(cmark_strbuf *input, +bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input, cmark_reference_map *refmap) { subject subj; @@ -1114,7 +1123,7 @@ bufsize_t cmark_parse_reference_inline(cmark_strbuf *input, bufsize_t matchlen = 0; bufsize_t beforetitle; - subject_from_buf(&subj, input, NULL); + subject_from_buf(mem, &subj, input, NULL); // parse label: if (!link_label(&subj, &lab) || lab.len == 0) diff --git a/inlines.h b/inlines.h index 7e7ee45..52be768 100644 --- a/inlines.h +++ b/inlines.h @@ -5,13 +5,13 @@ extern "C" { #endif -cmark_chunk cmark_clean_url(cmark_chunk *url); -cmark_chunk cmark_clean_title(cmark_chunk *title); +cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url); +cmark_chunk cmark_clean_title(cmark_mem *mem, cmark_chunk *title); -void cmark_parse_inlines(cmark_node *parent, cmark_reference_map *refmap, - int options); +void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent, + cmark_reference_map *refmap, int options); -bufsize_t cmark_parse_reference_inline(cmark_strbuf *input, +bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input, cmark_reference_map *refmap); #ifdef __cplusplus diff --git a/iterator.c b/iterator.c index 351b81f..24423a2 100644 --- a/iterator.c +++ b/iterator.c @@ -16,10 +16,9 @@ cmark_iter *cmark_iter_new(cmark_node *root) { if (root == NULL) { return NULL; } - cmark_iter *iter = (cmark_iter *)malloc(sizeof(cmark_iter)); - if (iter == NULL) { - return NULL; - } + cmark_mem *mem = root->content.mem; + cmark_iter *iter = (cmark_iter *)mem->calloc(1, sizeof(cmark_iter)); + iter->mem = mem; iter->root = root; iter->cur.ev_type = CMARK_EVENT_NONE; iter->cur.node = NULL; @@ -28,7 +27,7 @@ cmark_iter *cmark_iter_new(cmark_node *root) { return iter; } -void cmark_iter_free(cmark_iter *iter) { free(iter); } +void cmark_iter_free(cmark_iter *iter) { iter->mem->free(iter); } static bool S_is_leaf(cmark_node *node) { return ((1 << node->type) & S_leaf_mask) != 0; @@ -93,7 +92,7 @@ void cmark_consolidate_text_nodes(cmark_node *root) { return; } cmark_iter *iter = cmark_iter_new(root); - cmark_strbuf buf = GH_BUF_INIT; + cmark_strbuf buf = CMARK_BUF_INIT(iter->mem); cmark_event_type ev_type; cmark_node *cur, *tmp, *next; @@ -111,7 +110,7 @@ void cmark_consolidate_text_nodes(cmark_node *root) { cmark_node_free(tmp); tmp = next; } - cmark_chunk_free(&cur->as.literal); + cmark_chunk_free(iter->mem, &cur->as.literal); cur->as.literal = cmark_chunk_buf_detach(&buf); } } diff --git a/iterator.h b/iterator.h index 9c6bca6..fc745df 100644 --- a/iterator.h +++ b/iterator.h @@ -6,6 +6,7 @@ extern "C" { #endif #include "cmark.h" +#include "memory.h" typedef struct { cmark_event_type ev_type; @@ -13,6 +14,7 @@ typedef struct { } cmark_iter_state; struct cmark_iter { + cmark_mem *mem; cmark_node *root; cmark_iter_state cur; cmark_iter_state next; diff --git a/latex.c b/latex.c index cd2f6f3..7c3decd 100644 --- a/latex.c +++ b/latex.c @@ -2,7 +2,6 @@ #include #include #include -#include #include "config.h" #include "cmark.h" @@ -12,7 +11,6 @@ #include "scanners.h" #include "render.h" -#define safe_strlen(s) cmark_strbuf_safe_strlen(s) #define OUT(s, wrap, escaping) renderer->out(renderer, s, wrap, escaping) #define LIT(s) renderer->out(renderer, s, false, LITERAL) #define CR() renderer->cr(renderer) @@ -20,7 +18,7 @@ #define LIST_NUMBER_STRING_SIZE 20 static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape, - int32_t c, unsigned char nextc) { + int32_t c, unsigned char nextc) { if (escape == LITERAL) { cmark_render_code_point(renderer, c); return; @@ -169,13 +167,13 @@ static link_type get_link_type(cmark_node *node) { return INTERNAL_LINK; } - url_len = safe_strlen(url); + url_len = strlen(url); if (url_len == 0 || scan_scheme(&url_chunk, 0) == 0) { return NO_LINK; } const char *title = cmark_node_get_title(node); - title_len = safe_strlen(title); + title_len = strlen(title); // if it has a title, we can't treat it as an autolink: if (title_len == 0) { @@ -223,6 +221,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, cmark_list_type list_type; const char *roman_numerals[] = {"", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix", "x"}; + bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options); // avoid warning about unused parameter: (void)(options); @@ -334,7 +333,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, break; case CMARK_NODE_TEXT: - OUT(cmark_node_get_literal(node), true, NORMAL); + OUT(cmark_node_get_literal(node), allow_wrap, NORMAL); break; case CMARK_NODE_LINEBREAK: @@ -343,10 +342,13 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, break; case CMARK_NODE_SOFTBREAK: - if (renderer->width == 0) { + if (options & CMARK_OPT_HARDBREAKS) { + LIT("\\\\"); + CR(); + } else if (renderer->width == 0 && !(CMARK_OPT_NOBREAKS & options)) { CR(); } else { - OUT(" ", true, NORMAL); + OUT(" ", allow_wrap, NORMAL); } break; diff --git a/man.c b/man.c index 3d8bc20..1c76f68 100644 --- a/man.c +++ b/man.c @@ -75,6 +75,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, cmark_node *tmp; int list_number; bool entering = (ev_type == CMARK_EVENT_ENTER); + bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options); // avoid unused parameter error: (void)(options); @@ -173,7 +174,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, break; case CMARK_NODE_TEXT: - OUT(cmark_node_get_literal(node), true, NORMAL); + OUT(cmark_node_get_literal(node), allow_wrap, NORMAL); break; case CMARK_NODE_LINEBREAK: @@ -182,16 +183,19 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, break; case CMARK_NODE_SOFTBREAK: - if (renderer->width == 0) { + if (options & CMARK_OPT_HARDBREAKS) { + LIT(".PD 0\n.P\n.PD"); + CR(); + } else if (renderer->width == 0 && !(CMARK_OPT_NOBREAKS & options)) { CR(); } else { - OUT(" ", true, LITERAL); + OUT(" ", allow_wrap, LITERAL); } break; case CMARK_NODE_CODE: LIT("\\f[C]"); - OUT(cmark_node_get_literal(node), true, NORMAL); + OUT(cmark_node_get_literal(node), allow_wrap, NORMAL); LIT("\\f[]"); break; @@ -222,7 +226,7 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, case CMARK_NODE_LINK: if (!entering) { LIT(" ("); - OUT(cmark_node_get_url(node), true, URL); + OUT(cmark_node_get_url(node), allow_wrap, URL); LIT(")"); } break; diff --git a/node.c b/node.c index 00edbb1..e722acf 100644 --- a/node.c +++ b/node.c @@ -6,6 +6,8 @@ static void S_node_unlink(cmark_node *node); +#define NODE_MEM(node) cmark_node_mem(node) + static CMARK_INLINE bool S_is_block(cmark_node *node) { if (node == NULL) { return false; @@ -70,9 +72,10 @@ static bool S_can_contain(cmark_node *node, cmark_node *child) { return false; } -cmark_node *cmark_node_new(cmark_node_type type) { - cmark_node *node = (cmark_node *)calloc(1, sizeof(*node)); - node->type = type; +cmark_node *cmark_node_new_with_mem(cmark_node_type type, cmark_mem *mem) { + cmark_node *node = (cmark_node *)mem->calloc(1, sizeof(*node)); + cmark_strbuf_init(mem, &node->content, 0); + node->type = (uint16_t)type; switch (node->type) { case CMARK_NODE_HEADING: @@ -94,33 +97,36 @@ cmark_node *cmark_node_new(cmark_node_type type) { return node; } +cmark_node *cmark_node_new(cmark_node_type type) { + extern cmark_mem DEFAULT_MEM_ALLOCATOR; + return cmark_node_new_with_mem(type, &DEFAULT_MEM_ALLOCATOR); +} + // Free a cmark_node list and any children. static void S_free_nodes(cmark_node *e) { cmark_node *next; while (e != NULL) { - if (S_is_block(e)) { - cmark_strbuf_free(&e->string_content); - } + cmark_strbuf_free(&e->content); switch (e->type) { case CMARK_NODE_CODE_BLOCK: - cmark_chunk_free(&e->as.code.info); - cmark_chunk_free(&e->as.code.literal); + cmark_chunk_free(NODE_MEM(e), &e->as.code.info); + cmark_chunk_free(NODE_MEM(e), &e->as.code.literal); break; case CMARK_NODE_TEXT: case CMARK_NODE_HTML_INLINE: case CMARK_NODE_CODE: case CMARK_NODE_HTML_BLOCK: - cmark_chunk_free(&e->as.literal); + cmark_chunk_free(NODE_MEM(e), &e->as.literal); break; case CMARK_NODE_LINK: case CMARK_NODE_IMAGE: - cmark_chunk_free(&e->as.link.url); - cmark_chunk_free(&e->as.link.title); + cmark_chunk_free(NODE_MEM(e), &e->as.link.url); + cmark_chunk_free(NODE_MEM(e), &e->as.link.title); break; case CMARK_NODE_CUSTOM_BLOCK: case CMARK_NODE_CUSTOM_INLINE: - cmark_chunk_free(&e->as.custom.on_enter); - cmark_chunk_free(&e->as.custom.on_exit); + cmark_chunk_free(NODE_MEM(e), &e->as.custom.on_enter); + cmark_chunk_free(NODE_MEM(e), &e->as.custom.on_exit); break; default: break; @@ -131,7 +137,7 @@ static void S_free_nodes(cmark_node *e) { e->next = e->first_child; } next = e->next; - free(e); + NODE_MEM(e)->free(e); e = next; } } @@ -146,7 +152,7 @@ cmark_node_type cmark_node_get_type(cmark_node *node) { if (node == NULL) { return CMARK_NODE_NONE; } else { - return node->type; + return (cmark_node_type)node->type; } } @@ -269,10 +275,10 @@ const char *cmark_node_get_literal(cmark_node *node) { case CMARK_NODE_TEXT: case CMARK_NODE_HTML_INLINE: case CMARK_NODE_CODE: - return cmark_chunk_to_cstr(&node->as.literal); + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.literal); case CMARK_NODE_CODE_BLOCK: - return cmark_chunk_to_cstr(&node->as.code.literal); + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.code.literal); default: break; @@ -291,11 +297,11 @@ int cmark_node_set_literal(cmark_node *node, const char *content) { case CMARK_NODE_TEXT: case CMARK_NODE_HTML_INLINE: case CMARK_NODE_CODE: - cmark_chunk_set_cstr(&node->as.literal, content); + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.literal, content); return 1; case CMARK_NODE_CODE_BLOCK: - cmark_chunk_set_cstr(&node->as.code.literal, content); + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.code.literal, content); return 1; default: @@ -452,7 +458,7 @@ const char *cmark_node_get_fence_info(cmark_node *node) { } if (node->type == CMARK_NODE_CODE_BLOCK) { - return cmark_chunk_to_cstr(&node->as.code.info); + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.code.info); } else { return NULL; } @@ -464,7 +470,7 @@ int cmark_node_set_fence_info(cmark_node *node, const char *info) { } if (node->type == CMARK_NODE_CODE_BLOCK) { - cmark_chunk_set_cstr(&node->as.code.info, info); + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.code.info, info); return 1; } else { return 0; @@ -479,7 +485,7 @@ const char *cmark_node_get_url(cmark_node *node) { switch (node->type) { case CMARK_NODE_LINK: case CMARK_NODE_IMAGE: - return cmark_chunk_to_cstr(&node->as.link.url); + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.link.url); default: break; } @@ -495,7 +501,7 @@ int cmark_node_set_url(cmark_node *node, const char *url) { switch (node->type) { case CMARK_NODE_LINK: case CMARK_NODE_IMAGE: - cmark_chunk_set_cstr(&node->as.link.url, url); + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.link.url, url); return 1; default: break; @@ -512,7 +518,7 @@ const char *cmark_node_get_title(cmark_node *node) { switch (node->type) { case CMARK_NODE_LINK: case CMARK_NODE_IMAGE: - return cmark_chunk_to_cstr(&node->as.link.title); + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.link.title); default: break; } @@ -528,7 +534,7 @@ int cmark_node_set_title(cmark_node *node, const char *title) { switch (node->type) { case CMARK_NODE_LINK: case CMARK_NODE_IMAGE: - cmark_chunk_set_cstr(&node->as.link.title, title); + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.link.title, title); return 1; default: break; @@ -545,7 +551,7 @@ const char *cmark_node_get_on_enter(cmark_node *node) { switch (node->type) { case CMARK_NODE_CUSTOM_INLINE: case CMARK_NODE_CUSTOM_BLOCK: - return cmark_chunk_to_cstr(&node->as.custom.on_enter); + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.custom.on_enter); default: break; } @@ -561,7 +567,7 @@ int cmark_node_set_on_enter(cmark_node *node, const char *on_enter) { switch (node->type) { case CMARK_NODE_CUSTOM_INLINE: case CMARK_NODE_CUSTOM_BLOCK: - cmark_chunk_set_cstr(&node->as.custom.on_enter, on_enter); + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.custom.on_enter, on_enter); return 1; default: break; @@ -578,7 +584,7 @@ const char *cmark_node_get_on_exit(cmark_node *node) { switch (node->type) { case CMARK_NODE_CUSTOM_INLINE: case CMARK_NODE_CUSTOM_BLOCK: - return cmark_chunk_to_cstr(&node->as.custom.on_exit); + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.custom.on_exit); default: break; } @@ -594,7 +600,7 @@ int cmark_node_set_on_exit(cmark_node *node, const char *on_exit) { switch (node->type) { case CMARK_NODE_CUSTOM_INLINE: case CMARK_NODE_CUSTOM_BLOCK: - cmark_chunk_set_cstr(&node->as.custom.on_exit, on_exit); + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.custom.on_exit, on_exit); return 1; default: break; diff --git a/node.h b/node.h index 397d8e3..65d857f 100644 --- a/node.h +++ b/node.h @@ -25,11 +25,10 @@ typedef struct { typedef struct { cmark_chunk info; cmark_chunk literal; - int fence_length; - /* fence_offset must be 0-3, so we can use int8_t */ - int8_t fence_offset; + uint8_t fence_length; + uint8_t fence_offset; unsigned char fence_char; - bool fenced; + int8_t fenced; } cmark_code; typedef struct { @@ -47,7 +46,14 @@ typedef struct { cmark_chunk on_exit; } cmark_custom; +enum cmark_node__internal_flags { + CMARK_NODE__OPEN = (1 << 0), + CMARK_NODE__LAST_LINE_BLANK = (1 << 1), +}; + struct cmark_node { + cmark_strbuf content; + struct cmark_node *next; struct cmark_node *prev; struct cmark_node *parent; @@ -60,13 +66,8 @@ struct cmark_node { int start_column; int end_line; int end_column; - - cmark_node_type type; - - bool open; - bool last_line_blank; - - cmark_strbuf string_content; + uint16_t type; + uint16_t flags; union { cmark_chunk literal; @@ -79,6 +80,9 @@ struct cmark_node { } as; }; +static CMARK_INLINE cmark_mem *cmark_node_mem(cmark_node *node) { + return node->content.mem; +} CMARK_EXPORT int cmark_node_check(cmark_node *node, FILE *out); #ifdef __cplusplus diff --git a/parser.h b/parser.h index ab21d0f..0c5033b 100644 --- a/parser.h +++ b/parser.h @@ -4,6 +4,7 @@ #include #include "node.h" #include "buffer.h" +#include "memory.h" #ifdef __cplusplus extern "C" { @@ -12,6 +13,7 @@ extern "C" { #define MAX_LINK_LABEL_LENGTH 1000 struct cmark_parser { + struct cmark_mem *mem; struct cmark_reference_map *refmap; struct cmark_node *root; struct cmark_node *current; @@ -23,9 +25,9 @@ struct cmark_parser { int indent; bool blank; bool partially_consumed_tab; - cmark_strbuf *curline; + cmark_strbuf curline; bufsize_t last_line_length; - cmark_strbuf *linebuf; + cmark_strbuf linebuf; int options; bool last_buffer_ended_with_cr; }; diff --git a/references.c b/references.c index 6cb2b20..e141213 100644 --- a/references.c +++ b/references.c @@ -14,12 +14,13 @@ static unsigned int refhash(const unsigned char *link_ref) { return hash; } -static void reference_free(cmark_reference *ref) { +static void reference_free(cmark_reference_map *map, cmark_reference *ref) { + cmark_mem *mem = map->mem; if (ref != NULL) { - free(ref->label); - cmark_chunk_free(&ref->url); - cmark_chunk_free(&ref->title); - free(ref); + mem->free(ref->label); + cmark_chunk_free(mem, &ref->url); + cmark_chunk_free(mem, &ref->title); + mem->free(ref); } } @@ -27,8 +28,8 @@ static void reference_free(cmark_reference *ref) { // remove leading/trailing whitespace, case fold // Return NULL if the reference name is actually empty (i.e. composed // solely from whitespace) -static unsigned char *normalize_reference(cmark_chunk *ref) { - cmark_strbuf normalized = GH_BUF_INIT; +static unsigned char *normalize_reference(cmark_mem *mem, cmark_chunk *ref) { + cmark_strbuf normalized = CMARK_BUF_INIT(mem); unsigned char *result; if (ref == NULL) @@ -57,7 +58,7 @@ static void add_reference(cmark_reference_map *map, cmark_reference *ref) { while (t) { if (t->hash == ref->hash && !strcmp((char *)t->label, (char *)ref->label)) { - reference_free(ref); + reference_free(map, ref); return; } @@ -70,22 +71,20 @@ static void add_reference(cmark_reference_map *map, cmark_reference *ref) { void cmark_reference_create(cmark_reference_map *map, cmark_chunk *label, cmark_chunk *url, cmark_chunk *title) { cmark_reference *ref; - unsigned char *reflabel = normalize_reference(label); + unsigned char *reflabel = normalize_reference(map->mem, label); /* empty reference name, or composed from only whitespace */ if (reflabel == NULL) return; - ref = (cmark_reference *)calloc(1, sizeof(*ref)); - if (ref != NULL) { - ref->label = reflabel; - ref->hash = refhash(ref->label); - ref->url = cmark_clean_url(url); - ref->title = cmark_clean_title(title); - ref->next = NULL; + ref = (cmark_reference *)map->mem->calloc(1, sizeof(*ref)); + ref->label = reflabel; + ref->hash = refhash(ref->label); + ref->url = cmark_clean_url(map->mem, url); + ref->title = cmark_clean_title(map->mem, title); + ref->next = NULL; - add_reference(map, ref); - } + add_reference(map, ref); } // Returns reference if refmap contains a reference with matching @@ -96,13 +95,13 @@ cmark_reference *cmark_reference_lookup(cmark_reference_map *map, unsigned char *norm; unsigned int hash; - if (label->len > MAX_LINK_LABEL_LENGTH) + if (label->len < 1 || label->len > MAX_LINK_LABEL_LENGTH) return NULL; if (map == NULL) return NULL; - norm = normalize_reference(label); + norm = normalize_reference(map->mem, label); if (norm == NULL) return NULL; @@ -131,7 +130,7 @@ void cmark_reference_map_free(cmark_reference_map *map) { while (ref) { next = ref->next; - reference_free(ref); + reference_free(map, ref); ref = next; } } @@ -139,6 +138,9 @@ void cmark_reference_map_free(cmark_reference_map *map) { free(map); } -cmark_reference_map *cmark_reference_map_new(void) { - return (cmark_reference_map *)calloc(1, sizeof(cmark_reference_map)); +cmark_reference_map *cmark_reference_map_new(cmark_mem *mem) { + cmark_reference_map *map = + (cmark_reference_map *)mem->calloc(1, sizeof(cmark_reference_map)); + map->mem = mem; + return map; } diff --git a/references.h b/references.h index 310ff9f..f075bbb 100644 --- a/references.h +++ b/references.h @@ -1,6 +1,7 @@ #ifndef CMARK_REFERENCES_H #define CMARK_REFERENCES_H +#include "memory.h" #include "chunk.h" #ifdef __cplusplus @@ -20,12 +21,13 @@ struct cmark_reference { typedef struct cmark_reference cmark_reference; struct cmark_reference_map { + cmark_mem *mem; cmark_reference *table[REFMAP_SIZE]; }; typedef struct cmark_reference_map cmark_reference_map; -cmark_reference_map *cmark_reference_map_new(void); +cmark_reference_map *cmark_reference_map_new(cmark_mem *mem); void cmark_reference_map_free(cmark_reference_map *map); cmark_reference *cmark_reference_lookup(cmark_reference_map *map, cmark_chunk *label); diff --git a/render.c b/render.c index 50f03e6..20dca5f 100644 --- a/render.c +++ b/render.c @@ -4,6 +4,7 @@ #include "cmark.h" #include "utf8.h" #include "render.h" +#include "node.h" static CMARK_INLINE void S_cr(cmark_renderer *renderer) { if (renderer->need_cr < 1) { @@ -19,7 +20,7 @@ static CMARK_INLINE void S_blankline(cmark_renderer *renderer) { static void S_out(cmark_renderer *renderer, const char *source, bool wrap, cmark_escaping escape) { - int length = cmark_strbuf_safe_strlen(source); + int length = strlen(source); unsigned char nextc; int32_t c; int i = 0; @@ -28,7 +29,7 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, cmark_chunk remainder = cmark_chunk_literal(""); int k = renderer->buffer->size - 1; - wrap = wrap && !renderer->no_wrap; + wrap = wrap && !renderer->no_linebreaks; if (renderer->in_tight_list_item && renderer->need_cr > 1) { renderer->need_cr = 1; @@ -108,8 +109,9 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, !renderer->begin_line && renderer->last_breakable > 0) { // copy from last_breakable to remainder - cmark_chunk_set_cstr(&remainder, (char *)renderer->buffer->ptr + - renderer->last_breakable + 1); + cmark_chunk_set_cstr(renderer->mem, &remainder, + (char *)renderer->buffer->ptr + + renderer->last_breakable + 1); // truncate at last_breakable cmark_strbuf_truncate(renderer->buffer, renderer->last_breakable); // add newline, prefix, and remainder @@ -118,7 +120,7 @@ static void S_out(cmark_renderer *renderer, const char *source, bool wrap, renderer->prefix->size); cmark_strbuf_put(renderer->buffer, remainder.data, remainder.len); renderer->column = renderer->prefix->size + remainder.len; - cmark_chunk_free(&remainder); + cmark_chunk_free(renderer->mem, &remainder); renderer->last_breakable = 0; renderer->begin_line = false; renderer->begin_content = false; @@ -146,16 +148,17 @@ char *cmark_render(cmark_node *root, int options, int width, int (*render_node)(cmark_renderer *renderer, cmark_node *node, cmark_event_type ev_type, int options)) { - cmark_strbuf pref = GH_BUF_INIT; - cmark_strbuf buf = GH_BUF_INIT; + cmark_mem *mem = cmark_node_mem(root); + cmark_strbuf pref = CMARK_BUF_INIT(mem); + cmark_strbuf buf = CMARK_BUF_INIT(mem); cmark_node *cur; cmark_event_type ev_type; char *result; cmark_iter *iter = cmark_iter_new(root); - cmark_renderer renderer = {&buf, &pref, 0, width, 0, - 0, true, true, false, false, - outc, S_cr, S_blankline, S_out}; + cmark_renderer renderer = {mem, &buf, &pref, 0, width, + 0, 0, true, true, false, + false, outc, S_cr, S_blankline, S_out}; while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { cur = cmark_iter_get_node(iter); diff --git a/render.h b/render.h index 479936a..35eb0a6 100644 --- a/render.h +++ b/render.h @@ -8,10 +8,12 @@ extern "C" { #include #include "buffer.h" #include "chunk.h" +#include "memory.h" typedef enum { LITERAL, NORMAL, TITLE, URL } cmark_escaping; struct cmark_renderer { + cmark_mem *mem; cmark_strbuf *buffer; cmark_strbuf *prefix; int column; @@ -20,7 +22,7 @@ struct cmark_renderer { bufsize_t last_breakable; bool begin_line; bool begin_content; - bool no_wrap; + bool no_linebreaks; bool in_tight_list_item; void (*outc)(struct cmark_renderer *, cmark_escaping, int32_t, unsigned char); void (*cr)(struct cmark_renderer *); diff --git a/scanners.c b/scanners.c index 712093c..709a74e 100644 --- a/scanners.c +++ b/scanners.c @@ -8258,37 +8258,45 @@ bufsize_t _scan_html_tag(const unsigned char *p) { unsigned char yych; static const unsigned char yybm[] = { /* table 1 .. 8: 0 */ - 0, 230, 230, 230, 230, 230, 230, 230, 230, 199, 199, 199, 199, 199, 230, + 0, 230, 230, 230, 230, 230, 230, 230, 230, 199, 199, 199, 199, 199, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 199, 230, 70, 230, 230, 230, 230, 134, 230, 230, 230, - 230, 230, 254, 246, 230, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 246, 230, 198, 198, 196, 230, 230, 254, 254, 254, 254, 254, 254, + 230, 230, 230, 230, 199, 230, 70, 230, 230, 230, 230, 134, 230, 230, + 230, 230, 230, 254, 246, 230, 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 246, 230, 198, 198, 196, 230, 230, 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, 230, 230, 226, 230, 246, 198, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 230, 230, 226, 230, 246, 198, 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, 230, 230, 230, 230, - 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 230, 230, 230, + 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 32, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 128, 160, 224, 224, 224, 224, 224, 224, + 160, 160, 160, 32, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 128, 160, 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, 160, 160, 160, 160, 160, 160, 160, 160, + 224, 224, 224, 224, 224, 224, 224, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 160, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, }; yych = *(marker = p); if (yych <= '`') { @@ -18244,18 +18252,18 @@ bufsize_t _scan_atx_heading_start(const unsigned char *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, 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, + 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 = *(marker = p); if (yych <= 0xDF) { @@ -18293,7 +18301,9 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) { goto yy1170; } if (yych <= '\f') { - if (yych == '\n') + if (yych <= 0x08) + goto yy1157; + if (yych <= '\n') goto yy1168; goto yy1157; } else { @@ -18373,7 +18383,9 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) { goto yy1170; } if (yych <= '\f') { - if (yych == '\n') + if (yych <= 0x08) + goto yy1161; + if (yych <= '\n') goto yy1168; goto yy1161; } else { @@ -18387,7 +18399,9 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) { goto yy1170; } if (yych <= '\f') { - if (yych == '\n') + if (yych <= 0x08) + goto yy1161; + if (yych <= '\n') goto yy1168; goto yy1161; } else { @@ -18401,7 +18415,9 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) { goto yy1170; } if (yych <= '\f') { - if (yych == '\n') + if (yych <= 0x08) + goto yy1161; + if (yych <= '\n') goto yy1168; goto yy1161; } else { @@ -18415,7 +18431,9 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) { goto yy1170; } if (yych <= '\f') { - if (yych == '\n') + if (yych <= 0x08) + goto yy1161; + if (yych <= '\n') goto yy1168; goto yy1161; } else { @@ -18428,7 +18446,9 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) { if (yybm[0 + (yych = *p)] & 128) { goto yy1170; } - if (yych == '\n') + if (yych <= 0x08) + goto yy1161; + if (yych <= '\n') goto yy1168; if (yych == '\r') goto yy1168; @@ -18656,18 +18676,19 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { { unsigned char yych; static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, - 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 128, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; yych = *(marker = p); if (yych <= 0x7F) { @@ -18716,21 +18737,33 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1205 : { return 0; } yy1206: yych = *(marker = ++p); - if (yych == ' ') - goto yy1242; - if (yych == '*') - goto yy1244; - goto yy1205; + if (yych <= 0x1F) { + if (yych == '\t') + goto yy1238; + goto yy1205; + } else { + if (yych <= ' ') + goto yy1238; + if (yych == '*') + goto yy1240; + goto yy1205; + } yy1207: yych = *(marker = ++p); - if (yych == ' ') - goto yy1230; - if (yych == '_') - goto yy1232; - goto yy1205; + if (yych <= 0x1F) { + if (yych == '\t') + goto yy1228; + goto yy1205; + } else { + if (yych <= ' ') + goto yy1228; + if (yych == '_') + goto yy1230; + goto yy1205; + } yy1208: yych = *(marker = ++p); - if (yybm[0 + yych] & 8) { + if (yybm[0 + yych] & 16) { goto yy1218; } if (yych == '-') @@ -18793,7 +18826,7 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1218: ++p; yych = *p; - if (yybm[0 + yych] & 8) { + if (yybm[0 + yych] & 16) { goto yy1218; } if (yych != '-') @@ -18801,10 +18834,16 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { yy1220: ++p; yych = *p; - if (yych == ' ') - goto yy1220; - if (yych != '-') + if (yych <= 0x1F) { + if (yych == '\t') + goto yy1220; goto yy1211; + } else { + if (yych <= ' ') + goto yy1220; + if (yych != '-') + goto yy1211; + } yy1222: ++p; yych = *p; @@ -18812,12 +18851,12 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { if (yych <= '\t') { if (yych <= 0x08) goto yy1211; + goto yy1222; } else { if (yych <= '\n') - goto yy1226; + goto yy1224; if (yych <= '\f') goto yy1211; - goto yy1226; } } else { if (yych <= ' ') { @@ -18826,194 +18865,160 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { goto yy1222; } else { if (yych == '-') - goto yy1228; + goto yy1226; goto yy1211; } } yy1224: + ++p; + { return (bufsize_t)(p - start); } + yy1226: ++p; yych = *p; - if (yybm[0 + yych] & 16) { - goto yy1224; + if (yybm[0 + yych] & 32) { + goto yy1226; } if (yych <= 0x08) goto yy1211; if (yych <= '\n') - goto yy1226; - if (yych != '\r') - goto yy1211; - yy1226: - ++p; - { return (bufsize_t)(p - start); } + goto yy1224; + if (yych == '\r') + goto yy1224; + goto yy1211; yy1228: ++p; yych = *p; - if (yybm[0 + yych] & 32) { - goto yy1228; - } - if (yych <= '\n') { - if (yych <= 0x08) - goto yy1211; - if (yych <= '\t') - goto yy1224; - goto yy1226; - } else { - if (yych == '\r') - goto yy1226; + if (yych <= 0x1F) { + if (yych == '\t') + goto yy1228; goto yy1211; + } else { + if (yych <= ' ') + goto yy1228; + if (yych != '_') + goto yy1211; } yy1230: ++p; yych = *p; - if (yych == ' ') - goto yy1230; - if (yych != '_') + if (yych <= 0x1F) { + if (yych == '\t') + goto yy1230; goto yy1211; + } else { + if (yych <= ' ') + goto yy1230; + if (yych != '_') + goto yy1211; + } yy1232: - ++p; - yych = *p; - if (yych == ' ') - goto yy1232; - if (yych != '_') - goto yy1211; - yy1234: ++p; yych = *p; if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08) goto yy1211; + goto yy1232; } else { if (yych <= '\n') - goto yy1238; + goto yy1234; if (yych <= '\f') goto yy1211; - goto yy1238; } } else { if (yych <= ' ') { if (yych <= 0x1F) goto yy1211; - goto yy1234; + goto yy1232; } else { if (yych == '_') - goto yy1240; + goto yy1236; goto yy1211; } } - yy1236: - ++p; - yych = *p; - if (yych <= '\f') { - if (yych <= 0x08) - goto yy1211; - if (yych <= '\t') - goto yy1236; - if (yych >= '\v') - goto yy1211; - } else { - if (yych <= '\r') - goto yy1238; - if (yych == ' ') - goto yy1236; - goto yy1211; - } - yy1238: + yy1234: ++p; { return (bufsize_t)(p - start); } - yy1240: + yy1236: ++p; yych = *p; if (yybm[0 + yych] & 64) { - goto yy1240; + goto yy1236; } - if (yych <= '\n') { - if (yych <= 0x08) - goto yy1211; - if (yych <= '\t') - goto yy1236; - goto yy1238; - } else { - if (yych == '\r') - goto yy1238; + if (yych <= 0x08) goto yy1211; - } - yy1242: + if (yych <= '\n') + goto yy1234; + if (yych == '\r') + goto yy1234; + goto yy1211; + yy1238: ++p; yych = *p; - if (yych == ' ') - goto yy1242; - if (yych != '*') + if (yych <= 0x1F) { + if (yych == '\t') + goto yy1238; goto yy1211; - yy1244: + } else { + if (yych <= ' ') + goto yy1238; + if (yych != '*') + goto yy1211; + } + yy1240: ++p; yych = *p; - if (yych == ' ') - goto yy1244; - if (yych != '*') + if (yych <= 0x1F) { + if (yych == '\t') + goto yy1240; goto yy1211; - yy1246: + } else { + if (yych <= ' ') + goto yy1240; + if (yych != '*') + goto yy1211; + } + yy1242: ++p; yych = *p; if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08) goto yy1211; + goto yy1242; } else { if (yych <= '\n') - goto yy1250; + goto yy1244; if (yych <= '\f') goto yy1211; - goto yy1250; } } else { if (yych <= ' ') { if (yych <= 0x1F) goto yy1211; - goto yy1246; + goto yy1242; } else { if (yych == '*') - goto yy1252; + goto yy1246; goto yy1211; } } - yy1248: - ++p; - yych = *p; - if (yych <= '\f') { - if (yych <= 0x08) - goto yy1211; - if (yych <= '\t') - goto yy1248; - if (yych >= '\v') - goto yy1211; - } else { - if (yych <= '\r') - goto yy1250; - if (yych == ' ') - goto yy1248; - goto yy1211; - } - yy1250: + yy1244: ++p; { return (bufsize_t)(p - start); } - yy1252: + yy1246: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1252; + goto yy1246; } - if (yych <= '\n') { - if (yych <= 0x08) - goto yy1211; - if (yych <= '\t') - goto yy1248; - goto yy1250; - } else { - if (yych == '\r') - goto yy1250; + if (yych <= 0x08) goto yy1211; - } + if (yych <= '\n') + goto yy1244; + if (yych == '\r') + goto yy1244; + goto yy1211; } } @@ -19049,374 +19054,374 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) { if (yych <= 0xC1) { if (yych <= '`') { if (yych == '\n') - goto yy1256; + goto yy1250; if (yych <= '_') - goto yy1259; - goto yy1257; + goto yy1253; + goto yy1251; } else { if (yych == '~') - goto yy1258; + goto yy1252; if (yych <= 0x7F) - goto yy1259; + goto yy1253; } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy1260; + goto yy1254; if (yych <= 0xE0) - goto yy1262; + goto yy1256; if (yych <= 0xEC) - goto yy1263; - goto yy1267; + goto yy1257; + goto yy1261; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy1263; - goto yy1264; + goto yy1257; + goto yy1258; } else { if (yych <= 0xF3) - goto yy1265; + goto yy1259; if (yych <= 0xF4) - goto yy1266; + goto yy1260; } } } - yy1256 : { return 0; } - yy1257: + yy1250 : { return 0; } + yy1251: yych = *(marker = ++p); if (yych == '`') - goto yy1282; - goto yy1256; - yy1258: + goto yy1276; + goto yy1250; + yy1252: yych = *(marker = ++p); if (yych == '~') - goto yy1268; - goto yy1256; - yy1259: + goto yy1262; + goto yy1250; + yy1253: yych = *++p; - goto yy1256; - yy1260: + goto yy1250; + yy1254: yych = *++p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1259; - yy1261: + goto yy1253; + yy1255: p = marker; - goto yy1256; - yy1262: + goto yy1250; + yy1256: yych = *++p; if (yych <= 0x9F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1260; - goto yy1261; - yy1263: + goto yy1254; + goto yy1255; + yy1257: yych = *++p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1260; - goto yy1261; - yy1264: + goto yy1254; + goto yy1255; + yy1258: yych = *++p; if (yych <= 0x8F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1263; - goto yy1261; - yy1265: + goto yy1257; + goto yy1255; + yy1259: yych = *++p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1263; - goto yy1261; - yy1266: + goto yy1257; + goto yy1255; + yy1260: yych = *++p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0x8F) - goto yy1263; - goto yy1261; - yy1267: + goto yy1257; + goto yy1255; + yy1261: yych = *++p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0x9F) - goto yy1260; - goto yy1261; - yy1268: + goto yy1254; + goto yy1255; + yy1262: yych = *++p; if (yybm[0 + yych] & 16) { - goto yy1269; + goto yy1263; } - goto yy1261; - yy1269: + goto yy1255; + yy1263: ++p; yych = *p; marker = p; if (yybm[0 + yych] & 32) { - goto yy1271; + goto yy1265; } if (yych <= 0xE0) { if (yych <= '~') { if (yych <= 0x00) - goto yy1261; + goto yy1255; if (yych <= '\r') - goto yy1280; - goto yy1269; + goto yy1274; + goto yy1263; } else { if (yych <= 0xC1) - goto yy1261; + goto yy1255; if (yych <= 0xDF) - goto yy1273; - goto yy1274; + goto yy1267; + goto yy1268; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1279; - goto yy1275; + goto yy1273; + goto yy1269; } else { if (yych <= 0xF0) - goto yy1276; + goto yy1270; if (yych <= 0xF3) - goto yy1277; + goto yy1271; if (yych <= 0xF4) - goto yy1278; - goto yy1261; + goto yy1272; + goto yy1255; } } - yy1271: + yy1265: ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy1271; + goto yy1265; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy1261; + goto yy1255; if (yych <= '\r') - goto yy1280; - goto yy1261; + goto yy1274; + goto yy1255; } else { if (yych <= 0xDF) - goto yy1273; + goto yy1267; if (yych <= 0xE0) - goto yy1274; - goto yy1275; + goto yy1268; + goto yy1269; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy1279; + goto yy1273; if (yych <= 0xEF) - goto yy1275; - goto yy1276; + goto yy1269; + goto yy1270; } else { if (yych <= 0xF3) - goto yy1277; + goto yy1271; if (yych <= 0xF4) - goto yy1278; - goto yy1261; + goto yy1272; + goto yy1255; } } - yy1273: + yy1267: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1271; - goto yy1261; - yy1274: + goto yy1265; + goto yy1255; + yy1268: ++p; yych = *p; if (yych <= 0x9F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1273; - goto yy1261; - yy1275: + goto yy1267; + goto yy1255; + yy1269: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1273; - goto yy1261; - yy1276: + goto yy1267; + goto yy1255; + yy1270: ++p; yych = *p; if (yych <= 0x8F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1275; - goto yy1261; - yy1277: + goto yy1269; + goto yy1255; + yy1271: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1275; - goto yy1261; - yy1278: + goto yy1269; + goto yy1255; + yy1272: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0x8F) - goto yy1275; - goto yy1261; - yy1279: + goto yy1269; + goto yy1255; + yy1273: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0x9F) - goto yy1273; - goto yy1261; - yy1280: + goto yy1267; + goto yy1255; + yy1274: ++p; p = marker; { return (bufsize_t)(p - start); } - yy1282: + yy1276: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy1283; + goto yy1277; } - goto yy1261; - yy1283: + goto yy1255; + yy1277: ++p; yych = *p; marker = p; if (yybm[0 + yych] & 128) { - goto yy1285; + goto yy1279; } if (yych <= 0xE0) { if (yych <= '`') { if (yych <= 0x00) - goto yy1261; + goto yy1255; if (yych <= '\r') - goto yy1294; - goto yy1283; + goto yy1288; + goto yy1277; } else { if (yych <= 0xC1) - goto yy1261; + goto yy1255; if (yych <= 0xDF) - goto yy1287; - goto yy1288; + goto yy1281; + goto yy1282; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1293; - goto yy1289; + goto yy1287; + goto yy1283; } else { if (yych <= 0xF0) - goto yy1290; + goto yy1284; if (yych <= 0xF3) - goto yy1291; + goto yy1285; if (yych <= 0xF4) - goto yy1292; - goto yy1261; + goto yy1286; + goto yy1255; } } - yy1285: + yy1279: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1285; + goto yy1279; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy1261; + goto yy1255; if (yych <= '\r') - goto yy1294; - goto yy1261; + goto yy1288; + goto yy1255; } else { if (yych <= 0xDF) - goto yy1287; + goto yy1281; if (yych <= 0xE0) - goto yy1288; - goto yy1289; + goto yy1282; + goto yy1283; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy1293; + goto yy1287; if (yych <= 0xEF) - goto yy1289; - goto yy1290; + goto yy1283; + goto yy1284; } else { if (yych <= 0xF3) - goto yy1291; + goto yy1285; if (yych <= 0xF4) - goto yy1292; - goto yy1261; + goto yy1286; + goto yy1255; } } - yy1287: + yy1281: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1285; - goto yy1261; - yy1288: + goto yy1279; + goto yy1255; + yy1282: ++p; yych = *p; if (yych <= 0x9F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1287; - goto yy1261; - yy1289: + goto yy1281; + goto yy1255; + yy1283: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1287; - goto yy1261; - yy1290: + goto yy1281; + goto yy1255; + yy1284: ++p; yych = *p; if (yych <= 0x8F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1289; - goto yy1261; - yy1291: + goto yy1283; + goto yy1255; + yy1285: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0xBF) - goto yy1289; - goto yy1261; - yy1292: + goto yy1283; + goto yy1255; + yy1286: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0x8F) - goto yy1289; - goto yy1261; - yy1293: + goto yy1283; + goto yy1255; + yy1287: ++p; yych = *p; if (yych <= 0x7F) - goto yy1261; + goto yy1255; if (yych <= 0x9F) - goto yy1287; - goto yy1261; - yy1294: + goto yy1281; + goto yy1255; + yy1288: ++p; p = marker; { return (bufsize_t)(p - start); } @@ -19448,190 +19453,190 @@ bufsize_t _scan_close_code_fence(const unsigned char *p) { if (yych <= 0xC1) { if (yych <= '`') { if (yych == '\n') - goto yy1298; + goto yy1292; if (yych <= '_') - goto yy1301; - goto yy1299; + goto yy1295; + goto yy1293; } else { if (yych == '~') - goto yy1300; + goto yy1294; if (yych <= 0x7F) - goto yy1301; + goto yy1295; } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy1302; + goto yy1296; if (yych <= 0xE0) - goto yy1304; + goto yy1298; if (yych <= 0xEC) - goto yy1305; - goto yy1309; + goto yy1299; + goto yy1303; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy1305; - goto yy1306; + goto yy1299; + goto yy1300; } else { if (yych <= 0xF3) - goto yy1307; + goto yy1301; if (yych <= 0xF4) - goto yy1308; + goto yy1302; } } } - yy1298 : { return 0; } - yy1299: + yy1292 : { return 0; } + yy1293: yych = *(marker = ++p); if (yych == '`') - goto yy1317; - goto yy1298; - yy1300: + goto yy1311; + goto yy1292; + yy1294: yych = *(marker = ++p); if (yych == '~') - goto yy1310; - goto yy1298; - yy1301: + goto yy1304; + goto yy1292; + yy1295: yych = *++p; - goto yy1298; - yy1302: + goto yy1292; + yy1296: yych = *++p; if (yych <= 0x7F) - goto yy1303; + goto yy1297; if (yych <= 0xBF) - goto yy1301; - yy1303: + goto yy1295; + yy1297: p = marker; - goto yy1298; - yy1304: + goto yy1292; + yy1298: yych = *++p; if (yych <= 0x9F) - goto yy1303; + goto yy1297; if (yych <= 0xBF) - goto yy1302; - goto yy1303; - yy1305: + goto yy1296; + goto yy1297; + yy1299: yych = *++p; if (yych <= 0x7F) - goto yy1303; + goto yy1297; if (yych <= 0xBF) - goto yy1302; - goto yy1303; - yy1306: + goto yy1296; + goto yy1297; + yy1300: yych = *++p; if (yych <= 0x8F) - goto yy1303; + goto yy1297; if (yych <= 0xBF) - goto yy1305; - goto yy1303; - yy1307: + goto yy1299; + goto yy1297; + yy1301: yych = *++p; if (yych <= 0x7F) - goto yy1303; + goto yy1297; if (yych <= 0xBF) - goto yy1305; - goto yy1303; - yy1308: + goto yy1299; + goto yy1297; + yy1302: yych = *++p; if (yych <= 0x7F) - goto yy1303; + goto yy1297; if (yych <= 0x8F) - goto yy1305; - goto yy1303; - yy1309: + goto yy1299; + goto yy1297; + yy1303: yych = *++p; if (yych <= 0x7F) - goto yy1303; + goto yy1297; if (yych <= 0x9F) - goto yy1302; - goto yy1303; - yy1310: + goto yy1296; + goto yy1297; + yy1304: yych = *++p; if (yybm[0 + yych] & 32) { - goto yy1311; + goto yy1305; } - goto yy1303; - yy1311: + goto yy1297; + yy1305: ++p; yych = *p; marker = p; if (yybm[0 + yych] & 64) { - goto yy1313; + goto yy1307; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1303; + goto yy1297; if (yych <= '\n') - goto yy1315; - goto yy1303; + goto yy1309; + goto yy1297; } else { if (yych <= '\r') - goto yy1315; + goto yy1309; if (yych == '~') - goto yy1311; - goto yy1303; + goto yy1305; + goto yy1297; } - yy1313: + yy1307: ++p; yych = *p; if (yybm[0 + yych] & 64) { - goto yy1313; + goto yy1307; } if (yych <= 0x08) - goto yy1303; + goto yy1297; if (yych <= '\n') - goto yy1315; + goto yy1309; if (yych != '\r') - goto yy1303; - yy1315: + goto yy1297; + yy1309: ++p; p = marker; { return (bufsize_t)(p - start); } - yy1317: + yy1311: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy1318; + goto yy1312; } - goto yy1303; - yy1318: + goto yy1297; + yy1312: ++p; yych = *p; marker = p; if (yybm[0 + yych] & 128) { - goto yy1318; + goto yy1312; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1303; + goto yy1297; if (yych <= '\t') - goto yy1320; + goto yy1314; if (yych <= '\n') - goto yy1322; - goto yy1303; + goto yy1316; + goto yy1297; } else { if (yych <= '\r') - goto yy1322; + goto yy1316; if (yych != ' ') - goto yy1303; + goto yy1297; } - yy1320: + yy1314: ++p; yych = *p; if (yych <= '\f') { if (yych <= 0x08) - goto yy1303; + goto yy1297; if (yych <= '\t') - goto yy1320; + goto yy1314; if (yych >= '\v') - goto yy1303; + goto yy1297; } else { if (yych <= '\r') - goto yy1322; + goto yy1316; if (yych == ' ') - goto yy1320; - goto yy1303; + goto yy1314; + goto yy1297; } - yy1322: + yy1316: ++p; p = marker; { return (bufsize_t)(p - start); } @@ -19650,997 +19655,997 @@ bufsize_t _scan_entity(const unsigned char *p) { if (yych <= 0xDF) { if (yych <= '%') { if (yych != '\n') - goto yy1328; + goto yy1322; } else { if (yych <= '&') - goto yy1327; + goto yy1321; if (yych <= 0x7F) - goto yy1328; + goto yy1322; if (yych >= 0xC2) - goto yy1329; + goto yy1323; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy1331; + goto yy1325; if (yych == 0xED) - goto yy1336; - goto yy1332; + goto yy1330; + goto yy1326; } else { if (yych <= 0xF0) - goto yy1333; + goto yy1327; if (yych <= 0xF3) - goto yy1334; + goto yy1328; if (yych <= 0xF4) - goto yy1335; + goto yy1329; } } - yy1326 : { return 0; } - yy1327: + yy1320 : { return 0; } + yy1321: yych = *(marker = ++p); if (yych <= '@') { if (yych == '#') - goto yy1337; - goto yy1326; + goto yy1331; + goto yy1320; } else { if (yych <= 'Z') - goto yy1338; + goto yy1332; if (yych <= '`') - goto yy1326; + goto yy1320; if (yych <= 'z') - goto yy1338; - goto yy1326; + goto yy1332; + goto yy1320; } - yy1328: + yy1322: yych = *++p; - goto yy1326; - yy1329: + goto yy1320; + yy1323: yych = *++p; if (yych <= 0x7F) - goto yy1330; + goto yy1324; if (yych <= 0xBF) - goto yy1328; - yy1330: + goto yy1322; + yy1324: p = marker; - goto yy1326; - yy1331: + goto yy1320; + yy1325: yych = *++p; if (yych <= 0x9F) - goto yy1330; + goto yy1324; if (yych <= 0xBF) - goto yy1329; - goto yy1330; - yy1332: + goto yy1323; + goto yy1324; + yy1326: yych = *++p; if (yych <= 0x7F) - goto yy1330; + goto yy1324; if (yych <= 0xBF) - goto yy1329; - goto yy1330; - yy1333: + goto yy1323; + goto yy1324; + yy1327: yych = *++p; if (yych <= 0x8F) - goto yy1330; + goto yy1324; if (yych <= 0xBF) - goto yy1332; - goto yy1330; - yy1334: + goto yy1326; + goto yy1324; + yy1328: yych = *++p; if (yych <= 0x7F) - goto yy1330; + goto yy1324; if (yych <= 0xBF) - goto yy1332; - goto yy1330; - yy1335: + goto yy1326; + goto yy1324; + yy1329: yych = *++p; if (yych <= 0x7F) - goto yy1330; + goto yy1324; if (yych <= 0x8F) - goto yy1332; - goto yy1330; - yy1336: + goto yy1326; + goto yy1324; + yy1330: yych = *++p; if (yych <= 0x7F) - goto yy1330; + goto yy1324; if (yych <= 0x9F) - goto yy1329; - goto yy1330; - yy1337: + goto yy1323; + goto yy1324; + yy1331: yych = *++p; if (yych <= 'W') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1373; - goto yy1330; + goto yy1367; + goto yy1324; } else { if (yych <= 'X') - goto yy1372; + goto yy1366; if (yych == 'x') - goto yy1372; - goto yy1330; + goto yy1366; + goto yy1324; } - yy1338: + yy1332: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych >= ':') - goto yy1330; + goto yy1324; } else { if (yych <= 'Z') - goto yy1339; + goto yy1333; if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } - yy1339: + yy1333: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1342; + goto yy1336; if (yych <= ':') - goto yy1330; + goto yy1324; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; - goto yy1342; + goto yy1324; + goto yy1336; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych <= 'z') - goto yy1342; - goto yy1330; + goto yy1336; + goto yy1324; } } - yy1340: + yy1334: ++p; { return (bufsize_t)(p - start); } - yy1342: + yy1336: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1343; + goto yy1337; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1343: + yy1337: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1344; + goto yy1338; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1344: + yy1338: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1345; + goto yy1339; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1345: + yy1339: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1346; + goto yy1340; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1346: + yy1340: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1347; + goto yy1341; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1347: + yy1341: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1348; + goto yy1342; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1348: + yy1342: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1349; + goto yy1343; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1349: + yy1343: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1350; + goto yy1344; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1350: + yy1344: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1351; + goto yy1345; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1351: + yy1345: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1352; + goto yy1346; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1352: + yy1346: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1353; + goto yy1347; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1353: + yy1347: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1354; + goto yy1348; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1354: + yy1348: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1355; + goto yy1349; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1355: + yy1349: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1356; + goto yy1350; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1356: + yy1350: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1357; + goto yy1351; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1357: + yy1351: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1358; + goto yy1352; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1358: + yy1352: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1359; + goto yy1353; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1359: + yy1353: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1360; + goto yy1354; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1360: + yy1354: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1361; + goto yy1355; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1361: + yy1355: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1362; + goto yy1356; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1362: + yy1356: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1363; + goto yy1357; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1363: + yy1357: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1364; + goto yy1358; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1364: + yy1358: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1365; + goto yy1359; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1365: + yy1359: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1366; + goto yy1360; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1366: + yy1360: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1367; + goto yy1361; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1367: + yy1361: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1368; + goto yy1362; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1368: + yy1362: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1369; + goto yy1363; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1369: + yy1363: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1370; + goto yy1364; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1370: + yy1364: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1371; + goto yy1365; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= '{') - goto yy1330; + goto yy1324; } } - yy1371: + yy1365: yych = *++p; if (yych == ';') - goto yy1340; - goto yy1330; - yy1372: + goto yy1334; + goto yy1324; + yy1366: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1380; - goto yy1330; + goto yy1374; + goto yy1324; } else { if (yych <= 'F') - goto yy1380; + goto yy1374; if (yych <= '`') - goto yy1330; + goto yy1324; if (yych <= 'f') - goto yy1380; - goto yy1330; + goto yy1374; + goto yy1324; } - yy1373: + yy1367: yych = *++p; if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1374; + goto yy1368; if (yych == ';') - goto yy1340; - goto yy1330; - yy1374: + goto yy1334; + goto yy1324; + yy1368: yych = *++p; if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1375; + goto yy1369; if (yych == ';') - goto yy1340; - goto yy1330; - yy1375: + goto yy1334; + goto yy1324; + yy1369: yych = *++p; if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1376; + goto yy1370; if (yych == ';') - goto yy1340; - goto yy1330; - yy1376: + goto yy1334; + goto yy1324; + yy1370: yych = *++p; if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1377; + goto yy1371; if (yych == ';') - goto yy1340; - goto yy1330; - yy1377: + goto yy1334; + goto yy1324; + yy1371: yych = *++p; if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1378; + goto yy1372; if (yych == ';') - goto yy1340; - goto yy1330; - yy1378: + goto yy1334; + goto yy1324; + yy1372: yych = *++p; if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1379; + goto yy1373; if (yych == ';') - goto yy1340; - goto yy1330; - yy1379: + goto yy1334; + goto yy1324; + yy1373: yych = *++p; if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1371; + goto yy1365; if (yych == ';') - goto yy1340; - goto yy1330; - yy1380: + goto yy1334; + goto yy1324; + yy1374: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1381; + goto yy1375; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= 'g') - goto yy1330; + goto yy1324; } } - yy1381: + yy1375: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1382; + goto yy1376; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= 'g') - goto yy1330; + goto yy1324; } } - yy1382: + yy1376: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1383; + goto yy1377; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= 'g') - goto yy1330; + goto yy1324; } } - yy1383: + yy1377: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1384; + goto yy1378; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= 'g') - goto yy1330; + goto yy1324; } } - yy1384: + yy1378: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1385; + goto yy1379; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= 'g') - goto yy1330; + goto yy1324; } } - yy1385: + yy1379: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1386; + goto yy1380; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1330; + goto yy1324; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych >= 'g') - goto yy1330; + goto yy1324; } } - yy1386: + yy1380: ++p; if ((yych = *p) <= ';') { if (yych <= '/') - goto yy1330; + goto yy1324; if (yych <= '9') - goto yy1371; + goto yy1365; if (yych <= ':') - goto yy1330; - goto yy1340; + goto yy1324; + goto yy1334; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1330; - goto yy1371; + goto yy1324; + goto yy1365; } else { if (yych <= '`') - goto yy1330; + goto yy1324; if (yych <= 'f') - goto yy1371; - goto yy1330; + goto yy1365; + goto yy1324; } } } @@ -20660,415 +20665,415 @@ bufsize_t _scan_dangerous_url(const unsigned char *p) { if (yych <= 'I') { if (yych <= 'C') { if (yych != '\n') - goto yy1394; + goto yy1388; } else { if (yych <= 'D') - goto yy1390; + goto yy1384; if (yych == 'F') - goto yy1393; - goto yy1394; + goto yy1387; + goto yy1388; } } else { if (yych <= 'V') { if (yych <= 'J') - goto yy1391; + goto yy1385; if (yych <= 'U') - goto yy1394; - goto yy1392; + goto yy1388; + goto yy1386; } else { if (yych == 'd') - goto yy1390; + goto yy1384; if (yych <= 'e') - goto yy1394; - goto yy1393; + goto yy1388; + goto yy1387; } } } else { if (yych <= 0xDF) { if (yych <= 'u') { if (yych == 'j') - goto yy1391; - goto yy1394; + goto yy1385; + goto yy1388; } else { if (yych <= 'v') - goto yy1392; + goto yy1386; if (yych <= 0x7F) - goto yy1394; + goto yy1388; if (yych >= 0xC2) - goto yy1395; + goto yy1389; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy1397; + goto yy1391; if (yych == 0xED) - goto yy1402; - goto yy1398; + goto yy1396; + goto yy1392; } else { if (yych <= 0xF0) - goto yy1399; + goto yy1393; if (yych <= 0xF3) - goto yy1400; + goto yy1394; if (yych <= 0xF4) - goto yy1401; + goto yy1395; } } } - yy1389 : { return 0; } - yy1390: + yy1383 : { return 0; } + yy1384: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy1424; + goto yy1418; if (yych == 'a') - goto yy1424; - goto yy1389; - yy1391: + goto yy1418; + goto yy1383; + yy1385: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy1415; + goto yy1409; if (yych == 'a') - goto yy1415; - goto yy1389; - yy1392: + goto yy1409; + goto yy1383; + yy1386: yyaccept = 0; yych = *(marker = ++p); if (yych == 'B') - goto yy1408; + goto yy1402; if (yych == 'b') - goto yy1408; - goto yy1389; - yy1393: + goto yy1402; + goto yy1383; + yy1387: yyaccept = 0; yych = *(marker = ++p); if (yych == 'I') - goto yy1403; + goto yy1397; if (yych == 'i') - goto yy1403; - goto yy1389; - yy1394: + goto yy1397; + goto yy1383; + yy1388: yych = *++p; - goto yy1389; - yy1395: + goto yy1383; + yy1389: yych = *++p; if (yych <= 0x7F) - goto yy1396; + goto yy1390; if (yych <= 0xBF) - goto yy1394; - yy1396: + goto yy1388; + yy1390: p = marker; if (yyaccept == 0) { - goto yy1389; + goto yy1383; } else { - goto yy1407; + goto yy1401; } - yy1397: + yy1391: yych = *++p; if (yych <= 0x9F) - goto yy1396; + goto yy1390; if (yych <= 0xBF) - goto yy1395; - goto yy1396; - yy1398: + goto yy1389; + goto yy1390; + yy1392: yych = *++p; if (yych <= 0x7F) - goto yy1396; + goto yy1390; if (yych <= 0xBF) - goto yy1395; - goto yy1396; - yy1399: + goto yy1389; + goto yy1390; + yy1393: yych = *++p; if (yych <= 0x8F) - goto yy1396; + goto yy1390; if (yych <= 0xBF) - goto yy1398; - goto yy1396; - yy1400: + goto yy1392; + goto yy1390; + yy1394: yych = *++p; if (yych <= 0x7F) - goto yy1396; + goto yy1390; if (yych <= 0xBF) - goto yy1398; - goto yy1396; - yy1401: + goto yy1392; + goto yy1390; + yy1395: yych = *++p; if (yych <= 0x7F) - goto yy1396; + goto yy1390; if (yych <= 0x8F) - goto yy1398; - goto yy1396; - yy1402: + goto yy1392; + goto yy1390; + yy1396: yych = *++p; if (yych <= 0x7F) - goto yy1396; + goto yy1390; if (yych <= 0x9F) - goto yy1395; - goto yy1396; - yy1403: + goto yy1389; + goto yy1390; + yy1397: yych = *++p; if (yych == 'L') - goto yy1404; + goto yy1398; if (yych != 'l') - goto yy1396; - yy1404: + goto yy1390; + yy1398: yych = *++p; if (yych == 'E') - goto yy1405; + goto yy1399; if (yych != 'e') - goto yy1396; - yy1405: + goto yy1390; + yy1399: yych = *++p; if (yych != ':') - goto yy1396; - yy1406: + goto yy1390; + yy1400: ++p; - yy1407 : { return (bufsize_t)(p - start); } - yy1408: + yy1401 : { return (bufsize_t)(p - start); } + yy1402: yych = *++p; if (yych == 'S') - goto yy1409; + goto yy1403; if (yych != 's') - goto yy1396; - yy1409: + goto yy1390; + yy1403: yych = *++p; if (yych == 'C') - goto yy1410; + goto yy1404; if (yych != 'c') - goto yy1396; - yy1410: + goto yy1390; + yy1404: yych = *++p; if (yych == 'R') - goto yy1411; + goto yy1405; if (yych != 'r') - goto yy1396; - yy1411: + goto yy1390; + yy1405: yych = *++p; if (yych == 'I') - goto yy1412; + goto yy1406; if (yych != 'i') - goto yy1396; - yy1412: + goto yy1390; + yy1406: yych = *++p; if (yych == 'P') - goto yy1413; + goto yy1407; if (yych != 'p') - goto yy1396; - yy1413: + goto yy1390; + yy1407: yych = *++p; if (yych == 'T') - goto yy1414; + goto yy1408; if (yych != 't') - goto yy1396; - yy1414: + goto yy1390; + yy1408: yych = *++p; if (yych == ':') - goto yy1406; - goto yy1396; - yy1415: + goto yy1400; + goto yy1390; + yy1409: yych = *++p; if (yych == 'V') - goto yy1416; + goto yy1410; if (yych != 'v') - goto yy1396; - yy1416: + goto yy1390; + yy1410: yych = *++p; if (yych == 'A') - goto yy1417; + goto yy1411; if (yych != 'a') - goto yy1396; - yy1417: + goto yy1390; + yy1411: yych = *++p; if (yych == 'S') - goto yy1418; + goto yy1412; if (yych != 's') - goto yy1396; - yy1418: + goto yy1390; + yy1412: yych = *++p; if (yych == 'C') - goto yy1419; + goto yy1413; if (yych != 'c') - goto yy1396; - yy1419: + goto yy1390; + yy1413: yych = *++p; if (yych == 'R') - goto yy1420; + goto yy1414; if (yych != 'r') - goto yy1396; - yy1420: + goto yy1390; + yy1414: yych = *++p; if (yych == 'I') - goto yy1421; + goto yy1415; if (yych != 'i') - goto yy1396; - yy1421: + goto yy1390; + yy1415: yych = *++p; if (yych == 'P') - goto yy1422; + goto yy1416; if (yych != 'p') - goto yy1396; - yy1422: + goto yy1390; + yy1416: yych = *++p; if (yych == 'T') - goto yy1423; + goto yy1417; if (yych != 't') - goto yy1396; - yy1423: + goto yy1390; + yy1417: yych = *++p; if (yych == ':') - goto yy1406; - goto yy1396; - yy1424: + goto yy1400; + goto yy1390; + yy1418: yych = *++p; if (yych == 'T') - goto yy1425; + goto yy1419; if (yych != 't') - goto yy1396; - yy1425: + goto yy1390; + yy1419: yych = *++p; if (yych == 'A') - goto yy1426; + goto yy1420; if (yych != 'a') - goto yy1396; - yy1426: + goto yy1390; + yy1420: yych = *++p; if (yych != ':') - goto yy1396; + goto yy1390; yyaccept = 1; yych = *(marker = ++p); if (yych == 'I') - goto yy1428; + goto yy1422; if (yych != 'i') - goto yy1407; - yy1428: + goto yy1401; + yy1422: yych = *++p; if (yych == 'M') - goto yy1429; + goto yy1423; if (yych != 'm') - goto yy1396; - yy1429: + goto yy1390; + yy1423: yych = *++p; if (yych == 'A') - goto yy1430; + goto yy1424; if (yych != 'a') - goto yy1396; - yy1430: + goto yy1390; + yy1424: yych = *++p; if (yych == 'G') - goto yy1431; + goto yy1425; if (yych != 'g') - goto yy1396; - yy1431: + goto yy1390; + yy1425: yych = *++p; if (yych == 'E') - goto yy1432; + goto yy1426; if (yych != 'e') - goto yy1396; - yy1432: + goto yy1390; + yy1426: yych = *++p; if (yych != '/') - goto yy1396; + goto yy1390; yych = *++p; if (yych <= 'W') { if (yych <= 'J') { if (yych == 'G') - goto yy1435; + goto yy1429; if (yych <= 'I') - goto yy1396; - goto yy1436; + goto yy1390; + goto yy1430; } else { if (yych == 'P') - goto yy1434; + goto yy1428; if (yych <= 'V') - goto yy1396; - goto yy1437; + goto yy1390; + goto yy1431; } } else { if (yych <= 'j') { if (yych == 'g') - goto yy1435; + goto yy1429; if (yych <= 'i') - goto yy1396; - goto yy1436; + goto yy1390; + goto yy1430; } else { if (yych <= 'p') { if (yych <= 'o') - goto yy1396; + goto yy1390; } else { if (yych == 'w') - goto yy1437; - goto yy1396; + goto yy1431; + goto yy1390; } } } - yy1434: + yy1428: yych = *++p; if (yych == 'N') - goto yy1445; + goto yy1439; if (yych == 'n') - goto yy1445; - goto yy1396; - yy1435: + goto yy1439; + goto yy1390; + yy1429: yych = *++p; if (yych == 'I') - goto yy1444; + goto yy1438; if (yych == 'i') - goto yy1444; - goto yy1396; - yy1436: + goto yy1438; + goto yy1390; + yy1430: yych = *++p; if (yych == 'P') - goto yy1442; + goto yy1436; if (yych == 'p') - goto yy1442; - goto yy1396; - yy1437: + goto yy1436; + goto yy1390; + yy1431: yych = *++p; if (yych == 'E') - goto yy1438; + goto yy1432; if (yych != 'e') - goto yy1396; - yy1438: + goto yy1390; + yy1432: yych = *++p; if (yych == 'B') - goto yy1439; + goto yy1433; if (yych != 'b') - goto yy1396; - yy1439: + goto yy1390; + yy1433: yych = *++p; if (yych == 'P') - goto yy1440; + goto yy1434; if (yych != 'p') - goto yy1396; - yy1440: + goto yy1390; + yy1434: ++p; { return 0; } - yy1442: + yy1436: yych = *++p; if (yych == 'E') - goto yy1443; + goto yy1437; if (yych != 'e') - goto yy1396; - yy1443: + goto yy1390; + yy1437: yych = *++p; if (yych == 'G') - goto yy1440; + goto yy1434; if (yych == 'g') - goto yy1440; - goto yy1396; - yy1444: + goto yy1434; + goto yy1390; + yy1438: yych = *++p; if (yych == 'F') - goto yy1440; + goto yy1434; if (yych == 'f') - goto yy1440; - goto yy1396; - yy1445: + goto yy1434; + goto yy1390; + yy1439: ++p; if ((yych = *p) == 'G') - goto yy1440; + goto yy1434; if (yych == 'g') - goto yy1440; - goto yy1396; + goto yy1434; + goto yy1390; } } diff --git a/scanners.re b/scanners.re index 8b1c91e..52bf5aa 100644 --- a/scanners.re +++ b/scanners.re @@ -252,7 +252,7 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) const unsigned char *marker = NULL; const unsigned char *start = p; /*!re2c - [#]{1,6} ([ ]+|[\r\n]) { return (bufsize_t)(p - start); } + [#]{1,6} ([ \t]+|[\r\n]) { return (bufsize_t)(p - start); } .? { return 0; } */ } @@ -277,9 +277,9 @@ bufsize_t _scan_thematic_break(const unsigned char *p) const unsigned char *marker = NULL; const unsigned char *start = p; /*!re2c - ([*][ ]*){3,} [ \t]* [\r\n] { return (bufsize_t)(p - start); } - ([_][ ]*){3,} [ \t]* [\r\n] { return (bufsize_t)(p - start); } - ([-][ ]*){3,} [ \t]* [\r\n] { return (bufsize_t)(p - start); } + ([*][ \t]*){3,} [ \t]* [\r\n] { return (bufsize_t)(p - start); } + ([_][ \t]*){3,} [ \t]* [\r\n] { return (bufsize_t)(p - start); } + ([-][ \t]*){3,} [ \t]* [\r\n] { return (bufsize_t)(p - start); } .? { return 0; } */ } diff --git a/xml.c b/xml.c index 12bd629..4898cd2 100644 --- a/xml.c +++ b/xml.c @@ -149,7 +149,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, char *cmark_render_xml(cmark_node *root, int options) { char *result; - cmark_strbuf xml = GH_BUF_INIT; + cmark_strbuf xml = CMARK_BUF_INIT(cmark_node_mem(root)); cmark_event_type ev_type; cmark_node *cur; struct render_state state = {&xml, 0}; From 599e57a489df3b186ebda7520ce42803b0c459bc Mon Sep 17 00:00:00 2001 From: Adrian Nowicki Date: Sun, 20 Aug 2017 22:06:28 +0200 Subject: [PATCH 4/6] updated to cmark 0.28.0 Signed-off-by: Adrian Nowicki --- blocks.c | 41 +- buffer.c | 6 +- case_fold_switch.inc | 1972 +++- chunk.h | 10 +- cmark.c | 8 +- cmark.h | 25 +- commonmark.c | 11 +- commonmark_test.go | 2 +- entities.inc | 2 +- houdini_html_u.c | 2 +- inlines.c | 257 +- latex.c | 39 +- node.c | 2 +- references.c | 6 +- scanners.c | 20534 +++++++++++++++++------------------------ scanners.h | 2 - scanners.re | 80 +- 17 files changed, 10759 insertions(+), 12240 deletions(-) diff --git a/blocks.c b/blocks.c index 8e8c4c2..5a293b2 100644 --- a/blocks.c +++ b/blocks.c @@ -414,8 +414,8 @@ static bufsize_t parse_list_marker(cmark_mem *mem, cmark_chunk *input, data->marker_offset = 0; // will be adjusted later data->list_type = CMARK_BULLET_LIST; data->bullet_char = c; - data->start = 1; - data->delimiter = CMARK_PERIOD_DELIM; + data->start = 0; + data->delimiter = CMARK_NO_DELIM; data->tight = false; } else if (cmark_isdigit(c)) { int start = 0; @@ -563,21 +563,27 @@ static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer, cmark_strbuf_put(&parser->linebuf, buffer, chunk_len); // add replacement character cmark_strbuf_put(&parser->linebuf, repl, 3); - chunk_len += 1; // so we advance the buffer past NULL } else { cmark_strbuf_put(&parser->linebuf, buffer, chunk_len); } } buffer += chunk_len; - // skip over line ending characters: - if (buffer < end && *buffer == '\r') { - buffer++; - if (buffer == end) - parser->last_buffer_ended_with_cr = true; + if (buffer < end) { + if (*buffer == '\0') { + // skip over NULL + buffer++; + } else { + // skip over line ending characters + if (*buffer == '\r') { + buffer++; + if (buffer == end) + parser->last_buffer_ended_with_cr = true; + } + if (buffer < end && *buffer == '\n') + buffer++; + } } - if (buffer < end && *buffer == '\n') - buffer++; } } @@ -933,10 +939,10 @@ static void open_new_blocks(cmark_parser *parser, cmark_node **container, *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 ((matched = parse_list_marker( + } else if ((!indented || cont_type == CMARK_NODE_LIST) && + (matched = parse_list_marker( parser->mem, input, parser->first_nonspace, - (*container)->type == CMARK_NODE_PARAGRAPH, &data)) && - (!indented || cont_type == CMARK_NODE_LIST)) { + (*container)->type == CMARK_NODE_PARAGRAPH, &data))) { // Note that we can have new list items starting with >= 4 // spaces indent, as long as the list container is still open. @@ -989,7 +995,7 @@ static void open_new_blocks(cmark_parser *parser, cmark_node **container, parser->first_nonspace + 1); /* TODO: static */ memcpy(&((*container)->as.list), data, sizeof(*data)); - free(data); + parser->mem->free(data); } else if (indented && !maybe_lazy && !parser->blank) { S_advance_offset(parser, input, CODE_INDENT, true); *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK, @@ -1140,6 +1146,8 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, else cmark_strbuf_put(&parser->curline, buffer, bytes); + bytes = parser->curline.size; + // ensure line ends with a newline: if (bytes == 0 || !S_is_line_end_char(parser->curline.ptr[bytes - 1])) cmark_strbuf_putc(&parser->curline, '\n'); @@ -1151,6 +1159,7 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, input.data = parser->curline.ptr; input.len = parser->curline.size; + input.alloc = 0; parser->line_number++; @@ -1185,9 +1194,7 @@ cmark_node *cmark_parser_finish(cmark_parser *parser) { finalize_document(parser); - if (parser->options & CMARK_OPT_NORMALIZE) { - cmark_consolidate_text_nodes(parser->root); - } + cmark_consolidate_text_nodes(parser->root); cmark_strbuf_free(&parser->curline); diff --git a/buffer.c b/buffer.c index a6754b6..a237b11 100644 --- a/buffer.c +++ b/buffer.c @@ -42,8 +42,12 @@ void cmark_strbuf_grow(cmark_strbuf *buf, bufsize_t target_size) { if (target_size < buf->asize) return; - if (target_size > (bufsize_t)(INT32_MAX / 2)) + if (target_size > (bufsize_t)(INT32_MAX / 2)) { + fprintf(stderr, + "[cmark] cmark_strbuf_grow requests buffer with size > %d, aborting\n", + (INT32_MAX / 2)); abort(); + } /* Oversize the buffer by 50% to guarantee amortized linear time * complexity on append operations. */ diff --git a/case_fold_switch.inc b/case_fold_switch.inc index 70fdd75..28e223e 100644 --- a/case_fold_switch.inc +++ b/case_fold_switch.inc @@ -657,9 +657,60 @@ case 0x0232: bufpush(0x0233); break; + case 0x023A: + bufpush(0x2C65); + break; + case 0x023B: + bufpush(0x023C); + break; + case 0x023D: + bufpush(0x019A); + break; + case 0x023E: + bufpush(0x2C66); + break; + case 0x0241: + bufpush(0x0242); + break; + case 0x0243: + bufpush(0x0180); + break; + case 0x0244: + bufpush(0x0289); + break; + case 0x0245: + bufpush(0x028C); + break; + case 0x0246: + bufpush(0x0247); + break; + case 0x0248: + bufpush(0x0249); + break; + case 0x024A: + bufpush(0x024B); + break; + case 0x024C: + bufpush(0x024D); + break; + case 0x024E: + bufpush(0x024F); + break; case 0x0345: bufpush(0x03B9); break; + case 0x0370: + bufpush(0x0371); + break; + case 0x0372: + bufpush(0x0373); + break; + case 0x0376: + bufpush(0x0377); + break; + case 0x037F: + bufpush(0x03F3); + break; case 0x0386: bufpush(0x03AC); break; @@ -772,6 +823,9 @@ case 0x03C2: bufpush(0x03C3); break; + case 0x03CF: + bufpush(0x03D7); + break; case 0x03D0: bufpush(0x03B2); break; @@ -826,15 +880,30 @@ case 0x03F1: bufpush(0x03C1); break; - case 0x03F2: - bufpush(0x03C3); - break; case 0x03F4: bufpush(0x03B8); break; case 0x03F5: bufpush(0x03B5); break; + case 0x03F7: + bufpush(0x03F8); + break; + case 0x03F9: + bufpush(0x03F2); + break; + case 0x03FA: + bufpush(0x03FB); + break; + case 0x03FD: + bufpush(0x037B); + break; + case 0x03FE: + bufpush(0x037C); + break; + case 0x03FF: + bufpush(0x037D); + break; case 0x0400: bufpush(0x0450); break; @@ -1111,6 +1180,9 @@ case 0x04BE: bufpush(0x04BF); break; + case 0x04C0: + bufpush(0x04CF); + break; case 0x04C1: bufpush(0x04C2); break; @@ -1189,9 +1261,21 @@ case 0x04F4: bufpush(0x04F5); break; + case 0x04F6: + bufpush(0x04F7); + break; case 0x04F8: bufpush(0x04F9); break; + case 0x04FA: + bufpush(0x04FB); + break; + case 0x04FC: + bufpush(0x04FD); + break; + case 0x04FE: + bufpush(0x04FF); + break; case 0x0500: bufpush(0x0501); break; @@ -1216,6 +1300,54 @@ case 0x050E: bufpush(0x050F); break; + case 0x0510: + bufpush(0x0511); + break; + case 0x0512: + bufpush(0x0513); + break; + case 0x0514: + bufpush(0x0515); + break; + case 0x0516: + bufpush(0x0517); + break; + case 0x0518: + bufpush(0x0519); + break; + case 0x051A: + bufpush(0x051B); + break; + case 0x051C: + bufpush(0x051D); + break; + case 0x051E: + bufpush(0x051F); + break; + case 0x0520: + bufpush(0x0521); + break; + case 0x0522: + bufpush(0x0523); + break; + case 0x0524: + bufpush(0x0525); + break; + case 0x0526: + bufpush(0x0527); + break; + case 0x0528: + bufpush(0x0529); + break; + case 0x052A: + bufpush(0x052B); + break; + case 0x052C: + bufpush(0x052D); + break; + case 0x052E: + bufpush(0x052F); + break; case 0x0531: bufpush(0x0561); break; @@ -1334,6 +1466,171 @@ bufpush(0x0565); bufpush(0x0582); break; + case 0x10A0: + bufpush(0x2D00); + break; + case 0x10A1: + bufpush(0x2D01); + break; + case 0x10A2: + bufpush(0x2D02); + break; + case 0x10A3: + bufpush(0x2D03); + break; + case 0x10A4: + bufpush(0x2D04); + break; + case 0x10A5: + bufpush(0x2D05); + break; + case 0x10A6: + bufpush(0x2D06); + break; + case 0x10A7: + bufpush(0x2D07); + break; + case 0x10A8: + bufpush(0x2D08); + break; + case 0x10A9: + bufpush(0x2D09); + break; + case 0x10AA: + bufpush(0x2D0A); + break; + case 0x10AB: + bufpush(0x2D0B); + break; + case 0x10AC: + bufpush(0x2D0C); + break; + case 0x10AD: + bufpush(0x2D0D); + break; + case 0x10AE: + bufpush(0x2D0E); + break; + case 0x10AF: + bufpush(0x2D0F); + break; + case 0x10B0: + bufpush(0x2D10); + break; + case 0x10B1: + bufpush(0x2D11); + break; + case 0x10B2: + bufpush(0x2D12); + break; + case 0x10B3: + bufpush(0x2D13); + break; + case 0x10B4: + bufpush(0x2D14); + break; + case 0x10B5: + bufpush(0x2D15); + break; + case 0x10B6: + bufpush(0x2D16); + break; + case 0x10B7: + bufpush(0x2D17); + break; + case 0x10B8: + bufpush(0x2D18); + break; + case 0x10B9: + bufpush(0x2D19); + break; + case 0x10BA: + bufpush(0x2D1A); + break; + case 0x10BB: + bufpush(0x2D1B); + break; + case 0x10BC: + bufpush(0x2D1C); + break; + case 0x10BD: + bufpush(0x2D1D); + break; + case 0x10BE: + bufpush(0x2D1E); + break; + case 0x10BF: + bufpush(0x2D1F); + break; + case 0x10C0: + bufpush(0x2D20); + break; + case 0x10C1: + bufpush(0x2D21); + break; + case 0x10C2: + bufpush(0x2D22); + break; + case 0x10C3: + bufpush(0x2D23); + break; + case 0x10C4: + bufpush(0x2D24); + break; + case 0x10C5: + bufpush(0x2D25); + break; + case 0x10C7: + bufpush(0x2D27); + break; + case 0x10CD: + bufpush(0x2D2D); + break; + case 0x13F8: + bufpush(0x13F0); + break; + case 0x13F9: + bufpush(0x13F1); + break; + case 0x13FA: + bufpush(0x13F2); + break; + case 0x13FB: + bufpush(0x13F3); + break; + case 0x13FC: + bufpush(0x13F4); + break; + case 0x13FD: + bufpush(0x13F5); + break; + case 0x1C80: + bufpush(0x0432); + break; + case 0x1C81: + bufpush(0x0434); + break; + case 0x1C82: + bufpush(0x043E); + break; + case 0x1C83: + bufpush(0x0441); + break; + case 0x1C84: + bufpush(0x0442); + break; + case 0x1C85: + bufpush(0x0442); + break; + case 0x1C86: + bufpush(0x044A); + break; + case 0x1C87: + bufpush(0x0463); + break; + case 0x1C88: + bufpush(0xA64B); + break; case 0x1E00: bufpush(0x1E01); break; @@ -1582,6 +1879,10 @@ case 0x1E9B: bufpush(0x1E61); break; + case 0x1E9E: + bufpush(0x0073); + bufpush(0x0073); + break; case 0x1EA0: bufpush(0x1EA1); break; @@ -1717,6 +2018,15 @@ case 0x1EF8: bufpush(0x1EF9); break; + case 0x1EFA: + bufpush(0x1EFB); + break; + case 0x1EFC: + bufpush(0x1EFD); + break; + case 0x1EFE: + bufpush(0x1EFF); + break; case 0x1F08: bufpush(0x1F00); break; @@ -2264,6 +2574,9 @@ case 0x212B: bufpush(0x00E5); break; + case 0x2132: + bufpush(0x214E); + break; case 0x2160: bufpush(0x2170); break; @@ -2312,6 +2625,9 @@ case 0x216F: bufpush(0x217F); break; + case 0x2183: + bufpush(0x2184); + break; case 0x24B6: bufpush(0x24D0); break; @@ -2390,205 +2706,1114 @@ case 0x24CF: bufpush(0x24E9); break; - case 0xFB00: - bufpush(0x0066); - bufpush(0x0066); + case 0x2C00: + bufpush(0x2C30); break; - case 0xFB01: - bufpush(0x0066); - bufpush(0x0069); + case 0x2C01: + bufpush(0x2C31); break; - case 0xFB02: - bufpush(0x0066); - bufpush(0x006C); + case 0x2C02: + bufpush(0x2C32); break; - case 0xFB03: - bufpush(0x0066); - bufpush(0x0066); - bufpush(0x0069); + case 0x2C03: + bufpush(0x2C33); break; - case 0xFB04: - bufpush(0x0066); - bufpush(0x0066); - bufpush(0x006C); + case 0x2C04: + bufpush(0x2C34); break; - case 0xFB05: - bufpush(0x0073); - bufpush(0x0074); + case 0x2C05: + bufpush(0x2C35); break; - case 0xFB06: - bufpush(0x0073); - bufpush(0x0074); + case 0x2C06: + bufpush(0x2C36); break; - case 0xFB13: - bufpush(0x0574); - bufpush(0x0576); + case 0x2C07: + bufpush(0x2C37); break; - case 0xFB14: - bufpush(0x0574); - bufpush(0x0565); + case 0x2C08: + bufpush(0x2C38); break; - case 0xFB15: - bufpush(0x0574); - bufpush(0x056B); + case 0x2C09: + bufpush(0x2C39); break; - case 0xFB16: - bufpush(0x057E); - bufpush(0x0576); + case 0x2C0A: + bufpush(0x2C3A); break; - case 0xFB17: - bufpush(0x0574); - bufpush(0x056D); + case 0x2C0B: + bufpush(0x2C3B); break; - case 0xFF21: - bufpush(0xFF41); + case 0x2C0C: + bufpush(0x2C3C); break; - case 0xFF22: - bufpush(0xFF42); + case 0x2C0D: + bufpush(0x2C3D); break; - case 0xFF23: - bufpush(0xFF43); + case 0x2C0E: + bufpush(0x2C3E); break; - case 0xFF24: - bufpush(0xFF44); + case 0x2C0F: + bufpush(0x2C3F); break; - case 0xFF25: - bufpush(0xFF45); + case 0x2C10: + bufpush(0x2C40); break; - case 0xFF26: - bufpush(0xFF46); + case 0x2C11: + bufpush(0x2C41); break; - case 0xFF27: - bufpush(0xFF47); + case 0x2C12: + bufpush(0x2C42); break; - case 0xFF28: - bufpush(0xFF48); + case 0x2C13: + bufpush(0x2C43); break; - case 0xFF29: - bufpush(0xFF49); + case 0x2C14: + bufpush(0x2C44); break; - case 0xFF2A: - bufpush(0xFF4A); + case 0x2C15: + bufpush(0x2C45); break; - case 0xFF2B: - bufpush(0xFF4B); + case 0x2C16: + bufpush(0x2C46); break; - case 0xFF2C: - bufpush(0xFF4C); + case 0x2C17: + bufpush(0x2C47); break; - case 0xFF2D: - bufpush(0xFF4D); + case 0x2C18: + bufpush(0x2C48); break; - case 0xFF2E: - bufpush(0xFF4E); + case 0x2C19: + bufpush(0x2C49); break; - case 0xFF2F: - bufpush(0xFF4F); + case 0x2C1A: + bufpush(0x2C4A); break; - case 0xFF30: - bufpush(0xFF50); + case 0x2C1B: + bufpush(0x2C4B); break; - case 0xFF31: - bufpush(0xFF51); + case 0x2C1C: + bufpush(0x2C4C); break; - case 0xFF32: - bufpush(0xFF52); + case 0x2C1D: + bufpush(0x2C4D); break; - case 0xFF33: - bufpush(0xFF53); + case 0x2C1E: + bufpush(0x2C4E); break; - case 0xFF34: - bufpush(0xFF54); + case 0x2C1F: + bufpush(0x2C4F); break; - case 0xFF35: - bufpush(0xFF55); + case 0x2C20: + bufpush(0x2C50); break; - case 0xFF36: - bufpush(0xFF56); + case 0x2C21: + bufpush(0x2C51); break; - case 0xFF37: - bufpush(0xFF57); + case 0x2C22: + bufpush(0x2C52); break; - case 0xFF38: - bufpush(0xFF58); + case 0x2C23: + bufpush(0x2C53); break; - case 0xFF39: - bufpush(0xFF59); + case 0x2C24: + bufpush(0x2C54); break; - case 0xFF3A: - bufpush(0xFF5A); + case 0x2C25: + bufpush(0x2C55); break; - case 0x10400: - bufpush(0x10428); + case 0x2C26: + bufpush(0x2C56); break; - case 0x10401: - bufpush(0x10429); + case 0x2C27: + bufpush(0x2C57); break; - case 0x10402: - bufpush(0x1042A); + case 0x2C28: + bufpush(0x2C58); break; - case 0x10403: - bufpush(0x1042B); + case 0x2C29: + bufpush(0x2C59); break; - case 0x10404: - bufpush(0x1042C); + case 0x2C2A: + bufpush(0x2C5A); break; - case 0x10405: - bufpush(0x1042D); + case 0x2C2B: + bufpush(0x2C5B); break; - case 0x10406: - bufpush(0x1042E); + case 0x2C2C: + bufpush(0x2C5C); break; - case 0x10407: - bufpush(0x1042F); + case 0x2C2D: + bufpush(0x2C5D); break; - case 0x10408: - bufpush(0x10430); + case 0x2C2E: + bufpush(0x2C5E); break; - case 0x10409: - bufpush(0x10431); + case 0x2C60: + bufpush(0x2C61); break; - case 0x1040A: - bufpush(0x10432); + case 0x2C62: + bufpush(0x026B); break; - case 0x1040B: - bufpush(0x10433); + case 0x2C63: + bufpush(0x1D7D); break; - case 0x1040C: - bufpush(0x10434); + case 0x2C64: + bufpush(0x027D); break; - case 0x1040D: - bufpush(0x10435); + case 0x2C67: + bufpush(0x2C68); break; - case 0x1040E: - bufpush(0x10436); + case 0x2C69: + bufpush(0x2C6A); break; - case 0x1040F: - bufpush(0x10437); + case 0x2C6B: + bufpush(0x2C6C); break; - case 0x10410: - bufpush(0x10438); + case 0x2C6D: + bufpush(0x0251); break; - case 0x10411: - bufpush(0x10439); + case 0x2C6E: + bufpush(0x0271); break; - case 0x10412: - bufpush(0x1043A); + case 0x2C6F: + bufpush(0x0250); break; - case 0x10413: - bufpush(0x1043B); + case 0x2C70: + bufpush(0x0252); break; - case 0x10414: - bufpush(0x1043C); + case 0x2C72: + bufpush(0x2C73); break; - case 0x10415: - bufpush(0x1043D); + case 0x2C75: + bufpush(0x2C76); break; - case 0x10416: - bufpush(0x1043E); + case 0x2C7E: + bufpush(0x023F); break; - case 0x10417: - bufpush(0x1043F); + case 0x2C7F: + bufpush(0x0240); + break; + case 0x2C80: + bufpush(0x2C81); + break; + case 0x2C82: + bufpush(0x2C83); + break; + case 0x2C84: + bufpush(0x2C85); + break; + case 0x2C86: + bufpush(0x2C87); + break; + case 0x2C88: + bufpush(0x2C89); + break; + case 0x2C8A: + bufpush(0x2C8B); + break; + case 0x2C8C: + bufpush(0x2C8D); + break; + case 0x2C8E: + bufpush(0x2C8F); + break; + case 0x2C90: + bufpush(0x2C91); + break; + case 0x2C92: + bufpush(0x2C93); + break; + case 0x2C94: + bufpush(0x2C95); + break; + case 0x2C96: + bufpush(0x2C97); + break; + case 0x2C98: + bufpush(0x2C99); + break; + case 0x2C9A: + bufpush(0x2C9B); + break; + case 0x2C9C: + bufpush(0x2C9D); + break; + case 0x2C9E: + bufpush(0x2C9F); + break; + case 0x2CA0: + bufpush(0x2CA1); + break; + case 0x2CA2: + bufpush(0x2CA3); + break; + case 0x2CA4: + bufpush(0x2CA5); + break; + case 0x2CA6: + bufpush(0x2CA7); + break; + case 0x2CA8: + bufpush(0x2CA9); + break; + case 0x2CAA: + bufpush(0x2CAB); + break; + case 0x2CAC: + bufpush(0x2CAD); + break; + case 0x2CAE: + bufpush(0x2CAF); + break; + case 0x2CB0: + bufpush(0x2CB1); + break; + case 0x2CB2: + bufpush(0x2CB3); + break; + case 0x2CB4: + bufpush(0x2CB5); + break; + case 0x2CB6: + bufpush(0x2CB7); + break; + case 0x2CB8: + bufpush(0x2CB9); + break; + case 0x2CBA: + bufpush(0x2CBB); + break; + case 0x2CBC: + bufpush(0x2CBD); + break; + case 0x2CBE: + bufpush(0x2CBF); + break; + case 0x2CC0: + bufpush(0x2CC1); + break; + case 0x2CC2: + bufpush(0x2CC3); + break; + case 0x2CC4: + bufpush(0x2CC5); + break; + case 0x2CC6: + bufpush(0x2CC7); + break; + case 0x2CC8: + bufpush(0x2CC9); + break; + case 0x2CCA: + bufpush(0x2CCB); + break; + case 0x2CCC: + bufpush(0x2CCD); + break; + case 0x2CCE: + bufpush(0x2CCF); + break; + case 0x2CD0: + bufpush(0x2CD1); + break; + case 0x2CD2: + bufpush(0x2CD3); + break; + case 0x2CD4: + bufpush(0x2CD5); + break; + case 0x2CD6: + bufpush(0x2CD7); + break; + case 0x2CD8: + bufpush(0x2CD9); + break; + case 0x2CDA: + bufpush(0x2CDB); + break; + case 0x2CDC: + bufpush(0x2CDD); + break; + case 0x2CDE: + bufpush(0x2CDF); + break; + case 0x2CE0: + bufpush(0x2CE1); + break; + case 0x2CE2: + bufpush(0x2CE3); + break; + case 0x2CEB: + bufpush(0x2CEC); + break; + case 0x2CED: + bufpush(0x2CEE); + break; + case 0x2CF2: + bufpush(0x2CF3); + break; + case 0xA640: + bufpush(0xA641); + break; + case 0xA642: + bufpush(0xA643); + break; + case 0xA644: + bufpush(0xA645); + break; + case 0xA646: + bufpush(0xA647); + break; + case 0xA648: + bufpush(0xA649); + break; + case 0xA64A: + bufpush(0xA64B); + break; + case 0xA64C: + bufpush(0xA64D); + break; + case 0xA64E: + bufpush(0xA64F); + break; + case 0xA650: + bufpush(0xA651); + break; + case 0xA652: + bufpush(0xA653); + break; + case 0xA654: + bufpush(0xA655); + break; + case 0xA656: + bufpush(0xA657); + break; + case 0xA658: + bufpush(0xA659); + break; + case 0xA65A: + bufpush(0xA65B); + break; + case 0xA65C: + bufpush(0xA65D); + break; + case 0xA65E: + bufpush(0xA65F); + break; + case 0xA660: + bufpush(0xA661); + break; + case 0xA662: + bufpush(0xA663); + break; + case 0xA664: + bufpush(0xA665); + break; + case 0xA666: + bufpush(0xA667); + break; + case 0xA668: + bufpush(0xA669); + break; + case 0xA66A: + bufpush(0xA66B); + break; + case 0xA66C: + bufpush(0xA66D); + break; + case 0xA680: + bufpush(0xA681); + break; + case 0xA682: + bufpush(0xA683); + break; + case 0xA684: + bufpush(0xA685); + break; + case 0xA686: + bufpush(0xA687); + break; + case 0xA688: + bufpush(0xA689); + break; + case 0xA68A: + bufpush(0xA68B); + break; + case 0xA68C: + bufpush(0xA68D); + break; + case 0xA68E: + bufpush(0xA68F); + break; + case 0xA690: + bufpush(0xA691); + break; + case 0xA692: + bufpush(0xA693); + break; + case 0xA694: + bufpush(0xA695); + break; + case 0xA696: + bufpush(0xA697); + break; + case 0xA698: + bufpush(0xA699); + break; + case 0xA69A: + bufpush(0xA69B); + break; + case 0xA722: + bufpush(0xA723); + break; + case 0xA724: + bufpush(0xA725); + break; + case 0xA726: + bufpush(0xA727); + break; + case 0xA728: + bufpush(0xA729); + break; + case 0xA72A: + bufpush(0xA72B); + break; + case 0xA72C: + bufpush(0xA72D); + break; + case 0xA72E: + bufpush(0xA72F); + break; + case 0xA732: + bufpush(0xA733); + break; + case 0xA734: + bufpush(0xA735); + break; + case 0xA736: + bufpush(0xA737); + break; + case 0xA738: + bufpush(0xA739); + break; + case 0xA73A: + bufpush(0xA73B); + break; + case 0xA73C: + bufpush(0xA73D); + break; + case 0xA73E: + bufpush(0xA73F); + break; + case 0xA740: + bufpush(0xA741); + break; + case 0xA742: + bufpush(0xA743); + break; + case 0xA744: + bufpush(0xA745); + break; + case 0xA746: + bufpush(0xA747); + break; + case 0xA748: + bufpush(0xA749); + break; + case 0xA74A: + bufpush(0xA74B); + break; + case 0xA74C: + bufpush(0xA74D); + break; + case 0xA74E: + bufpush(0xA74F); + break; + case 0xA750: + bufpush(0xA751); + break; + case 0xA752: + bufpush(0xA753); + break; + case 0xA754: + bufpush(0xA755); + break; + case 0xA756: + bufpush(0xA757); + break; + case 0xA758: + bufpush(0xA759); + break; + case 0xA75A: + bufpush(0xA75B); + break; + case 0xA75C: + bufpush(0xA75D); + break; + case 0xA75E: + bufpush(0xA75F); + break; + case 0xA760: + bufpush(0xA761); + break; + case 0xA762: + bufpush(0xA763); + break; + case 0xA764: + bufpush(0xA765); + break; + case 0xA766: + bufpush(0xA767); + break; + case 0xA768: + bufpush(0xA769); + break; + case 0xA76A: + bufpush(0xA76B); + break; + case 0xA76C: + bufpush(0xA76D); + break; + case 0xA76E: + bufpush(0xA76F); + break; + case 0xA779: + bufpush(0xA77A); + break; + case 0xA77B: + bufpush(0xA77C); + break; + case 0xA77D: + bufpush(0x1D79); + break; + case 0xA77E: + bufpush(0xA77F); + break; + case 0xA780: + bufpush(0xA781); + break; + case 0xA782: + bufpush(0xA783); + break; + case 0xA784: + bufpush(0xA785); + break; + case 0xA786: + bufpush(0xA787); + break; + case 0xA78B: + bufpush(0xA78C); + break; + case 0xA78D: + bufpush(0x0265); + break; + case 0xA790: + bufpush(0xA791); + break; + case 0xA792: + bufpush(0xA793); + break; + case 0xA796: + bufpush(0xA797); + break; + case 0xA798: + bufpush(0xA799); + break; + case 0xA79A: + bufpush(0xA79B); + break; + case 0xA79C: + bufpush(0xA79D); + break; + case 0xA79E: + bufpush(0xA79F); + break; + case 0xA7A0: + bufpush(0xA7A1); + break; + case 0xA7A2: + bufpush(0xA7A3); + break; + case 0xA7A4: + bufpush(0xA7A5); + break; + case 0xA7A6: + bufpush(0xA7A7); + break; + case 0xA7A8: + bufpush(0xA7A9); + break; + case 0xA7AA: + bufpush(0x0266); + break; + case 0xA7AB: + bufpush(0x025C); + break; + case 0xA7AC: + bufpush(0x0261); + break; + case 0xA7AD: + bufpush(0x026C); + break; + case 0xA7AE: + bufpush(0x026A); + break; + case 0xA7B0: + bufpush(0x029E); + break; + case 0xA7B1: + bufpush(0x0287); + break; + case 0xA7B2: + bufpush(0x029D); + break; + case 0xA7B3: + bufpush(0xAB53); + break; + case 0xA7B4: + bufpush(0xA7B5); + break; + case 0xA7B6: + bufpush(0xA7B7); + break; + case 0xAB70: + bufpush(0x13A0); + break; + case 0xAB71: + bufpush(0x13A1); + break; + case 0xAB72: + bufpush(0x13A2); + break; + case 0xAB73: + bufpush(0x13A3); + break; + case 0xAB74: + bufpush(0x13A4); + break; + case 0xAB75: + bufpush(0x13A5); + break; + case 0xAB76: + bufpush(0x13A6); + break; + case 0xAB77: + bufpush(0x13A7); + break; + case 0xAB78: + bufpush(0x13A8); + break; + case 0xAB79: + bufpush(0x13A9); + break; + case 0xAB7A: + bufpush(0x13AA); + break; + case 0xAB7B: + bufpush(0x13AB); + break; + case 0xAB7C: + bufpush(0x13AC); + break; + case 0xAB7D: + bufpush(0x13AD); + break; + case 0xAB7E: + bufpush(0x13AE); + break; + case 0xAB7F: + bufpush(0x13AF); + break; + case 0xAB80: + bufpush(0x13B0); + break; + case 0xAB81: + bufpush(0x13B1); + break; + case 0xAB82: + bufpush(0x13B2); + break; + case 0xAB83: + bufpush(0x13B3); + break; + case 0xAB84: + bufpush(0x13B4); + break; + case 0xAB85: + bufpush(0x13B5); + break; + case 0xAB86: + bufpush(0x13B6); + break; + case 0xAB87: + bufpush(0x13B7); + break; + case 0xAB88: + bufpush(0x13B8); + break; + case 0xAB89: + bufpush(0x13B9); + break; + case 0xAB8A: + bufpush(0x13BA); + break; + case 0xAB8B: + bufpush(0x13BB); + break; + case 0xAB8C: + bufpush(0x13BC); + break; + case 0xAB8D: + bufpush(0x13BD); + break; + case 0xAB8E: + bufpush(0x13BE); + break; + case 0xAB8F: + bufpush(0x13BF); + break; + case 0xAB90: + bufpush(0x13C0); + break; + case 0xAB91: + bufpush(0x13C1); + break; + case 0xAB92: + bufpush(0x13C2); + break; + case 0xAB93: + bufpush(0x13C3); + break; + case 0xAB94: + bufpush(0x13C4); + break; + case 0xAB95: + bufpush(0x13C5); + break; + case 0xAB96: + bufpush(0x13C6); + break; + case 0xAB97: + bufpush(0x13C7); + break; + case 0xAB98: + bufpush(0x13C8); + break; + case 0xAB99: + bufpush(0x13C9); + break; + case 0xAB9A: + bufpush(0x13CA); + break; + case 0xAB9B: + bufpush(0x13CB); + break; + case 0xAB9C: + bufpush(0x13CC); + break; + case 0xAB9D: + bufpush(0x13CD); + break; + case 0xAB9E: + bufpush(0x13CE); + break; + case 0xAB9F: + bufpush(0x13CF); + break; + case 0xABA0: + bufpush(0x13D0); + break; + case 0xABA1: + bufpush(0x13D1); + break; + case 0xABA2: + bufpush(0x13D2); + break; + case 0xABA3: + bufpush(0x13D3); + break; + case 0xABA4: + bufpush(0x13D4); + break; + case 0xABA5: + bufpush(0x13D5); + break; + case 0xABA6: + bufpush(0x13D6); + break; + case 0xABA7: + bufpush(0x13D7); + break; + case 0xABA8: + bufpush(0x13D8); + break; + case 0xABA9: + bufpush(0x13D9); + break; + case 0xABAA: + bufpush(0x13DA); + break; + case 0xABAB: + bufpush(0x13DB); + break; + case 0xABAC: + bufpush(0x13DC); + break; + case 0xABAD: + bufpush(0x13DD); + break; + case 0xABAE: + bufpush(0x13DE); + break; + case 0xABAF: + bufpush(0x13DF); + break; + case 0xABB0: + bufpush(0x13E0); + break; + case 0xABB1: + bufpush(0x13E1); + break; + case 0xABB2: + bufpush(0x13E2); + break; + case 0xABB3: + bufpush(0x13E3); + break; + case 0xABB4: + bufpush(0x13E4); + break; + case 0xABB5: + bufpush(0x13E5); + break; + case 0xABB6: + bufpush(0x13E6); + break; + case 0xABB7: + bufpush(0x13E7); + break; + case 0xABB8: + bufpush(0x13E8); + break; + case 0xABB9: + bufpush(0x13E9); + break; + case 0xABBA: + bufpush(0x13EA); + break; + case 0xABBB: + bufpush(0x13EB); + break; + case 0xABBC: + bufpush(0x13EC); + break; + case 0xABBD: + bufpush(0x13ED); + break; + case 0xABBE: + bufpush(0x13EE); + break; + case 0xABBF: + bufpush(0x13EF); + break; + case 0xFB00: + bufpush(0x0066); + bufpush(0x0066); + break; + case 0xFB01: + bufpush(0x0066); + bufpush(0x0069); + break; + case 0xFB02: + bufpush(0x0066); + bufpush(0x006C); + break; + case 0xFB03: + bufpush(0x0066); + bufpush(0x0066); + bufpush(0x0069); + break; + case 0xFB04: + bufpush(0x0066); + bufpush(0x0066); + bufpush(0x006C); + break; + case 0xFB05: + bufpush(0x0073); + bufpush(0x0074); + break; + case 0xFB06: + bufpush(0x0073); + bufpush(0x0074); + break; + case 0xFB13: + bufpush(0x0574); + bufpush(0x0576); + break; + case 0xFB14: + bufpush(0x0574); + bufpush(0x0565); + break; + case 0xFB15: + bufpush(0x0574); + bufpush(0x056B); + break; + case 0xFB16: + bufpush(0x057E); + bufpush(0x0576); + break; + case 0xFB17: + bufpush(0x0574); + bufpush(0x056D); + break; + case 0xFF21: + bufpush(0xFF41); + break; + case 0xFF22: + bufpush(0xFF42); + break; + case 0xFF23: + bufpush(0xFF43); + break; + case 0xFF24: + bufpush(0xFF44); + break; + case 0xFF25: + bufpush(0xFF45); + break; + case 0xFF26: + bufpush(0xFF46); + break; + case 0xFF27: + bufpush(0xFF47); + break; + case 0xFF28: + bufpush(0xFF48); + break; + case 0xFF29: + bufpush(0xFF49); + break; + case 0xFF2A: + bufpush(0xFF4A); + break; + case 0xFF2B: + bufpush(0xFF4B); + break; + case 0xFF2C: + bufpush(0xFF4C); + break; + case 0xFF2D: + bufpush(0xFF4D); + break; + case 0xFF2E: + bufpush(0xFF4E); + break; + case 0xFF2F: + bufpush(0xFF4F); + break; + case 0xFF30: + bufpush(0xFF50); + break; + case 0xFF31: + bufpush(0xFF51); + break; + case 0xFF32: + bufpush(0xFF52); + break; + case 0xFF33: + bufpush(0xFF53); + break; + case 0xFF34: + bufpush(0xFF54); + break; + case 0xFF35: + bufpush(0xFF55); + break; + case 0xFF36: + bufpush(0xFF56); + break; + case 0xFF37: + bufpush(0xFF57); + break; + case 0xFF38: + bufpush(0xFF58); + break; + case 0xFF39: + bufpush(0xFF59); + break; + case 0xFF3A: + bufpush(0xFF5A); + break; + case 0x10400: + bufpush(0x10428); + break; + case 0x10401: + bufpush(0x10429); + break; + case 0x10402: + bufpush(0x1042A); + break; + case 0x10403: + bufpush(0x1042B); + break; + case 0x10404: + bufpush(0x1042C); + break; + case 0x10405: + bufpush(0x1042D); + break; + case 0x10406: + bufpush(0x1042E); + break; + case 0x10407: + bufpush(0x1042F); + break; + case 0x10408: + bufpush(0x10430); + break; + case 0x10409: + bufpush(0x10431); + break; + case 0x1040A: + bufpush(0x10432); + break; + case 0x1040B: + bufpush(0x10433); + break; + case 0x1040C: + bufpush(0x10434); + break; + case 0x1040D: + bufpush(0x10435); + break; + case 0x1040E: + bufpush(0x10436); + break; + case 0x1040F: + bufpush(0x10437); + break; + case 0x10410: + bufpush(0x10438); + break; + case 0x10411: + bufpush(0x10439); + break; + case 0x10412: + bufpush(0x1043A); + break; + case 0x10413: + bufpush(0x1043B); + break; + case 0x10414: + bufpush(0x1043C); + break; + case 0x10415: + bufpush(0x1043D); + break; + case 0x10416: + bufpush(0x1043E); + break; + case 0x10417: + bufpush(0x1043F); break; case 0x10418: bufpush(0x10440); @@ -2632,6 +3857,471 @@ case 0x10425: bufpush(0x1044D); break; + case 0x10426: + bufpush(0x1044E); + break; + case 0x10427: + bufpush(0x1044F); + break; + case 0x104B0: + bufpush(0x104D8); + break; + case 0x104B1: + bufpush(0x104D9); + break; + case 0x104B2: + bufpush(0x104DA); + break; + case 0x104B3: + bufpush(0x104DB); + break; + case 0x104B4: + bufpush(0x104DC); + break; + case 0x104B5: + bufpush(0x104DD); + break; + case 0x104B6: + bufpush(0x104DE); + break; + case 0x104B7: + bufpush(0x104DF); + break; + case 0x104B8: + bufpush(0x104E0); + break; + case 0x104B9: + bufpush(0x104E1); + break; + case 0x104BA: + bufpush(0x104E2); + break; + case 0x104BB: + bufpush(0x104E3); + break; + case 0x104BC: + bufpush(0x104E4); + break; + case 0x104BD: + bufpush(0x104E5); + break; + case 0x104BE: + bufpush(0x104E6); + break; + case 0x104BF: + bufpush(0x104E7); + break; + case 0x104C0: + bufpush(0x104E8); + break; + case 0x104C1: + bufpush(0x104E9); + break; + case 0x104C2: + bufpush(0x104EA); + break; + case 0x104C3: + bufpush(0x104EB); + break; + case 0x104C4: + bufpush(0x104EC); + break; + case 0x104C5: + bufpush(0x104ED); + break; + case 0x104C6: + bufpush(0x104EE); + break; + case 0x104C7: + bufpush(0x104EF); + break; + case 0x104C8: + bufpush(0x104F0); + break; + case 0x104C9: + bufpush(0x104F1); + break; + case 0x104CA: + bufpush(0x104F2); + break; + case 0x104CB: + bufpush(0x104F3); + break; + case 0x104CC: + bufpush(0x104F4); + break; + case 0x104CD: + bufpush(0x104F5); + break; + case 0x104CE: + bufpush(0x104F6); + break; + case 0x104CF: + bufpush(0x104F7); + break; + case 0x104D0: + bufpush(0x104F8); + break; + case 0x104D1: + bufpush(0x104F9); + break; + case 0x104D2: + bufpush(0x104FA); + break; + case 0x104D3: + bufpush(0x104FB); + break; + case 0x10C80: + bufpush(0x10CC0); + break; + case 0x10C81: + bufpush(0x10CC1); + break; + case 0x10C82: + bufpush(0x10CC2); + break; + case 0x10C83: + bufpush(0x10CC3); + break; + case 0x10C84: + bufpush(0x10CC4); + break; + case 0x10C85: + bufpush(0x10CC5); + break; + case 0x10C86: + bufpush(0x10CC6); + break; + case 0x10C87: + bufpush(0x10CC7); + break; + case 0x10C88: + bufpush(0x10CC8); + break; + case 0x10C89: + bufpush(0x10CC9); + break; + case 0x10C8A: + bufpush(0x10CCA); + break; + case 0x10C8B: + bufpush(0x10CCB); + break; + case 0x10C8C: + bufpush(0x10CCC); + break; + case 0x10C8D: + bufpush(0x10CCD); + break; + case 0x10C8E: + bufpush(0x10CCE); + break; + case 0x10C8F: + bufpush(0x10CCF); + break; + case 0x10C90: + bufpush(0x10CD0); + break; + case 0x10C91: + bufpush(0x10CD1); + break; + case 0x10C92: + bufpush(0x10CD2); + break; + case 0x10C93: + bufpush(0x10CD3); + break; + case 0x10C94: + bufpush(0x10CD4); + break; + case 0x10C95: + bufpush(0x10CD5); + break; + case 0x10C96: + bufpush(0x10CD6); + break; + case 0x10C97: + bufpush(0x10CD7); + break; + case 0x10C98: + bufpush(0x10CD8); + break; + case 0x10C99: + bufpush(0x10CD9); + break; + case 0x10C9A: + bufpush(0x10CDA); + break; + case 0x10C9B: + bufpush(0x10CDB); + break; + case 0x10C9C: + bufpush(0x10CDC); + break; + case 0x10C9D: + bufpush(0x10CDD); + break; + case 0x10C9E: + bufpush(0x10CDE); + break; + case 0x10C9F: + bufpush(0x10CDF); + break; + case 0x10CA0: + bufpush(0x10CE0); + break; + case 0x10CA1: + bufpush(0x10CE1); + break; + case 0x10CA2: + bufpush(0x10CE2); + break; + case 0x10CA3: + bufpush(0x10CE3); + break; + case 0x10CA4: + bufpush(0x10CE4); + break; + case 0x10CA5: + bufpush(0x10CE5); + break; + case 0x10CA6: + bufpush(0x10CE6); + break; + case 0x10CA7: + bufpush(0x10CE7); + break; + case 0x10CA8: + bufpush(0x10CE8); + break; + case 0x10CA9: + bufpush(0x10CE9); + break; + case 0x10CAA: + bufpush(0x10CEA); + break; + case 0x10CAB: + bufpush(0x10CEB); + break; + case 0x10CAC: + bufpush(0x10CEC); + break; + case 0x10CAD: + bufpush(0x10CED); + break; + case 0x10CAE: + bufpush(0x10CEE); + break; + case 0x10CAF: + bufpush(0x10CEF); + break; + case 0x10CB0: + bufpush(0x10CF0); + break; + case 0x10CB1: + bufpush(0x10CF1); + break; + case 0x10CB2: + bufpush(0x10CF2); + break; + case 0x118A0: + bufpush(0x118C0); + break; + case 0x118A1: + bufpush(0x118C1); + break; + case 0x118A2: + bufpush(0x118C2); + break; + case 0x118A3: + bufpush(0x118C3); + break; + case 0x118A4: + bufpush(0x118C4); + break; + case 0x118A5: + bufpush(0x118C5); + break; + case 0x118A6: + bufpush(0x118C6); + break; + case 0x118A7: + bufpush(0x118C7); + break; + case 0x118A8: + bufpush(0x118C8); + break; + case 0x118A9: + bufpush(0x118C9); + break; + case 0x118AA: + bufpush(0x118CA); + break; + case 0x118AB: + bufpush(0x118CB); + break; + case 0x118AC: + bufpush(0x118CC); + break; + case 0x118AD: + bufpush(0x118CD); + break; + case 0x118AE: + bufpush(0x118CE); + break; + case 0x118AF: + bufpush(0x118CF); + break; + case 0x118B0: + bufpush(0x118D0); + break; + case 0x118B1: + bufpush(0x118D1); + break; + case 0x118B2: + bufpush(0x118D2); + break; + case 0x118B3: + bufpush(0x118D3); + break; + case 0x118B4: + bufpush(0x118D4); + break; + case 0x118B5: + bufpush(0x118D5); + break; + case 0x118B6: + bufpush(0x118D6); + break; + case 0x118B7: + bufpush(0x118D7); + break; + case 0x118B8: + bufpush(0x118D8); + break; + case 0x118B9: + bufpush(0x118D9); + break; + case 0x118BA: + bufpush(0x118DA); + break; + case 0x118BB: + bufpush(0x118DB); + break; + case 0x118BC: + bufpush(0x118DC); + break; + case 0x118BD: + bufpush(0x118DD); + break; + case 0x118BE: + bufpush(0x118DE); + break; + case 0x118BF: + bufpush(0x118DF); + break; + case 0x1E900: + bufpush(0x1E922); + break; + case 0x1E901: + bufpush(0x1E923); + break; + case 0x1E902: + bufpush(0x1E924); + break; + case 0x1E903: + bufpush(0x1E925); + break; + case 0x1E904: + bufpush(0x1E926); + break; + case 0x1E905: + bufpush(0x1E927); + break; + case 0x1E906: + bufpush(0x1E928); + break; + case 0x1E907: + bufpush(0x1E929); + break; + case 0x1E908: + bufpush(0x1E92A); + break; + case 0x1E909: + bufpush(0x1E92B); + break; + case 0x1E90A: + bufpush(0x1E92C); + break; + case 0x1E90B: + bufpush(0x1E92D); + break; + case 0x1E90C: + bufpush(0x1E92E); + break; + case 0x1E90D: + bufpush(0x1E92F); + break; + case 0x1E90E: + bufpush(0x1E930); + break; + case 0x1E90F: + bufpush(0x1E931); + break; + case 0x1E910: + bufpush(0x1E932); + break; + case 0x1E911: + bufpush(0x1E933); + break; + case 0x1E912: + bufpush(0x1E934); + break; + case 0x1E913: + bufpush(0x1E935); + break; + case 0x1E914: + bufpush(0x1E936); + break; + case 0x1E915: + bufpush(0x1E937); + break; + case 0x1E916: + bufpush(0x1E938); + break; + case 0x1E917: + bufpush(0x1E939); + break; + case 0x1E918: + bufpush(0x1E93A); + break; + case 0x1E919: + bufpush(0x1E93B); + break; + case 0x1E91A: + bufpush(0x1E93C); + break; + case 0x1E91B: + bufpush(0x1E93D); + break; + case 0x1E91C: + bufpush(0x1E93E); + break; + case 0x1E91D: + bufpush(0x1E93F); + break; + case 0x1E91E: + bufpush(0x1E940); + break; + case 0x1E91F: + bufpush(0x1E941); + break; + case 0x1E920: + bufpush(0x1E942); + break; + case 0x1E921: + bufpush(0x1E943); + break; default: bufpush(c); } diff --git a/chunk.h b/chunk.h index a2248f5..f198be3 100644 --- a/chunk.h +++ b/chunk.h @@ -37,6 +37,8 @@ static CMARK_INLINE void cmark_chunk_ltrim(cmark_chunk *c) { } static CMARK_INLINE void cmark_chunk_rtrim(cmark_chunk *c) { + assert(!c->alloc); + while (c->len > 0) { if (!cmark_isspace(c->data[c->len - 1])) break; @@ -50,8 +52,8 @@ static CMARK_INLINE void cmark_chunk_trim(cmark_chunk *c) { cmark_chunk_rtrim(c); } -static CMARK_INLINE bufsize_t - cmark_chunk_strchr(cmark_chunk *ch, int c, bufsize_t offset) { +static CMARK_INLINE bufsize_t cmark_chunk_strchr(cmark_chunk *ch, int c, + bufsize_t offset) { const unsigned char *p = (unsigned char *)memchr(ch->data + offset, c, ch->len - offset); return p ? (bufsize_t)(p - ch->data) : ch->len; @@ -99,8 +101,8 @@ static CMARK_INLINE cmark_chunk cmark_chunk_literal(const char *data) { return c; } -static CMARK_INLINE cmark_chunk - cmark_chunk_dup(const cmark_chunk *ch, bufsize_t pos, bufsize_t len) { +static CMARK_INLINE cmark_chunk cmark_chunk_dup(const cmark_chunk *ch, + bufsize_t pos, bufsize_t len) { cmark_chunk c = {ch->data + pos, len, 0}; return c; } diff --git a/cmark.c b/cmark.c index 0d3bc16..d64237f 100644 --- a/cmark.c +++ b/cmark.c @@ -12,15 +12,19 @@ const char *cmark_version_string() { return CMARK_VERSION_STRING; } static void *xcalloc(size_t nmem, size_t size) { void *ptr = calloc(nmem, size); - if (!ptr) + if (!ptr) { + fprintf(stderr, "[cmark] calloc returned null pointer, aborting\n"); abort(); + } return ptr; } static void *xrealloc(void *ptr, size_t size) { void *new_ptr = realloc(ptr, size); - if (!new_ptr) + if (!new_ptr) { + fprintf(stderr, "[cmark] realloc returned null pointer, aborting\n"); abort(); + } return new_ptr; } diff --git a/cmark.h b/cmark.h index a26ecb4..d1a65aa 100644 --- a/cmark.h +++ b/cmark.h @@ -2,8 +2,8 @@ #define CMARK_H #include -#include "cmark_export.h" -#include "cmark_version.h" +#include +#include #ifdef __cplusplus extern "C" { @@ -265,7 +265,8 @@ CMARK_EXPORT const char *cmark_node_get_type_string(cmark_node *node); /** Returns the string contents of 'node', or an empty - string if none is set. + string if none is set. Returns NULL if called on a + node that does not have string content. */ CMARK_EXPORT const char *cmark_node_get_literal(cmark_node *node); @@ -334,7 +335,8 @@ CMARK_EXPORT const char *cmark_node_get_fence_info(cmark_node *node); CMARK_EXPORT int cmark_node_set_fence_info(cmark_node *node, const char *info); /** Returns the URL of a link or image 'node', or an empty string - if no URL is set. + if no URL is set. Returns NULL if called on a node that is + not a link or image. */ CMARK_EXPORT const char *cmark_node_get_url(cmark_node *node); @@ -344,7 +346,8 @@ CMARK_EXPORT const char *cmark_node_get_url(cmark_node *node); CMARK_EXPORT int cmark_node_set_url(cmark_node *node, const char *url); /** Returns the title of a link or image 'node', or an empty - string if no title is set. + string if no title is set. Returns NULL if called on a node + that is not a link or image. */ CMARK_EXPORT const char *cmark_node_get_title(cmark_node *node); @@ -354,7 +357,8 @@ CMARK_EXPORT const char *cmark_node_get_title(cmark_node *node); CMARK_EXPORT int cmark_node_set_title(cmark_node *node, const char *title); /** Returns the literal "on enter" text for a custom 'node', or - an empty string if no on_enter is set. + an empty string if no on_enter is set. Returns NULL if called + on a non-custom node. */ CMARK_EXPORT const char *cmark_node_get_on_enter(cmark_node *node); @@ -366,7 +370,8 @@ CMARK_EXPORT int cmark_node_set_on_enter(cmark_node *node, const char *on_enter); /** Returns the literal "on exit" text for a custom 'node', or - an empty string if no on_exit is set. + an empty string if no on_exit is set. Returns NULL if + called on a non-custom node. */ CMARK_EXPORT const char *cmark_node_get_on_exit(cmark_node *node); @@ -563,7 +568,7 @@ char *cmark_render_latex(cmark_node *root, int options, int width); * ### Options affecting parsing */ -/** Normalize tree by consolidating adjacent text nodes. +/** Legacy option (no effect). */ #define CMARK_OPT_NORMALIZE (1 << 8) @@ -590,13 +595,13 @@ char *cmark_render_latex(cmark_node *root, int options, int width); * In hexadecimal format, the number 0x010203 represents version 1.2.3. */ CMARK_EXPORT -int cmark_version(); +int cmark_version(void); /** The library version string for runtime checks. Also available as * macro CMARK_VERSION_STRING for compile time checks. */ CMARK_EXPORT -const char *cmark_version_string(); +const char *cmark_version_string(void); /** # AUTHORS * diff --git a/commonmark.c b/commonmark.c index b8b1820..95a1ae5 100644 --- a/commonmark.c +++ b/commonmark.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include "config.h" @@ -81,7 +82,9 @@ static int longest_backtick_sequence(const char *code) { } static int shortest_unused_backtick_sequence(const char *code) { - int32_t used = 1; + // note: if the shortest sequence is >= 32, this returns 32 + // so as not to overflow the bit array. + uint32_t used = 1; int current = 0; size_t i = 0; size_t code_len = strlen(code); @@ -89,8 +92,8 @@ static int shortest_unused_backtick_sequence(const char *code) { if (code[i] == '`') { current++; } else { - if (current) { - used |= (1 << current); + if (current > 0 && current < 32) { + used |= (1U << current); } current = 0; } @@ -98,7 +101,7 @@ static int shortest_unused_backtick_sequence(const char *code) { } // return number of first bit that is 0: i = 0; - while (used & 1) { + while (i < 32 && used & 1) { used = used >> 1; i++; } diff --git a/commonmark_test.go b/commonmark_test.go index 8f112c5..6ef83cf 100644 --- a/commonmark_test.go +++ b/commonmark_test.go @@ -197,7 +197,7 @@ func TestCMarkLists(t *testing.T) { root.AppendChild(list) t.Logf("\nXML: %v", root.RenderXML(commonmark.CMARK_OPT_DEFAULT)) htmlString := root.RenderHtml(commonmark.CMARK_OPT_DEFAULT) - if htmlString != "
      \n
    1. List Item 1
    2. \n
    3. \n
    \n" { + if htmlString != "
      \n
    1. List Item 1
    2. \n
    3. \n
    \n" { t.Error("htmlString is wrong!") } t.Logf("\nHtmlString: \n%v", htmlString) diff --git a/entities.inc b/entities.inc index ec3d2a9..a7c36e2 100644 --- a/entities.inc +++ b/entities.inc @@ -6,7 +6,7 @@ struct cmark_entity_node { }; #define CMARK_ENTITY_MIN_LENGTH 2 -#define CMARK_ENTITY_MAX_LENGTH 31 +#define CMARK_ENTITY_MAX_LENGTH 32 #define CMARK_NUM_ENTITIES 2125 static const struct cmark_entity_node cmark_entities[] = { diff --git a/houdini_html_u.c b/houdini_html_u.c index 6e8d620..30d08aa 100644 --- a/houdini_html_u.c +++ b/houdini_html_u.c @@ -16,7 +16,7 @@ static const unsigned char *S_lookup(int i, int low, int hi, strncmp((const char *)s, (const char *)cmark_entities[i].entity, len); if (cmp == 0 && cmark_entities[i].entity[len] == 0) { return (const unsigned char *)cmark_entities[i].bytes; - } else if (cmp < 0 && i > low) { + } else if (cmp <= 0 && i > low) { j = i - ((i - low) / 2); if (j == i) j -= 1; diff --git a/inlines.c b/inlines.c index e5ca8e2..2d7f385 100644 --- a/inlines.c +++ b/inlines.c @@ -30,10 +30,13 @@ static const char *RIGHTSINGLEQUOTE = "\xE2\x80\x99"; #define make_emph(mem) make_simple(mem, CMARK_NODE_EMPH) #define make_strong(mem) make_simple(mem, CMARK_NODE_STRONG) +#define MAXBACKTICKS 1000 + typedef struct delimiter { struct delimiter *previous; struct delimiter *next; cmark_node *inl_text; + bufsize_t length; unsigned char delim_char; bool can_open; bool can_close; @@ -56,6 +59,8 @@ typedef struct { cmark_reference_map *refmap; delimiter *last_delim; bracket *last_bracket; + bufsize_t backticks[MAXBACKTICKS + 1]; + bool scanned_for_backticks; } subject; static CMARK_INLINE bool S_is_line_end_char(char c) { @@ -110,7 +115,8 @@ static cmark_chunk chunk_clone(cmark_mem *mem, cmark_chunk *src) { c.len = len; c.data = (unsigned char *)mem->calloc(len + 1, 1); c.alloc = 1; - memcpy(c.data, src->data, len); + if (len) + memcpy(c.data, src->data, len); c.data[len] = '\0'; return c; @@ -145,6 +151,7 @@ static CMARK_INLINE cmark_node *make_autolink(cmark_mem *mem, cmark_chunk url, static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer, cmark_reference_map *refmap) { + int i; e->mem = mem; e->input.data = buffer->ptr; e->input.len = buffer->size; @@ -153,6 +160,10 @@ static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer, e->refmap = refmap; e->last_delim = NULL; e->last_bracket = NULL; + for (i = 0; i <= MAXBACKTICKS; i++) { + e->backticks[i] = 0; + } + e->scanned_for_backticks = false; } static CMARK_INLINE int isbacktick(int c) { return (c == '`'); } @@ -219,23 +230,42 @@ static CMARK_INLINE cmark_chunk take_while(subject *subj, int (*f)(int)) { // after the closing backticks. static bufsize_t scan_to_closing_backticks(subject *subj, bufsize_t openticklength) { - // read non backticks - unsigned char c; - while ((c = peek_char(subj)) && c != '`') { - advance(subj); - } - if (is_eof(subj)) { - return 0; // did not find closing ticks, return 0 + + bool found = false; + if (openticklength > MAXBACKTICKS) { + // we limit backtick string length because of the array subj->backticks: + return 0; } - bufsize_t numticks = 0; - while (peek_char(subj) == '`') { - advance(subj); - numticks++; + if (subj->scanned_for_backticks && + subj->backticks[openticklength] <= subj->pos) { + // return if we already know there's no closer + return 0; } - if (numticks != openticklength) { - return (scan_to_closing_backticks(subj, openticklength)); + while (!found) { + // read non backticks + unsigned char c; + while ((c = peek_char(subj)) && c != '`') { + advance(subj); + } + if (is_eof(subj)) { + break; + } + bufsize_t numticks = 0; + while (peek_char(subj) == '`') { + advance(subj); + numticks++; + } + // store position of ender + if (numticks <= MAXBACKTICKS) { + subj->backticks[numticks] = subj->pos - numticks; + } + if (numticks == openticklength) { + return (subj->pos); + } } - return (subj->pos); + // got through whole input without finding closer + subj->scanned_for_backticks = true; + return 0; } // Parse backtick code section or raw backticks, return an inline. @@ -302,20 +332,21 @@ static int scan_delims(subject *subj, unsigned char c, bool *can_open, after_char = 10; } left_flanking = numdelims > 0 && !cmark_utf8proc_is_space(after_char) && - !(cmark_utf8proc_is_punctuation(after_char) && - !cmark_utf8proc_is_space(before_char) && - !cmark_utf8proc_is_punctuation(before_char)); + (!cmark_utf8proc_is_punctuation(after_char) || + cmark_utf8proc_is_space(before_char) || + cmark_utf8proc_is_punctuation(before_char)); right_flanking = numdelims > 0 && !cmark_utf8proc_is_space(before_char) && - !(cmark_utf8proc_is_punctuation(before_char) && - !cmark_utf8proc_is_space(after_char) && - !cmark_utf8proc_is_punctuation(after_char)); + (!cmark_utf8proc_is_punctuation(before_char) || + cmark_utf8proc_is_space(after_char) || + cmark_utf8proc_is_punctuation(after_char)); if (c == '_') { *can_open = left_flanking && (!right_flanking || cmark_utf8proc_is_punctuation(before_char)); *can_close = right_flanking && (!left_flanking || cmark_utf8proc_is_punctuation(after_char)); } else if (c == '\'' || c == '"') { - *can_open = left_flanking && !right_flanking; + *can_open = left_flanking && !right_flanking && + before_char != ']' && before_char != ')'; *can_close = right_flanking; } else { *can_open = left_flanking; @@ -330,9 +361,8 @@ static void print_delimiters(subject *subj) delimiter *delim; delim = subj->last_delim; while (delim != NULL) { - printf("Item at stack pos %p, text pos %d: %d %d %d next(%p) -prev(%p)\n", - (void*)delim, delim->position, delim->delim_char, + printf("Item at stack pos %p: %d %d %d next(%p) prev(%p)\n", + (void*)delim, delim->delim_char, delim->can_open, delim->can_close, (void*)delim->next, (void*)delim->previous); delim = delim->previous; @@ -353,7 +383,7 @@ static void remove_delimiter(subject *subj, delimiter *delim) { if (delim->previous != NULL) { delim->previous->next = delim->next; } - free(delim); + subj->mem->free(delim); } static void pop_bracket(subject *subj) { @@ -362,7 +392,7 @@ static void pop_bracket(subject *subj) { return; b = subj->last_bracket; subj->last_bracket = subj->last_bracket->previous; - free(b); + subj->mem->free(b); } static void push_delimiter(subject *subj, unsigned char c, bool can_open, @@ -372,6 +402,7 @@ static void push_delimiter(subject *subj, unsigned char c, bool can_open, delim->can_open = can_open; delim->can_close = can_close; delim->inl_text = inl_text; + delim->length = inl_text->as.literal.len; delim->previous = subj->last_delim; delim->next = NULL; if (delim->previous != NULL) { @@ -486,14 +517,9 @@ static void process_emphasis(subject *subj, delimiter *stack_bottom) { delimiter *opener; delimiter *old_closer; bool opener_found; - bool odd_match; - delimiter *openers_bottom[128]; - - // initialize openers_bottom: - openers_bottom['*'] = stack_bottom; - openers_bottom['_'] = stack_bottom; - openers_bottom['\''] = stack_bottom; - openers_bottom['"'] = stack_bottom; + int openers_bottom_index; + delimiter *openers_bottom[6] = {stack_bottom, stack_bottom, stack_bottom, + stack_bottom, stack_bottom, stack_bottom}; // move back to first relevant delim. while (closer != NULL && closer->previous != stack_bottom) { @@ -503,23 +529,35 @@ static void process_emphasis(subject *subj, delimiter *stack_bottom) { // now move forward, looking for closers, and handling each while (closer != NULL) { if (closer->can_close) { + switch (closer->delim_char) { + case '"': + openers_bottom_index = 0; + break; + case '\'': + openers_bottom_index = 1; + break; + case '_': + openers_bottom_index = 2; + break; + case '*': + openers_bottom_index = 3 + (closer->length % 3); + break; + default: + assert(false); + } + // 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->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->inl_text->as.literal.len + - closer->inl_text->as.literal.len) % - 3 == - 0); - if (opener->delim_char == closer->delim_char && opener->can_open && - !odd_match) { - opener_found = true; - break; + while (opener != NULL && opener != openers_bottom[openers_bottom_index]) { + 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 + if (!(closer->can_open || opener->can_close) || + ((opener->length + closer->length) % 3) != 0) { + opener_found = true; + break; + } } opener = opener->previous; } @@ -547,13 +585,9 @@ static void process_emphasis(subject *subj, delimiter *stack_bottom) { } closer = closer->next; } - if (!opener_found && !odd_match) { + if (!opener_found) { // set lower bound for future searches for openers - // (we don't do this with 'odd_match' set because - // a ** that didn't match an earlier * might turn into - // an opener, and the * might be matched by something - // else. - openers_bottom[old_closer->delim_char] = old_closer->previous; + openers_bottom[openers_bottom_index] = old_closer->previous; if (!old_closer->can_open) { // we can remove a closer that can't be an // opener, once we've seen there's no @@ -566,7 +600,7 @@ static void process_emphasis(subject *subj, delimiter *stack_bottom) { } } // free all delimiters in list until stack_bottom: - while (subj->last_delim != stack_bottom) { + while (subj->last_delim != NULL && subj->last_delim != stack_bottom) { remove_delimiter(subj, subj->last_delim); } } @@ -582,12 +616,7 @@ static delimiter *S_insert_emph(subject *subj, delimiter *opener, cmark_node *tmp, *tmpnext, *emph; // calculate the actual number of characters used from this closer - if (closer_num_chars < 3 || opener_num_chars < 3) { - use_delims = closer_num_chars <= opener_num_chars ? closer_num_chars - : opener_num_chars; - } else { // closer and opener both have >= 3 characters - use_delims = closer_num_chars % 2 == 0 ? 2 : 1; - } + use_delims = (closer_num_chars >= 2 && opener_num_chars >= 2) ? 2 : 1; // remove used characters from associated inlines. opener_num_chars -= use_delims; @@ -667,8 +696,8 @@ static cmark_node *handle_entity(subject *subj) { return make_str(subj->mem, cmark_chunk_buf_detach(&ent)); } -// Clean a URL: remove surrounding whitespace and surrounding <>, -// and remove \ that escape punctuation. +// Clean a URL: remove surrounding whitespace, and remove \ that escape +// punctuation. cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url) { cmark_strbuf buf = CMARK_BUF_INIT(mem); @@ -679,11 +708,7 @@ cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url) { return result; } - if (url->data[0] == '<' && url->data[url->len - 1] == '>') { - houdini_unescape_html_f(&buf, url->data + 1, url->len - 2); - } else { - houdini_unescape_html_f(&buf, url->data, url->len); - } + houdini_unescape_html_f(&buf, url->data, url->len); cmark_strbuf_unescape(&buf); return cmark_chunk_buf_detach(&buf); @@ -797,12 +822,76 @@ static int link_label(subject *subj, cmark_chunk *raw_label) { return 0; } +static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset, + cmark_chunk *output) { + bufsize_t i = offset; + size_t nb_p = 0; + + while (i < input->len) { + if (input->data[i] == '\\' && + i + 1 < input-> len && + cmark_ispunct(input->data[i+1])) + i += 2; + else if (input->data[i] == '(') { + ++nb_p; + ++i; + } else if (input->data[i] == ')') { + if (nb_p == 0) + break; + --nb_p; + ++i; + } else if (cmark_isspace(input->data[i])) + break; + else + ++i; + } + + if (i >= input->len) + return -1; + + { + cmark_chunk result = {input->data + offset, i - offset, 0}; + *output = result; + } + return i - offset; +} + +static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset, + cmark_chunk *output) { + bufsize_t i = offset; + + if (i < input->len && input->data[i] == '<') { + ++i; + while (i < input->len) { + if (input->data[i] == '>') { + ++i; + break; + } else if (input->data[i] == '\\') + i += 2; + else if (cmark_isspace(input->data[i]) || input->data[i] == '<') + return manual_scan_link_url_2(input, offset, output); + else + ++i; + } + } else { + return manual_scan_link_url_2(input, offset, output); + } + + if (i >= input->len) + return -1; + + { + cmark_chunk result = {input->data + offset + 1, i - 2 - offset, 0}; + *output = result; + } + return i - offset; +} + // Return a link, an image, or a literal close bracket. static cmark_node *handle_close_bracket(subject *subj) { - bufsize_t initial_pos; - bufsize_t starturl, endurl, starttitle, endtitle, endall; - bufsize_t n; - bufsize_t sps; + bufsize_t initial_pos, after_link_text_pos; + bufsize_t endurl, starttitle, endtitle, endall; + bufsize_t sps, n; cmark_reference *ref = NULL; cmark_chunk url_chunk, title_chunk; cmark_chunk url, title; @@ -833,14 +922,16 @@ static cmark_node *handle_close_bracket(subject *subj) { // 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. if (peek_char(subj) == '(' && ((sps = scan_spacechars(&subj->input, subj->pos + 1)) > -1) && - ((n = scan_link_url(&subj->input, subj->pos + 1 + sps)) > -1)) { + ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps, + &url_chunk)) > -1)) { // try to parse an explicit link: - starturl = subj->pos + 1 + sps; // after ( - endurl = starturl + n; + endurl = subj->pos + 1 + sps + n; starttitle = endurl + scan_spacechars(&subj->input, endurl); // ensure there are spaces btw url and title @@ -853,7 +944,6 @@ static cmark_node *handle_close_bracket(subject *subj) { if (peek_at(subj, endall) == ')') { subj->pos = endall + 1; - url_chunk = cmark_chunk_dup(&subj->input, starturl, endurl - starturl); title_chunk = cmark_chunk_dup(&subj->input, starttitle, endtitle - starttitle); url = cmark_clean_url(subj->mem, &url_chunk); @@ -863,7 +953,8 @@ static cmark_node *handle_close_bracket(subject *subj) { goto match; } else { - goto noMatch; + // it could still be a shortcut reference link + subj->pos = after_link_text_pos; } } @@ -1094,7 +1185,10 @@ extern void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent, ; process_emphasis(&subj, NULL); - // free bracket stack + // free bracket and delim stack + while (subj.last_delim) { + remove_delimiter(&subj, subj.last_delim); + } while (subj.last_bracket) { pop_bracket(&subj); } @@ -1138,9 +1232,8 @@ bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input, // parse link url: spnl(&subj); - matchlen = scan_link_url(&subj.input, subj.pos); - if (matchlen) { - url = cmark_chunk_dup(&subj.input, subj.pos, matchlen); + if ((matchlen = manual_scan_link_url(&subj.input, subj.pos, &url)) > -1 && + url.len > 0) { subj.pos += matchlen; } else { return 0; diff --git a/latex.c b/latex.c index 7c3decd..0d9517d 100644 --- a/latex.c +++ b/latex.c @@ -42,7 +42,7 @@ static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_escaping escape, break; case 45: // '-' if (nextc == 45) { // prevent ligature - cmark_render_ascii(renderer, "\\-"); + cmark_render_ascii(renderer, "-{}"); } else { cmark_render_ascii(renderer, "-"); } @@ -179,8 +179,12 @@ static link_type get_link_type(cmark_node *node) { link_text = node->first_child; cmark_consolidate_text_nodes(link_text); + + if (!link_text) + return NO_LINK; + realurl = (char *)url; - realurllen = url_len; + realurllen = (int)url_len; if (strncmp(realurl, "mailto:", 7) == 0) { realurl += 7; realurllen -= 7; @@ -216,11 +220,10 @@ static int S_get_enumlevel(cmark_node *node) { static int S_render_node(cmark_renderer *renderer, cmark_node *node, cmark_event_type ev_type, int options) { int list_number; + int enumlevel; char list_number_string[LIST_NUMBER_STRING_SIZE]; bool entering = (ev_type == CMARK_EVENT_ENTER); cmark_list_type list_type; - const char *roman_numerals[] = {"", "i", "ii", "iii", "iv", "v", - "vi", "vii", "viii", "ix", "x"}; bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options); // avoid warning about unused parameter: @@ -249,13 +252,24 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, CR(); list_number = cmark_node_get_list_start(node); if (list_number > 1) { - snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d", - list_number); - LIT("\\setcounter{enum"); - LIT((char *)roman_numerals[S_get_enumlevel(node)]); - LIT("}{"); - OUT(list_number_string, false, NORMAL); - LIT("}"); + enumlevel = S_get_enumlevel(node); + // latex normally supports only five levels + if (enumlevel >= 1 && enumlevel <= 5) { + snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d", + list_number); + LIT("\\setcounter{enum"); + switch (enumlevel) { + case 1: LIT("i"); break; + case 2: LIT("ii"); break; + case 3: LIT("iii"); break; + case 4: LIT("iv"); break; + case 5: LIT("v"); break; + default: LIT("i"); break; + } + LIT("}{"); + OUT(list_number_string, false, NORMAL); + LIT("}"); + } CR(); } } else { @@ -390,7 +404,8 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, case URL_AUTOLINK: LIT("\\url{"); OUT(url, false, URL); - break; + LIT("}"); + return 0; // Don't process further nodes to avoid double-rendering artefacts case EMAIL_AUTOLINK: LIT("\\href{"); OUT(url, false, URL); diff --git a/node.c b/node.c index e722acf..c6c2902 100644 --- a/node.c +++ b/node.c @@ -85,7 +85,7 @@ cmark_node *cmark_node_new_with_mem(cmark_node_type type, cmark_mem *mem) { case CMARK_NODE_LIST: { cmark_list *list = &node->as.list; list->list_type = CMARK_BULLET_LIST; - list->start = 1; + list->start = 0; list->tight = false; break; } diff --git a/references.c b/references.c index e141213..89f2dc8 100644 --- a/references.c +++ b/references.c @@ -46,7 +46,7 @@ static unsigned char *normalize_reference(cmark_mem *mem, cmark_chunk *ref) { assert(result); if (result[0] == '\0') { - free(result); + mem->free(result); return NULL; } @@ -114,7 +114,7 @@ cmark_reference *cmark_reference_lookup(cmark_reference_map *map, ref = ref->next; } - free(norm); + map->mem->free(norm); return ref; } @@ -135,7 +135,7 @@ void cmark_reference_map_free(cmark_reference_map *map) { } } - free(map); + map->mem->free(map); } cmark_reference_map *cmark_reference_map_new(cmark_mem *mem) { diff --git a/scanners.c b/scanners.c index 709a74e..b312f66 100644 --- a/scanners.c +++ b/scanners.c @@ -28,176 +28,86 @@ bufsize_t _scan_scheme(const unsigned char *p) { { unsigned char yych; - yych = *(marker = p); - if (yych <= 0x7F) { - if (yych <= ' ') { - if (yych == '\n') - goto yy2; - if (yych <= 0x1F) - goto yy4; - goto yy3; - } else { - if (yych <= 'Z') { - if (yych <= '@') - goto yy4; + 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 yy4; - if (yych <= 'z') - goto yy3; - goto yy4; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) { - if (yych >= 0xC2) - goto yy5; - } else { - if (yych <= 0xE0) - goto yy7; - if (yych <= 0xEC) - goto yy8; - goto yy12; - } } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy8; - goto yy9; - } else { - if (yych <= 0xF3) - goto yy10; - if (yych <= 0xF4) - goto yy11; - } + if (yych <= ',') + goto yy3; + if (yych >= '/') + goto yy3; } - } - yy2 : { return 0; } - yy3: - yych = *(marker = ++p); - if (yych <= '.') { - if (yych == '+') - goto yy13; - if (yych <= ',') - goto yy2; - goto yy13; } else { if (yych <= 'Z') { + if (yych <= '9') + goto yy5; if (yych <= '@') - goto yy2; - goto yy13; + goto yy3; } else { if (yych <= '`') - goto yy2; - if (yych <= 'z') - goto yy13; - goto yy2; + goto yy3; + if (yych >= '{') + goto yy3; } } - yy4: - yych = *++p; - goto yy2; yy5: - yych = *++p; - if (yych <= 0x7F) - goto yy6; - if (yych <= 0xBF) - goto yy4; - yy6: - p = marker; - goto yy2; - yy7: - yych = *++p; - if (yych <= 0x9F) - goto yy6; - if (yych <= 0xBF) - goto yy5; - goto yy6; - yy8: - yych = *++p; - if (yych <= 0x7F) - goto yy6; - if (yych <= 0xBF) - goto yy5; - goto yy6; - yy9: - yych = *++p; - if (yych <= 0x8F) - goto yy6; - if (yych <= 0xBF) - goto yy8; - goto yy6; - yy10: - yych = *++p; - if (yych <= 0x7F) - goto yy6; - if (yych <= 0xBF) - goto yy8; - goto yy6; - yy11: - yych = *++p; - if (yych <= 0x7F) - goto yy6; - if (yych <= 0x8F) - goto yy8; - goto yy6; - yy12: - yych = *++p; - if (yych <= 0x7F) - goto yy6; - if (yych <= 0x9F) - goto yy5; - goto yy6; - yy13: yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy6; - goto yy16; + if (yych <= ',') { + if (yych == '+') + goto yy9; } else { - if (yych <= ',') - goto yy6; - if (yych <= '.') - goto yy16; - goto yy6; + if (yych != '/') + goto yy9; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; - if (yych <= '@') - goto yy6; - goto yy16; + goto yy7; + if (yych >= 'A') + goto yy9; } else { if (yych <= '`') goto yy6; if (yych <= 'z') - goto yy16; - goto yy6; + goto yy9; } } - yy14: + yy6: + p = marker; + goto yy3; + yy7: ++p; { return (bufsize_t)(p - start); } - yy16: + yy9: yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -209,19 +119,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -233,19 +141,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -257,19 +163,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -281,19 +185,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -305,19 +207,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -329,19 +229,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -353,19 +251,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -377,19 +273,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -401,19 +295,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -425,19 +317,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -449,19 +339,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -473,19 +361,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -497,19 +383,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -521,19 +405,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -545,19 +427,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -569,19 +449,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -593,19 +471,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -617,19 +493,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -641,19 +515,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -665,19 +537,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -689,19 +559,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -713,19 +581,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -737,19 +603,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -761,19 +625,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -785,19 +647,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -809,19 +669,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -833,19 +691,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -857,19 +713,17 @@ bufsize_t _scan_scheme(const unsigned char *p) { } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') + if (yych <= ',') { + if (yych != '+') goto yy6; } else { - if (yych <= ',') - goto yy6; - if (yych >= '/') + if (yych == '/') goto yy6; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy14; + goto yy7; if (yych <= '@') goto yy6; } else { @@ -881,7 +735,7 @@ bufsize_t _scan_scheme(const unsigned char *p) { } ++p; if ((yych = *p) == ':') - goto yy14; + goto yy7; goto yy6; } } @@ -914,950 +768,804 @@ bufsize_t _scan_autolink_uri(const unsigned char *p) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - yych = *(marker = p); - if (yych <= 0x7F) { - if (yych <= ' ') { - if (yych == '\n') - goto yy48; - if (yych <= 0x1F) - goto yy50; - goto yy49; - } else { - if (yych <= 'Z') { - if (yych <= '@') - goto yy50; - goto yy49; - } else { - if (yych <= '`') - goto yy50; - if (yych <= 'z') - goto yy49; - goto yy50; - } - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) { - if (yych >= 0xC2) - goto yy51; - } else { - if (yych <= 0xE0) - goto yy53; - if (yych <= 0xEC) - goto yy54; - goto yy58; - } + 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 <= 0xF0) { - if (yych <= 0xEF) - goto yy54; - goto yy55; - } else { - if (yych <= 0xF3) - goto yy56; - if (yych <= 0xF4) - goto yy57; - } + if (yych <= ',') + goto yy42; + if (yych >= '/') + goto yy42; } - } - yy48 : { return 0; } - yy49: - yych = *(marker = ++p); - if (yych <= '.') { - if (yych == '+') - goto yy59; - if (yych <= ',') - goto yy48; - goto yy59; } else { if (yych <= 'Z') { + if (yych <= '9') + goto yy44; if (yych <= '@') - goto yy48; - goto yy59; + goto yy42; } else { if (yych <= '`') - goto yy48; - if (yych <= 'z') - goto yy59; - goto yy48; + goto yy42; + if (yych >= '{') + goto yy42; } } - yy50: - yych = *++p; - goto yy48; - yy51: - yych = *++p; - if (yych <= 0x7F) - goto yy52; - if (yych <= 0xBF) - goto yy50; - yy52: - p = marker; - goto yy48; - 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 <= 0x8F) - goto yy52; - if (yych <= 0xBF) - goto yy54; - goto yy52; - yy56: - yych = *++p; - if (yych <= 0x7F) - goto yy52; - if (yych <= 0xBF) - goto yy54; - goto yy52; - yy57: - yych = *++p; - if (yych <= 0x7F) - goto yy52; - if (yych <= 0x8F) - goto yy54; - goto yy52; - yy58: - yych = *++p; - if (yych <= 0x7F) - goto yy52; - if (yych <= 0x9F) - goto yy51; - goto yy52; - yy59: + yy44: yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; - goto yy62; + if (yych <= ',') { + if (yych == '+') + goto yy48; } else { - if (yych <= ',') - goto yy52; - if (yych <= '.') - goto yy62; - goto yy52; + if (yych != '/') + goto yy48; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; - if (yych <= '@') - goto yy52; - goto yy62; + goto yy46; + if (yych >= 'A') + goto yy48; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych <= 'z') - goto yy62; - goto yy52; + goto yy48; } } - yy60: + yy45: + p = marker; + goto yy42; + yy46: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy60; + goto yy46; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '<') - goto yy52; + goto yy45; if (yych <= '>') - goto yy99; - goto yy52; + goto yy85; + goto yy45; } else { if (yych <= 0xDF) - goto yy92; + goto yy78; if (yych <= 0xE0) - goto yy93; - goto yy94; + goto yy79; + goto yy80; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy98; + goto yy84; if (yych <= 0xEF) - goto yy94; - goto yy95; + goto yy80; + goto yy81; } else { if (yych <= 0xF3) - goto yy96; + goto yy82; if (yych <= 0xF4) - goto yy97; - goto yy52; + goto yy83; + goto yy45; } } - yy62: + yy48: yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych <= '9') { - if (yych <= '+') { - if (yych <= '*') - goto yy52; + if (yych <= ',') { + if (yych != '+') + goto yy45; } else { - if (yych <= ',') - goto yy52; - if (yych >= '/') - goto yy52; + if (yych == '/') + goto yy45; } } else { if (yych <= 'Z') { if (yych <= ':') - goto yy60; + goto yy46; if (yych <= '@') - goto yy52; + goto yy45; } else { if (yych <= '`') - goto yy52; + goto yy45; if (yych >= '{') - goto yy52; + goto yy45; } } yych = *++p; if (yych == ':') - goto yy60; - goto yy52; - yy92: + goto yy46; + goto yy45; + yy78: ++p; yych = *p; if (yych <= 0x7F) - goto yy52; + goto yy45; if (yych <= 0xBF) - goto yy60; - goto yy52; - yy93: + goto yy46; + goto yy45; + yy79: ++p; yych = *p; if (yych <= 0x9F) - goto yy52; + goto yy45; if (yych <= 0xBF) - goto yy92; - goto yy52; - yy94: + goto yy78; + goto yy45; + yy80: ++p; yych = *p; if (yych <= 0x7F) - goto yy52; + goto yy45; if (yych <= 0xBF) - goto yy92; - goto yy52; - yy95: + goto yy78; + goto yy45; + yy81: ++p; yych = *p; if (yych <= 0x8F) - goto yy52; + goto yy45; if (yych <= 0xBF) - goto yy94; - goto yy52; - yy96: + goto yy80; + goto yy45; + yy82: ++p; yych = *p; if (yych <= 0x7F) - goto yy52; + goto yy45; if (yych <= 0xBF) - goto yy94; - goto yy52; - yy97: + goto yy80; + goto yy45; + yy83: ++p; yych = *p; if (yych <= 0x7F) - goto yy52; + goto yy45; if (yych <= 0x8F) - goto yy94; - goto yy52; - yy98: + goto yy80; + goto yy45; + yy84: ++p; yych = *p; if (yych <= 0x7F) - goto yy52; + goto yy45; if (yych <= 0x9F) - goto yy92; - goto yy52; - yy99: + goto yy78; + goto yy45; + yy85: ++p; { return (bufsize_t)(p - start); } } @@ -1891,309 +1599,230 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { 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 <= ')') { - if (yych <= ' ') { - if (yych != '\n') - goto yy105; - } else { - if (yych == '"') - goto yy105; - if (yych <= '\'') - goto yy104; - goto yy105; - } + yych = *p; + if (yych <= '9') { + if (yych <= '\'') { + if (yych == '!') + goto yy91; + if (yych >= '#') + goto yy91; } else { - if (yych <= '9') { - if (yych == ',') - goto yy105; - goto yy104; - } else { - if (yych == '=') - goto yy104; - if (yych <= '>') - goto yy105; - goto yy104; - } + if (yych <= ')') + goto yy89; + if (yych != ',') + goto yy91; } } else { - if (yych <= 0xDF) { - if (yych <= ']') { - if (yych <= '@') - goto yy105; - if (yych <= 'Z') - goto yy104; - goto yy105; - } else { - if (yych <= '~') - goto yy104; - if (yych <= 0x7F) - goto yy105; - if (yych >= 0xC2) - goto yy106; - } + if (yych <= '?') { + if (yych == '=') + goto yy91; + if (yych >= '?') + goto yy91; } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy108; - if (yych == 0xED) - goto yy113; - goto yy109; + if (yych <= 'Z') { + if (yych >= 'A') + goto yy91; } else { - if (yych <= 0xF0) - goto yy110; - if (yych <= 0xF3) - goto yy111; - if (yych <= 0xF4) - goto yy112; + if (yych <= ']') + goto yy89; + if (yych <= '~') + goto yy91; } } } - yy103 : { return 0; } - yy104: + yy89: + ++p; + yy90 : { return 0; } + yy91: yych = *(marker = ++p); if (yych <= ',') { if (yych <= '"') { if (yych == '!') - goto yy116; - goto yy103; + goto yy95; + goto yy90; } else { if (yych <= '\'') - goto yy116; + goto yy95; if (yych <= ')') - goto yy103; + goto yy90; if (yych <= '+') - goto yy116; - goto yy103; + goto yy95; + goto yy90; } } else { if (yych <= '>') { if (yych <= '9') - goto yy116; + goto yy95; if (yych == '=') - goto yy116; - goto yy103; + goto yy95; + goto yy90; } else { if (yych <= 'Z') - goto yy116; + goto yy95; if (yych <= ']') - goto yy103; + goto yy90; if (yych <= '~') - goto yy116; - goto yy103; + goto yy95; + goto yy90; } } - yy105: - yych = *++p; - goto yy103; - yy106: - yych = *++p; - if (yych <= 0x7F) - goto yy107; - if (yych <= 0xBF) - goto yy105; - yy107: - p = marker; - goto yy103; - yy108: - yych = *++p; - if (yych <= 0x9F) - goto yy107; - if (yych <= 0xBF) - goto yy106; - goto yy107; - yy109: - yych = *++p; - if (yych <= 0x7F) - goto yy107; - if (yych <= 0xBF) - goto yy106; - goto yy107; - yy110: - yych = *++p; - if (yych <= 0x8F) - goto yy107; - if (yych <= 0xBF) - goto yy109; - goto yy107; - yy111: - yych = *++p; - if (yych <= 0x7F) - goto yy107; - if (yych <= 0xBF) - goto yy109; - goto yy107; - yy112: - yych = *++p; - if (yych <= 0x7F) - goto yy107; - if (yych <= 0x8F) - goto yy109; - goto yy107; - yy113: - yych = *++p; - if (yych <= 0x7F) - goto yy107; - if (yych <= 0x9F) - goto yy106; - goto yy107; - yy114: + yy92: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy117; - goto yy107; + goto yy96; } else { if (yych <= 'Z') - goto yy117; + goto yy96; if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy117; - goto yy107; + goto yy96; } - yy115: + yy93: + p = marker; + goto yy90; + yy94: ++p; yych = *p; - yy116: + yy95: if (yybm[0 + yych] & 128) { - goto yy115; + goto yy94; } if (yych <= '>') - goto yy107; + goto yy93; if (yych <= '@') - goto yy114; - goto yy107; - yy117: + goto yy92; + goto yy93; + yy96: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy119; - goto yy120; + goto yy98; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych >= ':') - goto yy107; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy248; - goto yy120; + goto yy227; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy247; - goto yy107; + goto yy226; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy247; + goto yy93; + goto yy226; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy247; - goto yy107; + goto yy226; + goto yy93; } } - yy119: + yy98: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy248; + goto yy227; if (yych <= '/') - goto yy107; - goto yy247; + goto yy93; + goto yy226; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; - goto yy247; + goto yy93; + goto yy226; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy247; - goto yy107; + goto yy226; + goto yy93; } } - yy120: + yy99: ++p; yych = *p; if (yych <= '@') { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy123; - goto yy107; + goto yy102; + goto yy93; } else { if (yych <= 'Z') - goto yy123; + goto yy102; if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy123; - goto yy107; + goto yy102; + goto yy93; } - yy121: + yy100: ++p; { return (bufsize_t)(p - start); } - yy123: + yy102: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy125; - goto yy120; + goto yy104; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych >= ':') - goto yy107; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } ++p; @@ -2201,6050 +1830,6050 @@ bufsize_t _scan_autolink_email(const unsigned char *p) { if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy127; - goto yy120; + goto yy106; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy126; - goto yy107; + goto yy105; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy126; + goto yy93; + goto yy105; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy126; - goto yy107; + goto yy105; + goto yy93; } } - yy125: + yy104: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy127; + goto yy106; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy126: + yy105: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy129; - goto yy120; + goto yy108; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy128; - goto yy107; + goto yy107; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy128; + goto yy93; + goto yy107; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy128; - goto yy107; + goto yy107; + goto yy93; } } - yy127: + yy106: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy129; + goto yy108; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy128: + yy107: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy131; - goto yy120; + goto yy110; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy130; - goto yy107; + goto yy109; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy130; + goto yy93; + goto yy109; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy130; - goto yy107; + goto yy109; + goto yy93; } } - yy129: + yy108: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy131; + goto yy110; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy130: + yy109: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy133; - goto yy120; + goto yy112; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy132; - goto yy107; + goto yy111; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy132; + goto yy93; + goto yy111; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy132; - goto yy107; + goto yy111; + goto yy93; } } - yy131: + yy110: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy133; + goto yy112; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy132: + yy111: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy135; - goto yy120; + goto yy114; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy134; - goto yy107; + goto yy113; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy134; + goto yy93; + goto yy113; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy134; - goto yy107; + goto yy113; + goto yy93; } } - yy133: + yy112: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy135; + goto yy114; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy134: + yy113: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy137; - goto yy120; + goto yy116; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy136; - goto yy107; + goto yy115; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy136; + goto yy93; + goto yy115; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy136; - goto yy107; + goto yy115; + goto yy93; } } - yy135: + yy114: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy137; + goto yy116; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy136: + yy115: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy139; - goto yy120; + goto yy118; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy138; - goto yy107; + goto yy117; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy138; + goto yy93; + goto yy117; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy138; - goto yy107; + goto yy117; + goto yy93; } } - yy137: + yy116: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy139; + goto yy118; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy138: + yy117: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy141; - goto yy120; + goto yy120; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy140; - goto yy107; + goto yy119; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy140; + goto yy93; + goto yy119; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy140; - goto yy107; + goto yy119; + goto yy93; } } - yy139: + yy118: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy141; + goto yy120; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy140: + yy119: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy143; - goto yy120; + goto yy122; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy142; - goto yy107; + goto yy121; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy142; + goto yy93; + goto yy121; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy142; - goto yy107; + goto yy121; + goto yy93; } } - yy141: + yy120: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy143; + goto yy122; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy142: + yy121: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy145; - goto yy120; + goto yy124; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy144; - goto yy107; + goto yy123; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy144; + goto yy93; + goto yy123; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy144; - goto yy107; + goto yy123; + goto yy93; } } - yy143: + yy122: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy145; + goto yy124; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy144: + yy123: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy147; - goto yy120; + goto yy126; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy146; - goto yy107; + goto yy125; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy146; + goto yy93; + goto yy125; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy146; - goto yy107; + goto yy125; + goto yy93; } } - yy145: + yy124: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy147; + goto yy126; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy146: + yy125: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy149; - goto yy120; + goto yy128; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy148; - goto yy107; + goto yy127; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy148; + goto yy93; + goto yy127; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy148; - goto yy107; + goto yy127; + goto yy93; } } - yy147: + yy126: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy149; + goto yy128; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy148: + yy127: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy151; - goto yy120; + goto yy130; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy150; - goto yy107; + goto yy129; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy150; + goto yy93; + goto yy129; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy150; - goto yy107; + goto yy129; + goto yy93; } } - yy149: + yy128: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy151; + goto yy130; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy150: + yy129: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy153; - goto yy120; + goto yy132; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy152; - goto yy107; + goto yy131; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy152; + goto yy93; + goto yy131; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy152; - goto yy107; + goto yy131; + goto yy93; } } - yy151: + yy130: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy153; + goto yy132; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy152: + yy131: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy155; - goto yy120; + goto yy134; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy154; - goto yy107; + goto yy133; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy154; + goto yy93; + goto yy133; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy154; - goto yy107; + goto yy133; + goto yy93; } } - yy153: + yy132: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy155; + goto yy134; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy154: + yy133: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy157; - goto yy120; + goto yy136; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy156; - goto yy107; + goto yy135; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy156; + goto yy93; + goto yy135; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy156; - goto yy107; + goto yy135; + goto yy93; } } - yy155: + yy134: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy157; + goto yy136; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy156: + yy135: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy159; - goto yy120; + goto yy138; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy158; - goto yy107; + goto yy137; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy158; + goto yy93; + goto yy137; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy158; - goto yy107; + goto yy137; + goto yy93; } } - yy157: + yy136: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy159; + goto yy138; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy158: + yy137: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy161; - goto yy120; + goto yy140; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy160; - goto yy107; + goto yy139; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy160; + goto yy93; + goto yy139; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy160; - goto yy107; + goto yy139; + goto yy93; } } - yy159: + yy138: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy161; + goto yy140; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy160: + yy139: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy163; - goto yy120; + goto yy142; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy162; - goto yy107; + goto yy141; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy162; + goto yy93; + goto yy141; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy162; - goto yy107; + goto yy141; + goto yy93; } } - yy161: + yy140: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy163; + goto yy142; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy162: + yy141: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy165; - goto yy120; + goto yy144; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy164; - goto yy107; + goto yy143; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy164; + goto yy93; + goto yy143; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy164; - goto yy107; + goto yy143; + goto yy93; } } - yy163: + yy142: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy165; + goto yy144; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy164: + yy143: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy167; - goto yy120; + goto yy146; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy166; - goto yy107; + goto yy145; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy166; + goto yy93; + goto yy145; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy166; - goto yy107; + goto yy145; + goto yy93; } } - yy165: + yy144: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy167; + goto yy146; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy166: + yy145: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy169; - goto yy120; + goto yy148; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy168; - goto yy107; + goto yy147; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy168; + goto yy93; + goto yy147; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy168; - goto yy107; + goto yy147; + goto yy93; } } - yy167: + yy146: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy169; + goto yy148; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy168: + yy147: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy171; - goto yy120; + goto yy150; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy170; - goto yy107; + goto yy149; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy170; + goto yy93; + goto yy149; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy170; - goto yy107; + goto yy149; + goto yy93; } } - yy169: + yy148: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy171; + goto yy150; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy170: + yy149: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy173; - goto yy120; + goto yy152; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy172; - goto yy107; + goto yy151; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy172; + goto yy93; + goto yy151; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy172; - goto yy107; + goto yy151; + goto yy93; } } - yy171: + yy150: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy173; + goto yy152; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy172: + yy151: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy175; - goto yy120; + goto yy154; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy174; - goto yy107; + goto yy153; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy174; + goto yy93; + goto yy153; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy174; - goto yy107; + goto yy153; + goto yy93; } } - yy173: + yy152: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy175; + goto yy154; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy174: + yy153: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy177; - goto yy120; + goto yy156; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy176; - goto yy107; + goto yy155; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy176; + goto yy93; + goto yy155; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy176; - goto yy107; + goto yy155; + goto yy93; } } - yy175: + yy154: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy177; + goto yy156; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy176: + yy155: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy179; - goto yy120; + goto yy158; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy178; - goto yy107; + goto yy157; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy178; + goto yy93; + goto yy157; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy178; - goto yy107; + goto yy157; + goto yy93; } } - yy177: + yy156: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy179; + goto yy158; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy178: + yy157: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy181; - goto yy120; + goto yy160; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy180; - goto yy107; + goto yy159; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy180; + goto yy93; + goto yy159; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy180; - goto yy107; + goto yy159; + goto yy93; } } - yy179: + yy158: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy181; + goto yy160; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy180: + yy159: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy183; - goto yy120; + goto yy162; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy182; - goto yy107; + goto yy161; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy182; + goto yy93; + goto yy161; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy182; - goto yy107; + goto yy161; + goto yy93; } } - yy181: + yy160: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy183; + goto yy162; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy182: + yy161: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy185; - goto yy120; + goto yy164; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy184; - goto yy107; + goto yy163; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy184; + goto yy93; + goto yy163; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy184; - goto yy107; + goto yy163; + goto yy93; } } - yy183: + yy162: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy185; + goto yy164; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy184: + yy163: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy187; - goto yy120; + goto yy166; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy186; - goto yy107; + goto yy165; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy186; + goto yy93; + goto yy165; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy186; - goto yy107; + goto yy165; + goto yy93; } } - yy185: + yy164: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy187; + goto yy166; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy186: + yy165: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy189; - goto yy120; + goto yy168; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy188; - goto yy107; + goto yy167; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy188; + goto yy93; + goto yy167; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy188; - goto yy107; + goto yy167; + goto yy93; } } - yy187: + yy166: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy189; + goto yy168; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy188: + yy167: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy191; - goto yy120; + goto yy170; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy190; - goto yy107; + goto yy169; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy190; + goto yy93; + goto yy169; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy190; - goto yy107; + goto yy169; + goto yy93; } } - yy189: + yy168: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy191; + goto yy170; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy190: + yy169: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy193; - goto yy120; + goto yy172; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy192; - goto yy107; + goto yy171; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy192; + goto yy93; + goto yy171; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy192; - goto yy107; + goto yy171; + goto yy93; } } - yy191: + yy170: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy193; + goto yy172; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy192: + yy171: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy195; - goto yy120; + goto yy174; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy194; - goto yy107; + goto yy173; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy194; + goto yy93; + goto yy173; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy194; - goto yy107; + goto yy173; + goto yy93; } } - yy193: + yy172: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy195; + goto yy174; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy194: + yy173: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy197; - goto yy120; + goto yy176; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy196; - goto yy107; + goto yy175; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy196; + goto yy93; + goto yy175; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy196; - goto yy107; + goto yy175; + goto yy93; } } - yy195: + yy174: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy197; + goto yy176; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy196: + yy175: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy199; - goto yy120; + goto yy178; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy198; - goto yy107; + goto yy177; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy198; + goto yy93; + goto yy177; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy198; - goto yy107; + goto yy177; + goto yy93; } } - yy197: + yy176: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy199; + goto yy178; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy198: + yy177: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy201; - goto yy120; + goto yy180; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy200; - goto yy107; + goto yy179; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy200; + goto yy93; + goto yy179; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy200; - goto yy107; + goto yy179; + goto yy93; } } - yy199: + yy178: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy201; + goto yy180; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy200: + yy179: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy203; - goto yy120; + goto yy182; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy202; - goto yy107; + goto yy181; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy202; + goto yy93; + goto yy181; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy202; - goto yy107; + goto yy181; + goto yy93; } } - yy201: + yy180: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy203; + goto yy182; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy202: + yy181: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy205; - goto yy120; + goto yy184; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy204; - goto yy107; + goto yy183; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy204; + goto yy93; + goto yy183; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy204; - goto yy107; + goto yy183; + goto yy93; } } - yy203: + yy182: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy205; + goto yy184; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy204: + yy183: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy207; - goto yy120; + goto yy186; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy206; - goto yy107; + goto yy185; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy206; + goto yy93; + goto yy185; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy206; - goto yy107; + goto yy185; + goto yy93; } } - yy205: + yy184: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy207; + goto yy186; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy206: + yy185: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy209; - goto yy120; + goto yy188; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy208; - goto yy107; + goto yy187; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy208; + goto yy93; + goto yy187; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy208; - goto yy107; + goto yy187; + goto yy93; } } - yy207: + yy186: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy209; + goto yy188; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy208: + yy187: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy211; - goto yy120; + goto yy190; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy210; - goto yy107; + goto yy189; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy210; + goto yy93; + goto yy189; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy210; - goto yy107; + goto yy189; + goto yy93; } } - yy209: + yy188: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy211; + goto yy190; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy210: + yy189: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy213; - goto yy120; + goto yy192; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy212; - goto yy107; + goto yy191; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy212; + goto yy93; + goto yy191; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy212; - goto yy107; + goto yy191; + goto yy93; } } - yy211: + yy190: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy213; + goto yy192; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy212: + yy191: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy215; - goto yy120; + goto yy194; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy214; - goto yy107; + goto yy193; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy214; + goto yy93; + goto yy193; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy214; - goto yy107; + goto yy193; + goto yy93; } } - yy213: + yy192: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy215; + goto yy194; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy214: + yy193: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy217; - goto yy120; + goto yy196; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy216; - goto yy107; + goto yy195; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy216; + goto yy93; + goto yy195; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy216; - goto yy107; + goto yy195; + goto yy93; } } - yy215: + yy194: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy217; + goto yy196; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy216: + yy195: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy219; - goto yy120; + goto yy198; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy218; - goto yy107; + goto yy197; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy218; + goto yy93; + goto yy197; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy218; - goto yy107; + goto yy197; + goto yy93; } } - yy217: + yy196: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy219; + goto yy198; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy218: + yy197: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy221; - goto yy120; + goto yy200; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy220; - goto yy107; + goto yy199; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy220; + goto yy93; + goto yy199; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy220; - goto yy107; + goto yy199; + goto yy93; } } - yy219: + yy198: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy221; + goto yy200; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy220: + yy199: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy223; - goto yy120; + goto yy202; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy222; - goto yy107; + goto yy201; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy222; + goto yy93; + goto yy201; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy222; - goto yy107; + goto yy201; + goto yy93; } } - yy221: + yy200: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy223; + goto yy202; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy222: + yy201: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy225; - goto yy120; + goto yy204; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy224; - goto yy107; + goto yy203; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy224; + goto yy93; + goto yy203; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy224; - goto yy107; + goto yy203; + goto yy93; } } - yy223: + yy202: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy225; + goto yy204; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy224: + yy203: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy227; - goto yy120; + goto yy206; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy226; - goto yy107; + goto yy205; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy226; + goto yy93; + goto yy205; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy226; - goto yy107; + goto yy205; + goto yy93; } } - yy225: + yy204: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy227; + goto yy206; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy226: + yy205: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy229; - goto yy120; + goto yy208; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy228; - goto yy107; + goto yy207; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy228; + goto yy93; + goto yy207; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy228; - goto yy107; + goto yy207; + goto yy93; } } - yy227: + yy206: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy229; + goto yy208; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy228: + yy207: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy231; - goto yy120; + goto yy210; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy230; - goto yy107; + goto yy209; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy230; + goto yy93; + goto yy209; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy230; - goto yy107; + goto yy209; + goto yy93; } } - yy229: + yy208: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy231; + goto yy210; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy230: + yy209: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy233; - goto yy120; + goto yy212; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy232; - goto yy107; + goto yy211; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy232; + goto yy93; + goto yy211; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy232; - goto yy107; + goto yy211; + goto yy93; } } - yy231: + yy210: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy233; + goto yy212; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy232: + yy211: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy235; - goto yy120; + goto yy214; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy234; - goto yy107; + goto yy213; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy234; + goto yy93; + goto yy213; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy234; - goto yy107; + goto yy213; + goto yy93; } } - yy233: + yy212: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy235; + goto yy214; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy234: + yy213: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy237; - goto yy120; + goto yy216; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy236; - goto yy107; + goto yy215; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy236; + goto yy93; + goto yy215; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy236; - goto yy107; + goto yy215; + goto yy93; } } - yy235: + yy214: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy237; + goto yy216; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy236: + yy215: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy239; - goto yy120; + goto yy218; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy238; - goto yy107; + goto yy217; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy238; + goto yy93; + goto yy217; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy238; - goto yy107; + goto yy217; + goto yy93; } } - yy237: + yy216: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy239; + goto yy218; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy238: + yy217: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy241; - goto yy120; + goto yy220; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy240; - goto yy107; + goto yy219; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy240; + goto yy93; + goto yy219; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy240; - goto yy107; + goto yy219; + goto yy93; } } - yy239: + yy218: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy241; + goto yy220; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy240: + yy219: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy243; - goto yy120; + goto yy222; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy242; - goto yy107; + goto yy221; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy242; + goto yy93; + goto yy221; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy242; - goto yy107; + goto yy221; + goto yy93; } } - yy241: + yy220: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy243; + goto yy222; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy242: + yy221: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy245; - goto yy120; + goto yy224; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy244; - goto yy107; + goto yy223; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy244; + goto yy93; + goto yy223; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy244; - goto yy107; + goto yy223; + goto yy93; } } - yy243: + yy222: ++p; yych = *p; if (yych <= '9') { if (yych == '-') - goto yy245; + goto yy224; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy244: + yy223: ++p; yych = *p; if (yych <= '=') { if (yych <= '.') { if (yych <= '-') - goto yy107; - goto yy120; + goto yy93; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy246; - goto yy107; + goto yy225; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy246; + goto yy93; + goto yy225; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy246; - goto yy107; + goto yy225; + goto yy93; } } - yy245: + yy224: ++p; yych = *p; if (yych <= '@') { if (yych <= '/') - goto yy107; + goto yy93; if (yych >= ':') - goto yy107; + goto yy93; } else { if (yych <= 'Z') - goto yy246; + goto yy225; if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } - yy246: + yy225: ++p; yych = *p; if (yych == '.') - goto yy120; + goto yy99; if (yych == '>') - goto yy121; - goto yy107; - yy247: + goto yy100; + goto yy93; + yy226: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy250; - goto yy120; + goto yy229; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy249; - goto yy107; + goto yy228; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy249; + goto yy93; + goto yy228; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy249; - goto yy107; + goto yy228; + goto yy93; } } - yy248: + yy227: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy250; + goto yy229; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy249: + yy228: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy252; - goto yy120; + goto yy231; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy251; - goto yy107; + goto yy230; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy251; + goto yy93; + goto yy230; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy251; - goto yy107; + goto yy230; + goto yy93; } } - yy250: + yy229: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy252; + goto yy231; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy251: + yy230: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy254; - goto yy120; + goto yy233; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy253; - goto yy107; + goto yy232; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy253; + goto yy93; + goto yy232; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy253; - goto yy107; + goto yy232; + goto yy93; } } - yy252: + yy231: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy254; + goto yy233; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy253: + yy232: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy256; - goto yy120; + goto yy235; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy255; - goto yy107; + goto yy234; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy255; + goto yy93; + goto yy234; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy255; - goto yy107; + goto yy234; + goto yy93; } } - yy254: + yy233: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy256; + goto yy235; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy255: + yy234: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy258; - goto yy120; + goto yy237; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy257; - goto yy107; + goto yy236; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy257; + goto yy93; + goto yy236; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy257; - goto yy107; + goto yy236; + goto yy93; } } - yy256: + yy235: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy258; + goto yy237; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy257: + yy236: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy260; - goto yy120; + goto yy239; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy259; - goto yy107; + goto yy238; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy259; + goto yy93; + goto yy238; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy259; - goto yy107; + goto yy238; + goto yy93; } } - yy258: + yy237: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy260; + goto yy239; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy259: + yy238: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy262; - goto yy120; + goto yy241; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy261; - goto yy107; + goto yy240; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy261; + goto yy93; + goto yy240; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy261; - goto yy107; + goto yy240; + goto yy93; } } - yy260: + yy239: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy262; + goto yy241; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy261: + yy240: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy264; - goto yy120; + goto yy243; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy263; - goto yy107; + goto yy242; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy263; + goto yy93; + goto yy242; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy263; - goto yy107; + goto yy242; + goto yy93; } } - yy262: + yy241: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy264; + goto yy243; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy263: + yy242: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy266; - goto yy120; + goto yy245; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy265; - goto yy107; + goto yy244; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy265; + goto yy93; + goto yy244; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy265; - goto yy107; + goto yy244; + goto yy93; } } - yy264: + yy243: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy266; + goto yy245; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy265: + yy244: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy268; - goto yy120; + goto yy247; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy267; - goto yy107; + goto yy246; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy267; + goto yy93; + goto yy246; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy267; - goto yy107; + goto yy246; + goto yy93; } } - yy266: + yy245: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy268; + goto yy247; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy267: + yy246: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy270; - goto yy120; + goto yy249; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy269; - goto yy107; + goto yy248; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy269; + goto yy93; + goto yy248; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy269; - goto yy107; + goto yy248; + goto yy93; } } - yy268: + yy247: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy270; + goto yy249; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy269: + yy248: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy272; - goto yy120; + goto yy251; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy271; - goto yy107; + goto yy250; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy271; + goto yy93; + goto yy250; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy271; - goto yy107; + goto yy250; + goto yy93; } } - yy270: + yy249: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy272; + goto yy251; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy271: + yy250: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy274; - goto yy120; + goto yy253; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy273; - goto yy107; + goto yy252; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy273; + goto yy93; + goto yy252; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy273; - goto yy107; + goto yy252; + goto yy93; } } - yy272: + yy251: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy274; + goto yy253; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy273: + yy252: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy276; - goto yy120; + goto yy255; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy275; - goto yy107; + goto yy254; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy275; + goto yy93; + goto yy254; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy275; - goto yy107; + goto yy254; + goto yy93; } } - yy274: + yy253: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy276; + goto yy255; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy275: + yy254: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy278; - goto yy120; + goto yy257; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy277; - goto yy107; + goto yy256; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy277; + goto yy93; + goto yy256; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy277; - goto yy107; + goto yy256; + goto yy93; } } - yy276: + yy255: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy278; + goto yy257; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy277: + yy256: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy280; - goto yy120; + goto yy259; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy279; - goto yy107; + goto yy258; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy279; + goto yy93; + goto yy258; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy279; - goto yy107; + goto yy258; + goto yy93; } } - yy278: + yy257: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy280; + goto yy259; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy279: + yy258: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy282; - goto yy120; + goto yy261; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy281; - goto yy107; + goto yy260; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy281; + goto yy93; + goto yy260; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy281; - goto yy107; + goto yy260; + goto yy93; } } - yy280: + yy259: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy282; + goto yy261; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy281: + yy260: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy284; - goto yy120; + goto yy263; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy283; - goto yy107; + goto yy262; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy283; + goto yy93; + goto yy262; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy283; - goto yy107; + goto yy262; + goto yy93; } } - yy282: + yy261: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy284; + goto yy263; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy283: + yy262: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy286; - goto yy120; + goto yy265; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy285; - goto yy107; + goto yy264; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy285; + goto yy93; + goto yy264; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy285; - goto yy107; + goto yy264; + goto yy93; } } - yy284: + yy263: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy286; + goto yy265; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy285: + yy264: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy288; - goto yy120; + goto yy267; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy287; - goto yy107; + goto yy266; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy287; + goto yy93; + goto yy266; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy287; - goto yy107; + goto yy266; + goto yy93; } } - yy286: + yy265: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy288; + goto yy267; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy287: + yy266: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy290; - goto yy120; + goto yy269; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy289; - goto yy107; + goto yy268; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy289; + goto yy93; + goto yy268; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy289; - goto yy107; + goto yy268; + goto yy93; } } - yy288: + yy267: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy290; + goto yy269; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy289: + yy268: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy292; - goto yy120; + goto yy271; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy291; - goto yy107; + goto yy270; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy291; + goto yy93; + goto yy270; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy291; - goto yy107; + goto yy270; + goto yy93; } } - yy290: + yy269: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy292; + goto yy271; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy291: + yy270: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy294; - goto yy120; + goto yy273; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy293; - goto yy107; + goto yy272; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy293; + goto yy93; + goto yy272; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy293; - goto yy107; + goto yy272; + goto yy93; } } - yy292: + yy271: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy294; + goto yy273; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy293: + yy272: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy296; - goto yy120; + goto yy275; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy295; - goto yy107; + goto yy274; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy295; + goto yy93; + goto yy274; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy295; - goto yy107; + goto yy274; + goto yy93; } } - yy294: + yy273: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy296; + goto yy275; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy295: + yy274: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy298; - goto yy120; + goto yy277; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy297; - goto yy107; + goto yy276; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy297; + goto yy93; + goto yy276; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy297; - goto yy107; + goto yy276; + goto yy93; } } - yy296: + yy275: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy298; + goto yy277; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy297: + yy276: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy300; - goto yy120; + goto yy279; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy299; - goto yy107; + goto yy278; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy299; + goto yy93; + goto yy278; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy299; - goto yy107; + goto yy278; + goto yy93; } } - yy298: + yy277: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy300; + goto yy279; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy299: + yy278: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy302; - goto yy120; + goto yy281; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy301; - goto yy107; + goto yy280; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy301; + goto yy93; + goto yy280; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy301; - goto yy107; + goto yy280; + goto yy93; } } - yy300: + yy279: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy302; + goto yy281; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy301: + yy280: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy304; - goto yy120; + goto yy283; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy303; - goto yy107; + goto yy282; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy303; + goto yy93; + goto yy282; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy303; - goto yy107; + goto yy282; + goto yy93; } } - yy302: + yy281: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy304; + goto yy283; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy303: + yy282: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy306; - goto yy120; + goto yy285; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy305; - goto yy107; + goto yy284; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy305; + goto yy93; + goto yy284; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy305; - goto yy107; + goto yy284; + goto yy93; } } - yy304: + yy283: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy306; + goto yy285; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy305: + yy284: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy308; - goto yy120; + goto yy287; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy307; - goto yy107; + goto yy286; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy307; + goto yy93; + goto yy286; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy307; - goto yy107; + goto yy286; + goto yy93; } } - yy306: + yy285: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy308; + goto yy287; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy307: + yy286: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy310; - goto yy120; + goto yy289; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy309; - goto yy107; + goto yy288; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy309; + goto yy93; + goto yy288; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy309; - goto yy107; + goto yy288; + goto yy93; } } - yy308: + yy287: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy310; + goto yy289; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy309: + yy288: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy312; - goto yy120; + goto yy291; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy311; - goto yy107; + goto yy290; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy311; + goto yy93; + goto yy290; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy311; - goto yy107; + goto yy290; + goto yy93; } } - yy310: + yy289: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy312; + goto yy291; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy311: + yy290: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy314; - goto yy120; + goto yy293; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy313; - goto yy107; + goto yy292; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy313; + goto yy93; + goto yy292; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy313; - goto yy107; + goto yy292; + goto yy93; } } - yy312: + yy291: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy314; + goto yy293; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy313: + yy292: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy316; - goto yy120; + goto yy295; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy315; - goto yy107; + goto yy294; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy315; + goto yy93; + goto yy294; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy315; - goto yy107; + goto yy294; + goto yy93; } } - yy314: + yy293: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy316; + goto yy295; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy315: + yy294: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy318; - goto yy120; + goto yy297; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy317; - goto yy107; + goto yy296; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy317; + goto yy93; + goto yy296; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy317; - goto yy107; + goto yy296; + goto yy93; } } - yy316: + yy295: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy318; + goto yy297; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy317: + yy296: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy320; - goto yy120; + goto yy299; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy319; - goto yy107; + goto yy298; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy319; + goto yy93; + goto yy298; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy319; - goto yy107; + goto yy298; + goto yy93; } } - yy318: + yy297: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy320; + goto yy299; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy319: + yy298: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy322; - goto yy120; + goto yy301; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy321; - goto yy107; + goto yy300; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy321; + goto yy93; + goto yy300; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy321; - goto yy107; + goto yy300; + goto yy93; } } - yy320: + yy299: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy322; + goto yy301; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy321: + yy300: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy324; - goto yy120; + goto yy303; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy323; - goto yy107; + goto yy302; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy323; + goto yy93; + goto yy302; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy323; - goto yy107; + goto yy302; + goto yy93; } } - yy322: + yy301: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy324; + goto yy303; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy323: + yy302: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy326; - goto yy120; + goto yy305; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy325; - goto yy107; + goto yy304; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy325; + goto yy93; + goto yy304; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy325; - goto yy107; + goto yy304; + goto yy93; } } - yy324: + yy303: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy326; + goto yy305; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy325: + yy304: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy328; - goto yy120; + goto yy307; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy327; - goto yy107; + goto yy306; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy327; + goto yy93; + goto yy306; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy327; - goto yy107; + goto yy306; + goto yy93; } } - yy326: + yy305: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy328; + goto yy307; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy327: + yy306: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy330; - goto yy120; + goto yy309; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy329; - goto yy107; + goto yy308; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy329; + goto yy93; + goto yy308; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy329; - goto yy107; + goto yy308; + goto yy93; } } - yy328: + yy307: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy330; + goto yy309; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy329: + yy308: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy332; - goto yy120; + goto yy311; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy331; - goto yy107; + goto yy310; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy331; + goto yy93; + goto yy310; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy331; - goto yy107; + goto yy310; + goto yy93; } } - yy330: + yy309: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy332; + goto yy311; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy331: + yy310: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy334; - goto yy120; + goto yy313; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy333; - goto yy107; + goto yy312; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy333; + goto yy93; + goto yy312; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy333; - goto yy107; + goto yy312; + goto yy93; } } - yy332: + yy311: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy334; + goto yy313; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy333: + yy312: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy336; - goto yy120; + goto yy315; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy335; - goto yy107; + goto yy314; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy335; + goto yy93; + goto yy314; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy335; - goto yy107; + goto yy314; + goto yy93; } } - yy334: + yy313: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy336; + goto yy315; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy335: + yy314: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy338; - goto yy120; + goto yy317; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy337; - goto yy107; + goto yy316; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy337; + goto yy93; + goto yy316; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy337; - goto yy107; + goto yy316; + goto yy93; } } - yy336: + yy315: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy338; + goto yy317; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy337: + yy316: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy340; - goto yy120; + goto yy319; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy339; - goto yy107; + goto yy318; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy339; + goto yy93; + goto yy318; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy339; - goto yy107; + goto yy318; + goto yy93; } } - yy338: + yy317: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy340; + goto yy319; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy339: + yy318: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy342; - goto yy120; + goto yy321; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy341; - goto yy107; + goto yy320; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy341; + goto yy93; + goto yy320; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy341; - goto yy107; + goto yy320; + goto yy93; } } - yy340: + yy319: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy342; + goto yy321; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy341: + yy320: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy344; - goto yy120; + goto yy323; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy343; - goto yy107; + goto yy322; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy343; + goto yy93; + goto yy322; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy343; - goto yy107; + goto yy322; + goto yy93; } } - yy342: + yy321: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy344; + goto yy323; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy343: + yy322: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy346; - goto yy120; + goto yy325; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy345; - goto yy107; + goto yy324; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy345; + goto yy93; + goto yy324; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy345; - goto yy107; + goto yy324; + goto yy93; } } - yy344: + yy323: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy346; + goto yy325; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy345: + yy324: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy348; - goto yy120; + goto yy327; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy347; - goto yy107; + goto yy326; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy347; + goto yy93; + goto yy326; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy347; - goto yy107; + goto yy326; + goto yy93; } } - yy346: + yy325: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy348; + goto yy327; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy347: + yy326: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy350; - goto yy120; + goto yy329; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy349; - goto yy107; + goto yy328; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy349; + goto yy93; + goto yy328; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy349; - goto yy107; + goto yy328; + goto yy93; } } - yy348: + yy327: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy350; + goto yy329; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy349: + yy328: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy352; - goto yy120; + goto yy331; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy351; - goto yy107; + goto yy330; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy351; + goto yy93; + goto yy330; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy351; - goto yy107; + goto yy330; + goto yy93; } } - yy350: + yy329: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy352; + goto yy331; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy351: + yy330: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy354; - goto yy120; + goto yy333; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy353; - goto yy107; + goto yy332; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy353; + goto yy93; + goto yy332; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy353; - goto yy107; + goto yy332; + goto yy93; } } - yy352: + yy331: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy354; + goto yy333; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy353: + yy332: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy356; - goto yy120; + goto yy335; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy355; - goto yy107; + goto yy334; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy355; + goto yy93; + goto yy334; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy355; - goto yy107; + goto yy334; + goto yy93; } } - yy354: + yy333: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy356; + goto yy335; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy355: + yy334: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy358; - goto yy120; + goto yy337; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy357; - goto yy107; + goto yy336; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy357; + goto yy93; + goto yy336; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy357; - goto yy107; + goto yy336; + goto yy93; } } - yy356: + yy335: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy358; + goto yy337; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy357: + yy336: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy360; - goto yy120; + goto yy339; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy359; - goto yy107; + goto yy338; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy359; + goto yy93; + goto yy338; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy359; - goto yy107; + goto yy338; + goto yy93; } } - yy358: + yy337: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy360; + goto yy339; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy359: + yy338: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy362; - goto yy120; + goto yy341; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy361; - goto yy107; + goto yy340; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy361; + goto yy93; + goto yy340; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy361; - goto yy107; + goto yy340; + goto yy93; } } - yy360: + yy339: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy362; + goto yy341; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy361: + yy340: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy364; - goto yy120; + goto yy343; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy363; - goto yy107; + goto yy342; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy363; + goto yy93; + goto yy342; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy363; - goto yy107; + goto yy342; + goto yy93; } } - yy362: + yy341: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy364; + goto yy343; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy363: + yy342: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= ',') - goto yy107; + goto yy93; if (yych <= '-') - goto yy366; - goto yy120; + goto yy345; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy365; - goto yy107; + goto yy344; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy365; + goto yy93; + goto yy344; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy365; - goto yy107; + goto yy344; + goto yy93; } } - yy364: + yy343: yych = *++p; if (yych <= '9') { if (yych == '-') - goto yy366; + goto yy345; if (yych <= '/') - goto yy107; + goto yy93; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy107; + goto yy93; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych >= '{') - goto yy107; + goto yy93; } } - yy365: + yy344: yych = *++p; if (yych <= '=') { if (yych <= '.') { if (yych <= '-') - goto yy107; - goto yy120; + goto yy93; + goto yy99; } else { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy246; - goto yy107; + goto yy225; + goto yy93; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy121; + goto yy100; if (yych <= '@') - goto yy107; - goto yy246; + goto yy93; + goto yy225; } else { if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy246; - goto yy107; + goto yy225; + goto yy93; } } - yy366: + yy345: ++p; if ((yych = *p) <= '@') { if (yych <= '/') - goto yy107; + goto yy93; if (yych <= '9') - goto yy246; - goto yy107; + goto yy225; + goto yy93; } else { if (yych <= 'Z') - goto yy246; + goto yy225; if (yych <= '`') - goto yy107; + goto yy93; if (yych <= 'z') - goto yy246; - goto yy107; + goto yy225; + goto yy93; } } } @@ -8258,16 +7887,16 @@ bufsize_t _scan_html_tag(const unsigned char *p) { unsigned char yych; static const unsigned char yybm[] = { /* table 1 .. 8: 0 */ - 0, 230, 230, 230, 230, 230, 230, 230, 230, 199, 199, 199, 199, 199, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 199, 230, 70, 230, 230, 230, 230, 134, 230, 230, - 230, 230, 230, 254, 246, 230, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 246, 230, 198, 198, 196, 230, 230, 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, 230, 230, 226, 230, 246, 198, 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, 230, 230, 230, - 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238, 238, 238, 238, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 238, 239, 234, 239, 239, 239, 239, 236, 239, 239, + 239, 239, 239, 207, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 238, 238, 174, 231, 239, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 239, 239, 111, 239, 239, 238, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8278,16 +7907,16 @@ bufsize_t _scan_html_tag(const unsigned char *p) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* table 9 .. 11: 256 */ - 0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 32, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 128, 160, 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, 160, 160, 160, 160, 160, 160, 160, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 64, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 160, 128, 0, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 128, 0, 0, 0, 0, 0, 0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 0, 0, 0, 0, 128, 0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8298,1919 +7927,1830 @@ bufsize_t _scan_html_tag(const unsigned char *p) { 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 <= '.') { - if (yych <= '\n') { - if (yych <= '\t') - goto yy374; - } else { - if (yych == '!') - goto yy372; - goto yy374; - } - } else { - if (yych <= '?') { - if (yych <= '/') - goto yy371; - if (yych <= '>') - goto yy374; - goto yy373; - } else { - if (yych <= '@') - goto yy374; - if (yych <= 'Z') - goto yy370; - goto yy374; - } - } - } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 'z') - goto yy370; - if (yych <= 0x7F) - goto yy374; - } else { - if (yych <= 0xDF) - goto yy375; - if (yych <= 0xE0) - goto yy377; - goto yy378; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy382; - if (yych <= 0xEF) - goto yy378; - goto yy379; - } else { - if (yych <= 0xF3) - goto yy380; - if (yych <= 0xF4) - goto yy381; - } - } - } - yy369 : { return 0; } - yy370: - yych = *(marker = ++p); - if (yych <= '/') { - if (yych <= ' ') { - if (yych <= 0x08) - goto yy369; - if (yych <= '\r') - goto yy474; - if (yych <= 0x1F) - goto yy369; - goto yy474; + yych = *p; + if (yych <= '>') { + if (yych <= '!') { + if (yych >= '!') + goto yy350; } else { - if (yych == '-') - goto yy472; - if (yych <= '.') - goto yy369; - goto yy476; + if (yych == '/') + goto yy351; } } else { - if (yych <= '@') { - if (yych <= '9') - goto yy472; - if (yych == '>') - goto yy393; - goto yy369; + if (yych <= 'Z') { + if (yych <= '?') + goto yy352; + if (yych >= 'A') + goto yy353; } else { - if (yych <= 'Z') - goto yy472; if (yych <= '`') - goto yy369; + goto yy348; if (yych <= 'z') - goto yy472; - goto yy369; + goto yy353; } } - yy371: - yych = *(marker = ++p); - if (yych <= '@') - goto yy369; - if (yych <= 'Z') - goto yy468; - if (yych <= '`') - goto yy369; - if (yych <= 'z') - goto yy468; - goto yy369; - yy372: + yy348: + ++p; + yy349 : { return 0; } + yy350: yych = *(marker = ++p); - if (yybm[256 + yych] & 64) { - goto yy403; + if (yybm[0 + yych] & 16) { + goto yy426; } if (yych == '-') - goto yy405; + goto yy428; if (yych <= '@') - goto yy369; + goto yy349; if (yych <= '[') - goto yy402; - goto yy369; - yy373: + goto yy425; + goto yy349; + yy351: + yych = *(marker = ++p); + if (yych <= '@') + goto yy349; + if (yych <= 'Z') + goto yy421; + if (yych <= '`') + goto yy349; + if (yych <= 'z') + goto yy421; + goto yy349; + yy352: yych = *(marker = ++p); if (yych <= 0x00) - goto yy369; + goto yy349; if (yych <= 0x7F) - goto yy384; + goto yy405; if (yych <= 0xC1) - goto yy369; + goto yy349; if (yych <= 0xF4) - goto yy384; - goto yy369; - yy374: - yych = *++p; - goto yy369; - yy375: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy374; - yy376: - p = marker; - goto yy369; - yy377: - yych = *++p; - if (yych <= 0x9F) - goto yy376; - if (yych <= 0xBF) - goto yy375; - goto yy376; - yy378: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy375; - goto yy376; - yy379: - yych = *++p; - if (yych <= 0x8F) - goto yy376; - if (yych <= 0xBF) - goto yy378; - goto yy376; - yy380: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy378; - goto yy376; - yy381: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0x8F) - goto yy378; - goto yy376; - yy382: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0x9F) - goto yy375; - goto yy376; - yy383: - ++p; - yych = *p; - yy384: - if (yybm[256 + yych] & 32) { - goto yy383; + goto yy405; + goto yy349; + yy353: + yych = *(marker = ++p); + if (yybm[256 + yych] & 64) { + goto yy357; } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) - goto yy376; - if (yych <= '?') - goto yy392; - goto yy376; + if (yych <= '=') { + if (yych <= '.') { + if (yych != '-') + goto yy349; } else { - if (yych <= 0xDF) - goto yy385; - if (yych <= 0xE0) - goto yy386; - goto yy387; + if (yych <= '/') + goto yy359; + if (yych >= ':') + goto yy349; } } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy391; - if (yych <= 0xEF) - goto yy387; - goto yy388; + if (yych <= 'Z') { + if (yych <= '>') + goto yy360; + if (yych <= '@') + goto yy349; } else { - if (yych <= 0xF3) - goto yy389; - if (yych <= 0xF4) - goto yy390; - goto yy376; + if (yych <= '`') + goto yy349; + if (yych >= '{') + goto yy349; } } - yy385: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy383; - goto yy376; - yy386: + yy354: ++p; yych = *p; - if (yych <= 0x9F) - goto yy376; - if (yych <= 0xBF) - goto yy385; - goto yy376; - yy387: + if (yybm[256 + yych] & 64) { + goto yy357; + } + if (yych <= '=') { + if (yych <= '.') { + if (yych == '-') + goto yy354; + } else { + if (yych <= '/') + goto yy359; + if (yych <= '9') + goto yy354; + } + } else { + if (yych <= 'Z') { + if (yych <= '>') + goto yy360; + if (yych >= 'A') + goto yy354; + } else { + if (yych <= '`') + goto yy356; + if (yych <= 'z') + goto yy354; + } + } + yy356: + p = marker; + goto yy349; + yy357: ++p; yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy385; - goto yy376; - yy388: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy376; - if (yych <= 0xBF) - goto yy387; - goto yy376; - yy389: + if (yybm[256 + yych] & 64) { + goto yy357; + } + if (yych <= '>') { + if (yych <= '9') { + if (yych != '/') + goto yy356; + } else { + if (yych <= ':') + goto yy362; + if (yych <= '=') + goto yy356; + goto yy360; + } + } else { + if (yych <= '^') { + if (yych <= '@') + goto yy356; + if (yych <= 'Z') + goto yy362; + goto yy356; + } else { + if (yych == '`') + goto yy356; + if (yych <= 'z') + goto yy362; + goto yy356; + } + } + yy359: + yych = *++p; + if (yych != '>') + goto yy356; + yy360: ++p; - yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy387; - goto yy376; - yy390: + { return (bufsize_t)(p - start); } + yy362: ++p; yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0x8F) - goto yy387; - goto yy376; - yy391: + if (yybm[256 + yych] & 128) { + goto yy362; + } + if (yych <= ',') { + if (yych <= '\r') { + if (yych <= 0x08) + goto yy356; + } else { + if (yych != ' ') + goto yy356; + } + } else { + if (yych <= '<') { + if (yych <= '/') + goto yy359; + goto yy356; + } else { + if (yych <= '=') + goto yy366; + if (yych <= '>') + goto yy360; + goto yy356; + } + } + yy364: ++p; yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0x9F) - goto yy385; - goto yy376; - yy392: + if (yych <= '<') { + if (yych <= ' ') { + if (yych <= 0x08) + goto yy356; + if (yych <= '\r') + goto yy364; + if (yych <= 0x1F) + goto yy356; + goto yy364; + } else { + if (yych <= '/') { + if (yych <= '.') + goto yy356; + goto yy359; + } else { + if (yych == ':') + goto yy362; + goto yy356; + } + } + } else { + if (yych <= 'Z') { + if (yych <= '=') + goto yy366; + if (yych <= '>') + goto yy360; + if (yych <= '@') + goto yy356; + goto yy362; + } else { + if (yych <= '_') { + if (yych <= '^') + goto yy356; + goto yy362; + } else { + if (yych <= '`') + goto yy356; + if (yych <= 'z') + goto yy362; + goto yy356; + } + } + } + yy366: ++p; yych = *p; + if (yybm[0 + yych] & 1) { + goto yy368; + } if (yych <= 0xE0) { - if (yych <= '>') { + if (yych <= '"') { if (yych <= 0x00) - goto yy376; - if (yych <= '=') - goto yy383; + goto yy356; + if (yych >= '!') + goto yy379; } else { - if (yych <= 0x7F) - goto yy383; + if (yych <= '\'') + goto yy377; if (yych <= 0xC1) - goto yy376; + goto yy356; if (yych <= 0xDF) - goto yy395; - goto yy396; + goto yy370; + goto yy371; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy401; - goto yy397; + goto yy376; + goto yy372; } else { if (yych <= 0xF0) - goto yy398; + goto yy373; + if (yych <= 0xF3) + goto yy374; + if (yych <= 0xF4) + goto yy375; + goto yy356; + } + } + ++p; + yych = *p; + if (yybm[0 + yych] & 1) { + goto yy368; + } + if (yych <= 0xDF) { + if (yych <= '\'') { + if (yych <= 0x00) + goto yy356; + if (yych <= ' ') + goto yy402; + if (yych <= '"') + goto yy379; + goto yy377; + } else { + if (yych == '>') + goto yy360; + if (yych <= 0xC1) + goto yy356; + goto yy370; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy371; + if (yych == 0xED) + goto yy376; + goto yy372; + } else { + if (yych <= 0xF0) + goto yy373; if (yych <= 0xF3) - goto yy399; + goto yy374; if (yych <= 0xF4) - goto yy400; - goto yy376; + goto yy375; + goto yy356; } } - yy393: + yy368: ++p; - { return (bufsize_t)(p - start); } - yy395: + yych = *p; + if (yybm[0 + yych] & 1) { + goto yy368; + } + if (yych <= 0xE0) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy356; + if (yych <= ' ') + goto yy396; + goto yy356; + } else { + if (yych <= '>') + goto yy360; + if (yych <= 0xC1) + goto yy356; + if (yych >= 0xE0) + goto yy371; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy376; + goto yy372; + } else { + if (yych <= 0xF0) + goto yy373; + if (yych <= 0xF3) + goto yy374; + if (yych <= 0xF4) + goto yy375; + goto yy356; + } + } + yy370: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy383; - goto yy376; - yy396: + goto yy368; + goto yy356; + yy371: ++p; yych = *p; if (yych <= 0x9F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy395; - goto yy376; - yy397: + goto yy370; + goto yy356; + yy372: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy395; - goto yy376; - yy398: + goto yy370; + goto yy356; + yy373: ++p; yych = *p; if (yych <= 0x8F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy397; - goto yy376; - yy399: + goto yy372; + goto yy356; + yy374: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy397; - goto yy376; - yy400: + goto yy372; + goto yy356; + yy375: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x8F) - goto yy397; - goto yy376; - yy401: + goto yy372; + goto yy356; + yy376: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x9F) - goto yy395; - goto yy376; - yy402: - yych = *++p; - if (yych == 'C') - goto yy438; - if (yych == 'c') - goto yy438; - goto yy376; - yy403: + goto yy370; + goto yy356; + yy377: ++p; yych = *p; - if (yybm[0 + yych] & 1) { - goto yy427; + if (yybm[0 + yych] & 2) { + goto yy377; } - if (yych <= '@') - goto yy376; - if (yych <= 'Z') - goto yy403; - goto yy376; - yy405: - yych = *++p; - if (yych != '-') - goto yy376; - yych = *++p; - if (yych <= 0xE0) { - if (yych <= '=') { - if (yych != '-') - goto yy409; + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy356; + if (yych <= '\'') + goto yy388; + goto yy356; } else { - if (yych <= '>') - goto yy376; - if (yych <= 0xC1) - goto yy409; if (yych <= 0xDF) - goto yy410; - goto yy411; + goto yy389; + if (yych <= 0xE0) + goto yy390; + goto yy391; } } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy416; - goto yy412; + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy395; + if (yych <= 0xEF) + goto yy391; + goto yy392; } else { - if (yych <= 0xF0) - goto yy413; if (yych <= 0xF3) - goto yy414; + goto yy393; if (yych <= 0xF4) - goto yy415; - goto yy409; + goto yy394; + goto yy356; } } - yych = *++p; - if (yych <= 0xE0) { - if (yych <= '=') { - if (yych == '-') - goto yy426; - goto yy409; - } else { - if (yych <= '>') - goto yy376; - if (yych <= 0xC1) - goto yy409; - if (yych <= 0xDF) - goto yy410; - goto yy411; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy416; - goto yy412; - } else { - if (yych <= 0xF0) - goto yy413; - if (yych <= 0xF3) - goto yy414; - if (yych <= 0xF4) - goto yy415; - goto yy409; - } - } - yy408: - ++p; - yych = *p; - yy409: - if (yybm[256 + yych] & 128) { - goto yy408; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) - goto yy376; - if (yych <= '-') - goto yy417; - goto yy376; - } else { - if (yych <= 0xDF) - goto yy418; - if (yych <= 0xE0) - goto yy419; - goto yy420; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy424; - if (yych <= 0xEF) - goto yy420; - goto yy421; - } else { - if (yych <= 0xF3) - goto yy422; - if (yych <= 0xF4) - goto yy423; - goto yy376; - } - } - yy410: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy408; - goto yy376; - yy411: - yych = *++p; - if (yych <= 0x9F) - goto yy376; - if (yych <= 0xBF) - goto yy410; - goto yy376; - yy412: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy410; - goto yy376; - yy413: - yych = *++p; - if (yych <= 0x8F) - goto yy376; - if (yych <= 0xBF) - goto yy412; - goto yy376; - yy414: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy412; - goto yy376; - yy415: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0x8F) - goto yy412; - goto yy376; - yy416: - yych = *++p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0x9F) - goto yy410; - goto yy376; - yy417: + yy379: ++p; yych = *p; - if (yybm[256 + yych] & 128) { - goto yy408; + if (yybm[0 + yych] & 4) { + goto yy379; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy376; - if (yych <= '-') - goto yy425; - goto yy376; + goto yy356; + if (yych <= '"') + goto yy388; + goto yy356; } else { if (yych <= 0xDF) - goto yy418; + goto yy381; if (yych <= 0xE0) - goto yy419; - goto yy420; + goto yy382; + goto yy383; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy424; + goto yy387; if (yych <= 0xEF) - goto yy420; - goto yy421; + goto yy383; + goto yy384; } else { if (yych <= 0xF3) - goto yy422; + goto yy385; if (yych <= 0xF4) - goto yy423; - goto yy376; + goto yy386; + goto yy356; } } - yy418: + yy381: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy408; - goto yy376; - yy419: + goto yy379; + goto yy356; + yy382: ++p; yych = *p; if (yych <= 0x9F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy418; - goto yy376; - yy420: + goto yy381; + goto yy356; + yy383: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy418; - goto yy376; - yy421: + goto yy381; + goto yy356; + yy384: ++p; yych = *p; if (yych <= 0x8F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy420; - goto yy376; - yy422: + goto yy383; + goto yy356; + yy385: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy420; - goto yy376; - yy423: + goto yy383; + goto yy356; + yy386: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x8F) - goto yy420; - goto yy376; - yy424: + goto yy383; + goto yy356; + yy387: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x9F) - goto yy418; - goto yy376; - yy425: - yych = *++p; - if (yych == '>') - goto yy393; - goto yy376; - yy426: - yych = *++p; - if (yych == '>') - goto yy393; - goto yy376; - yy427: - ++p; - yych = *p; - if (yybm[0 + yych] & 1) { - goto yy427; - } - if (yych <= 0xE0) { - if (yych <= '>') { - if (yych <= 0x00) - goto yy376; - if (yych >= '>') - goto yy393; - } else { - if (yych <= 0x7F) - goto yy429; - if (yych <= 0xC1) - goto yy376; - if (yych <= 0xDF) - goto yy431; - goto yy432; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy437; - goto yy433; - } else { - if (yych <= 0xF0) - goto yy434; - if (yych <= 0xF3) - goto yy435; - if (yych <= 0xF4) - goto yy436; - goto yy376; - } - } - yy429: + goto yy381; + goto yy356; + yy388: ++p; yych = *p; - if (yybm[0 + yych] & 2) { - goto yy429; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) - goto yy376; - if (yych <= '>') - goto yy393; - goto yy376; - } else { - if (yych <= 0xDF) - goto yy431; - if (yych <= 0xE0) - goto yy432; - goto yy433; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy437; - if (yych <= 0xEF) - goto yy433; - goto yy434; - } else { - if (yych <= 0xF3) - goto yy435; - if (yych <= 0xF4) - goto yy436; - goto yy376; - } + if (yybm[256 + yych] & 64) { + goto yy357; } - yy431: + if (yych == '/') + goto yy359; + if (yych == '>') + goto yy360; + goto yy356; + yy389: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy429; - goto yy376; - yy432: + goto yy377; + goto yy356; + yy390: ++p; yych = *p; if (yych <= 0x9F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy431; - goto yy376; - yy433: + goto yy389; + goto yy356; + yy391: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy431; - goto yy376; - yy434: + goto yy389; + goto yy356; + yy392: ++p; yych = *p; if (yych <= 0x8F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy433; - goto yy376; - yy435: + goto yy391; + goto yy356; + yy393: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy433; - goto yy376; - yy436: + goto yy391; + goto yy356; + yy394: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x8F) - goto yy433; - goto yy376; - yy437: + goto yy391; + goto yy356; + yy395: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x9F) - goto yy431; - goto yy376; - yy438: - yych = *++p; - if (yych == 'D') - goto yy439; - if (yych != 'd') - goto yy376; - yy439: - yych = *++p; - if (yych == 'A') - goto yy440; - if (yych != 'a') - goto yy376; - yy440: - yych = *++p; - if (yych == 'T') - goto yy441; - if (yych != 't') - goto yy376; - yy441: - yych = *++p; - if (yych == 'A') - goto yy442; - if (yych != 'a') - goto yy376; - yy442: - yych = *++p; - if (yych != '[') - goto yy376; - yy443: + goto yy389; + goto yy356; + yy396: ++p; yych = *p; - if (yybm[0 + yych] & 4) { - goto yy443; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x00) - goto yy376; - if (yych <= ']') - goto yy452; - goto yy376; + if (yych <= '@') { + if (yych <= '"') { + if (yych <= '\r') { + if (yych <= 0x00) + goto yy356; + if (yych <= 0x08) + goto yy368; + goto yy396; + } else { + if (yych == ' ') + goto yy396; + if (yych <= '!') + goto yy368; + goto yy356; + } } else { - if (yych <= 0xDF) - goto yy445; - if (yych <= 0xE0) - goto yy446; - goto yy447; + if (yych <= ':') { + if (yych == '\'') + goto yy356; + if (yych <= '9') + goto yy368; + } else { + if (yych <= ';') + goto yy368; + if (yych <= '=') + goto yy356; + if (yych <= '>') + goto yy360; + goto yy368; + } } } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy451; - if (yych <= 0xEF) - goto yy447; - goto yy448; + if (yych <= 0xDF) { + if (yych <= '`') { + if (yych <= 'Z') + goto yy398; + if (yych <= '^') + goto yy368; + if (yych >= '`') + goto yy356; + } else { + if (yych <= 'z') + goto yy398; + if (yych <= 0x7F) + goto yy368; + if (yych <= 0xC1) + goto yy356; + goto yy370; + } } else { - if (yych <= 0xF3) - goto yy449; - if (yych <= 0xF4) - goto yy450; - goto yy376; + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy371; + if (yych == 0xED) + goto yy376; + goto yy372; + } else { + if (yych <= 0xF0) + goto yy373; + if (yych <= 0xF3) + goto yy374; + if (yych <= 0xF4) + goto yy375; + goto yy356; + } } } - yy445: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy443; - goto yy376; - yy446: - ++p; - yych = *p; - if (yych <= 0x9F) - goto yy376; - if (yych <= 0xBF) - goto yy445; - goto yy376; - yy447: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy445; - goto yy376; - yy448: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy376; - if (yych <= 0xBF) - goto yy447; - goto yy376; - yy449: + yy398: ++p; yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0xBF) - goto yy447; - goto yy376; - yy450: + if (yych <= '>') { + if (yych <= '&') { + if (yych <= 0x1F) { + if (yych <= 0x00) + goto yy356; + if (yych <= 0x08) + goto yy368; + if (yych >= 0x0E) + goto yy368; + } else { + if (yych <= ' ') + goto yy400; + if (yych == '"') + goto yy356; + goto yy368; + } + } else { + if (yych <= '/') { + if (yych <= '\'') + goto yy356; + if (yych <= ',') + goto yy368; + if (yych <= '.') + goto yy398; + goto yy368; + } else { + if (yych <= ';') { + if (yych <= ':') + goto yy398; + goto yy368; + } else { + if (yych <= '<') + goto yy356; + if (yych <= '=') + goto yy366; + goto yy360; + } + } + } + } else { + if (yych <= 0xC1) { + if (yych <= '_') { + if (yych <= '@') + goto yy368; + if (yych <= 'Z') + goto yy398; + if (yych <= '^') + goto yy368; + goto yy398; + } else { + if (yych <= '`') + goto yy356; + if (yych <= 'z') + goto yy398; + if (yych <= 0x7F) + goto yy368; + goto yy356; + } + } else { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy370; + if (yych <= 0xE0) + goto yy371; + if (yych <= 0xEC) + goto yy372; + goto yy376; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy372; + goto yy373; + } else { + if (yych <= 0xF3) + goto yy374; + if (yych <= 0xF4) + goto yy375; + goto yy356; + } + } + } + } + yy400: ++p; yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0x8F) - goto yy447; - goto yy376; - yy451: + if (yych <= '@') { + if (yych <= '&') { + if (yych <= 0x1F) { + if (yych <= 0x00) + goto yy356; + if (yych <= 0x08) + goto yy368; + if (yych <= '\r') + goto yy400; + goto yy368; + } else { + if (yych <= ' ') + goto yy400; + if (yych == '"') + goto yy356; + goto yy368; + } + } else { + if (yych <= ';') { + if (yych <= '\'') + goto yy356; + if (yych == ':') + goto yy398; + goto yy368; + } else { + if (yych <= '<') + goto yy356; + if (yych <= '=') + goto yy366; + if (yych <= '>') + goto yy360; + goto yy368; + } + } + } else { + if (yych <= 0xDF) { + if (yych <= '`') { + if (yych <= 'Z') + goto yy398; + if (yych <= '^') + goto yy368; + if (yych <= '_') + goto yy398; + goto yy356; + } else { + if (yych <= 'z') + goto yy398; + if (yych <= 0x7F) + goto yy368; + if (yych <= 0xC1) + goto yy356; + goto yy370; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy371; + if (yych == 0xED) + goto yy376; + goto yy372; + } else { + if (yych <= 0xF0) + goto yy373; + if (yych <= 0xF3) + goto yy374; + if (yych <= 0xF4) + goto yy375; + goto yy356; + } + } + } + yy402: ++p; yych = *p; - if (yych <= 0x7F) - goto yy376; - if (yych <= 0x9F) - goto yy445; - goto yy376; - yy452: + if (yych <= '@') { + if (yych <= '"') { + if (yych <= '\r') { + if (yych <= 0x00) + goto yy356; + if (yych <= 0x08) + goto yy368; + goto yy402; + } else { + if (yych == ' ') + goto yy402; + if (yych <= '!') + goto yy368; + goto yy379; + } + } else { + if (yych <= ':') { + if (yych == '\'') + goto yy377; + if (yych <= '9') + goto yy368; + goto yy398; + } else { + if (yych <= ';') + goto yy368; + if (yych <= '=') + goto yy356; + if (yych <= '>') + goto yy360; + goto yy368; + } + } + } else { + if (yych <= 0xDF) { + if (yych <= '`') { + if (yych <= 'Z') + goto yy398; + if (yych <= '^') + goto yy368; + if (yych <= '_') + goto yy398; + goto yy356; + } else { + if (yych <= 'z') + goto yy398; + if (yych <= 0x7F) + goto yy368; + if (yych <= 0xC1) + goto yy356; + goto yy370; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy371; + if (yych == 0xED) + goto yy376; + goto yy372; + } else { + if (yych <= 0xF0) + goto yy373; + if (yych <= 0xF3) + goto yy374; + if (yych <= 0xF4) + goto yy375; + goto yy356; + } + } + } + yy404: ++p; yych = *p; - if (yybm[0 + yych] & 4) { - goto yy443; + yy405: + if (yybm[0 + yych] & 8) { + goto yy404; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy376; - if (yych >= '^') - goto yy376; + goto yy356; + if (yych <= '?') + goto yy413; + goto yy356; } else { if (yych <= 0xDF) - goto yy454; + goto yy406; if (yych <= 0xE0) - goto yy455; - goto yy456; + goto yy407; + goto yy408; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy460; + goto yy412; if (yych <= 0xEF) - goto yy456; - goto yy457; - } else { - if (yych <= 0xF3) - goto yy458; - if (yych <= 0xF4) - goto yy459; - goto yy376; - } - } - ++p; - yych = *p; - if (yych <= 0xE0) { - if (yych <= '>') { - if (yych <= 0x00) - goto yy376; - if (yych <= '=') - goto yy443; - goto yy393; - } else { - if (yych <= 0x7F) - goto yy443; - if (yych <= 0xC1) - goto yy376; - if (yych <= 0xDF) - goto yy461; - goto yy462; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy467; - goto yy463; + goto yy408; + goto yy409; } else { - if (yych <= 0xF0) - goto yy464; if (yych <= 0xF3) - goto yy465; + goto yy410; if (yych <= 0xF4) - goto yy466; - goto yy376; + goto yy411; + goto yy356; } } - yy454: + yy406: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy443; - goto yy376; - yy455: + goto yy404; + goto yy356; + yy407: ++p; yych = *p; if (yych <= 0x9F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy454; - goto yy376; - yy456: + goto yy406; + goto yy356; + yy408: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy454; - goto yy376; - yy457: + goto yy406; + goto yy356; + yy409: ++p; yych = *p; if (yych <= 0x8F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy456; - goto yy376; - yy458: + goto yy408; + goto yy356; + yy410: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy456; - goto yy376; - yy459: + goto yy408; + goto yy356; + yy411: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x8F) - goto yy456; - goto yy376; - yy460: + goto yy408; + goto yy356; + yy412: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x9F) - goto yy454; - goto yy376; - yy461: + goto yy406; + goto yy356; + yy413: + ++p; + yych = *p; + if (yych <= 0xE0) { + if (yych <= '>') { + if (yych <= 0x00) + goto yy356; + if (yych <= '=') + goto yy404; + goto yy360; + } else { + if (yych <= 0x7F) + goto yy404; + if (yych <= 0xC1) + goto yy356; + if (yych >= 0xE0) + goto yy415; + } + } else { + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy420; + goto yy416; + } else { + if (yych <= 0xF0) + goto yy417; + if (yych <= 0xF3) + goto yy418; + if (yych <= 0xF4) + goto yy419; + goto yy356; + } + } + yy414: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy443; - goto yy376; - yy462: + goto yy404; + goto yy356; + yy415: ++p; yych = *p; if (yych <= 0x9F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy461; - goto yy376; - yy463: + goto yy414; + goto yy356; + yy416: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy461; - goto yy376; - yy464: + goto yy414; + goto yy356; + yy417: ++p; yych = *p; if (yych <= 0x8F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy463; - goto yy376; - yy465: + goto yy416; + goto yy356; + yy418: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy463; - goto yy376; - yy466: + goto yy416; + goto yy356; + yy419: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x8F) - goto yy463; - goto yy376; - yy467: + goto yy416; + goto yy356; + yy420: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x9F) - goto yy461; - goto yy376; - yy468: - ++p; - yych = *p; - if (yybm[0 + yych] & 8) { - goto yy468; - } - if (yych <= 0x1F) { - if (yych <= 0x08) - goto yy376; - if (yych >= 0x0E) - goto yy376; - } else { - if (yych <= ' ') - goto yy470; - if (yych == '>') - goto yy393; - goto yy376; - } - yy470: - ++p; - yych = *p; - if (yych <= 0x1F) { - if (yych <= 0x08) - goto yy376; - if (yych <= '\r') - goto yy470; - goto yy376; - } else { - if (yych <= ' ') - goto yy470; - if (yych == '>') - goto yy393; - goto yy376; - } - yy472: + goto yy414; + goto yy356; + yy421: ++p; yych = *p; if (yych <= '/') { - if (yych <= ' ') { + if (yych <= 0x1F) { if (yych <= 0x08) - goto yy376; - if (yych <= '\r') - goto yy474; - if (yych <= 0x1F) - goto yy376; + goto yy356; + if (yych >= 0x0E) + goto yy356; } else { + if (yych <= ' ') + goto yy423; if (yych == '-') - goto yy472; - if (yych <= '.') - goto yy376; - goto yy476; + goto yy421; + goto yy356; } } else { if (yych <= '@') { if (yych <= '9') - goto yy472; + goto yy421; if (yych == '>') - goto yy393; - goto yy376; + goto yy360; + goto yy356; } else { if (yych <= 'Z') - goto yy472; + goto yy421; if (yych <= '`') - goto yy376; + goto yy356; if (yych <= 'z') - goto yy472; - goto yy376; + goto yy421; + goto yy356; } } - yy474: + yy423: ++p; yych = *p; - if (yych <= ':') { - if (yych <= ' ') { - if (yych <= 0x08) - goto yy376; - if (yych <= '\r') - goto yy474; - if (yych <= 0x1F) - goto yy376; - goto yy474; - } else { - if (yych == '/') - goto yy476; - if (yych <= '9') - goto yy376; - goto yy477; - } + if (yych <= 0x1F) { + if (yych <= 0x08) + goto yy356; + if (yych <= '\r') + goto yy423; + goto yy356; } else { - if (yych <= 'Z') { - if (yych == '>') - goto yy393; - if (yych <= '@') - goto yy376; - goto yy477; - } else { - if (yych <= '_') { - if (yych <= '^') - goto yy376; - goto yy477; - } else { - if (yych <= '`') - goto yy376; - if (yych <= 'z') - goto yy477; - goto yy376; - } - } + if (yych <= ' ') + goto yy423; + if (yych == '>') + goto yy360; + goto yy356; } - yy476: + yy425: yych = *++p; - if (yych == '>') - goto yy393; - goto yy376; - yy477: + if (yych == 'C') + goto yy461; + if (yych == 'c') + goto yy461; + goto yy356; + yy426: ++p; yych = *p; if (yybm[0 + yych] & 16) { - goto yy477; - } - if (yych <= ',') { - if (yych <= '\r') { - if (yych <= 0x08) - goto yy376; - } else { - if (yych != ' ') - goto yy376; - } - } else { - if (yych <= '<') { - if (yych <= '/') - goto yy476; - goto yy376; - } else { - if (yych <= '=') - goto yy481; - if (yych <= '>') - goto yy393; - goto yy376; - } - } - yy479: - ++p; - yych = *p; - if (yych <= '<') { - if (yych <= ' ') { - if (yych <= 0x08) - goto yy376; - if (yych <= '\r') - goto yy479; - if (yych <= 0x1F) - goto yy376; - goto yy479; - } else { - if (yych <= '/') { - if (yych <= '.') - goto yy376; - goto yy476; - } else { - if (yych == ':') - goto yy477; - goto yy376; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '=') - goto yy481; - if (yych <= '>') - goto yy393; - if (yych <= '@') - goto yy376; - goto yy477; - } else { - if (yych <= '_') { - if (yych <= '^') - goto yy376; - goto yy477; - } else { - if (yych <= '`') - goto yy376; - if (yych <= 'z') - goto yy477; - goto yy376; - } - } - } - yy481: - ++p; - yych = *p; - if (yybm[0 + yych] & 32) { - goto yy483; + goto yy426; } + if (yych <= 0x08) + goto yy356; + if (yych <= '\r') + goto yy450; + if (yych == ' ') + goto yy450; + goto yy356; + yy428: + yych = *++p; + if (yych != '-') + goto yy356; + yych = *++p; if (yych <= 0xE0) { - if (yych <= '"') { - if (yych <= 0x00) - goto yy376; - if (yych >= '!') - goto yy494; + if (yych <= '=') { + if (yych != '-') + goto yy432; } else { - if (yych <= '\'') - goto yy492; + if (yych <= '>') + goto yy356; if (yych <= 0xC1) - goto yy376; + goto yy432; if (yych <= 0xDF) - goto yy485; - goto yy486; + goto yy433; + goto yy434; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy491; - goto yy487; + goto yy439; + goto yy435; } else { if (yych <= 0xF0) - goto yy488; + goto yy436; if (yych <= 0xF3) - goto yy489; + goto yy437; if (yych <= 0xF4) - goto yy490; - goto yy376; + goto yy438; + goto yy432; } } - ++p; - yych = *p; - if (yybm[0 + yych] & 32) { - goto yy483; - } - if (yych <= 0xDF) { - if (yych <= '\'') { - if (yych <= 0x00) - goto yy376; - if (yych <= ' ') - goto yy517; - if (yych <= '"') - goto yy494; - goto yy492; + yych = *++p; + if (yych <= 0xE0) { + if (yych <= '=') { + if (yych == '-') + goto yy449; + goto yy432; } else { - if (yych == '>') - goto yy393; + if (yych <= '>') + goto yy356; if (yych <= 0xC1) - goto yy376; - goto yy485; + goto yy432; + if (yych <= 0xDF) + goto yy433; + goto yy434; } } else { if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy486; if (yych == 0xED) - goto yy491; - goto yy487; + goto yy439; + goto yy435; } else { if (yych <= 0xF0) - goto yy488; + goto yy436; if (yych <= 0xF3) - goto yy489; + goto yy437; if (yych <= 0xF4) - goto yy490; - goto yy376; + goto yy438; + goto yy432; } } - yy483: + yy431: ++p; yych = *p; + yy432: if (yybm[0 + yych] & 32) { - goto yy483; + goto yy431; } - if (yych <= 0xE0) { - if (yych <= '=') { + if (yych <= 0xEC) { + if (yych <= 0xC1) { if (yych <= 0x00) - goto yy376; - if (yych <= ' ') - goto yy511; - goto yy376; + goto yy356; + if (yych <= '-') + goto yy440; + goto yy356; } else { - if (yych <= '>') - goto yy393; - if (yych <= 0xC1) - goto yy376; - if (yych >= 0xE0) - goto yy486; + if (yych <= 0xDF) + goto yy441; + if (yych <= 0xE0) + goto yy442; + goto yy443; } } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy491; - goto yy487; + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy447; + if (yych <= 0xEF) + goto yy443; + goto yy444; } else { - if (yych <= 0xF0) - goto yy488; if (yych <= 0xF3) - goto yy489; + goto yy445; if (yych <= 0xF4) - goto yy490; - goto yy376; + goto yy446; + goto yy356; } } - yy485: + yy433: + yych = *++p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0xBF) + goto yy431; + goto yy356; + yy434: + yych = *++p; + if (yych <= 0x9F) + goto yy356; + if (yych <= 0xBF) + goto yy433; + goto yy356; + yy435: + yych = *++p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0xBF) + goto yy433; + goto yy356; + yy436: + yych = *++p; + if (yych <= 0x8F) + goto yy356; + if (yych <= 0xBF) + goto yy435; + goto yy356; + yy437: + yych = *++p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0xBF) + goto yy435; + goto yy356; + yy438: + yych = *++p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0x8F) + goto yy435; + goto yy356; + yy439: + yych = *++p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0x9F) + goto yy433; + goto yy356; + yy440: + ++p; + yych = *p; + if (yybm[0 + yych] & 32) { + goto yy431; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy356; + if (yych <= '-') + goto yy448; + goto yy356; + } else { + if (yych <= 0xDF) + goto yy441; + if (yych <= 0xE0) + goto yy442; + goto yy443; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy447; + if (yych <= 0xEF) + goto yy443; + goto yy444; + } else { + if (yych <= 0xF3) + goto yy445; + if (yych <= 0xF4) + goto yy446; + goto yy356; + } + } + yy441: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy483; - goto yy376; - yy486: + goto yy431; + goto yy356; + yy442: ++p; yych = *p; if (yych <= 0x9F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy485; - goto yy376; - yy487: + goto yy441; + goto yy356; + yy443: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy485; - goto yy376; - yy488: + goto yy441; + goto yy356; + yy444: ++p; yych = *p; if (yych <= 0x8F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy487; - goto yy376; - yy489: + goto yy443; + goto yy356; + yy445: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy487; - goto yy376; - yy490: + goto yy443; + goto yy356; + yy446: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x8F) - goto yy487; - goto yy376; - yy491: + goto yy443; + goto yy356; + yy447: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x9F) - goto yy485; - goto yy376; - yy492: + goto yy441; + goto yy356; + yy448: + yych = *++p; + if (yych == '>') + goto yy360; + goto yy356; + yy449: + yych = *++p; + if (yych == '>') + goto yy360; + goto yy356; + yy450: ++p; yych = *p; - if (yybm[0 + yych] & 64) { - goto yy492; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { + if (yych <= 0xC1) { + if (yych <= 0x1F) { if (yych <= 0x00) - goto yy376; - if (yych <= '\'') - goto yy503; - goto yy376; + goto yy356; + if (yych <= 0x08) + goto yy452; + if (yych <= '\r') + goto yy450; } else { - if (yych <= 0xDF) - goto yy504; - if (yych <= 0xE0) - goto yy505; - goto yy506; + if (yych <= '=') { + if (yych <= ' ') + goto yy450; + } else { + if (yych <= '>') + goto yy360; + if (yych >= 0x80) + goto yy356; + } } } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy510; - if (yych <= 0xEF) - goto yy506; - goto yy507; + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy454; + if (yych <= 0xE0) + goto yy455; + if (yych <= 0xEC) + goto yy456; + goto yy460; } else { - if (yych <= 0xF3) - goto yy508; - if (yych <= 0xF4) - goto yy509; - goto yy376; + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy456; + goto yy457; + } else { + if (yych <= 0xF3) + goto yy458; + if (yych <= 0xF4) + goto yy459; + goto yy356; + } } } - yy494: + yy452: ++p; yych = *p; - if (yybm[0 + yych] & 128) { - goto yy494; + if (yybm[0 + yych] & 64) { + goto yy452; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy376; - if (yych <= '"') - goto yy503; - goto yy376; + goto yy356; + if (yych <= '>') + goto yy360; + goto yy356; } else { if (yych <= 0xDF) - goto yy496; + goto yy454; if (yych <= 0xE0) - goto yy497; - goto yy498; + goto yy455; + goto yy456; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy502; + goto yy460; if (yych <= 0xEF) - goto yy498; - goto yy499; + goto yy456; + goto yy457; } else { if (yych <= 0xF3) - goto yy500; + goto yy458; if (yych <= 0xF4) - goto yy501; - goto yy376; + goto yy459; + goto yy356; } } - yy496: + yy454: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy494; - goto yy376; - yy497: + goto yy452; + goto yy356; + yy455: ++p; yych = *p; if (yych <= 0x9F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy496; - goto yy376; - yy498: + goto yy454; + goto yy356; + yy456: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy496; - goto yy376; - yy499: + goto yy454; + goto yy356; + yy457: ++p; yych = *p; if (yych <= 0x8F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy498; - goto yy376; - yy500: + goto yy456; + goto yy356; + yy458: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy498; - goto yy376; - yy501: + goto yy456; + goto yy356; + yy459: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x8F) - goto yy498; - goto yy376; - yy502: + goto yy456; + goto yy356; + yy460: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x9F) - goto yy496; - goto yy376; - yy503: - ++p; - yych = *p; - if (yych <= ' ') { - if (yych <= 0x08) - goto yy376; - if (yych <= '\r') - goto yy474; - if (yych <= 0x1F) - goto yy376; - goto yy474; - } else { - if (yych <= '/') { - if (yych <= '.') - goto yy376; - goto yy476; - } else { - if (yych == '>') - goto yy393; - goto yy376; - } - } - yy504: + goto yy454; + goto yy356; + yy461: + yych = *++p; + if (yych == 'D') + goto yy462; + if (yych != 'd') + goto yy356; + yy462: + yych = *++p; + if (yych == 'A') + goto yy463; + if (yych != 'a') + goto yy356; + yy463: + yych = *++p; + if (yych == 'T') + goto yy464; + if (yych != 't') + goto yy356; + yy464: + yych = *++p; + if (yych == 'A') + goto yy465; + if (yych != 'a') + goto yy356; + yy465: + yych = *++p; + if (yych != '[') + goto yy356; + yy466: + ++p; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy466; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy356; + if (yych <= ']') + goto yy475; + goto yy356; + } else { + if (yych <= 0xDF) + goto yy468; + if (yych <= 0xE0) + goto yy469; + goto yy470; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy474; + if (yych <= 0xEF) + goto yy470; + goto yy471; + } else { + if (yych <= 0xF3) + goto yy472; + if (yych <= 0xF4) + goto yy473; + goto yy356; + } + } + yy468: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy492; - goto yy376; - yy505: + goto yy466; + goto yy356; + yy469: ++p; yych = *p; if (yych <= 0x9F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy504; - goto yy376; - yy506: + goto yy468; + goto yy356; + yy470: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy504; - goto yy376; - yy507: + goto yy468; + goto yy356; + yy471: ++p; yych = *p; if (yych <= 0x8F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy506; - goto yy376; - yy508: + goto yy470; + goto yy356; + yy472: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0xBF) - goto yy506; - goto yy376; - yy509: + goto yy470; + goto yy356; + yy473: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x8F) - goto yy506; - goto yy376; - yy510: + goto yy470; + goto yy356; + yy474: ++p; yych = *p; if (yych <= 0x7F) - goto yy376; + goto yy356; if (yych <= 0x9F) - goto yy504; - goto yy376; - yy511: + goto yy468; + goto yy356; + yy475: ++p; yych = *p; - if (yych <= '@') { - if (yych <= '"') { - if (yych <= '\r') { - if (yych <= 0x00) - goto yy376; - if (yych <= 0x08) - goto yy483; - goto yy511; - } else { - if (yych == ' ') - goto yy511; - if (yych <= '!') - goto yy483; - goto yy376; - } + if (yybm[0 + yych] & 128) { + goto yy466; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x00) + goto yy356; + if (yych >= '^') + goto yy356; } else { - if (yych <= ':') { - if (yych == '\'') - goto yy376; - if (yych <= '9') - goto yy483; - } else { - if (yych <= ';') - goto yy483; - if (yych <= '=') - goto yy376; - if (yych <= '>') - goto yy393; - goto yy483; - } + if (yych <= 0xDF) + goto yy477; + if (yych <= 0xE0) + goto yy478; + goto yy479; } } else { - if (yych <= 0xDF) { - if (yych <= '`') { - if (yych <= 'Z') - goto yy513; - if (yych <= '^') - goto yy483; - if (yych >= '`') - goto yy376; - } else { - if (yych <= 'z') - goto yy513; - if (yych <= 0x7F) - goto yy483; - if (yych <= 0xC1) - goto yy376; - goto yy485; - } + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy483; + if (yych <= 0xEF) + goto yy479; + goto yy480; } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy486; - if (yych == 0xED) - goto yy491; - goto yy487; - } else { - if (yych <= 0xF0) - goto yy488; - if (yych <= 0xF3) - goto yy489; - if (yych <= 0xF4) - goto yy490; - goto yy376; - } + if (yych <= 0xF3) + goto yy481; + if (yych <= 0xF4) + goto yy482; + goto yy356; } } - yy513: ++p; yych = *p; - if (yych <= '>') { - if (yych <= '&') { - if (yych <= 0x1F) { - if (yych <= 0x00) - goto yy376; - if (yych <= 0x08) - goto yy483; - if (yych >= 0x0E) - goto yy483; - } else { - if (yych <= ' ') - goto yy515; - if (yych == '"') - goto yy376; - goto yy483; - } + if (yych <= 0xE0) { + if (yych <= '>') { + if (yych <= 0x00) + goto yy356; + if (yych <= '=') + goto yy466; + goto yy360; } else { - if (yych <= '/') { - if (yych <= '\'') - goto yy376; - if (yych <= ',') - goto yy483; - if (yych <= '.') - goto yy513; - goto yy483; - } else { - if (yych <= ';') { - if (yych <= ':') - goto yy513; - goto yy483; - } else { - if (yych <= '<') - goto yy376; - if (yych <= '=') - goto yy481; - goto yy393; - } - } + if (yych <= 0x7F) + goto yy466; + if (yych <= 0xC1) + goto yy356; + if (yych <= 0xDF) + goto yy484; + goto yy485; } } else { - if (yych <= 0xC1) { - if (yych <= '_') { - if (yych <= '@') - goto yy483; - if (yych <= 'Z') - goto yy513; - if (yych <= '^') - goto yy483; - goto yy513; - } else { - if (yych <= '`') - goto yy376; - if (yych <= 'z') - goto yy513; - if (yych <= 0x7F) - goto yy483; - goto yy376; - } + if (yych <= 0xEF) { + if (yych == 0xED) + goto yy490; + goto yy486; } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy485; - if (yych <= 0xE0) - goto yy486; - if (yych <= 0xEC) - goto yy487; - goto yy491; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy487; - goto yy488; - } else { - if (yych <= 0xF3) - goto yy489; - if (yych <= 0xF4) - goto yy490; - goto yy376; - } - } + if (yych <= 0xF0) + goto yy487; + if (yych <= 0xF3) + goto yy488; + if (yych <= 0xF4) + goto yy489; + goto yy356; } } - yy515: + yy477: ++p; yych = *p; - if (yych <= '@') { - if (yych <= '&') { - if (yych <= 0x1F) { - if (yych <= 0x00) - goto yy376; - if (yych <= 0x08) - goto yy483; - if (yych <= '\r') - goto yy515; - goto yy483; - } else { - if (yych <= ' ') - goto yy515; - if (yych == '"') - goto yy376; - goto yy483; - } - } else { - if (yych <= ';') { - if (yych <= '\'') - goto yy376; - if (yych == ':') - goto yy513; - goto yy483; - } else { - if (yych <= '<') - goto yy376; - if (yych <= '=') - goto yy481; - if (yych <= '>') - goto yy393; - goto yy483; - } - } - } else { - if (yych <= 0xDF) { - if (yych <= '`') { - if (yych <= 'Z') - goto yy513; - if (yych <= '^') - goto yy483; - if (yych <= '_') - goto yy513; - goto yy376; - } else { - if (yych <= 'z') - goto yy513; - if (yych <= 0x7F) - goto yy483; - if (yych <= 0xC1) - goto yy376; - goto yy485; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy486; - if (yych == 0xED) - goto yy491; - goto yy487; - } else { - if (yych <= 0xF0) - goto yy488; - if (yych <= 0xF3) - goto yy489; - if (yych <= 0xF4) - goto yy490; - goto yy376; - } - } - } - yy517: + if (yych <= 0x7F) + goto yy356; + if (yych <= 0xBF) + goto yy466; + goto yy356; + yy478: ++p; yych = *p; - if (yych <= '@') { - if (yych <= '"') { - if (yych <= '\r') { - if (yych <= 0x00) - goto yy376; - if (yych <= 0x08) - goto yy483; - goto yy517; - } else { - if (yych == ' ') - goto yy517; - if (yych <= '!') - goto yy483; - goto yy494; - } - } else { - if (yych <= ':') { - if (yych == '\'') - goto yy492; - if (yych <= '9') - goto yy483; - goto yy513; - } else { - if (yych <= ';') - goto yy483; - if (yych <= '=') - goto yy376; - if (yych <= '>') - goto yy393; - goto yy483; - } - } - } else { - if (yych <= 0xDF) { - if (yych <= '`') { - if (yych <= 'Z') - goto yy513; - if (yych <= '^') - goto yy483; - if (yych <= '_') - goto yy513; - goto yy376; - } else { - if (yych <= 'z') - goto yy513; - if (yych <= 0x7F) - goto yy483; - if (yych <= 0xC1) - goto yy376; - goto yy485; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy486; - if (yych == 0xED) - goto yy491; - goto yy487; - } else { - if (yych <= 0xF0) - goto yy488; - if (yych <= 0xF3) - goto yy489; - if (yych <= 0xF4) - goto yy490; - goto yy376; - } - } - } + if (yych <= 0x9F) + goto yy356; + if (yych <= 0xBF) + goto yy477; + goto yy356; + yy479: + ++p; + yych = *p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0xBF) + goto yy477; + goto yy356; + yy480: + ++p; + yych = *p; + if (yych <= 0x8F) + goto yy356; + if (yych <= 0xBF) + goto yy479; + goto yy356; + yy481: + ++p; + yych = *p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0xBF) + goto yy479; + goto yy356; + yy482: + ++p; + yych = *p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0x8F) + goto yy479; + goto yy356; + yy483: + ++p; + yych = *p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0x9F) + goto yy477; + goto yy356; + yy484: + ++p; + yych = *p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0xBF) + goto yy466; + goto yy356; + yy485: + ++p; + yych = *p; + if (yych <= 0x9F) + goto yy356; + if (yych <= 0xBF) + goto yy484; + goto yy356; + yy486: + ++p; + yych = *p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0xBF) + goto yy484; + goto yy356; + yy487: + ++p; + yych = *p; + if (yych <= 0x8F) + goto yy356; + if (yych <= 0xBF) + goto yy486; + goto yy356; + yy488: + ++p; + yych = *p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0xBF) + goto yy486; + goto yy356; + yy489: + ++p; + yych = *p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0x8F) + goto yy486; + goto yy356; + yy490: + ++p; + yych = *p; + if (yych <= 0x7F) + goto yy356; + if (yych <= 0x9F) + goto yy484; + goto yy356; } } @@ -10222,317 +9762,241 @@ bufsize_t _scan_html_block_start(const unsigned char *p) { { unsigned char yych; - yych = *(marker = p); - if (yych <= 0xDF) { - if (yych <= ';') { - if (yych != '\n') - goto yy523; - } else { - if (yych <= '<') - goto yy522; - if (yych <= 0x7F) - goto yy523; - if (yych >= 0xC2) - goto yy524; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy526; - if (yych == 0xED) - goto yy531; - goto yy527; - } else { - if (yych <= 0xF0) - goto yy528; - if (yych <= 0xF3) - goto yy529; - if (yych <= 0xF4) - goto yy530; - } - } - yy521 : { return 0; } - yy522: + yych = *p; + if (yych == '<') + goto yy495; + ++p; + yy494 : { return 0; } + yy495: yych = *(marker = ++p); switch (yych) { case '!': - goto yy548; + goto yy513; case '/': - goto yy532; + goto yy496; case '?': - goto yy549; + goto yy514; case 'A': case 'a': - goto yy534; + goto yy499; case 'B': case 'b': - goto yy535; + goto yy500; case 'C': case 'c': - goto yy536; + goto yy501; case 'D': case 'd': - goto yy537; + goto yy502; case 'F': case 'f': - goto yy538; + goto yy503; case 'H': case 'h': - goto yy539; + goto yy504; case 'I': case 'i': - goto yy540; + goto yy505; case 'L': case 'l': - goto yy541; + goto yy506; case 'M': case 'm': - goto yy542; + goto yy507; case 'N': case 'n': - goto yy543; + goto yy508; case 'O': case 'o': - goto yy544; + goto yy509; case 'P': case 'p': - goto yy533; + goto yy498; case 'S': case 's': - goto yy545; + goto yy510; case 'T': case 't': - goto yy546; + goto yy511; case 'U': case 'u': - goto yy547; + goto yy512; default: - goto yy521; + goto yy494; } - yy523: - yych = *++p; - goto yy521; - yy524: - yych = *++p; - if (yych <= 0x7F) - goto yy525; - if (yych <= 0xBF) - goto yy523; - yy525: - p = marker; - goto yy521; - yy526: - yych = *++p; - if (yych <= 0x9F) - goto yy525; - if (yych <= 0xBF) - goto yy524; - goto yy525; - yy527: - yych = *++p; - if (yych <= 0x7F) - goto yy525; - if (yych <= 0xBF) - goto yy524; - goto yy525; - yy528: - yych = *++p; - if (yych <= 0x8F) - goto yy525; - if (yych <= 0xBF) - goto yy527; - goto yy525; - yy529: - yych = *++p; - if (yych <= 0x7F) - goto yy525; - if (yych <= 0xBF) - goto yy527; - goto yy525; - yy530: - yych = *++p; - if (yych <= 0x7F) - goto yy525; - if (yych <= 0x8F) - goto yy527; - goto yy525; - yy531: - yych = *++p; - if (yych <= 0x7F) - goto yy525; - if (yych <= 0x9F) - goto yy524; - goto yy525; - yy532: + yy496: yych = *++p; switch (yych) { case 'A': case 'a': - goto yy534; + goto yy499; case 'B': case 'b': - goto yy535; + goto yy500; case 'C': case 'c': - goto yy536; + goto yy501; case 'D': case 'd': - goto yy537; + goto yy502; case 'F': case 'f': - goto yy538; + goto yy503; case 'H': case 'h': - goto yy539; + goto yy504; case 'I': case 'i': - goto yy540; + goto yy505; case 'L': case 'l': - goto yy541; + goto yy506; case 'M': case 'm': - goto yy542; + goto yy507; case 'N': case 'n': - goto yy543; + goto yy508; case 'O': case 'o': - goto yy544; + goto yy509; case 'P': case 'p': - goto yy733; + goto yy698; case 'S': case 's': - goto yy734; + goto yy699; case 'T': case 't': - goto yy546; + goto yy511; case 'U': case 'u': - goto yy547; + goto yy512; default: - goto yy525; + goto yy497; } - yy533: + yy497: + p = marker; + goto yy494; + yy498: yych = *++p; if (yych <= '>') { if (yych <= ' ') { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; + goto yy530; if (yych <= 0x1F) - goto yy525; - goto yy565; + goto yy497; + goto yy530; } else { if (yych == '/') - goto yy567; + goto yy532; if (yych <= '=') - goto yy525; - goto yy565; + goto yy497; + goto yy530; } } else { if (yych <= 'R') { if (yych == 'A') - goto yy730; + goto yy695; if (yych <= 'Q') - goto yy525; - goto yy729; + goto yy497; + goto yy694; } else { if (yych <= 'a') { if (yych <= '`') - goto yy525; - goto yy730; + goto yy497; + goto yy695; } else { if (yych == 'r') - goto yy729; - goto yy525; + goto yy694; + goto yy497; } } } - yy534: + yy499: yych = *++p; if (yych <= 'S') { if (yych <= 'D') { if (yych <= 'C') - goto yy525; - goto yy718; + goto yy497; + goto yy683; } else { if (yych <= 'Q') - goto yy525; + goto yy497; if (yych <= 'R') - goto yy717; - goto yy716; + goto yy682; + goto yy681; } } else { if (yych <= 'q') { if (yych == 'd') - goto yy718; - goto yy525; + goto yy683; + goto yy497; } else { if (yych <= 'r') - goto yy717; + goto yy682; if (yych <= 's') - goto yy716; - goto yy525; + goto yy681; + goto yy497; } } - yy535: + yy500: yych = *++p; if (yych <= 'O') { if (yych <= 'K') { if (yych == 'A') - goto yy702; - goto yy525; + goto yy667; + goto yy497; } else { if (yych <= 'L') - goto yy701; + goto yy666; if (yych <= 'N') - goto yy525; - goto yy700; + goto yy497; + goto yy665; } } else { if (yych <= 'k') { if (yych == 'a') - goto yy702; - goto yy525; + goto yy667; + goto yy497; } else { if (yych <= 'l') - goto yy701; + goto yy666; if (yych == 'o') - goto yy700; - goto yy525; + goto yy665; + goto yy497; } } - yy536: + yy501: yych = *++p; if (yych <= 'O') { if (yych <= 'D') { if (yych == 'A') - goto yy687; - goto yy525; + goto yy652; + goto yy497; } else { if (yych <= 'E') - goto yy686; + goto yy651; if (yych <= 'N') - goto yy525; - goto yy685; + goto yy497; + goto yy650; } } else { if (yych <= 'd') { if (yych == 'a') - goto yy687; - goto yy525; + goto yy652; + goto yy497; } else { if (yych <= 'e') - goto yy686; + goto yy651; if (yych == 'o') - goto yy685; - goto yy525; + goto yy650; + goto yy497; } } - yy537: + yy502: yych = *++p; switch (yych) { case 'D': @@ -10541,1662 +10005,1664 @@ bufsize_t _scan_html_block_start(const unsigned char *p) { case 'd': case 'l': case 't': - goto yy564; + goto yy529; case 'E': case 'e': - goto yy677; + goto yy642; case 'I': case 'i': - goto yy676; + goto yy641; default: - goto yy525; + goto yy497; } - yy538: + yy503: yych = *++p; if (yych <= 'R') { if (yych <= 'N') { if (yych == 'I') - goto yy652; - goto yy525; + goto yy617; + goto yy497; } else { if (yych <= 'O') - goto yy651; + goto yy616; if (yych <= 'Q') - goto yy525; - goto yy650; + goto yy497; + goto yy615; } } else { if (yych <= 'n') { if (yych == 'i') - goto yy652; - goto yy525; + goto yy617; + goto yy497; } else { if (yych <= 'o') - goto yy651; + goto yy616; if (yych == 'r') - goto yy650; - goto yy525; + goto yy615; + goto yy497; } } - yy539: + yy504: yych = *++p; if (yych <= 'S') { if (yych <= 'D') { - if (yych == '1') - goto yy564; - goto yy525; + if (yych <= '0') + goto yy497; + if (yych <= '6') + goto yy529; + goto yy497; } else { if (yych <= 'E') - goto yy645; + goto yy610; if (yych == 'R') - goto yy564; - goto yy525; + goto yy529; + goto yy497; } } else { if (yych <= 'q') { if (yych <= 'T') - goto yy644; + goto yy609; if (yych == 'e') - goto yy645; - goto yy525; + goto yy610; + goto yy497; } else { if (yych <= 'r') - goto yy564; + goto yy529; if (yych == 't') - goto yy644; - goto yy525; + goto yy609; + goto yy497; } } - yy540: + yy505: yych = *++p; if (yych == 'F') - goto yy640; + goto yy605; if (yych == 'f') - goto yy640; - goto yy525; - yy541: + goto yy605; + goto yy497; + yy506: yych = *++p; if (yych <= 'I') { if (yych == 'E') - goto yy635; + goto yy600; if (yych <= 'H') - goto yy525; - goto yy634; + goto yy497; + goto yy599; } else { if (yych <= 'e') { if (yych <= 'd') - goto yy525; - goto yy635; + goto yy497; + goto yy600; } else { if (yych == 'i') - goto yy634; - goto yy525; + goto yy599; + goto yy497; } } - yy542: + yy507: yych = *++p; if (yych <= 'E') { if (yych == 'A') - goto yy626; + goto yy591; if (yych <= 'D') - goto yy525; - goto yy625; + goto yy497; + goto yy590; } else { if (yych <= 'a') { if (yych <= '`') - goto yy525; - goto yy626; + goto yy497; + goto yy591; } else { if (yych == 'e') - goto yy625; - goto yy525; + goto yy590; + goto yy497; } } - yy543: + yy508: yych = *++p; if (yych <= 'O') { if (yych == 'A') - goto yy619; + goto yy584; if (yych <= 'N') - goto yy525; - goto yy618; + goto yy497; + goto yy583; } else { if (yych <= 'a') { if (yych <= '`') - goto yy525; - goto yy619; + goto yy497; + goto yy584; } else { if (yych == 'o') - goto yy618; - goto yy525; + goto yy583; + goto yy497; } } - yy544: + yy509: yych = *++p; if (yych <= 'P') { if (yych == 'L') - goto yy564; + goto yy529; if (yych <= 'O') - goto yy525; - goto yy610; + goto yy497; + goto yy575; } else { if (yych <= 'l') { if (yych <= 'k') - goto yy525; - goto yy564; + goto yy497; + goto yy529; } else { if (yych == 'p') - goto yy610; - goto yy525; + goto yy575; + goto yy497; } } - yy545: + yy510: yych = *++p; switch (yych) { case 'C': case 'c': - goto yy587; + goto yy552; case 'E': case 'e': - goto yy590; + goto yy555; case 'O': case 'o': - goto yy589; + goto yy554; case 'T': case 't': - goto yy586; + goto yy551; case 'U': case 'u': - goto yy588; + goto yy553; default: - goto yy525; + goto yy497; } - yy546: + yy511: yych = *++p; switch (yych) { case 'A': case 'a': - goto yy573; + goto yy538; case 'B': case 'b': - goto yy572; + goto yy537; case 'D': case 'd': - goto yy564; + goto yy529; case 'F': case 'f': - goto yy571; + goto yy536; case 'H': case 'h': - goto yy570; + goto yy535; case 'I': case 'i': - goto yy569; + goto yy534; case 'R': case 'r': - goto yy568; + goto yy533; default: - goto yy525; + goto yy497; } - yy547: + yy512: yych = *++p; if (yych == 'L') - goto yy564; + goto yy529; if (yych == 'l') - goto yy564; - goto yy525; - yy548: + goto yy529; + goto yy497; + yy513: yych = *++p; if (yych <= '@') { if (yych == '-') - goto yy551; - goto yy525; + goto yy516; + goto yy497; } else { if (yych <= 'Z') - goto yy552; + goto yy517; if (yych <= '[') - goto yy554; - goto yy525; + goto yy519; + goto yy497; } - yy549: + yy514: ++p; { return 3; } - yy551: + yy516: yych = *++p; if (yych == '-') - goto yy562; - goto yy525; - yy552: + goto yy527; + goto yy497; + yy517: ++p; { return 4; } - yy554: + yy519: yych = *++p; if (yych == 'C') - goto yy555; + goto yy520; if (yych != 'c') - goto yy525; - yy555: + goto yy497; + yy520: yych = *++p; if (yych == 'D') - goto yy556; + goto yy521; if (yych != 'd') - goto yy525; - yy556: + goto yy497; + yy521: yych = *++p; if (yych == 'A') - goto yy557; + goto yy522; if (yych != 'a') - goto yy525; - yy557: + goto yy497; + yy522: yych = *++p; if (yych == 'T') - goto yy558; + goto yy523; if (yych != 't') - goto yy525; - yy558: + goto yy497; + yy523: yych = *++p; if (yych == 'A') - goto yy559; + goto yy524; if (yych != 'a') - goto yy525; - yy559: + goto yy497; + yy524: yych = *++p; if (yych != '[') - goto yy525; + goto yy497; ++p; { return 5; } - yy562: + yy527: ++p; { return 2; } - yy564: + yy529: yych = *++p; if (yych <= ' ') { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; + goto yy530; if (yych <= 0x1F) - goto yy525; + goto yy497; } else { if (yych <= '/') { if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } else { if (yych != '>') - goto yy525; + goto yy497; } } - yy565: + yy530: ++p; { return 6; } - yy567: + yy532: yych = *++p; if (yych == '>') - goto yy565; - goto yy525; - yy568: + goto yy530; + goto yy497; + yy533: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= ' ') - goto yy565; + goto yy530; if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } } else { if (yych <= '@') { if (yych == '>') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= 'A') - goto yy584; + goto yy549; if (yych == 'a') - goto yy584; - goto yy525; + goto yy549; + goto yy497; } } - yy569: + yy534: yych = *++p; if (yych == 'T') - goto yy582; + goto yy547; if (yych == 't') - goto yy582; - goto yy525; - yy570: + goto yy547; + goto yy497; + yy535: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= ' ') - goto yy565; + goto yy530; if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } } else { if (yych <= 'D') { if (yych == '>') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= 'E') - goto yy580; + goto yy545; if (yych == 'e') - goto yy580; - goto yy525; + goto yy545; + goto yy497; } } - yy571: + yy536: yych = *++p; if (yych == 'O') - goto yy578; + goto yy543; if (yych == 'o') - goto yy578; - goto yy525; - yy572: + goto yy543; + goto yy497; + yy537: yych = *++p; if (yych == 'O') - goto yy576; + goto yy541; if (yych == 'o') - goto yy576; - goto yy525; - yy573: + goto yy541; + goto yy497; + yy538: yych = *++p; if (yych == 'B') - goto yy574; + goto yy539; if (yych != 'b') - goto yy525; - yy574: + goto yy497; + yy539: yych = *++p; if (yych == 'L') - goto yy575; + goto yy540; if (yych != 'l') - goto yy525; - yy575: + goto yy497; + yy540: yych = *++p; if (yych == 'E') - goto yy564; + goto yy529; if (yych == 'e') - goto yy564; - goto yy525; - yy576: + goto yy529; + goto yy497; + yy541: yych = *++p; if (yych == 'D') - goto yy577; + goto yy542; if (yych != 'd') - goto yy525; - yy577: + goto yy497; + yy542: yych = *++p; if (yych == 'Y') - goto yy564; + goto yy529; if (yych == 'y') - goto yy564; - goto yy525; - yy578: + goto yy529; + goto yy497; + yy543: yych = *++p; if (yych == 'O') - goto yy579; + goto yy544; if (yych != 'o') - goto yy525; - yy579: + goto yy497; + yy544: yych = *++p; if (yych == 'T') - goto yy564; + goto yy529; if (yych == 't') - goto yy564; - goto yy525; - yy580: + goto yy529; + goto yy497; + yy545: yych = *++p; if (yych == 'A') - goto yy581; + goto yy546; if (yych != 'a') - goto yy525; - yy581: + goto yy497; + yy546: yych = *++p; if (yych == 'D') - goto yy564; + goto yy529; if (yych == 'd') - goto yy564; - goto yy525; - yy582: + goto yy529; + goto yy497; + yy547: yych = *++p; if (yych == 'L') - goto yy583; + goto yy548; if (yych != 'l') - goto yy525; - yy583: + goto yy497; + yy548: yych = *++p; if (yych == 'E') - goto yy564; + goto yy529; if (yych == 'e') - goto yy564; - goto yy525; - yy584: + goto yy529; + goto yy497; + yy549: yych = *++p; if (yych == 'C') - goto yy585; + goto yy550; if (yych != 'c') - goto yy525; - yy585: + goto yy497; + yy550: yych = *++p; if (yych == 'K') - goto yy564; + goto yy529; if (yych == 'k') - goto yy564; - goto yy525; - yy586: + goto yy529; + goto yy497; + yy551: yych = *++p; if (yych == 'Y') - goto yy608; + goto yy573; if (yych == 'y') - goto yy608; - goto yy525; - yy587: + goto yy573; + goto yy497; + yy552: yych = *++p; if (yych == 'R') - goto yy602; + goto yy567; if (yych == 'r') - goto yy602; - goto yy525; - yy588: + goto yy567; + goto yy497; + yy553: yych = *++p; if (yych == 'M') - goto yy598; + goto yy563; if (yych == 'm') - goto yy598; - goto yy525; - yy589: + goto yy563; + goto yy497; + yy554: yych = *++p; if (yych == 'U') - goto yy595; + goto yy560; if (yych == 'u') - goto yy595; - goto yy525; - yy590: + goto yy560; + goto yy497; + yy555: yych = *++p; if (yych == 'C') - goto yy591; + goto yy556; if (yych != 'c') - goto yy525; - yy591: + goto yy497; + yy556: yych = *++p; if (yych == 'T') - goto yy592; + goto yy557; if (yych != 't') - goto yy525; - yy592: + goto yy497; + yy557: yych = *++p; if (yych == 'I') - goto yy593; + goto yy558; if (yych != 'i') - goto yy525; - yy593: + goto yy497; + yy558: yych = *++p; if (yych == 'O') - goto yy594; + goto yy559; if (yych != 'o') - goto yy525; - yy594: + goto yy497; + yy559: yych = *++p; if (yych == 'N') - goto yy564; + goto yy529; if (yych == 'n') - goto yy564; - goto yy525; - yy595: + goto yy529; + goto yy497; + yy560: yych = *++p; if (yych == 'R') - goto yy596; + goto yy561; if (yych != 'r') - goto yy525; - yy596: + goto yy497; + yy561: yych = *++p; if (yych == 'C') - goto yy597; + goto yy562; if (yych != 'c') - goto yy525; - yy597: + goto yy497; + yy562: yych = *++p; if (yych == 'E') - goto yy564; + goto yy529; if (yych == 'e') - goto yy564; - goto yy525; - yy598: + goto yy529; + goto yy497; + yy563: yych = *++p; if (yych == 'M') - goto yy599; + goto yy564; if (yych != 'm') - goto yy525; - yy599: + goto yy497; + yy564: yych = *++p; if (yych == 'A') - goto yy600; + goto yy565; if (yych != 'a') - goto yy525; - yy600: + goto yy497; + yy565: yych = *++p; if (yych == 'R') - goto yy601; + goto yy566; if (yych != 'r') - goto yy525; - yy601: + goto yy497; + yy566: yych = *++p; if (yych == 'Y') - goto yy564; + goto yy529; if (yych == 'y') - goto yy564; - goto yy525; - yy602: + goto yy529; + goto yy497; + yy567: yych = *++p; if (yych == 'I') - goto yy603; + goto yy568; if (yych != 'i') - goto yy525; - yy603: + goto yy497; + yy568: yych = *++p; if (yych == 'P') - goto yy604; + goto yy569; if (yych != 'p') - goto yy525; - yy604: + goto yy497; + yy569: yych = *++p; if (yych == 'T') - goto yy605; + goto yy570; if (yych != 't') - goto yy525; - yy605: + goto yy497; + yy570: yych = *++p; if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych >= 0x0E) - goto yy525; + goto yy497; } else { if (yych <= ' ') - goto yy606; + goto yy571; if (yych != '>') - goto yy525; + goto yy497; } - yy606: + yy571: ++p; { return 1; } - yy608: + yy573: yych = *++p; if (yych == 'L') - goto yy609; + goto yy574; if (yych != 'l') - goto yy525; - yy609: + goto yy497; + yy574: yych = *++p; if (yych == 'E') - goto yy605; + goto yy570; if (yych == 'e') - goto yy605; - goto yy525; - yy610: + goto yy570; + goto yy497; + yy575: yych = *++p; if (yych == 'T') - goto yy611; + goto yy576; if (yych != 't') - goto yy525; - yy611: + goto yy497; + yy576: yych = *++p; if (yych <= 'I') { if (yych == 'G') - goto yy613; + goto yy578; if (yych <= 'H') - goto yy525; + goto yy497; } else { if (yych <= 'g') { if (yych <= 'f') - goto yy525; - goto yy613; + goto yy497; + goto yy578; } else { if (yych != 'i') - goto yy525; + goto yy497; } } yych = *++p; if (yych == 'O') - goto yy617; + goto yy582; if (yych == 'o') - goto yy617; - goto yy525; - yy613: + goto yy582; + goto yy497; + yy578: yych = *++p; if (yych == 'R') - goto yy614; + goto yy579; if (yych != 'r') - goto yy525; - yy614: + goto yy497; + yy579: yych = *++p; if (yych == 'O') - goto yy615; + goto yy580; if (yych != 'o') - goto yy525; - yy615: + goto yy497; + yy580: yych = *++p; if (yych == 'U') - goto yy616; + goto yy581; if (yych != 'u') - goto yy525; - yy616: + goto yy497; + yy581: yych = *++p; if (yych == 'P') - goto yy564; + goto yy529; if (yych == 'p') - goto yy564; - goto yy525; - yy617: + goto yy529; + goto yy497; + yy582: yych = *++p; if (yych == 'N') - goto yy564; + goto yy529; if (yych == 'n') - goto yy564; - goto yy525; - yy618: + goto yy529; + goto yy497; + yy583: yych = *++p; if (yych == 'F') - goto yy620; + goto yy585; if (yych == 'f') - goto yy620; - goto yy525; - yy619: + goto yy585; + goto yy497; + yy584: yych = *++p; if (yych == 'V') - goto yy564; + goto yy529; if (yych == 'v') - goto yy564; - goto yy525; - yy620: + goto yy529; + goto yy497; + yy585: yych = *++p; if (yych == 'R') - goto yy621; + goto yy586; if (yych != 'r') - goto yy525; - yy621: + goto yy497; + yy586: yych = *++p; if (yych == 'A') - goto yy622; + goto yy587; if (yych != 'a') - goto yy525; - yy622: + goto yy497; + yy587: yych = *++p; if (yych == 'M') - goto yy623; + goto yy588; if (yych != 'm') - goto yy525; - yy623: + goto yy497; + yy588: yych = *++p; if (yych == 'E') - goto yy624; + goto yy589; if (yych != 'e') - goto yy525; - yy624: + goto yy497; + yy589: yych = *++p; if (yych == 'S') - goto yy564; + goto yy529; if (yych == 's') - goto yy564; - goto yy525; - yy625: + goto yy529; + goto yy497; + yy590: yych = *++p; if (yych <= 'T') { if (yych == 'N') - goto yy628; + goto yy593; if (yych <= 'S') - goto yy525; - goto yy629; + goto yy497; + goto yy594; } else { if (yych <= 'n') { if (yych <= 'm') - goto yy525; - goto yy628; + goto yy497; + goto yy593; } else { if (yych == 't') - goto yy629; - goto yy525; + goto yy594; + goto yy497; } } - yy626: + yy591: yych = *++p; if (yych == 'I') - goto yy627; + goto yy592; if (yych != 'i') - goto yy525; - yy627: + goto yy497; + yy592: yych = *++p; if (yych == 'N') - goto yy564; + goto yy529; if (yych == 'n') - goto yy564; - goto yy525; - yy628: + goto yy529; + goto yy497; + yy593: yych = *++p; if (yych == 'U') - goto yy630; + goto yy595; if (yych == 'u') - goto yy630; - goto yy525; - yy629: + goto yy595; + goto yy497; + yy594: yych = *++p; if (yych == 'A') - goto yy564; + goto yy529; if (yych == 'a') - goto yy564; - goto yy525; - yy630: + goto yy529; + goto yy497; + yy595: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= ' ') - goto yy565; + goto yy530; if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } } else { if (yych <= 'H') { if (yych == '>') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= 'I') - goto yy631; + goto yy596; if (yych != 'i') - goto yy525; + goto yy497; } } - yy631: + yy596: yych = *++p; if (yych == 'T') - goto yy632; + goto yy597; if (yych != 't') - goto yy525; - yy632: + goto yy497; + yy597: yych = *++p; if (yych == 'E') - goto yy633; + goto yy598; if (yych != 'e') - goto yy525; - yy633: + goto yy497; + yy598: yych = *++p; if (yych == 'M') - goto yy564; + goto yy529; if (yych == 'm') - goto yy564; - goto yy525; - yy634: + goto yy529; + goto yy497; + yy599: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= ' ') - goto yy565; + goto yy530; if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } } else { if (yych <= 'M') { if (yych == '>') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= 'N') - goto yy639; + goto yy604; if (yych == 'n') - goto yy639; - goto yy525; + goto yy604; + goto yy497; } } - yy635: + yy600: yych = *++p; if (yych == 'G') - goto yy636; + goto yy601; if (yych != 'g') - goto yy525; - yy636: + goto yy497; + yy601: yych = *++p; if (yych == 'E') - goto yy637; + goto yy602; if (yych != 'e') - goto yy525; - yy637: + goto yy497; + yy602: yych = *++p; if (yych == 'N') - goto yy638; + goto yy603; if (yych != 'n') - goto yy525; - yy638: + goto yy497; + yy603: yych = *++p; if (yych == 'D') - goto yy564; + goto yy529; if (yych == 'd') - goto yy564; - goto yy525; - yy639: + goto yy529; + goto yy497; + yy604: yych = *++p; if (yych == 'K') - goto yy564; + goto yy529; if (yych == 'k') - goto yy564; - goto yy525; - yy640: + goto yy529; + goto yy497; + yy605: yych = *++p; if (yych == 'R') - goto yy641; + goto yy606; if (yych != 'r') - goto yy525; - yy641: + goto yy497; + yy606: yych = *++p; if (yych == 'A') - goto yy642; + goto yy607; if (yych != 'a') - goto yy525; - yy642: + goto yy497; + yy607: yych = *++p; if (yych == 'M') - goto yy643; + goto yy608; if (yych != 'm') - goto yy525; - yy643: + goto yy497; + yy608: yych = *++p; if (yych == 'E') - goto yy564; + goto yy529; if (yych == 'e') - goto yy564; - goto yy525; - yy644: + goto yy529; + goto yy497; + yy609: yych = *++p; if (yych == 'M') - goto yy649; + goto yy614; if (yych == 'm') - goto yy649; - goto yy525; - yy645: + goto yy614; + goto yy497; + yy610: yych = *++p; if (yych == 'A') - goto yy646; + goto yy611; if (yych != 'a') - goto yy525; - yy646: + goto yy497; + yy611: yych = *++p; if (yych == 'D') - goto yy647; + goto yy612; if (yych != 'd') - goto yy525; - yy647: + goto yy497; + yy612: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= ' ') - goto yy565; + goto yy530; if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } } else { if (yych <= 'D') { if (yych == '>') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= 'E') - goto yy648; + goto yy613; if (yych != 'e') - goto yy525; + goto yy497; } } - yy648: + yy613: yych = *++p; if (yych == 'R') - goto yy564; + goto yy529; if (yych == 'r') - goto yy564; - goto yy525; - yy649: + goto yy529; + goto yy497; + yy614: yych = *++p; if (yych == 'L') - goto yy564; + goto yy529; if (yych == 'l') - goto yy564; - goto yy525; - yy650: + goto yy529; + goto yy497; + yy615: yych = *++p; if (yych == 'A') - goto yy671; + goto yy636; if (yych == 'a') - goto yy671; - goto yy525; - yy651: + goto yy636; + goto yy497; + yy616: yych = *++p; if (yych <= 'R') { if (yych == 'O') - goto yy667; + goto yy632; if (yych <= 'Q') - goto yy525; - goto yy668; + goto yy497; + goto yy633; } else { if (yych <= 'o') { if (yych <= 'n') - goto yy525; - goto yy667; + goto yy497; + goto yy632; } else { if (yych == 'r') - goto yy668; - goto yy525; + goto yy633; + goto yy497; } } - yy652: + yy617: yych = *++p; if (yych <= 'G') { if (yych == 'E') - goto yy653; + goto yy618; if (yych <= 'F') - goto yy525; - goto yy654; + goto yy497; + goto yy619; } else { if (yych <= 'e') { if (yych <= 'd') - goto yy525; + goto yy497; } else { if (yych == 'g') - goto yy654; - goto yy525; + goto yy619; + goto yy497; } } - yy653: + yy618: yych = *++p; if (yych == 'L') - goto yy663; + goto yy628; if (yych == 'l') - goto yy663; - goto yy525; - yy654: + goto yy628; + goto yy497; + yy619: yych = *++p; if (yych <= 'U') { if (yych == 'C') - goto yy656; + goto yy621; if (yych <= 'T') - goto yy525; + goto yy497; } else { if (yych <= 'c') { if (yych <= 'b') - goto yy525; - goto yy656; + goto yy497; + goto yy621; } else { if (yych != 'u') - goto yy525; + goto yy497; } } yych = *++p; if (yych == 'R') - goto yy662; + goto yy627; if (yych == 'r') - goto yy662; - goto yy525; - yy656: + goto yy627; + goto yy497; + yy621: yych = *++p; if (yych == 'A') - goto yy657; + goto yy622; if (yych != 'a') - goto yy525; - yy657: + goto yy497; + yy622: yych = *++p; if (yych == 'P') - goto yy658; + goto yy623; if (yych != 'p') - goto yy525; - yy658: + goto yy497; + yy623: yych = *++p; if (yych == 'T') - goto yy659; + goto yy624; if (yych != 't') - goto yy525; - yy659: + goto yy497; + yy624: yych = *++p; if (yych == 'I') - goto yy660; + goto yy625; if (yych != 'i') - goto yy525; - yy660: + goto yy497; + yy625: yych = *++p; if (yych == 'O') - goto yy661; + goto yy626; if (yych != 'o') - goto yy525; - yy661: + goto yy497; + yy626: yych = *++p; if (yych == 'N') - goto yy564; + goto yy529; if (yych == 'n') - goto yy564; - goto yy525; - yy662: + goto yy529; + goto yy497; + yy627: yych = *++p; if (yych == 'E') - goto yy564; + goto yy529; if (yych == 'e') - goto yy564; - goto yy525; - yy663: + goto yy529; + goto yy497; + yy628: yych = *++p; if (yych == 'D') - goto yy664; + goto yy629; if (yych != 'd') - goto yy525; - yy664: + goto yy497; + yy629: yych = *++p; if (yych == 'S') - goto yy665; + goto yy630; if (yych != 's') - goto yy525; - yy665: + goto yy497; + yy630: yych = *++p; if (yych == 'E') - goto yy666; + goto yy631; if (yych != 'e') - goto yy525; - yy666: + goto yy497; + yy631: yych = *++p; if (yych == 'T') - goto yy564; + goto yy529; if (yych == 't') - goto yy564; - goto yy525; - yy667: + goto yy529; + goto yy497; + yy632: yych = *++p; if (yych == 'T') - goto yy669; + goto yy634; if (yych == 't') - goto yy669; - goto yy525; - yy668: + goto yy634; + goto yy497; + yy633: yych = *++p; if (yych == 'M') - goto yy564; + goto yy529; if (yych == 'm') - goto yy564; - goto yy525; - yy669: + goto yy529; + goto yy497; + yy634: yych = *++p; if (yych == 'E') - goto yy670; + goto yy635; if (yych != 'e') - goto yy525; - yy670: + goto yy497; + yy635: yych = *++p; if (yych == 'R') - goto yy564; + goto yy529; if (yych == 'r') - goto yy564; - goto yy525; - yy671: + goto yy529; + goto yy497; + yy636: yych = *++p; if (yych == 'M') - goto yy672; + goto yy637; if (yych != 'm') - goto yy525; - yy672: + goto yy497; + yy637: yych = *++p; if (yych == 'E') - goto yy673; + goto yy638; if (yych != 'e') - goto yy525; - yy673: + goto yy497; + yy638: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= ' ') - goto yy565; + goto yy530; if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } } else { if (yych <= 'R') { if (yych == '>') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= 'S') - goto yy674; + goto yy639; if (yych != 's') - goto yy525; + goto yy497; } } - yy674: + yy639: yych = *++p; if (yych == 'E') - goto yy675; + goto yy640; if (yych != 'e') - goto yy525; - yy675: + goto yy497; + yy640: yych = *++p; if (yych == 'T') - goto yy564; + goto yy529; if (yych == 't') - goto yy564; - goto yy525; - yy676: + goto yy529; + goto yy497; + yy641: yych = *++p; if (yych <= 'V') { if (yych <= 'Q') { if (yych == 'A') - goto yy682; - goto yy525; + goto yy647; + goto yy497; } else { if (yych <= 'R') - goto yy564; + goto yy529; if (yych <= 'U') - goto yy525; - goto yy564; + goto yy497; + goto yy529; } } else { if (yych <= 'q') { if (yych == 'a') - goto yy682; - goto yy525; + goto yy647; + goto yy497; } else { if (yych <= 'r') - goto yy564; + goto yy529; if (yych == 'v') - goto yy564; - goto yy525; + goto yy529; + goto yy497; } } - yy677: + yy642: yych = *++p; if (yych == 'T') - goto yy678; + goto yy643; if (yych != 't') - goto yy525; - yy678: + goto yy497; + yy643: yych = *++p; if (yych == 'A') - goto yy679; + goto yy644; if (yych != 'a') - goto yy525; - yy679: + goto yy497; + yy644: yych = *++p; if (yych == 'I') - goto yy680; + goto yy645; if (yych != 'i') - goto yy525; - yy680: + goto yy497; + yy645: yych = *++p; if (yych == 'L') - goto yy681; + goto yy646; if (yych != 'l') - goto yy525; - yy681: + goto yy497; + yy646: yych = *++p; if (yych == 'S') - goto yy564; + goto yy529; if (yych == 's') - goto yy564; - goto yy525; - yy682: + goto yy529; + goto yy497; + yy647: yych = *++p; if (yych == 'L') - goto yy683; + goto yy648; if (yych != 'l') - goto yy525; - yy683: + goto yy497; + yy648: yych = *++p; if (yych == 'O') - goto yy684; + goto yy649; if (yych != 'o') - goto yy525; - yy684: + goto yy497; + yy649: yych = *++p; if (yych == 'G') - goto yy564; + goto yy529; if (yych == 'g') - goto yy564; - goto yy525; - yy685: + goto yy529; + goto yy497; + yy650: yych = *++p; if (yych == 'L') - goto yy695; + goto yy660; if (yych == 'l') - goto yy695; - goto yy525; - yy686: + goto yy660; + goto yy497; + yy651: yych = *++p; if (yych == 'N') - goto yy692; + goto yy657; if (yych == 'n') - goto yy692; - goto yy525; - yy687: + goto yy657; + goto yy497; + yy652: yych = *++p; if (yych == 'P') - goto yy688; + goto yy653; if (yych != 'p') - goto yy525; - yy688: + goto yy497; + yy653: yych = *++p; if (yych == 'T') - goto yy689; + goto yy654; if (yych != 't') - goto yy525; - yy689: + goto yy497; + yy654: yych = *++p; if (yych == 'I') - goto yy690; + goto yy655; if (yych != 'i') - goto yy525; - yy690: + goto yy497; + yy655: yych = *++p; if (yych == 'O') - goto yy691; + goto yy656; if (yych != 'o') - goto yy525; - yy691: + goto yy497; + yy656: yych = *++p; if (yych == 'N') - goto yy564; + goto yy529; if (yych == 'n') - goto yy564; - goto yy525; - yy692: + goto yy529; + goto yy497; + yy657: yych = *++p; if (yych == 'T') - goto yy693; + goto yy658; if (yych != 't') - goto yy525; - yy693: + goto yy497; + yy658: yych = *++p; if (yych == 'E') - goto yy694; + goto yy659; if (yych != 'e') - goto yy525; - yy694: + goto yy497; + yy659: yych = *++p; if (yych == 'R') - goto yy564; + goto yy529; if (yych == 'r') - goto yy564; - goto yy525; - yy695: + goto yy529; + goto yy497; + yy660: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= ' ') - goto yy565; + goto yy530; if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } } else { if (yych <= 'F') { if (yych == '>') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= 'G') - goto yy696; + goto yy661; if (yych != 'g') - goto yy525; + goto yy497; } } - yy696: + yy661: yych = *++p; if (yych == 'R') - goto yy697; + goto yy662; if (yych != 'r') - goto yy525; - yy697: + goto yy497; + yy662: yych = *++p; if (yych == 'O') - goto yy698; + goto yy663; if (yych != 'o') - goto yy525; - yy698: + goto yy497; + yy663: yych = *++p; if (yych == 'U') - goto yy699; + goto yy664; if (yych != 'u') - goto yy525; - yy699: + goto yy497; + yy664: yych = *++p; if (yych == 'P') - goto yy564; + goto yy529; if (yych == 'p') - goto yy564; - goto yy525; - yy700: + goto yy529; + goto yy497; + yy665: yych = *++p; if (yych == 'D') - goto yy715; + goto yy680; if (yych == 'd') - goto yy715; - goto yy525; - yy701: + goto yy680; + goto yy497; + yy666: yych = *++p; if (yych == 'O') - goto yy708; + goto yy673; if (yych == 'o') - goto yy708; - goto yy525; - yy702: + goto yy673; + goto yy497; + yy667: yych = *++p; if (yych == 'S') - goto yy703; + goto yy668; if (yych != 's') - goto yy525; - yy703: + goto yy497; + yy668: yych = *++p; if (yych == 'E') - goto yy704; + goto yy669; if (yych != 'e') - goto yy525; - yy704: + goto yy497; + yy669: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= ' ') - goto yy565; + goto yy530; if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } } else { if (yych <= 'E') { if (yych == '>') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= 'F') - goto yy705; + goto yy670; if (yych != 'f') - goto yy525; + goto yy497; } } - yy705: + yy670: yych = *++p; if (yych == 'O') - goto yy706; + goto yy671; if (yych != 'o') - goto yy525; - yy706: + goto yy497; + yy671: yych = *++p; if (yych == 'N') - goto yy707; + goto yy672; if (yych != 'n') - goto yy525; - yy707: + goto yy497; + yy672: yych = *++p; if (yych == 'T') - goto yy564; + goto yy529; if (yych == 't') - goto yy564; - goto yy525; - yy708: + goto yy529; + goto yy497; + yy673: yych = *++p; if (yych == 'C') - goto yy709; + goto yy674; if (yych != 'c') - goto yy525; - yy709: + goto yy497; + yy674: yych = *++p; if (yych == 'K') - goto yy710; + goto yy675; if (yych != 'k') - goto yy525; - yy710: + goto yy497; + yy675: yych = *++p; if (yych == 'Q') - goto yy711; + goto yy676; if (yych != 'q') - goto yy525; - yy711: + goto yy497; + yy676: yych = *++p; if (yych == 'U') - goto yy712; + goto yy677; if (yych != 'u') - goto yy525; - yy712: + goto yy497; + yy677: yych = *++p; if (yych == 'O') - goto yy713; + goto yy678; if (yych != 'o') - goto yy525; - yy713: + goto yy497; + yy678: yych = *++p; if (yych == 'T') - goto yy714; + goto yy679; if (yych != 't') - goto yy525; - yy714: + goto yy497; + yy679: yych = *++p; if (yych == 'E') - goto yy564; + goto yy529; if (yych == 'e') - goto yy564; - goto yy525; - yy715: + goto yy529; + goto yy497; + yy680: yych = *++p; if (yych == 'Y') - goto yy564; + goto yy529; if (yych == 'y') - goto yy564; - goto yy525; - yy716: + goto yy529; + goto yy497; + yy681: yych = *++p; if (yych == 'I') - goto yy727; + goto yy692; if (yych == 'i') - goto yy727; - goto yy525; - yy717: + goto yy692; + goto yy497; + yy682: yych = *++p; if (yych == 'T') - goto yy723; + goto yy688; if (yych == 't') - goto yy723; - goto yy525; - yy718: + goto yy688; + goto yy497; + yy683: yych = *++p; if (yych == 'D') - goto yy719; + goto yy684; if (yych != 'd') - goto yy525; - yy719: + goto yy497; + yy684: yych = *++p; if (yych == 'R') - goto yy720; + goto yy685; if (yych != 'r') - goto yy525; - yy720: + goto yy497; + yy685: yych = *++p; if (yych == 'E') - goto yy721; + goto yy686; if (yych != 'e') - goto yy525; - yy721: + goto yy497; + yy686: yych = *++p; if (yych == 'S') - goto yy722; + goto yy687; if (yych != 's') - goto yy525; - yy722: + goto yy497; + yy687: yych = *++p; if (yych == 'S') - goto yy564; + goto yy529; if (yych == 's') - goto yy564; - goto yy525; - yy723: + goto yy529; + goto yy497; + yy688: yych = *++p; if (yych == 'I') - goto yy724; + goto yy689; if (yych != 'i') - goto yy525; - yy724: + goto yy497; + yy689: yych = *++p; if (yych == 'C') - goto yy725; + goto yy690; if (yych != 'c') - goto yy525; - yy725: + goto yy497; + yy690: yych = *++p; if (yych == 'L') - goto yy726; + goto yy691; if (yych != 'l') - goto yy525; - yy726: + goto yy497; + yy691: yych = *++p; if (yych == 'E') - goto yy564; + goto yy529; if (yych == 'e') - goto yy564; - goto yy525; - yy727: + goto yy529; + goto yy497; + yy692: yych = *++p; if (yych == 'D') - goto yy728; + goto yy693; if (yych != 'd') - goto yy525; - yy728: + goto yy497; + yy693: yych = *++p; if (yych == 'E') - goto yy564; + goto yy529; if (yych == 'e') - goto yy564; - goto yy525; - yy729: + goto yy529; + goto yy497; + yy694: yych = *++p; if (yych == 'E') - goto yy605; + goto yy570; if (yych == 'e') - goto yy605; - goto yy525; - yy730: + goto yy570; + goto yy497; + yy695: yych = *++p; if (yych == 'R') - goto yy731; + goto yy696; if (yych != 'r') - goto yy525; - yy731: + goto yy497; + yy696: yych = *++p; if (yych == 'A') - goto yy732; + goto yy697; if (yych != 'a') - goto yy525; - yy732: + goto yy497; + yy697: yych = *++p; if (yych == 'M') - goto yy564; + goto yy529; if (yych == 'm') - goto yy564; - goto yy525; - yy733: + goto yy529; + goto yy497; + yy698: yych = *++p; if (yych <= '/') { if (yych <= 0x1F) { if (yych <= 0x08) - goto yy525; + goto yy497; if (yych <= '\r') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= ' ') - goto yy565; + goto yy530; if (yych <= '.') - goto yy525; - goto yy567; + goto yy497; + goto yy532; } } else { if (yych <= '@') { if (yych == '>') - goto yy565; - goto yy525; + goto yy530; + goto yy497; } else { if (yych <= 'A') - goto yy730; + goto yy695; if (yych == 'a') - goto yy730; - goto yy525; + goto yy695; + goto yy497; } } - yy734: + yy699: ++p; if ((yych = *p) <= 'U') { if (yych <= 'N') { if (yych == 'E') - goto yy590; - goto yy525; + goto yy555; + goto yy497; } else { if (yych <= 'O') - goto yy589; + goto yy554; if (yych <= 'T') - goto yy525; - goto yy588; + goto yy497; + goto yy553; } } else { if (yych <= 'n') { if (yych == 'e') - goto yy590; - goto yy525; + goto yy555; + goto yy497; } else { if (yych <= 'o') - goto yy589; + goto yy554; if (yych == 'u') - goto yy588; - goto yy525; + goto yy553; + goto yy497; } } } @@ -12231,817 +11697,737 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) { 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 yy739; - } else { - if (yych <= '<') - goto yy738; - if (yych <= 0x7F) - goto yy739; - if (yych >= 0xC2) - goto yy740; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy742; - if (yych == 0xED) - goto yy747; - goto yy743; - } else { - if (yych <= 0xF0) - goto yy744; - if (yych <= 0xF3) - goto yy745; - if (yych <= 0xF4) - goto yy746; - } - } - yy737 : { return 0; } - yy738: + yych = *p; + if (yych == '<') + goto yy704; + ++p; + yy703 : { return 0; } + yy704: yyaccept = 0; yych = *(marker = ++p); if (yych <= '@') { if (yych == '/') - goto yy750; - goto yy737; + goto yy708; + goto yy703; } else { if (yych <= 'Z') - goto yy748; + goto yy705; if (yych <= '`') - goto yy737; - if (yych <= 'z') - goto yy748; - goto yy737; - } - yy739: - yych = *++p; - goto yy737; - yy740: - yych = *++p; - if (yych <= 0x7F) - goto yy741; - if (yych <= 0xBF) - goto yy739; - yy741: - p = marker; - if (yyaccept == 0) { - goto yy737; - } else { - goto yy759; + goto yy703; + if (yych >= '{') + goto yy703; } - yy742: - yych = *++p; - if (yych <= 0x9F) - goto yy741; - if (yych <= 0xBF) - goto yy740; - goto yy741; - yy743: - yych = *++p; - if (yych <= 0x7F) - goto yy741; - if (yych <= 0xBF) - goto yy740; - goto yy741; - yy744: - yych = *++p; - if (yych <= 0x8F) - goto yy741; - if (yych <= 0xBF) - goto yy743; - goto yy741; - yy745: - yych = *++p; - if (yych <= 0x7F) - goto yy741; - if (yych <= 0xBF) - goto yy743; - goto yy741; - yy746: - yych = *++p; - if (yych <= 0x7F) - goto yy741; - if (yych <= 0x8F) - goto yy743; - goto yy741; - yy747: - yych = *++p; - if (yych <= 0x7F) - goto yy741; - if (yych <= 0x9F) - goto yy740; - goto yy741; - yy748: + yy705: ++p; yych = *p; if (yybm[0 + yych] & 1) { - goto yy748; + goto yy705; } if (yych <= ' ') { if (yych <= 0x08) - goto yy741; + goto yy707; if (yych <= '\r') - goto yy761; - if (yych <= 0x1F) - goto yy741; - goto yy761; + goto yy719; + if (yych >= ' ') + goto yy719; } else { if (yych <= '/') { - if (yych <= '.') - goto yy741; - goto yy763; + if (yych >= '/') + goto yy721; } else { if (yych == '>') - goto yy755; - goto yy741; + goto yy713; } } - yy750: + yy707: + p = marker; + if (yyaccept == 0) { + goto yy703; + } else { + goto yy717; + } + yy708: yych = *++p; if (yych <= '@') - goto yy741; + goto yy707; if (yych <= 'Z') - goto yy751; + goto yy709; if (yych <= '`') - goto yy741; + goto yy707; if (yych >= '{') - goto yy741; - yy751: + goto yy707; + yy709: ++p; yych = *p; if (yybm[0 + yych] & 2) { - goto yy753; + goto yy711; } if (yych <= '=') { if (yych <= '-') { if (yych <= ',') - goto yy741; - goto yy751; + goto yy707; + goto yy709; } else { if (yych <= '/') - goto yy741; + goto yy707; if (yych <= '9') - goto yy751; - goto yy741; + goto yy709; + goto yy707; } } else { if (yych <= 'Z') { if (yych <= '>') - goto yy755; + goto yy713; if (yych <= '@') - goto yy741; - goto yy751; + goto yy707; + goto yy709; } else { if (yych <= '`') - goto yy741; + goto yy707; if (yych <= 'z') - goto yy751; - goto yy741; + goto yy709; + goto yy707; } } - yy753: + yy711: ++p; yych = *p; if (yybm[0 + yych] & 2) { - goto yy753; + goto yy711; } if (yych != '>') - goto yy741; - yy755: + goto yy707; + yy713: ++p; yych = *p; if (yybm[0 + yych] & 4) { - goto yy755; + goto yy713; } if (yych <= 0x08) - goto yy741; + goto yy707; if (yych <= '\n') - goto yy757; + goto yy715; if (yych <= '\v') - goto yy741; + goto yy707; if (yych <= '\r') - goto yy760; - goto yy741; - yy757: + goto yy718; + goto yy707; + yy715: yyaccept = 1; marker = ++p; yych = *p; if (yybm[0 + yych] & 4) { - goto yy755; + goto yy713; } if (yych <= 0x08) - goto yy759; + goto yy717; if (yych <= '\n') - goto yy757; + goto yy715; if (yych <= '\v') - goto yy759; + goto yy717; if (yych <= '\r') - goto yy760; - yy759 : { return 7; } - yy760: + goto yy718; + yy717 : { return 7; } + yy718: yych = *++p; - goto yy759; - yy761: + goto yy717; + yy719: ++p; yych = *p; if (yych <= ':') { if (yych <= ' ') { if (yych <= 0x08) - goto yy741; + goto yy707; if (yych <= '\r') - goto yy761; + goto yy719; if (yych <= 0x1F) - goto yy741; - goto yy761; + goto yy707; + goto yy719; } else { if (yych == '/') - goto yy763; + goto yy721; if (yych <= '9') - goto yy741; - goto yy764; + goto yy707; + goto yy722; } } else { if (yych <= 'Z') { if (yych == '>') - goto yy755; + goto yy713; if (yych <= '@') - goto yy741; - goto yy764; + goto yy707; + goto yy722; } else { if (yych <= '_') { if (yych <= '^') - goto yy741; - goto yy764; + goto yy707; + goto yy722; } else { if (yych <= '`') - goto yy741; + goto yy707; if (yych <= 'z') - goto yy764; - goto yy741; + goto yy722; + goto yy707; } } } - yy763: + yy721: yych = *++p; if (yych == '>') - goto yy755; - goto yy741; - yy764: + goto yy713; + goto yy707; + yy722: ++p; yych = *p; if (yybm[0 + yych] & 16) { - goto yy764; + goto yy722; } if (yych <= ',') { if (yych <= '\r') { if (yych <= 0x08) - goto yy741; + goto yy707; } else { if (yych != ' ') - goto yy741; + goto yy707; } } else { if (yych <= '<') { if (yych <= '/') - goto yy763; - goto yy741; + goto yy721; + goto yy707; } else { if (yych <= '=') - goto yy768; + goto yy726; if (yych <= '>') - goto yy755; - goto yy741; + goto yy713; + goto yy707; } } - yy766: + yy724: ++p; yych = *p; if (yych <= '<') { if (yych <= ' ') { if (yych <= 0x08) - goto yy741; + goto yy707; if (yych <= '\r') - goto yy766; + goto yy724; if (yych <= 0x1F) - goto yy741; - goto yy766; + goto yy707; + goto yy724; } else { if (yych <= '/') { if (yych <= '.') - goto yy741; - goto yy763; + goto yy707; + goto yy721; } else { if (yych == ':') - goto yy764; - goto yy741; + goto yy722; + goto yy707; } } } else { if (yych <= 'Z') { if (yych <= '=') - goto yy768; + goto yy726; if (yych <= '>') - goto yy755; + goto yy713; if (yych <= '@') - goto yy741; - goto yy764; + goto yy707; + goto yy722; } else { if (yych <= '_') { if (yych <= '^') - goto yy741; - goto yy764; + goto yy707; + goto yy722; } else { if (yych <= '`') - goto yy741; + goto yy707; if (yych <= 'z') - goto yy764; - goto yy741; + goto yy722; + goto yy707; } } } - yy768: + yy726: ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy770; + goto yy728; } if (yych <= 0xE0) { if (yych <= '"') { if (yych <= 0x00) - goto yy741; + goto yy707; if (yych >= '!') - goto yy781; + goto yy739; } else { if (yych <= '\'') - goto yy779; + goto yy737; if (yych <= 0xC1) - goto yy741; + goto yy707; if (yych <= 0xDF) - goto yy772; - goto yy773; + goto yy730; + goto yy731; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy778; - goto yy774; + goto yy736; + goto yy732; } else { if (yych <= 0xF0) - goto yy775; + goto yy733; if (yych <= 0xF3) - goto yy776; + goto yy734; if (yych <= 0xF4) - goto yy777; - goto yy741; + goto yy735; + goto yy707; } } ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy770; + goto yy728; } if (yych <= 0xDF) { if (yych <= '\'') { if (yych <= 0x00) - goto yy741; + goto yy707; if (yych <= ' ') - goto yy804; + goto yy762; if (yych <= '"') - goto yy781; - goto yy779; + goto yy739; + goto yy737; } else { if (yych == '>') - goto yy755; + goto yy713; if (yych <= 0xC1) - goto yy741; - goto yy772; + goto yy707; + goto yy730; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy773; + goto yy731; if (yych == 0xED) - goto yy778; - goto yy774; + goto yy736; + goto yy732; } else { if (yych <= 0xF0) - goto yy775; + goto yy733; if (yych <= 0xF3) - goto yy776; + goto yy734; if (yych <= 0xF4) - goto yy777; - goto yy741; + goto yy735; + goto yy707; } } - yy770: + yy728: ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy770; + goto yy728; } if (yych <= 0xE0) { if (yych <= '=') { if (yych <= 0x00) - goto yy741; + goto yy707; if (yych <= ' ') - goto yy798; - goto yy741; + goto yy756; + goto yy707; } else { if (yych <= '>') - goto yy755; + goto yy713; if (yych <= 0xC1) - goto yy741; + goto yy707; if (yych >= 0xE0) - goto yy773; + goto yy731; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy778; - goto yy774; + goto yy736; + goto yy732; } else { if (yych <= 0xF0) - goto yy775; + goto yy733; if (yych <= 0xF3) - goto yy776; + goto yy734; if (yych <= 0xF4) - goto yy777; - goto yy741; + goto yy735; + goto yy707; } } - yy772: + yy730: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy770; - goto yy741; - yy773: + goto yy728; + goto yy707; + yy731: ++p; yych = *p; if (yych <= 0x9F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy772; - goto yy741; - yy774: + goto yy730; + goto yy707; + yy732: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy772; - goto yy741; - yy775: + goto yy730; + goto yy707; + yy733: ++p; yych = *p; if (yych <= 0x8F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy774; - goto yy741; - yy776: + goto yy732; + goto yy707; + yy734: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy774; - goto yy741; - yy777: + goto yy732; + goto yy707; + yy735: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0x8F) - goto yy774; - goto yy741; - yy778: + goto yy732; + goto yy707; + yy736: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0x9F) - goto yy772; - goto yy741; - yy779: + goto yy730; + goto yy707; + yy737: ++p; yych = *p; if (yybm[0 + yych] & 64) { - goto yy779; + goto yy737; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy741; + goto yy707; if (yych <= '\'') - goto yy790; - goto yy741; + goto yy748; + goto yy707; } else { if (yych <= 0xDF) - goto yy791; + goto yy749; if (yych <= 0xE0) - goto yy792; - goto yy793; + goto yy750; + goto yy751; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy797; + goto yy755; if (yych <= 0xEF) - goto yy793; - goto yy794; + goto yy751; + goto yy752; } else { if (yych <= 0xF3) - goto yy795; + goto yy753; if (yych <= 0xF4) - goto yy796; - goto yy741; + goto yy754; + goto yy707; } } - yy781: + yy739: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy781; + goto yy739; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy741; + goto yy707; if (yych <= '"') - goto yy790; - goto yy741; + goto yy748; + goto yy707; } else { if (yych <= 0xDF) - goto yy783; + goto yy741; if (yych <= 0xE0) - goto yy784; - goto yy785; + goto yy742; + goto yy743; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy789; + goto yy747; if (yych <= 0xEF) - goto yy785; - goto yy786; + goto yy743; + goto yy744; } else { if (yych <= 0xF3) - goto yy787; + goto yy745; if (yych <= 0xF4) - goto yy788; - goto yy741; + goto yy746; + goto yy707; } } - yy783: + yy741: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy781; - goto yy741; - yy784: + goto yy739; + goto yy707; + yy742: ++p; yych = *p; if (yych <= 0x9F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy783; - goto yy741; - yy785: + goto yy741; + goto yy707; + yy743: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy783; - goto yy741; - yy786: - ++p; + goto yy741; + goto yy707; + yy744: + ++p; yych = *p; if (yych <= 0x8F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy785; - goto yy741; - yy787: + goto yy743; + goto yy707; + yy745: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy785; - goto yy741; - yy788: + goto yy743; + goto yy707; + yy746: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0x8F) - goto yy785; - goto yy741; - yy789: + goto yy743; + goto yy707; + yy747: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0x9F) - goto yy783; - goto yy741; - yy790: + goto yy741; + goto yy707; + yy748: ++p; yych = *p; if (yych <= ' ') { if (yych <= 0x08) - goto yy741; + goto yy707; if (yych <= '\r') - goto yy761; + goto yy719; if (yych <= 0x1F) - goto yy741; - goto yy761; + goto yy707; + goto yy719; } else { if (yych <= '/') { if (yych <= '.') - goto yy741; - goto yy763; + goto yy707; + goto yy721; } else { if (yych == '>') - goto yy755; - goto yy741; + goto yy713; + goto yy707; } } - yy791: + yy749: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy779; - goto yy741; - yy792: + goto yy737; + goto yy707; + yy750: ++p; yych = *p; if (yych <= 0x9F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy791; - goto yy741; - yy793: + goto yy749; + goto yy707; + yy751: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy791; - goto yy741; - yy794: + goto yy749; + goto yy707; + yy752: ++p; yych = *p; if (yych <= 0x8F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy793; - goto yy741; - yy795: + goto yy751; + goto yy707; + yy753: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0xBF) - goto yy793; - goto yy741; - yy796: + goto yy751; + goto yy707; + yy754: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0x8F) - goto yy793; - goto yy741; - yy797: + goto yy751; + goto yy707; + yy755: ++p; yych = *p; if (yych <= 0x7F) - goto yy741; + goto yy707; if (yych <= 0x9F) - goto yy791; - goto yy741; - yy798: + goto yy749; + goto yy707; + yy756: ++p; yych = *p; if (yych <= '@') { if (yych <= '"') { if (yych <= '\r') { if (yych <= 0x00) - goto yy741; + goto yy707; if (yych <= 0x08) - goto yy770; - goto yy798; + goto yy728; + goto yy756; } else { if (yych == ' ') - goto yy798; + goto yy756; if (yych <= '!') - goto yy770; - goto yy741; + goto yy728; + goto yy707; } } else { if (yych <= ':') { if (yych == '\'') - goto yy741; + goto yy707; if (yych <= '9') - goto yy770; + goto yy728; } else { if (yych <= ';') - goto yy770; + goto yy728; if (yych <= '=') - goto yy741; + goto yy707; if (yych <= '>') - goto yy755; - goto yy770; + goto yy713; + goto yy728; } } } else { if (yych <= 0xDF) { if (yych <= '`') { if (yych <= 'Z') - goto yy800; + goto yy758; if (yych <= '^') - goto yy770; + goto yy728; if (yych >= '`') - goto yy741; + goto yy707; } else { if (yych <= 'z') - goto yy800; + goto yy758; if (yych <= 0x7F) - goto yy770; + goto yy728; if (yych <= 0xC1) - goto yy741; - goto yy772; + goto yy707; + goto yy730; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy773; + goto yy731; if (yych == 0xED) - goto yy778; - goto yy774; + goto yy736; + goto yy732; } else { if (yych <= 0xF0) - goto yy775; + goto yy733; if (yych <= 0xF3) - goto yy776; + goto yy734; if (yych <= 0xF4) - goto yy777; - goto yy741; + goto yy735; + goto yy707; } } } - yy800: + yy758: ++p; yych = *p; if (yych <= '>') { if (yych <= '&') { if (yych <= 0x1F) { if (yych <= 0x00) - goto yy741; + goto yy707; if (yych <= 0x08) - goto yy770; + goto yy728; if (yych >= 0x0E) - goto yy770; + goto yy728; } else { if (yych <= ' ') - goto yy802; + goto yy760; if (yych == '"') - goto yy741; - goto yy770; + goto yy707; + goto yy728; } } else { if (yych <= '/') { if (yych <= '\'') - goto yy741; + goto yy707; if (yych <= ',') - goto yy770; + goto yy728; if (yych <= '.') - goto yy800; - goto yy770; + goto yy758; + goto yy728; } else { if (yych <= ';') { if (yych <= ':') - goto yy800; - goto yy770; + goto yy758; + goto yy728; } else { if (yych <= '<') - goto yy741; + goto yy707; if (yych <= '=') - goto yy768; - goto yy755; + goto yy726; + goto yy713; } } } @@ -13049,1700 +12435,196 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) { if (yych <= 0xC1) { if (yych <= '_') { if (yych <= '@') - goto yy770; + goto yy728; if (yych <= 'Z') - goto yy800; + goto yy758; if (yych <= '^') - goto yy770; - goto yy800; + goto yy728; + goto yy758; } else { if (yych <= '`') - goto yy741; + goto yy707; if (yych <= 'z') - goto yy800; + goto yy758; if (yych <= 0x7F) - goto yy770; - goto yy741; + goto yy728; + goto yy707; } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy772; + goto yy730; if (yych <= 0xE0) - goto yy773; + goto yy731; if (yych <= 0xEC) - goto yy774; - goto yy778; + goto yy732; + goto yy736; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy774; - goto yy775; + goto yy732; + goto yy733; } else { if (yych <= 0xF3) - goto yy776; + goto yy734; if (yych <= 0xF4) - goto yy777; - goto yy741; + goto yy735; + goto yy707; } } } } - yy802: + yy760: ++p; yych = *p; if (yych <= '@') { if (yych <= '&') { if (yych <= 0x1F) { if (yych <= 0x00) - goto yy741; + goto yy707; if (yych <= 0x08) - goto yy770; + goto yy728; if (yych <= '\r') - goto yy802; - goto yy770; + goto yy760; + goto yy728; } else { if (yych <= ' ') - goto yy802; + goto yy760; if (yych == '"') - goto yy741; - goto yy770; + goto yy707; + goto yy728; } } else { if (yych <= ';') { if (yych <= '\'') - goto yy741; + goto yy707; if (yych == ':') - goto yy800; - goto yy770; + goto yy758; + goto yy728; } else { if (yych <= '<') - goto yy741; + goto yy707; if (yych <= '=') - goto yy768; + goto yy726; if (yych <= '>') - goto yy755; - goto yy770; + goto yy713; + goto yy728; } } } else { if (yych <= 0xDF) { if (yych <= '`') { if (yych <= 'Z') - goto yy800; + goto yy758; if (yych <= '^') - goto yy770; + goto yy728; if (yych <= '_') - goto yy800; - goto yy741; + goto yy758; + goto yy707; } else { if (yych <= 'z') - goto yy800; + goto yy758; if (yych <= 0x7F) - goto yy770; + goto yy728; if (yych <= 0xC1) - goto yy741; - goto yy772; + goto yy707; + goto yy730; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy773; + goto yy731; if (yych == 0xED) - goto yy778; - goto yy774; + goto yy736; + goto yy732; } else { if (yych <= 0xF0) - goto yy775; + goto yy733; if (yych <= 0xF3) - goto yy776; + goto yy734; if (yych <= 0xF4) - goto yy777; - goto yy741; + goto yy735; + goto yy707; } } } - yy804: + yy762: ++p; yych = *p; if (yych <= '@') { if (yych <= '"') { if (yych <= '\r') { if (yych <= 0x00) - goto yy741; + goto yy707; if (yych <= 0x08) - goto yy770; - goto yy804; + goto yy728; + goto yy762; } else { if (yych == ' ') - goto yy804; + goto yy762; if (yych <= '!') - goto yy770; - goto yy781; + goto yy728; + goto yy739; } } else { if (yych <= ':') { if (yych == '\'') - goto yy779; + goto yy737; if (yych <= '9') - goto yy770; - goto yy800; + goto yy728; + goto yy758; } else { if (yych <= ';') - goto yy770; + goto yy728; if (yych <= '=') - goto yy741; + goto yy707; if (yych <= '>') - goto yy755; - goto yy770; + goto yy713; + goto yy728; } } } else { if (yych <= 0xDF) { - if (yych <= '`') { - if (yych <= 'Z') - goto yy800; - if (yych <= '^') - goto yy770; - if (yych <= '_') - goto yy800; - goto yy741; - } else { - if (yych <= 'z') - goto yy800; - if (yych <= 0x7F) - goto yy770; - if (yych <= 0xC1) - goto yy741; - goto yy772; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy773; - if (yych == 0xED) - goto yy778; - goto yy774; - } else { - if (yych <= 0xF0) - goto yy775; - if (yych <= 0xF3) - goto yy776; - if (yych <= 0xF4) - goto yy777; - goto yy741; - } - } - } - } -} - -// 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[] = { - 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, 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, - 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 = *(marker = p); - if (yych <= 0xDF) { - if (yych <= ';') { - if (yych != '\n') - goto yy809; - } else { - if (yych <= '<') - goto yy810; - if (yych <= 0x7F) - goto yy809; - if (yych >= 0xC2) - goto yy811; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy813; - if (yych == 0xED) - goto yy818; - goto yy814; - } else { - if (yych <= 0xF0) - goto yy815; - if (yych <= 0xF3) - goto yy816; - if (yych <= 0xF4) - goto yy817; - } - } - yy808 : { return 0; } - yy809: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) { - if (yych == '\n') - goto yy808; - goto yy823; - } else { - if (yych <= 0xC1) - goto yy808; - if (yych <= 0xF4) - goto yy823; - goto yy808; - } - yy810: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '/') { - if (yych == '\n') - goto yy808; - if (yych <= '.') - goto yy823; - goto yy819; - } else { - if (yych <= 0x7F) - goto yy823; - if (yych <= 0xC1) - goto yy808; - if (yych <= 0xF4) - goto yy823; - goto yy808; - } - yy811: - yych = *++p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0xBF) - goto yy809; - yy812: - p = marker; - if (yyaccept == 0) { - goto yy808; - } else { - goto yy840; - } - yy813: - yych = *++p; - if (yych <= 0x9F) - goto yy812; - if (yych <= 0xBF) - goto yy811; - goto yy812; - yy814: - yych = *++p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0xBF) - goto yy811; - goto yy812; - yy815: - yych = *++p; - if (yych <= 0x8F) - goto yy812; - if (yych <= 0xBF) - goto yy814; - goto yy812; - yy816: - yych = *++p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0xBF) - goto yy814; - goto yy812; - yy817: - yych = *++p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0x8F) - goto yy814; - goto yy812; - yy818: - yych = *++p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0x9F) - goto yy811; - goto yy812; - yy819: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 's') { - if (yych <= 'R') { - if (yych <= '\n') { - if (yych <= '\t') - goto yy822; - goto yy812; - } else { - if (yych == 'P') - goto yy831; - goto yy822; - } - } else { - if (yych <= 'o') { - if (yych <= 'S') - goto yy832; - goto yy822; - } else { - if (yych <= 'p') - goto yy831; - if (yych <= 'r') - goto yy822; - goto yy832; - } - } - } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x7F) - goto yy822; - goto yy812; - } else { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - goto yy826; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy830; - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - yy820: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xDF) { - if (yych <= '.') { - if (yych == '\n') - goto yy812; - } else { - if (yych <= '/') - goto yy819; - if (yych <= 0x7F) - goto yy822; - if (yych <= 0xC1) - goto yy812; - goto yy824; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy825; - if (yych == 0xED) - goto yy830; - goto yy826; - } else { - if (yych <= 0xF0) - goto yy827; - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - yy822: - ++p; - yych = *p; - yy823: - if (yybm[0 + yych] & 128) { - goto yy822; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy812; - if (yych <= '<') - goto yy820; - goto yy812; - } else { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - goto yy826; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy830; - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - yy824: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0xBF) - goto yy822; - goto yy812; - yy825: - ++p; - yych = *p; - if (yych <= 0x9F) - goto yy812; - if (yych <= 0xBF) - goto yy824; - goto yy812; - yy826: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0xBF) - goto yy824; - goto yy812; - yy827: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy812; - if (yych <= 0xBF) - goto yy826; - goto yy812; - yy828: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0xBF) - goto yy826; - goto yy812; - yy829: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0x8F) - goto yy826; - goto yy812; - yy830: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy812; - if (yych <= 0x9F) - goto yy824; - goto yy812; - yy831: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xC1) { - if (yych <= 'R') { - if (yych == '\n') - goto yy812; - if (yych <= 'Q') - goto yy822; - goto yy843; - } else { - if (yych == 'r') - goto yy843; - if (yych <= 0x7F) - goto yy822; - goto yy812; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - if (yych <= 0xEC) - goto yy826; - goto yy830; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - yy832: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 't') { - if (yych <= 'S') { - if (yych <= '\n') { - if (yych <= '\t') - goto yy822; - goto yy812; - } else { - if (yych == 'C') - goto yy834; - goto yy822; - } - } else { - if (yych <= 'b') { - if (yych >= 'U') - goto yy822; - } else { - if (yych <= 'c') - goto yy834; - if (yych <= 's') - goto yy822; - } - } - } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x7F) - goto yy822; - goto yy812; - } else { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - goto yy826; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy830; - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xC1) { - if (yych <= 'Y') { - if (yych == '\n') - goto yy812; - if (yych <= 'X') - goto yy822; - goto yy841; - } else { - if (yych == 'y') - goto yy841; - if (yych <= 0x7F) - goto yy822; - goto yy812; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - if (yych <= 0xEC) - goto yy826; - goto yy830; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - yy834: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xC1) { - if (yych <= 'R') { - if (yych == '\n') - goto yy812; - if (yych <= 'Q') - goto yy822; - } else { - if (yych == 'r') - goto yy835; - if (yych <= 0x7F) - goto yy822; - goto yy812; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - if (yych <= 0xEC) - goto yy826; - goto yy830; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - yy835: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xC1) { - if (yych <= 'I') { - if (yych == '\n') - goto yy812; - if (yych <= 'H') - goto yy822; - } else { - if (yych == 'i') - goto yy836; - if (yych <= 0x7F) - goto yy822; - goto yy812; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - if (yych <= 0xEC) - goto yy826; - goto yy830; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - yy836: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xC1) { - if (yych <= 'P') { - if (yych == '\n') - goto yy812; - if (yych <= 'O') - goto yy822; - } else { - if (yych == 'p') - goto yy837; - if (yych <= 0x7F) - goto yy822; - goto yy812; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - if (yych <= 0xEC) - goto yy826; - goto yy830; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - yy837: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xC1) { - if (yych <= 'T') { - if (yych == '\n') - goto yy812; - if (yych <= 'S') - goto yy822; - } else { - if (yych == 't') - goto yy838; - if (yych <= 0x7F) - goto yy822; - goto yy812; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - if (yych <= 0xEC) - goto yy826; - goto yy830; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - yy838: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xDF) { - if (yych <= '=') { - if (yych == '\n') - goto yy812; - goto yy822; - } else { - if (yych <= '>') - goto yy839; - if (yych <= 0x7F) - goto yy822; - if (yych <= 0xC1) - goto yy812; - goto yy824; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy825; - if (yych == 0xED) - goto yy830; - goto yy826; - } else { - if (yych <= 0xF0) - goto yy827; - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - yy839: - yyaccept = 1; - marker = ++p; - yych = *p; - if (yybm[0 + yych] & 128) { - goto yy822; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy840; - if (yych <= '<') - goto yy820; - } else { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - goto yy826; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy830; - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - } - } - yy840 : { return (bufsize_t)(p - start); } - yy841: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xC1) { - if (yych <= 'L') { - if (yych == '\n') - goto yy812; - if (yych <= 'K') - goto yy822; - } else { - if (yych == 'l') - goto yy842; - if (yych <= 0x7F) - goto yy822; - goto yy812; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - if (yych <= 0xEC) - goto yy826; - goto yy830; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - yy842: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xC1) { - if (yych <= 'E') { - if (yych == '\n') - goto yy812; - if (yych <= 'D') - goto yy822; - goto yy838; - } else { - if (yych == 'e') - goto yy838; - if (yych <= 0x7F) - goto yy822; - goto yy812; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - if (yych <= 0xEC) - goto yy826; - goto yy830; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - yy843: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy820; - } - if (yych <= 0xC1) { - if (yych <= 'E') { - if (yych == '\n') - goto yy812; - if (yych <= 'D') - goto yy822; - goto yy838; - } else { - if (yych == 'e') - goto yy838; - if (yych <= 0x7F) - goto yy822; - goto yy812; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy824; - if (yych <= 0xE0) - goto yy825; - if (yych <= 0xEC) - goto yy826; - goto yy830; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy826; - goto yy827; - } else { - if (yych <= 0xF3) - goto yy828; - if (yych <= 0xF4) - goto yy829; - goto yy812; - } - } - } - } -} - -// 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[] = { - 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, 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, 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 = *(marker = p); - if (yych <= 0xDF) { - if (yych <= ',') { - if (yych != '\n') - goto yy847; - } else { - if (yych <= '-') - goto yy848; - if (yych <= 0x7F) - goto yy847; - if (yych >= 0xC2) - goto yy849; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy851; - if (yych == 0xED) - goto yy856; - goto yy852; - } else { - if (yych <= 0xF0) - goto yy853; - if (yych <= 0xF3) - goto yy854; - if (yych <= 0xF4) - goto yy855; - } - } - yy846 : { return 0; } - yy847: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) { - if (yych == '\n') - goto yy846; - goto yy860; - } else { - if (yych <= 0xC1) - goto yy846; - if (yych <= 0xF4) - goto yy860; - goto yy846; - } - yy848: - yyaccept = 0; - yych = *(marker = ++p); - if (yybm[0 + yych] & 64) { - goto yy857; - } - if (yych <= 0x7F) { - if (yych == '\n') - goto yy846; - goto yy860; - } else { - if (yych <= 0xC1) - goto yy846; - if (yych <= 0xF4) - goto yy860; - goto yy846; - } - yy849: - yych = *++p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0xBF) - goto yy847; - yy850: - p = marker; - if (yyaccept == 0) { - goto yy846; - } else { - goto yy870; - } - yy851: - yych = *++p; - if (yych <= 0x9F) - goto yy850; - if (yych <= 0xBF) - goto yy849; - goto yy850; - yy852: - yych = *++p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0xBF) - goto yy849; - goto yy850; - yy853: - yych = *++p; - if (yych <= 0x8F) - goto yy850; - if (yych <= 0xBF) - goto yy852; - goto yy850; - yy854: - yych = *++p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0xBF) - goto yy852; - goto yy850; - yy855: - yych = *++p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0x8F) - goto yy852; - goto yy850; - yy856: - yych = *++p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0x9F) - goto yy849; - goto yy850; - yy857: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy857; - } - if (yych <= 0xDF) { - if (yych <= '=') { - if (yych == '\n') - goto yy850; - } else { - if (yych <= '>') - goto yy869; - if (yych <= 0x7F) - goto yy859; - if (yych <= 0xC1) - goto yy850; - goto yy861; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy862; - if (yych == 0xED) - goto yy867; - goto yy863; - } else { - if (yych <= 0xF0) - goto yy864; - if (yych <= 0xF3) - goto yy865; - if (yych <= 0xF4) - goto yy866; - goto yy850; - } - } - yy859: - ++p; - yych = *p; - yy860: - if (yybm[0 + yych] & 128) { - goto yy859; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy850; - if (yych <= '-') - goto yy868; - goto yy850; - } else { - if (yych <= 0xDF) - goto yy861; - if (yych <= 0xE0) - goto yy862; - goto yy863; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy867; - if (yych <= 0xEF) - goto yy863; - goto yy864; - } else { - if (yych <= 0xF3) - goto yy865; - if (yych <= 0xF4) - goto yy866; - goto yy850; - } - } - yy861: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0xBF) - goto yy859; - goto yy850; - yy862: - ++p; - yych = *p; - if (yych <= 0x9F) - goto yy850; - if (yych <= 0xBF) - goto yy861; - goto yy850; - yy863: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0xBF) - goto yy861; - goto yy850; - yy864: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy850; - if (yych <= 0xBF) - goto yy863; - goto yy850; - yy865: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0xBF) - goto yy863; - goto yy850; - yy866: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0x8F) - goto yy863; - goto yy850; - yy867: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy850; - if (yych <= 0x9F) - goto yy861; - goto yy850; - yy868: - ++p; - yych = *p; - if (yybm[0 + yych] & 128) { - goto yy859; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy850; - if (yych <= '-') - goto yy857; - goto yy850; - } else { - if (yych <= 0xDF) - goto yy861; - if (yych <= 0xE0) - goto yy862; - goto yy863; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy867; - if (yych <= 0xEF) - goto yy863; - goto yy864; - } else { - if (yych <= 0xF3) - goto yy865; - if (yych <= 0xF4) - goto yy866; - goto yy850; - } - } - yy869: - yyaccept = 1; - marker = ++p; - yych = *p; - if (yybm[0 + yych] & 128) { - goto yy859; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy870; - if (yych <= '-') - goto yy868; - } else { - if (yych <= 0xDF) - goto yy861; - if (yych <= 0xE0) - goto yy862; - goto yy863; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy867; - if (yych <= 0xEF) - goto yy863; - goto yy864; - } else { - if (yych <= 0xF3) - goto yy865; - if (yych <= 0xF4) - goto yy866; - } - } - yy870 : { 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[] = { - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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 yy874; - } else { - if (yych <= '?') - goto yy875; - if (yych <= 0x7F) - goto yy874; - if (yych >= 0xC2) - goto yy876; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy878; - if (yych == 0xED) - goto yy883; - goto yy879; - } else { - if (yych <= 0xF0) - goto yy880; - if (yych <= 0xF3) - goto yy881; - if (yych <= 0xF4) - goto yy882; - } - } - yy873 : { return 0; } - yy874: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) { - if (yych == '\n') - goto yy873; - goto yy889; - } else { - if (yych <= 0xC1) - goto yy873; - if (yych <= 0xF4) - goto yy889; - goto yy873; - } - yy875: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= '>') { - if (yych == '\n') - goto yy873; - if (yych <= '=') - goto yy889; - goto yy884; - } else { - if (yych <= 0x7F) - goto yy889; - if (yych <= 0xC1) - goto yy873; - if (yych <= 0xF4) - goto yy889; - goto yy873; - } - yy876: - yych = *++p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0xBF) - goto yy874; - yy877: - p = marker; - if (yyaccept == 0) { - goto yy873; - } else { - goto yy885; - } - yy878: - yych = *++p; - if (yych <= 0x9F) - goto yy877; - if (yych <= 0xBF) - goto yy876; - goto yy877; - yy879: - yych = *++p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0xBF) - goto yy876; - goto yy877; - yy880: - yych = *++p; - if (yych <= 0x8F) - goto yy877; - if (yych <= 0xBF) - goto yy879; - goto yy877; - yy881: - yych = *++p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0xBF) - goto yy879; - goto yy877; - yy882: - yych = *++p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0x8F) - goto yy879; - goto yy877; - yy883: - yych = *++p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0x9F) - goto yy876; - goto yy877; - yy884: - yyaccept = 1; - marker = ++p; - yych = *p; - if (yybm[0 + yych] & 128) { - goto yy888; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy885; - if (yych <= '?') - goto yy886; - } else { - if (yych <= 0xDF) - goto yy890; - if (yych <= 0xE0) - goto yy891; - goto yy892; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy896; - if (yych <= 0xEF) - goto yy892; - goto yy893; - } else { - if (yych <= 0xF3) - goto yy894; - if (yych <= 0xF4) - goto yy895; - } - } - yy885 : { return (bufsize_t)(p - start); } - yy886: - ++p; - yych = *p; - if (yybm[0 + yych] & 64) { - goto yy886; - } - if (yych <= 0xDF) { - if (yych <= '=') { - if (yych == '\n') - goto yy877; - } else { - if (yych <= '>') - goto yy884; - if (yych <= 0x7F) - goto yy888; - if (yych <= 0xC1) - goto yy877; - goto yy890; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy891; - if (yych == 0xED) - goto yy896; - goto yy892; - } else { - if (yych <= 0xF0) - goto yy893; - if (yych <= 0xF3) - goto yy894; - if (yych <= 0xF4) - goto yy895; - goto yy877; - } - } - yy888: - ++p; - yych = *p; - yy889: - if (yybm[0 + yych] & 128) { - goto yy888; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy877; - if (yych <= '?') - goto yy886; - goto yy877; - } else { - if (yych <= 0xDF) - goto yy890; - if (yych <= 0xE0) - goto yy891; - goto yy892; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy896; - if (yych <= 0xEF) - goto yy892; - goto yy893; - } else { - if (yych <= 0xF3) - goto yy894; - if (yych <= 0xF4) - goto yy895; - goto yy877; - } - } - yy890: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0xBF) - goto yy888; - goto yy877; - yy891: - ++p; - yych = *p; - if (yych <= 0x9F) - goto yy877; - if (yych <= 0xBF) - goto yy890; - goto yy877; - yy892: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0xBF) - goto yy890; - goto yy877; - yy893: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy877; - if (yych <= 0xBF) - goto yy892; - goto yy877; - yy894: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0xBF) - goto yy892; - goto yy877; - yy895: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0x8F) - goto yy892; - goto yy877; - yy896: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy877; - if (yych <= 0x9F) - goto yy890; - goto yy877; + if (yych <= '`') { + if (yych <= 'Z') + goto yy758; + if (yych <= '^') + goto yy728; + if (yych <= '_') + goto yy758; + goto yy707; + } else { + if (yych <= 'z') + goto yy758; + if (yych <= 0x7F) + goto yy728; + if (yych <= 0xC1) + goto yy707; + goto yy730; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy731; + if (yych == 0xED) + goto yy736; + goto yy732; + } else { + if (yych <= 0xF0) + goto yy733; + if (yych <= 0xF3) + goto yy734; + if (yych <= 0xF4) + goto yy735; + goto yy707; + } + } + } } } -// Try to match an HTML block end line of type 4 -bufsize_t _scan_html_block_end_4(const unsigned char *p) { +// 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; @@ -14750,2696 +12632,2244 @@ bufsize_t _scan_html_block_end_4(const unsigned char *p) { unsigned char yych; unsigned int yyaccept = 0; static const unsigned char yybm[] = { - 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, 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, + 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 = *(marker = p); + yych = *p; if (yych <= 0xDF) { - if (yych <= '=') { + if (yych <= ';') { + if (yych <= 0x00) + goto yy766; if (yych != '\n') - goto yy900; + goto yy768; } else { - if (yych <= '>') - goto yy901; + if (yych <= '<') + goto yy769; if (yych <= 0x7F) - goto yy900; + goto yy768; if (yych >= 0xC2) - goto yy903; + goto yy770; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy905; + goto yy771; if (yych == 0xED) - goto yy910; - goto yy906; + goto yy773; + goto yy772; } else { if (yych <= 0xF0) - goto yy907; + goto yy774; if (yych <= 0xF3) - goto yy908; + goto yy775; if (yych <= 0xF4) - goto yy909; + goto yy776; } } - yy899 : { return 0; } - yy900: + yy766: + ++p; + yy767 : { return 0; } + yy768: yyaccept = 0; yych = *(marker = ++p); - if (yych <= 0x7F) { - if (yych == '\n') - goto yy899; - goto yy914; + if (yych <= '\n') { + if (yych <= 0x00) + goto yy767; + if (yych <= '\t') + goto yy781; + goto yy767; } else { + if (yych <= 0x7F) + goto yy781; if (yych <= 0xC1) - goto yy899; + goto yy767; if (yych <= 0xF4) - goto yy914; - goto yy899; + goto yy781; + goto yy767; } - yy901: - yyaccept = 1; + yy769: + yyaccept = 0; yych = *(marker = ++p); - if (yych <= 0x7F) { - if (yych != '\n') - goto yy914; + if (yych <= '.') { + if (yych <= 0x00) + goto yy767; + if (yych == '\n') + goto yy767; + goto yy781; } else { - if (yych <= 0xC1) - goto yy902; - if (yych <= 0xF4) - goto yy914; + if (yych <= 0x7F) { + if (yych <= '/') + goto yy789; + goto yy781; + } else { + if (yych <= 0xC1) + goto yy767; + if (yych <= 0xF4) + goto yy781; + goto yy767; + } } - yy902 : { return (bufsize_t)(p - start); } - yy903: - yych = *++p; + yy770: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy904; + goto yy767; if (yych <= 0xBF) - goto yy900; - yy904: - p = marker; - if (yyaccept == 0) { - goto yy899; - } else { - goto yy902; - } - yy905: - yych = *++p; + goto yy780; + goto yy767; + yy771: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x9F) - goto yy904; + goto yy767; if (yych <= 0xBF) - goto yy903; - goto yy904; - yy906: - yych = *++p; + goto yy779; + goto yy767; + yy772: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy904; + goto yy767; if (yych <= 0xBF) - goto yy903; - goto yy904; - yy907: - yych = *++p; + goto yy779; + goto yy767; + yy773: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy767; + if (yych <= 0x9F) + goto yy779; + goto yy767; + yy774: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x8F) - goto yy904; + goto yy767; if (yych <= 0xBF) - goto yy906; - goto yy904; - yy908: - yych = *++p; + goto yy777; + goto yy767; + yy775: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy904; + goto yy767; if (yych <= 0xBF) - goto yy906; - goto yy904; - yy909: - yych = *++p; - if (yych <= 0x7F) - goto yy904; - if (yych <= 0x8F) - goto yy906; - goto yy904; - yy910: - yych = *++p; + goto yy777; + goto yy767; + yy776: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy904; - if (yych <= 0x9F) - goto yy903; - goto yy904; - yy911: - yyaccept = 1; - marker = ++p; + goto yy767; + if (yych >= 0x90) + goto yy767; + yy777: + ++p; yych = *p; - if (yybm[0 + yych] & 128) { - goto yy913; - } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy902; - if (yych <= '>') - goto yy911; - goto yy902; - } else { - if (yych <= 0xDF) - goto yy915; - if (yych <= 0xE0) - goto yy916; - goto yy917; - } + if (yych <= 0x7F) + goto yy778; + if (yych <= 0xBF) + goto yy779; + yy778: + p = marker; + if (yyaccept == 0) { + goto yy767; } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy921; - if (yych <= 0xEF) - goto yy917; - goto yy918; - } else { - if (yych <= 0xF3) - goto yy919; - if (yych <= 0xF4) - goto yy920; - goto yy902; - } + goto yy795; } - yy913: + yy779: ++p; yych = *p; - yy914: - if (yybm[0 + yych] & 128) { - goto yy913; + if (yych <= 0x7F) + goto yy778; + if (yych >= 0xC0) + goto yy778; + yy780: + ++p; + yych = *p; + yy781: + if (yybm[0 + yych] & 64) { + goto yy780; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy904; - if (yych <= '>') - goto yy911; - goto yy904; + goto yy778; + if (yych >= '=') + goto yy778; } else { if (yych <= 0xDF) - goto yy915; + goto yy779; if (yych <= 0xE0) - goto yy916; - goto yy917; + goto yy784; + goto yy777; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy921; + goto yy788; if (yych <= 0xEF) - goto yy917; - goto yy918; + goto yy777; + goto yy785; } else { if (yych <= 0xF3) - goto yy919; + goto yy786; if (yych <= 0xF4) - goto yy920; - goto yy904; + goto yy787; + goto yy778; } } - yy915: + yy782: ++p; yych = *p; - if (yych <= 0x7F) - goto yy904; - if (yych <= 0xBF) - goto yy913; - goto yy904; - yy916: - ++p; - yych = *p; - if (yych <= 0x9F) - goto yy904; - if (yych <= 0xBF) - goto yy915; - goto yy904; - yy917: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy904; - if (yych <= 0xBF) - goto yy915; - goto yy904; - yy918: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy904; - if (yych <= 0xBF) - goto yy917; - goto yy904; - yy919: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy904; - if (yych <= 0xBF) - goto yy917; - goto yy904; - yy920: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy904; - if (yych <= 0x8F) - goto yy917; - goto yy904; - yy921: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy904; - if (yych <= 0x9F) - goto yy915; - goto yy904; - } -} - -// 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[] = { - 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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 (yybm[0 + yych] & 128) { + goto yy782; + } if (yych <= 0xDF) { - if (yych <= '\\') { - if (yych != '\n') - goto yy925; + if (yych <= '.') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { - if (yych <= ']') - goto yy926; + if (yych <= '/') + goto yy789; if (yych <= 0x7F) - goto yy925; - if (yych >= 0xC2) - goto yy927; + goto yy780; + if (yych <= 0xC1) + goto yy778; + goto yy779; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy929; + goto yy784; if (yych == 0xED) - goto yy934; - goto yy930; + goto yy788; + goto yy777; } else { if (yych <= 0xF0) - goto yy931; + goto yy785; if (yych <= 0xF3) - goto yy932; + goto yy786; if (yych <= 0xF4) - goto yy933; + goto yy787; + goto yy778; } } - yy924 : { return 0; } - yy925: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0x7F) { - if (yych == '\n') - goto yy924; - goto yy938; - } else { - if (yych <= 0xC1) - goto yy924; - if (yych <= 0xF4) - goto yy938; - goto yy924; - } - yy926: - yyaccept = 0; - yych = *(marker = ++p); - if (yybm[0 + yych] & 64) { - goto yy935; - } - if (yych <= 0x7F) { - if (yych == '\n') - goto yy924; - goto yy938; - } else { - if (yych <= 0xC1) - goto yy924; - if (yych <= 0xF4) - goto yy938; - goto yy924; - } - yy927: - yych = *++p; - if (yych <= 0x7F) - goto yy928; - if (yych <= 0xBF) - goto yy925; - yy928: - p = marker; - if (yyaccept == 0) { - goto yy924; - } else { - goto yy948; - } - yy929: - yych = *++p; + yy784: + ++p; + yych = *p; if (yych <= 0x9F) - goto yy928; + goto yy778; if (yych <= 0xBF) - goto yy927; - goto yy928; - yy930: - yych = *++p; - if (yych <= 0x7F) - goto yy928; - if (yych <= 0xBF) - goto yy927; - goto yy928; - yy931: - yych = *++p; + goto yy779; + goto yy778; + yy785: + ++p; + yych = *p; if (yych <= 0x8F) - goto yy928; + goto yy778; if (yych <= 0xBF) - goto yy930; - goto yy928; - yy932: - yych = *++p; + goto yy777; + goto yy778; + yy786: + ++p; + yych = *p; if (yych <= 0x7F) - goto yy928; + goto yy778; if (yych <= 0xBF) - goto yy930; - goto yy928; - yy933: - yych = *++p; + goto yy777; + goto yy778; + yy787: + ++p; + yych = *p; if (yych <= 0x7F) - goto yy928; + goto yy778; if (yych <= 0x8F) - goto yy930; - goto yy928; - yy934: - yych = *++p; + goto yy777; + goto yy778; + yy788: + ++p; + yych = *p; if (yych <= 0x7F) - goto yy928; + goto yy778; if (yych <= 0x9F) - goto yy927; - goto yy928; - yy935: + goto yy779; + goto yy778; + yy789: ++p; yych = *p; - if (yybm[0 + yych] & 64) { - goto yy935; + if (yybm[0 + yych] & 128) { + goto yy782; } - if (yych <= 0xDF) { - if (yych <= '=') { - if (yych == '\n') - goto yy928; + if (yych <= 's') { + if (yych <= 'P') { + if (yych <= '\t') { + if (yych <= 0x00) + goto yy778; + goto yy780; + } else { + if (yych <= '\n') + goto yy778; + if (yych <= 'O') + goto yy780; + goto yy791; + } } else { - if (yych <= '>') - goto yy947; - if (yych <= 0x7F) - goto yy937; - if (yych <= 0xC1) - goto yy928; - goto yy939; + if (yych <= 'o') { + if (yych != 'S') + goto yy780; + } else { + if (yych <= 'p') + goto yy791; + if (yych <= 'r') + goto yy780; + } } } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy940; - if (yych == 0xED) - goto yy945; - goto yy941; + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x7F) + goto yy780; + goto yy778; + } else { + if (yych <= 0xDF) + goto yy779; + if (yych <= 0xE0) + goto yy784; + goto yy777; + } } else { - if (yych <= 0xF0) - goto yy942; - if (yych <= 0xF3) - goto yy943; - if (yych <= 0xF4) - goto yy944; - goto yy928; + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy788; + if (yych <= 0xEF) + goto yy777; + goto yy785; + } else { + if (yych <= 0xF3) + goto yy786; + if (yych <= 0xF4) + goto yy787; + goto yy778; + } } } - yy937: ++p; yych = *p; - yy938: if (yybm[0 + yych] & 128) { - goto yy937; + goto yy782; } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy928; - if (yych <= ']') - goto yy946; - goto yy928; + if (yych <= 't') { + if (yych <= 'C') { + if (yych <= '\t') { + if (yych <= 0x00) + goto yy778; + goto yy780; + } else { + if (yych <= '\n') + goto yy778; + if (yych <= 'B') + goto yy780; + goto yy796; + } + } else { + if (yych <= 'b') { + if (yych == 'T') + goto yy797; + goto yy780; + } else { + if (yych <= 'c') + goto yy796; + if (yych <= 's') + goto yy780; + goto yy797; + } + } + } else { + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= 0x7F) + goto yy780; + goto yy778; + } else { + if (yych <= 0xDF) + goto yy779; + if (yych <= 0xE0) + goto yy784; + goto yy777; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy788; + if (yych <= 0xEF) + goto yy777; + goto yy785; + } else { + if (yych <= 0xF3) + goto yy786; + if (yych <= 0xF4) + goto yy787; + goto yy778; + } + } + } + yy791: + ++p; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy782; + } + if (yych <= 0xC1) { + if (yych <= 'Q') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { + if (yych <= 'q') { + if (yych >= 'S') + goto yy780; + } else { + if (yych <= 'r') + goto yy792; + if (yych <= 0x7F) + goto yy780; + goto yy778; + } + } + } else { + if (yych <= 0xED) { if (yych <= 0xDF) - goto yy939; + goto yy779; if (yych <= 0xE0) - goto yy940; - goto yy941; + goto yy784; + if (yych <= 0xEC) + goto yy777; + goto yy788; + } else { + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy777; + goto yy785; + } else { + if (yych <= 0xF3) + goto yy786; + if (yych <= 0xF4) + goto yy787; + goto yy778; + } + } + } + yy792: + ++p; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy782; + } + if (yych <= 0xC1) { + if (yych <= 'D') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; + } else { + if (yych <= 'd') { + if (yych >= 'F') + goto yy780; + } else { + if (yych <= 'e') + goto yy793; + if (yych <= 0x7F) + goto yy780; + goto yy778; + } } } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy945; - if (yych <= 0xEF) - goto yy941; - goto yy942; + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy779; + if (yych <= 0xE0) + goto yy784; + if (yych <= 0xEC) + goto yy777; + goto yy788; } else { - if (yych <= 0xF3) - goto yy943; - if (yych <= 0xF4) - goto yy944; - goto yy928; + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy777; + goto yy785; + } else { + if (yych <= 0xF3) + goto yy786; + if (yych <= 0xF4) + goto yy787; + goto yy778; + } } } - yy939: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy928; - if (yych <= 0xBF) - goto yy937; - goto yy928; - yy940: - ++p; - yych = *p; - if (yych <= 0x9F) - goto yy928; - if (yych <= 0xBF) - goto yy939; - goto yy928; - yy941: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy928; - if (yych <= 0xBF) - goto yy939; - goto yy928; - yy942: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy928; - if (yych <= 0xBF) - goto yy941; - goto yy928; - yy943: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy928; - if (yych <= 0xBF) - goto yy941; - goto yy928; - yy944: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy928; - if (yych <= 0x8F) - goto yy941; - goto yy928; - yy945: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy928; - if (yych <= 0x9F) - goto yy939; - goto yy928; - yy946: + yy793: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy937; + goto yy782; } - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\n') - goto yy928; - if (yych <= ']') - goto yy935; - goto yy928; + if (yych <= 0xDF) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { - if (yych <= 0xDF) - goto yy939; - if (yych <= 0xE0) - goto yy940; - goto yy941; + if (yych <= '>') + goto yy794; + if (yych <= 0x7F) + goto yy780; + if (yych <= 0xC1) + goto yy778; + goto yy779; } } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy945; - if (yych <= 0xEF) - goto yy941; - goto yy942; + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy784; + if (yych == 0xED) + goto yy788; + goto yy777; } else { + if (yych <= 0xF0) + goto yy785; if (yych <= 0xF3) - goto yy943; + goto yy786; if (yych <= 0xF4) - goto yy944; - goto yy928; + goto yy787; + goto yy778; } } - yy947: + yy794: yyaccept = 1; marker = ++p; yych = *p; - if (yybm[0 + yych] & 128) { - goto yy937; + if (yybm[0 + yych] & 64) { + goto yy780; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= '\n') - goto yy948; - if (yych <= ']') - goto yy946; + goto yy795; + if (yych <= '<') + goto yy782; } else { if (yych <= 0xDF) - goto yy939; + goto yy779; if (yych <= 0xE0) - goto yy940; - goto yy941; + goto yy784; + goto yy777; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy945; + goto yy788; if (yych <= 0xEF) - goto yy941; - goto yy942; + goto yy777; + goto yy785; } else { if (yych <= 0xF3) - goto yy943; + goto yy786; if (yych <= 0xF4) - goto yy944; + goto yy787; } } - yy948 : { return (bufsize_t)(p - start); } - } -} - -// Try to match a URL in a link or reference, return number of chars matched. -// This may optionally be contained in <..>; otherwise -// whitespace and unbalanced right parentheses aren't allowed. -// Newlines aren't ever allowed. -bufsize_t _scan_link_url(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, 0, 8, 128, 128, 8, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 8, 224, 224, 224, 224, 224, 224, 224, 128, 128, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 32, 224, 32, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 16, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - }; - yych = *(marker = p); - if (yych <= '[') { - if (yych <= ' ') { - if (yych <= '\f') { - if (yych == '\n') - goto yy952; - goto yy968; - } else { - if (yych <= '\r') - goto yy954; - if (yych <= 0x1F) - goto yy968; - goto yy954; - } + yy795 : { return (bufsize_t)(p - start); } + yy796: + ++p; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy782; + } + if (yych <= 0xC1) { + if (yych <= 'Q') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { - if (yych <= ')') { - if (yych <= '\'') - goto yy956; - if (yych <= '(') - goto yy966; - goto yy968; + if (yych <= 'q') { + if (yych <= 'R') + goto yy800; + goto yy780; } else { - if (yych == '<') - goto yy955; - goto yy956; + if (yych <= 'r') + goto yy800; + if (yych <= 0x7F) + goto yy780; + goto yy778; } } } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\\') - goto yy965; - if (yych <= 0x7F) - goto yy956; - } else { - if (yych <= 0xDF) - goto yy957; - if (yych <= 0xE0) - goto yy959; - goto yy960; - } + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy779; + if (yych <= 0xE0) + goto yy784; + if (yych <= 0xEC) + goto yy777; + goto yy788; } else { if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy964; if (yych <= 0xEF) - goto yy960; - goto yy961; + goto yy777; + goto yy785; } else { if (yych <= 0xF3) - goto yy962; + goto yy786; if (yych <= 0xF4) - goto yy963; + goto yy787; + goto yy778; } } } - yy951 : { return (bufsize_t)(p - start); } - yy952: - yyaccept = 0; - marker = ++p; + yy797: + ++p; yych = *p; - yy953: - if (yybm[0 + yych] & 8) { - goto yy952; + if (yybm[0 + yych] & 128) { + goto yy782; } - if (yych <= 0x7F) { - if (yych <= ')') { - if (yych <= 0x1F) - goto yy951; - if (yych <= '\'') - goto yy980; - if (yych <= '(') - goto yy971; - goto yy951; + if (yych <= 0xC1) { + if (yych <= 'X') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { - if (yych <= '<') { - if (yych <= ';') - goto yy980; - goto yy1016; + if (yych <= 'x') { + if (yych >= 'Z') + goto yy780; } else { - if (yych == '\\') - goto yy982; - goto yy980; + if (yych <= 'y') + goto yy798; + if (yych <= 0x7F) + goto yy780; + goto yy778; } } } else { if (yych <= 0xED) { - if (yych <= 0xDF) { - if (yych <= 0xC1) - goto yy951; - goto yy983; - } else { - if (yych <= 0xE0) - goto yy984; - if (yych <= 0xEC) - goto yy985; - goto yy989; - } + if (yych <= 0xDF) + goto yy779; + if (yych <= 0xE0) + goto yy784; + if (yych <= 0xEC) + goto yy777; + goto yy788; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy985; - goto yy986; + goto yy777; + goto yy785; } else { if (yych <= 0xF3) - goto yy987; + goto yy786; if (yych <= 0xF4) - goto yy988; - goto yy951; + goto yy787; + goto yy778; } } } - yy954: - yyaccept = 0; - yych = *(marker = ++p); - goto yy953; - yy955: - yyaccept = 0; - yych = *(marker = ++p); - if (yybm[0 + yych] & 64) { - goto yy1016; + yy798: + ++p; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy782; } - if (yych <= '>') { - if (yych <= '\r') { - if (yych <= 0x08) { - if (yych <= 0x00) - goto yy951; - goto yy1029; - } else { - if (yych <= '\n') - goto yy951; - if (yych <= '\f') - goto yy1029; - goto yy951; - } + if (yych <= 0xC1) { + if (yych <= 'K') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { - if (yych <= '(') { - if (yych <= 0x1F) - goto yy1029; - if (yych <= ' ') - goto yy951; - goto yy1027; + if (yych <= 'k') { + if (yych >= 'M') + goto yy780; } else { - if (yych <= ')') - goto yy1029; - if (yych <= '<') - goto yy980; - goto yy1018; + if (yych <= 'l') + goto yy799; + if (yych <= 0x7F) + goto yy780; + goto yy778; } } } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\\') - goto yy1015; - goto yy951; - } else { - if (yych <= 0xDF) - goto yy1020; - if (yych <= 0xE0) - goto yy1021; - goto yy1022; - } + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy779; + if (yych <= 0xE0) + goto yy784; + if (yych <= 0xEC) + goto yy777; + goto yy788; } else { if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy1026; if (yych <= 0xEF) - goto yy1022; - goto yy1023; + goto yy777; + goto yy785; } else { if (yych <= 0xF3) - goto yy1024; + goto yy786; if (yych <= 0xF4) - goto yy1025; - goto yy951; + goto yy787; + goto yy778; } } } - yy956: - yyaccept = 0; - yych = *(marker = ++p); - goto yy981; - yy957: - yych = *++p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy956; - yy958: - p = marker; - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy951; - } else { - goto yy967; - } - } else { - goto yy1019; + yy799: + ++p; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy782; } - yy959: - yych = *++p; - if (yych <= 0x9F) - goto yy958; - if (yych <= 0xBF) - goto yy957; - goto yy958; - yy960: - yych = *++p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy957; - goto yy958; - yy961: - yych = *++p; - if (yych <= 0x8F) - goto yy958; - if (yych <= 0xBF) - goto yy960; - goto yy958; - yy962: - yych = *++p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy960; - goto yy958; - yy963: - yych = *++p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x8F) - goto yy960; - goto yy958; - yy964: - yych = *++p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x9F) - goto yy957; - goto yy958; - yy965: - yyaccept = 0; - yych = *(marker = ++p); - if (yych <= 0xDF) { - if (yych <= 0x1F) { - if (yych <= 0x08) - goto yy980; - if (yych <= '\r') - goto yy951; - goto yy980; + if (yych <= 0xC1) { + if (yych <= 'D') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { - if (yych <= ' ') - goto yy951; - if (yych <= 0x7F) - goto yy980; - if (yych <= 0xC1) - goto yy951; - goto yy990; + if (yych <= 'd') { + if (yych <= 'E') + goto yy793; + goto yy780; + } else { + if (yych <= 'e') + goto yy793; + if (yych <= 0x7F) + goto yy780; + goto yy778; + } } } else { - if (yych <= 0xEF) { + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy779; if (yych <= 0xE0) - goto yy991; - if (yych == 0xED) - goto yy996; - goto yy992; + goto yy784; + if (yych <= 0xEC) + goto yy777; + goto yy788; } else { - if (yych <= 0xF0) - goto yy993; - if (yych <= 0xF3) - goto yy994; - if (yych <= 0xF4) - goto yy995; - goto yy951; + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy777; + goto yy785; + } else { + if (yych <= 0xF3) + goto yy786; + if (yych <= 0xF4) + goto yy787; + goto yy778; + } } } - yy966: - yyaccept = 1; - yych = *(marker = ++p); - if (yych <= '(') { - if (yych <= ' ') - goto yy967; - if (yych <= '\'') - goto yy972; - } else { - if (yych <= 0x7F) - goto yy972; - if (yych <= 0xC1) - goto yy967; - if (yych <= 0xF4) - goto yy972; - } - yy967 : { return 0; } - yy968: - yych = *++p; - goto yy967; - yy969: + yy800: ++p; yych = *p; - if (yybm[0 + yych] & 16) { - goto yy969; + if (yybm[0 + yych] & 128) { + goto yy782; } - if (yych <= 0xE0) { - if (yych <= ')') { - if (yych <= ' ') - goto yy958; - if (yych >= ')') - goto yy997; + if (yych <= 0xC1) { + if (yych <= 'H') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { - if (yych <= 0x7F) - goto yy971; - if (yych <= 0xC1) - goto yy958; - if (yych <= 0xDF) - goto yy973; - goto yy974; + if (yych <= 'h') { + if (yych >= 'J') + goto yy780; + } else { + if (yych <= 'i') + goto yy801; + if (yych <= 0x7F) + goto yy780; + goto yy778; + } } } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy979; - goto yy975; + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy779; + if (yych <= 0xE0) + goto yy784; + if (yych <= 0xEC) + goto yy777; + goto yy788; } else { - if (yych <= 0xF0) - goto yy976; - if (yych <= 0xF3) - goto yy977; - if (yych <= 0xF4) - goto yy978; - goto yy958; + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy777; + goto yy785; + } else { + if (yych <= 0xF3) + goto yy786; + if (yych <= 0xF4) + goto yy787; + goto yy778; + } } } - yy971: + yy801: ++p; yych = *p; - yy972: - if (yybm[0 + yych] & 32) { - goto yy971; + if (yybm[0 + yych] & 128) { + goto yy782; } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= '(') - goto yy958; - if (yych <= ')') - goto yy980; - goto yy969; + if (yych <= 0xC1) { + if (yych <= 'O') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { - if (yych <= 0xC1) - goto yy958; - if (yych >= 0xE0) - goto yy974; + if (yych <= 'o') { + if (yych >= 'Q') + goto yy780; + } else { + if (yych <= 'p') + goto yy802; + if (yych <= 0x7F) + goto yy780; + goto yy778; + } } } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy979; - goto yy975; + if (yych <= 0xED) { + if (yych <= 0xDF) + goto yy779; + if (yych <= 0xE0) + goto yy784; + if (yych <= 0xEC) + goto yy777; + goto yy788; } else { - if (yych <= 0xF0) - goto yy976; - if (yych <= 0xF3) - goto yy977; - if (yych <= 0xF4) - goto yy978; - goto yy958; + if (yych <= 0xF0) { + if (yych <= 0xEF) + goto yy777; + goto yy785; + } else { + if (yych <= 0xF3) + goto yy786; + if (yych <= 0xF4) + goto yy787; + goto yy778; + } } } - yy973: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy971; - goto yy958; - yy974: - ++p; - yych = *p; - if (yych <= 0x9F) - goto yy958; - if (yych <= 0xBF) - goto yy973; - goto yy958; - yy975: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy973; - goto yy958; - yy976: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy958; - if (yych <= 0xBF) - goto yy975; - goto yy958; - yy977: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy975; - goto yy958; - yy978: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x8F) - goto yy975; - goto yy958; - yy979: + yy802: ++p; yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x9F) - goto yy973; - goto yy958; - yy980: - yyaccept = 0; - marker = ++p; - yych = *p; - yy981: + if (yybm[0 + yych] & 128) { + goto yy782; + } if (yych <= 0xC1) { - if (yych <= ')') { - if (yych <= ' ') - goto yy951; - if (yych <= '\'') - goto yy980; - if (yych <= '(') - goto yy971; - goto yy951; + if (yych <= 'S') { + if (yych <= 0x00) + goto yy778; + if (yych == '\n') + goto yy778; + goto yy780; } else { - if (yych == '\\') - goto yy982; - if (yych <= 0x7F) - goto yy980; - goto yy951; + if (yych <= 's') { + if (yych <= 'T') + goto yy793; + goto yy780; + } else { + if (yych <= 't') + goto yy793; + if (yych <= 0x7F) + goto yy780; + goto yy778; + } } } else { if (yych <= 0xED) { if (yych <= 0xDF) - goto yy983; + goto yy779; if (yych <= 0xE0) - goto yy984; + goto yy784; if (yych <= 0xEC) - goto yy985; - goto yy989; + goto yy777; + goto yy788; } else { if (yych <= 0xF0) { if (yych <= 0xEF) - goto yy985; - goto yy986; + goto yy777; + goto yy785; } else { if (yych <= 0xF3) - goto yy987; + goto yy786; if (yych <= 0xF4) - goto yy988; - goto yy951; + goto yy787; + goto yy778; } } } - yy982: - yyaccept = 0; - marker = ++p; + } +} + +// 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 <= 0x1F) { - if (yych <= 0x08) - goto yy980; - if (yych <= '\r') - goto yy951; - goto yy980; + if (yych <= ',') { + if (yych <= 0x00) + goto yy805; + if (yych != '\n') + goto yy807; } else { - if (yych <= ' ') - goto yy951; + if (yych <= '-') + goto yy808; if (yych <= 0x7F) - goto yy980; - if (yych <= 0xC1) - goto yy951; - goto yy990; + goto yy807; + if (yych >= 0xC2) + goto yy809; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy991; + goto yy810; if (yych == 0xED) - goto yy996; - goto yy992; + goto yy812; + goto yy811; } else { if (yych <= 0xF0) - goto yy993; + goto yy813; if (yych <= 0xF3) - goto yy994; + goto yy814; if (yych <= 0xF4) - goto yy995; - goto yy951; + goto yy815; } } - yy983: + yy805: ++p; - yych = *p; + yy806 : { return 0; } + yy807: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy806; + if (yych <= '\t') + goto yy820; + goto yy806; + } else { + if (yych <= 0x7F) + goto yy820; + if (yych <= 0xC1) + goto yy806; + if (yych <= 0xF4) + goto yy820; + goto yy806; + } + yy808: + yyaccept = 0; + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy827; + } + if (yych <= '\n') { + if (yych <= 0x00) + goto yy806; + if (yych <= '\t') + goto yy820; + goto yy806; + } else { + if (yych <= 0x7F) + goto yy820; + if (yych <= 0xC1) + goto yy806; + if (yych <= 0xF4) + goto yy820; + goto yy806; + } + yy809: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; + goto yy806; if (yych <= 0xBF) - goto yy980; - goto yy958; - yy984: - ++p; - yych = *p; + goto yy819; + goto yy806; + yy810: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x9F) - goto yy958; - if (yych <= 0xBF) - goto yy983; - goto yy958; - yy985: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy983; - goto yy958; - yy986: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy958; + goto yy806; if (yych <= 0xBF) - goto yy985; - goto yy958; - yy987: - ++p; - yych = *p; + goto yy818; + goto yy806; + yy811: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; + goto yy806; if (yych <= 0xBF) - goto yy985; - goto yy958; - yy988: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x8F) - goto yy985; - goto yy958; - yy989: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x9F) - goto yy983; - goto yy958; - yy990: - ++p; - yych = *p; + goto yy818; + goto yy806; + yy812: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy980; - goto yy958; - yy991: - ++p; - yych = *p; + goto yy806; if (yych <= 0x9F) - goto yy958; + goto yy818; + goto yy806; + yy813: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x8F) + goto yy806; if (yych <= 0xBF) - goto yy990; - goto yy958; - yy992: - ++p; - yych = *p; + goto yy816; + goto yy806; + yy814: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy990; - goto yy958; - yy993: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy958; + goto yy806; if (yych <= 0xBF) - goto yy992; - goto yy958; - yy994: + goto yy816; + goto yy806; + yy815: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy806; + if (yych >= 0x90) + goto yy806; + yy816: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy817; if (yych <= 0xBF) - goto yy992; - goto yy958; - yy995: + goto yy818; + yy817: + p = marker; + if (yyaccept == 0) { + goto yy806; + } else { + goto yy830; + } + yy818: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; - if (yych <= 0x8F) - goto yy992; - goto yy958; - yy996: + goto yy817; + if (yych >= 0xC0) + goto yy817; + yy819: ++p; yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x9F) - goto yy990; - goto yy958; - yy997: - yyaccept = 0; - marker = ++p; - yych = *p; - yy998: - if (yych <= 0xC1) { - if (yych <= ')') { - if (yych <= ' ') - goto yy951; - if (yych <= '\'') - goto yy997; - if (yych <= '(') - goto yy971; - goto yy980; + yy820: + if (yybm[0 + yych] & 64) { + goto yy819; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy817; + if (yych >= '.') + goto yy817; } else { - if (yych == '\\') - goto yy999; - if (yych <= 0x7F) - goto yy997; - goto yy951; - } - } else { - if (yych <= 0xED) { if (yych <= 0xDF) - goto yy1000; + goto yy818; if (yych <= 0xE0) - goto yy1001; - if (yych <= 0xEC) - goto yy1002; - goto yy1006; + goto yy822; + goto yy816; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy826; + if (yych <= 0xEF) + goto yy816; + goto yy823; } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy1002; - goto yy1003; - } else { - if (yych <= 0xF3) - goto yy1004; - if (yych <= 0xF4) - goto yy1005; - goto yy951; - } + if (yych <= 0xF3) + goto yy824; + if (yych <= 0xF4) + goto yy825; + goto yy817; } } - yy999: - yyaccept = 0; - marker = ++p; + yy821: + ++p; yych = *p; - if (yych <= 0xC1) { - if (yych <= ' ') { - if (yych <= 0x08) - goto yy980; - if (yych <= '\r') - goto yy951; - if (yych <= 0x1F) - goto yy980; - goto yy951; + if (yybm[0 + yych] & 64) { + goto yy819; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy817; + if (yych <= '-') + goto yy827; + goto yy817; } else { - if (yych == '\\') - goto yy1007; - if (yych <= 0x7F) - goto yy997; - goto yy951; + if (yych <= 0xDF) + goto yy818; + if (yych >= 0xE1) + goto yy816; } } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy1008; - if (yych <= 0xE0) - goto yy1009; - if (yych <= 0xEC) - goto yy1010; - goto yy1014; + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy826; + if (yych <= 0xEF) + goto yy816; + goto yy823; } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy1010; - goto yy1011; - } else { - if (yych <= 0xF3) - goto yy1012; - if (yych <= 0xF4) - goto yy1013; - goto yy951; - } + if (yych <= 0xF3) + goto yy824; + if (yych <= 0xF4) + goto yy825; + goto yy817; } } - yy1000: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy997; - goto yy958; - yy1001: + yy822: ++p; yych = *p; if (yych <= 0x9F) - goto yy958; - if (yych <= 0xBF) - goto yy1000; - goto yy958; - yy1002: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; + goto yy817; if (yych <= 0xBF) - goto yy1000; - goto yy958; - yy1003: + goto yy818; + goto yy817; + yy823: ++p; yych = *p; if (yych <= 0x8F) - goto yy958; + goto yy817; if (yych <= 0xBF) - goto yy1002; - goto yy958; - yy1004: + goto yy816; + goto yy817; + yy824: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy817; if (yych <= 0xBF) - goto yy1002; - goto yy958; - yy1005: + goto yy816; + goto yy817; + yy825: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy817; if (yych <= 0x8F) - goto yy1002; - goto yy958; - yy1006: + goto yy816; + goto yy817; + yy826: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy817; if (yych <= 0x9F) - goto yy1000; - goto yy958; - yy1007: - yyaccept = 0; + goto yy818; + goto yy817; + yy827: + ++p; + yych = *p; + if (yybm[0 + yych] & 128) { + goto yy827; + } + if (yych <= 0xDF) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy817; + if (yych == '\n') + goto yy817; + goto yy819; + } else { + if (yych <= '>') + goto yy829; + if (yych <= 0x7F) + goto yy819; + if (yych <= 0xC1) + goto yy817; + goto yy818; + } + } else { + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy822; + if (yych == 0xED) + goto yy826; + goto yy816; + } else { + if (yych <= 0xF0) + goto yy823; + if (yych <= 0xF3) + goto yy824; + if (yych <= 0xF4) + goto yy825; + goto yy817; + } + } + yy829: + yyaccept = 1; marker = ++p; yych = *p; + if (yybm[0 + yych] & 64) { + goto yy819; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy830; + if (yych <= '-') + goto yy821; + } else { + if (yych <= 0xDF) + goto yy818; + if (yych <= 0xE0) + goto yy822; + goto yy816; + } + } else { + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy826; + if (yych <= 0xEF) + goto yy816; + goto yy823; + } else { + if (yych <= 0xF3) + goto yy824; + if (yych <= 0xF4) + goto yy825; + } + } + yy830 : { return (bufsize_t)(p - start); } + } +} + +// Try to match an HTML block end line of type 3 +bufsize_t _scan_html_block_end_3(const unsigned char *p) { + const unsigned char *marker = NULL; + const unsigned char *start = p; + + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; + yych = *p; if (yych <= 0xDF) { - if (yych <= '[') { - if (yych <= ' ') - goto yy951; - if (yych == '(') - goto yy971; - goto yy997; + if (yych <= '>') { + if (yych <= 0x00) + goto yy833; + if (yych != '\n') + goto yy835; } else { - if (yych <= '\\') - goto yy999; + if (yych <= '?') + goto yy836; if (yych <= 0x7F) - goto yy997; - if (yych <= 0xC1) - goto yy951; - goto yy1000; + goto yy835; + if (yych >= 0xC2) + goto yy837; } } else { if (yych <= 0xEF) { if (yych <= 0xE0) - goto yy1001; + goto yy838; if (yych == 0xED) - goto yy1006; - goto yy1002; + goto yy840; + goto yy839; } else { if (yych <= 0xF0) - goto yy1003; + goto yy841; if (yych <= 0xF3) - goto yy1004; + goto yy842; if (yych <= 0xF4) - goto yy1005; - goto yy951; + goto yy843; } } - yy1008: + yy833: ++p; - yych = *p; + yy834 : { return 0; } + yy835: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy834; + if (yych <= '\t') + goto yy848; + goto yy834; + } else { + if (yych <= 0x7F) + goto yy848; + if (yych <= 0xC1) + goto yy834; + if (yych <= 0xF4) + goto yy848; + goto yy834; + } + yy836: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '=') { + if (yych <= 0x00) + goto yy834; + if (yych == '\n') + goto yy834; + goto yy848; + } else { + if (yych <= 0x7F) { + if (yych <= '>') + goto yy856; + goto yy848; + } else { + if (yych <= 0xC1) + goto yy834; + if (yych <= 0xF4) + goto yy848; + goto yy834; + } + } + yy837: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; + goto yy834; if (yych <= 0xBF) - goto yy997; - goto yy958; - yy1009: - ++p; - yych = *p; + goto yy847; + goto yy834; + yy838: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x9F) - goto yy958; + goto yy834; if (yych <= 0xBF) - goto yy1008; - goto yy958; - yy1010: - ++p; - yych = *p; + goto yy846; + goto yy834; + yy839: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; + goto yy834; if (yych <= 0xBF) - goto yy1008; - goto yy958; - yy1011: - ++p; - yych = *p; + goto yy846; + goto yy834; + yy840: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy834; + if (yych <= 0x9F) + goto yy846; + goto yy834; + yy841: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x8F) - goto yy958; + goto yy834; if (yych <= 0xBF) - goto yy1010; - goto yy958; - yy1012: - ++p; - yych = *p; + goto yy844; + goto yy834; + yy842: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; + goto yy834; if (yych <= 0xBF) - goto yy1010; - goto yy958; - yy1013: + goto yy844; + goto yy834; + yy843: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy834; + if (yych >= 0x90) + goto yy834; + yy844: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; - if (yych <= 0x8F) - goto yy1010; - goto yy958; - yy1014: + goto yy845; + if (yych <= 0xBF) + goto yy846; + yy845: + p = marker; + if (yyaccept == 0) { + goto yy834; + } else { + goto yy857; + } + yy846: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; - if (yych <= 0x9F) - goto yy1008; - goto yy958; - yy1015: - yyaccept = 0; - marker = ++p; + goto yy845; + if (yych >= 0xC0) + goto yy845; + yy847: + ++p; yych = *p; - if (yych <= '\\') { - if (yych <= '\r') { - if (yych <= 0x08) { - if (yych <= 0x00) - goto yy980; - } else { - if (yych <= '\n') - goto yy951; - if (yych <= '\f') - goto yy1029; - goto yy951; - } + yy848: + if (yybm[0 + yych] & 64) { + goto yy847; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy845; + if (yych >= '@') + goto yy845; } else { - if (yych <= '=') { - if (yych == ' ') - goto yy951; - } else { - if (yych <= '>') - goto yy1073; - if (yych >= '\\') - goto yy1074; - } + if (yych <= 0xDF) + goto yy846; + if (yych <= 0xE0) + goto yy851; + goto yy844; } } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych >= 0x80) - goto yy951; - } else { - if (yych <= 0xDF) - goto yy1075; - if (yych <= 0xE0) - goto yy1076; - goto yy1077; - } + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy855; + if (yych <= 0xEF) + goto yy844; + goto yy852; } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy1081; - if (yych <= 0xEF) - goto yy1077; - goto yy1078; - } else { - if (yych <= 0xF3) - goto yy1079; - if (yych <= 0xF4) - goto yy1080; - goto yy951; - } + if (yych <= 0xF3) + goto yy853; + if (yych <= 0xF4) + goto yy854; + goto yy845; } } - yy1016: - yyaccept = 0; - marker = ++p; + yy849: + ++p; yych = *p; - if (yybm[0 + yych] & 64) { - goto yy1016; + if (yybm[0 + yych] & 128) { + goto yy849; } - if (yych <= '>') { - if (yych <= '\r') { - if (yych <= 0x08) { - if (yych <= 0x00) - goto yy951; - goto yy1029; - } else { - if (yych <= '\n') - goto yy951; - if (yych <= '\f') - goto yy1029; - goto yy951; - } + if (yych <= 0xDF) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy845; + if (yych == '\n') + goto yy845; + goto yy847; } else { - if (yych <= '(') { - if (yych <= 0x1F) - goto yy1029; - if (yych <= ' ') - goto yy951; - goto yy1027; - } else { - if (yych <= ')') - goto yy1029; - if (yych <= '<') - goto yy980; - } + if (yych <= '>') + goto yy856; + if (yych <= 0x7F) + goto yy847; + if (yych <= 0xC1) + goto yy845; + goto yy846; } } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\\') - goto yy1015; - goto yy951; - } else { - if (yych <= 0xDF) - goto yy1020; - if (yych <= 0xE0) - goto yy1021; - goto yy1022; - } + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy851; + if (yych == 0xED) + goto yy855; + goto yy844; } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy1026; - if (yych <= 0xEF) - goto yy1022; - goto yy1023; - } else { - if (yych <= 0xF3) - goto yy1024; - if (yych <= 0xF4) - goto yy1025; - goto yy951; - } + if (yych <= 0xF0) + goto yy852; + if (yych <= 0xF3) + goto yy853; + if (yych <= 0xF4) + goto yy854; + goto yy845; } } - yy1018: - yyaccept = 2; - yych = *(marker = ++p); - if (yych <= ')') { - if (yych <= ' ') - goto yy1019; - if (yych <= '(') - goto yy981; - } else { - if (yych <= 0x7F) - goto yy981; - if (yych <= 0xC1) - goto yy1019; - if (yych <= 0xF4) - goto yy981; - } - yy1019 : { return (bufsize_t)(p - start); } - yy1020: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy1016; - goto yy958; - yy1021: + yy851: ++p; yych = *p; if (yych <= 0x9F) - goto yy958; + goto yy845; if (yych <= 0xBF) - goto yy1020; - goto yy958; - yy1022: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy1020; - goto yy958; - yy1023: + goto yy846; + goto yy845; + yy852: ++p; yych = *p; if (yych <= 0x8F) - goto yy958; + goto yy845; if (yych <= 0xBF) - goto yy1022; - goto yy958; - yy1024: + goto yy844; + goto yy845; + yy853: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy845; if (yych <= 0xBF) - goto yy1022; - goto yy958; - yy1025: + goto yy844; + goto yy845; + yy854: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy845; if (yych <= 0x8F) - goto yy1022; - goto yy958; - yy1026: + goto yy844; + goto yy845; + yy855: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy845; if (yych <= 0x9F) - goto yy1020; - goto yy958; - yy1027: - ++p; + goto yy846; + goto yy845; + yy856: + yyaccept = 1; + marker = ++p; yych = *p; - if (yych <= '=') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) - goto yy958; - if (yych >= '\t') - goto yy958; - } else { - if (yych == '\r') - goto yy958; - } + if (yybm[0 + yych] & 64) { + goto yy847; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy857; + if (yych <= '?') + goto yy849; } else { - if (yych <= '(') { - if (yych <= ' ') - goto yy958; - if (yych <= '\'') - goto yy1027; - } else { - if (yych <= ')') - goto yy1016; - if (yych == '<') - goto yy971; - goto yy1027; - } + if (yych <= 0xDF) + goto yy846; + if (yych <= 0xE0) + goto yy851; + goto yy844; } } else { - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= '>') - goto yy1042; - if (yych <= '[') - goto yy1027; - goto yy1043; - } else { - if (yych <= 0x7F) - goto yy1027; - if (yych <= 0xC1) - goto yy958; - if (yych <= 0xDF) - goto yy1045; - goto yy1046; - } + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy855; + if (yych <= 0xEF) + goto yy844; + goto yy852; } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy1051; - goto yy1047; - } else { - if (yych <= 0xF0) - goto yy1048; - if (yych <= 0xF3) - goto yy1049; - if (yych <= 0xF4) - goto yy1050; - goto yy958; - } + if (yych <= 0xF3) + goto yy853; + if (yych <= 0xF4) + goto yy854; } } - yy1029: - ++p; + yy857 : { return (bufsize_t)(p - start); } + } +} + +// Try to match an HTML block end line of type 4 +bufsize_t _scan_html_block_end_4(const unsigned char *p) { + const unsigned char *marker = NULL; + const unsigned char *start = p; + + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; yych = *p; - if (yybm[0 + yych] & 128) { - goto yy1029; - } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= '<') - goto yy958; - if (yych >= '?') - goto yy1032; + if (yych <= 0xDF) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy860; + if (yych != '\n') + goto yy862; } else { - if (yych <= 0xC1) - goto yy958; - if (yych <= 0xDF) - goto yy1034; - goto yy1035; + if (yych <= '>') + goto yy863; + if (yych <= 0x7F) + goto yy862; + if (yych >= 0xC2) + goto yy865; } } else { if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy866; if (yych == 0xED) - goto yy1040; - goto yy1036; + goto yy868; + goto yy867; } else { if (yych <= 0xF0) - goto yy1037; + goto yy869; if (yych <= 0xF3) - goto yy1038; + goto yy870; if (yych <= 0xF4) - goto yy1039; - goto yy958; + goto yy871; } } - yy1031: - yych = *++p; - goto yy1019; - yy1032: + yy860: ++p; - yych = *p; - if (yych <= '\\') { - if (yych <= '\r') { - if (yych <= 0x08) { - if (yych <= 0x00) - goto yy958; - goto yy1029; - } else { - if (yych <= '\n') - goto yy958; - if (yych <= '\f') - goto yy1029; - goto yy958; - } - } else { - if (yych <= '=') { - if (yych == ' ') - goto yy958; - goto yy1029; - } else { - if (yych <= '>') - goto yy1041; - if (yych <= '[') - goto yy1029; - goto yy1032; - } - } + yy861 : { return 0; } + yy862: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy861; + if (yych <= '\t') + goto yy876; + goto yy861; } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x7F) - goto yy1029; - goto yy958; - } else { - if (yych <= 0xDF) - goto yy1034; - if (yych <= 0xE0) - goto yy1035; - goto yy1036; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy1040; - if (yych <= 0xEF) - goto yy1036; - goto yy1037; - } else { - if (yych <= 0xF3) - goto yy1038; - if (yych <= 0xF4) - goto yy1039; - goto yy958; - } - } + if (yych <= 0x7F) + goto yy876; + if (yych <= 0xC1) + goto yy861; + if (yych <= 0xF4) + goto yy876; + goto yy861; } - yy1034: - ++p; - yych = *p; + yy863: + yyaccept = 1; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy864; + if (yych <= '\t') + goto yy876; + } else { + if (yych <= 0x7F) + goto yy876; + if (yych <= 0xC1) + goto yy864; + if (yych <= 0xF4) + goto yy876; + } + yy864 : { return (bufsize_t)(p - start); } + yy865: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; + goto yy861; if (yych <= 0xBF) - goto yy1029; - goto yy958; - yy1035: - ++p; - yych = *p; + goto yy875; + goto yy861; + yy866: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x9F) - goto yy958; + goto yy861; if (yych <= 0xBF) - goto yy1034; - goto yy958; - yy1036: - ++p; - yych = *p; + goto yy874; + goto yy861; + yy867: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; + goto yy861; if (yych <= 0xBF) - goto yy1034; - goto yy958; - yy1037: - ++p; - yych = *p; + goto yy874; + goto yy861; + yy868: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy861; + if (yych <= 0x9F) + goto yy874; + goto yy861; + yy869: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x8F) - goto yy958; + goto yy861; if (yych <= 0xBF) - goto yy1036; - goto yy958; - yy1038: - ++p; - yych = *p; + goto yy872; + goto yy861; + yy870: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; + goto yy861; if (yych <= 0xBF) - goto yy1036; - goto yy958; - yy1039: + goto yy872; + goto yy861; + yy871: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy861; + if (yych >= 0x90) + goto yy861; + yy872: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; - if (yych <= 0x8F) - goto yy1036; - goto yy958; - yy1040: + goto yy873; + if (yych <= 0xBF) + goto yy874; + yy873: + p = marker; + if (yyaccept == 0) { + goto yy861; + } else { + goto yy864; + } + yy874: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; - if (yych <= 0x9F) - goto yy1034; - goto yy958; - yy1041: - yyaccept = 2; - marker = ++p; + goto yy873; + if (yych >= 0xC0) + goto yy873; + yy875: + ++p; yych = *p; - if (yybm[0 + yych] & 128) { - goto yy1029; + yy876: + if (yybm[0 + yych] & 64) { + goto yy875; } - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= '<') - goto yy1019; - if (yych <= '>') - goto yy1031; - goto yy1032; + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy873; + if (yych >= '?') + goto yy873; } else { - if (yych <= 0xC1) - goto yy1019; if (yych <= 0xDF) - goto yy1034; - goto yy1035; + goto yy874; + if (yych <= 0xE0) + goto yy879; + goto yy872; } } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy1040; - goto yy1036; + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy883; + if (yych <= 0xEF) + goto yy872; + goto yy880; } else { - if (yych <= 0xF0) - goto yy1037; if (yych <= 0xF3) - goto yy1038; + goto yy881; if (yych <= 0xF4) - goto yy1039; - goto yy1019; - } - } - yy1042: - yyaccept = 2; - yych = *(marker = ++p); - if (yych <= '(') { - if (yych <= ' ') - goto yy1019; - if (yych <= '\'') - goto yy972; - goto yy1019; - } else { - if (yych <= 0x7F) - goto yy972; - if (yych <= 0xC1) - goto yy1019; - if (yych <= 0xF4) - goto yy972; - goto yy1019; + goto yy882; + goto yy873; + } } - yy1043: - ++p; + yy877: + yyaccept = 1; + marker = ++p; yych = *p; - if (yych <= '[') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) - goto yy958; - if (yych <= 0x08) - goto yy1029; - goto yy958; - } else { - if (yych == '\r') - goto yy958; - goto yy1029; - } + if (yybm[0 + yych] & 64) { + goto yy875; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy864; + if (yych <= '>') + goto yy877; + goto yy864; } else { - if (yych <= ')') { - if (yych <= ' ') - goto yy958; - if (yych <= '(') - goto yy1027; - goto yy1052; - } else { - if (yych == '>') - goto yy1054; - goto yy1027; - } + if (yych <= 0xDF) + goto yy874; + if (yych >= 0xE1) + goto yy872; } } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\\') - goto yy1043; - if (yych <= 0x7F) - goto yy1027; - goto yy958; - } else { - if (yych <= 0xDF) - goto yy1045; - if (yych <= 0xE0) - goto yy1046; - goto yy1047; - } + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy883; + if (yych <= 0xEF) + goto yy872; + goto yy880; } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy1051; - if (yych <= 0xEF) - goto yy1047; - goto yy1048; - } else { - if (yych <= 0xF3) - goto yy1049; - if (yych <= 0xF4) - goto yy1050; - goto yy958; - } + if (yych <= 0xF3) + goto yy881; + if (yych <= 0xF4) + goto yy882; + goto yy864; } } - yy1045: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy1027; - goto yy958; - yy1046: + yy879: ++p; yych = *p; if (yych <= 0x9F) - goto yy958; - if (yych <= 0xBF) - goto yy1045; - goto yy958; - yy1047: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; + goto yy873; if (yych <= 0xBF) - goto yy1045; - goto yy958; - yy1048: + goto yy874; + goto yy873; + yy880: ++p; yych = *p; if (yych <= 0x8F) - goto yy958; + goto yy873; if (yych <= 0xBF) - goto yy1047; - goto yy958; - yy1049: + goto yy872; + goto yy873; + yy881: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy873; if (yych <= 0xBF) - goto yy1047; - goto yy958; - yy1050: + goto yy872; + goto yy873; + yy882: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy873; if (yych <= 0x8F) - goto yy1047; - goto yy958; - yy1051: + goto yy872; + goto yy873; + yy883: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy873; if (yych <= 0x9F) - goto yy1045; - goto yy958; - yy1052: - yyaccept = 0; - marker = ++p; + goto yy874; + goto yy873; + } +} + +// Try to match an HTML block end line of type 5 +bufsize_t _scan_html_block_end_5(const unsigned char *p) { + const unsigned char *marker = NULL; + const unsigned char *start = p; + + { + unsigned char yych; + unsigned int yyaccept = 0; + static const unsigned char yybm[] = { + 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }; yych = *p; - if (yych <= '=') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) - goto yy951; - if (yych <= 0x08) - goto yy1029; - goto yy951; - } else { - if (yych == '\r') - goto yy951; - goto yy1029; - } + if (yych <= 0xDF) { + if (yych <= '\\') { + if (yych <= 0x00) + goto yy886; + if (yych != '\n') + goto yy888; } else { - if (yych <= '(') { - if (yych <= ' ') - goto yy951; - if (yych <= '\'') - goto yy1052; - goto yy1027; - } else { - if (yych <= ')') - goto yy1016; - if (yych == '<') - goto yy997; - goto yy1052; - } + if (yych <= ']') + goto yy889; + if (yych <= 0x7F) + goto yy888; + if (yych >= 0xC2) + goto yy890; } } else { - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= '>') - goto yy1055; - if (yych <= '[') - goto yy1052; - goto yy1056; - } else { - if (yych <= 0x7F) - goto yy1052; - if (yych <= 0xC1) - goto yy951; - if (yych <= 0xDF) - goto yy1057; - goto yy1058; - } + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy891; + if (yych == 0xED) + goto yy893; + goto yy892; } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy1063; - goto yy1059; - } else { - if (yych <= 0xF0) - goto yy1060; - if (yych <= 0xF3) - goto yy1061; - if (yych <= 0xF4) - goto yy1062; - goto yy951; - } + if (yych <= 0xF0) + goto yy894; + if (yych <= 0xF3) + goto yy895; + if (yych <= 0xF4) + goto yy896; } } - yy1054: - yyaccept = 2; - marker = ++p; - yych = *p; - if (yych <= '=') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) - goto yy1019; - if (yych <= 0x08) - goto yy1029; - goto yy1019; - } else { - if (yych == '\r') - goto yy1019; - goto yy1029; - } - } else { - if (yych <= '(') { - if (yych <= ' ') - goto yy1019; - if (yych <= '\'') - goto yy1027; - goto yy1029; - } else { - if (yych <= ')') - goto yy1016; - if (yych == '<') - goto yy971; - goto yy1027; - } - } + yy886: + ++p; + yy887 : { return 0; } + yy888: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= '\n') { + if (yych <= 0x00) + goto yy887; + if (yych <= '\t') + goto yy901; + goto yy887; } else { - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= '>') - goto yy1042; - if (yych <= '[') - goto yy1027; - goto yy1043; - } else { - if (yych <= 0x7F) - goto yy1027; - if (yych <= 0xC1) - goto yy1019; - if (yych <= 0xDF) - goto yy1045; - goto yy1046; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy1051; - goto yy1047; - } else { - if (yych <= 0xF0) - goto yy1048; - if (yych <= 0xF3) - goto yy1049; - if (yych <= 0xF4) - goto yy1050; - goto yy1019; - } - } + if (yych <= 0x7F) + goto yy901; + if (yych <= 0xC1) + goto yy887; + if (yych <= 0xF4) + goto yy901; + goto yy887; } - yy1055: - yyaccept = 2; - yych = *(marker = ++p); - if (yych <= ' ') - goto yy1019; - if (yych <= 0x7F) - goto yy998; - if (yych <= 0xC1) - goto yy1019; - if (yych <= 0xF4) - goto yy998; - goto yy1019; - yy1056: + yy889: yyaccept = 0; - marker = ++p; - yych = *p; - if (yych <= '\\') { - if (yych <= '\r') { - if (yych <= 0x08) { - if (yych <= 0x00) - goto yy980; - goto yy1016; - } else { - if (yych <= '\n') - goto yy951; - if (yych <= '\f') - goto yy1029; - goto yy951; - } - } else { - if (yych <= '=') { - if (yych <= 0x1F) - goto yy1016; - if (yych <= ' ') - goto yy951; - goto yy1052; - } else { - if (yych <= '>') - goto yy1064; - if (yych <= '[') - goto yy1052; - goto yy1065; - } - } + yych = *(marker = ++p); + if (yybm[0 + yych] & 128) { + goto yy908; + } + if (yych <= '\n') { + if (yych <= 0x00) + goto yy887; + if (yych <= '\t') + goto yy901; + goto yy887; } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x7F) - goto yy1052; - goto yy951; - } else { - if (yych <= 0xDF) - goto yy1066; - if (yych <= 0xE0) - goto yy1067; - goto yy1068; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy1072; - if (yych <= 0xEF) - goto yy1068; - goto yy1069; - } else { - if (yych <= 0xF3) - goto yy1070; - if (yych <= 0xF4) - goto yy1071; - goto yy951; - } - } + if (yych <= 0x7F) + goto yy901; + if (yych <= 0xC1) + goto yy887; + if (yych <= 0xF4) + goto yy901; + goto yy887; } - yy1057: - ++p; - yych = *p; + yy890: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy887; + if (yych <= 0xBF) + goto yy900; + goto yy887; + yy891: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x9F) + goto yy887; + if (yych <= 0xBF) + goto yy899; + goto yy887; + yy892: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy887; + if (yych <= 0xBF) + goto yy899; + goto yy887; + yy893: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy1052; - goto yy958; - yy1058: - ++p; - yych = *p; + goto yy887; if (yych <= 0x9F) - goto yy958; + goto yy899; + goto yy887; + yy894: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x8F) + goto yy887; if (yych <= 0xBF) - goto yy1057; - goto yy958; - yy1059: - ++p; - yych = *p; + goto yy897; + goto yy887; + yy895: + yyaccept = 0; + yych = *(marker = ++p); if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy1057; - goto yy958; - yy1060: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy958; + goto yy887; if (yych <= 0xBF) - goto yy1059; - goto yy958; - yy1061: + goto yy897; + goto yy887; + yy896: + yyaccept = 0; + yych = *(marker = ++p); + if (yych <= 0x7F) + goto yy887; + if (yych >= 0x90) + goto yy887; + yy897: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy898; if (yych <= 0xBF) - goto yy1059; - goto yy958; - yy1062: + goto yy899; + yy898: + p = marker; + if (yyaccept == 0) { + goto yy887; + } else { + goto yy911; + } + yy899: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; - if (yych <= 0x8F) - goto yy1059; - goto yy958; - yy1063: + goto yy898; + if (yych >= 0xC0) + goto yy898; + yy900: ++p; yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x9F) - goto yy1057; - goto yy958; - yy1064: - yyaccept = 2; - marker = ++p; - yych = *p; - if (yych <= '=') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) - goto yy1019; - if (yych <= 0x08) - goto yy1029; - goto yy1019; - } else { - if (yych == '\r') - goto yy1019; - goto yy1029; - } + yy901: + if (yybm[0 + yych] & 64) { + goto yy900; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy898; + if (yych >= '^') + goto yy898; } else { - if (yych <= '(') { - if (yych <= ' ') - goto yy1019; - if (yych <= '\'') - goto yy1052; - goto yy1027; - } else { - if (yych <= ')') - goto yy1016; - if (yych == '<') - goto yy997; - goto yy1052; - } + if (yych <= 0xDF) + goto yy899; + if (yych <= 0xE0) + goto yy903; + goto yy897; } } else { - if (yych <= 0xE0) { - if (yych <= '\\') { - if (yych <= '>') - goto yy1055; - if (yych <= '[') - goto yy1052; - goto yy1056; - } else { - if (yych <= 0x7F) - goto yy1052; - if (yych <= 0xC1) - goto yy1019; - if (yych <= 0xDF) - goto yy1057; - goto yy1058; - } + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy907; + if (yych <= 0xEF) + goto yy897; + goto yy904; } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy1063; - goto yy1059; - } else { - if (yych <= 0xF0) - goto yy1060; - if (yych <= 0xF3) - goto yy1061; - if (yych <= 0xF4) - goto yy1062; - goto yy1019; - } + if (yych <= 0xF3) + goto yy905; + if (yych <= 0xF4) + goto yy906; + goto yy898; } } - yy1065: - yyaccept = 0; - marker = ++p; + yy902: + ++p; yych = *p; - if (yych <= '[') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) - goto yy951; - if (yych <= 0x08) - goto yy1029; - goto yy951; - } else { - if (yych == '\r') - goto yy951; - goto yy1029; - } + if (yybm[0 + yych] & 64) { + goto yy900; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy898; + if (yych <= ']') + goto yy908; + goto yy898; } else { - if (yych <= '(') { - if (yych <= ' ') - goto yy951; - if (yych <= '\'') - goto yy1052; - goto yy1027; - } else { - if (yych == '>') - goto yy1064; - goto yy1052; - } + if (yych <= 0xDF) + goto yy899; + if (yych >= 0xE1) + goto yy897; } } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\\') - goto yy1056; - if (yych <= 0x7F) - goto yy1052; - goto yy951; - } else { - if (yych <= 0xDF) - goto yy1057; - if (yych <= 0xE0) - goto yy1058; - goto yy1059; - } + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy907; + if (yych <= 0xEF) + goto yy897; + goto yy904; } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy1063; - if (yych <= 0xEF) - goto yy1059; - goto yy1060; - } else { - if (yych <= 0xF3) - goto yy1061; - if (yych <= 0xF4) - goto yy1062; - goto yy951; - } + if (yych <= 0xF3) + goto yy905; + if (yych <= 0xF4) + goto yy906; + goto yy898; } } - yy1066: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy1052; - goto yy958; - yy1067: + yy903: ++p; yych = *p; if (yych <= 0x9F) - goto yy958; - if (yych <= 0xBF) - goto yy1066; - goto yy958; - yy1068: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; + goto yy898; if (yych <= 0xBF) - goto yy1066; - goto yy958; - yy1069: + goto yy899; + goto yy898; + yy904: ++p; yych = *p; if (yych <= 0x8F) - goto yy958; + goto yy898; if (yych <= 0xBF) - goto yy1068; - goto yy958; - yy1070: + goto yy897; + goto yy898; + yy905: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy898; if (yych <= 0xBF) - goto yy1068; - goto yy958; - yy1071: + goto yy897; + goto yy898; + yy906: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy898; if (yych <= 0x8F) - goto yy1068; - goto yy958; - yy1072: + goto yy897; + goto yy898; + yy907: ++p; yych = *p; if (yych <= 0x7F) - goto yy958; + goto yy898; if (yych <= 0x9F) - goto yy1066; - goto yy958; - yy1073: - yyaccept = 2; - marker = ++p; + goto yy899; + goto yy898; + yy908: + ++p; yych = *p; - if (yybm[0 + yych] & 64) { - goto yy1016; + if (yybm[0 + yych] & 128) { + goto yy908; } - if (yych <= '>') { - if (yych <= '\r') { - if (yych <= 0x08) { - if (yych <= 0x00) - goto yy1019; - goto yy1029; - } else { - if (yych <= '\n') - goto yy1019; - if (yych <= '\f') - goto yy1029; - goto yy1019; - } + if (yych <= 0xDF) { + if (yych <= '=') { + if (yych <= 0x00) + goto yy898; + if (yych == '\n') + goto yy898; + goto yy900; } else { - if (yych <= '(') { - if (yych <= 0x1F) - goto yy1029; - if (yych <= ' ') - goto yy1019; - goto yy1027; - } else { - if (yych <= ')') - goto yy1029; - if (yych <= '<') - goto yy980; - goto yy1018; - } + if (yych <= '>') + goto yy910; + if (yych <= 0x7F) + goto yy900; + if (yych <= 0xC1) + goto yy898; + goto yy899; } } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\\') - goto yy1015; - goto yy1019; - } else { - if (yych <= 0xDF) - goto yy1020; - if (yych <= 0xE0) - goto yy1021; - goto yy1022; - } + if (yych <= 0xEF) { + if (yych <= 0xE0) + goto yy903; + if (yych == 0xED) + goto yy907; + goto yy897; } else { - if (yych <= 0xF0) { - if (yych <= 0xED) - goto yy1026; - if (yych <= 0xEF) - goto yy1022; - goto yy1023; - } else { - if (yych <= 0xF3) - goto yy1024; - if (yych <= 0xF4) - goto yy1025; - goto yy1019; - } + if (yych <= 0xF0) + goto yy904; + if (yych <= 0xF3) + goto yy905; + if (yych <= 0xF4) + goto yy906; + goto yy898; } } - yy1074: - yyaccept = 0; + yy910: + yyaccept = 1; marker = ++p; yych = *p; - if (yych <= '>') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) - goto yy951; - if (yych <= 0x08) - goto yy1029; - goto yy951; - } else { - if (yych == '\r') - goto yy951; - goto yy1029; - } + if (yybm[0 + yych] & 64) { + goto yy900; + } + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\n') + goto yy911; + if (yych <= ']') + goto yy902; } else { - if (yych <= '(') { - if (yych <= ' ') - goto yy951; - if (yych <= '\'') - goto yy1016; - goto yy1027; - } else { - if (yych <= ')') - goto yy1029; - if (yych <= '=') - goto yy1016; - goto yy1073; - } + if (yych <= 0xDF) + goto yy899; + if (yych <= 0xE0) + goto yy903; + goto yy897; } } else { - if (yych <= 0xE0) { - if (yych <= 0x7F) { - if (yych == '\\') - goto yy1015; - goto yy1016; - } else { - if (yych <= 0xC1) - goto yy951; - if (yych <= 0xDF) - goto yy1020; - goto yy1021; - } - } else { - if (yych <= 0xEF) { - if (yych == 0xED) - goto yy1026; - goto yy1022; - } else { - if (yych <= 0xF0) - goto yy1023; - if (yych <= 0xF3) - goto yy1024; - if (yych <= 0xF4) - goto yy1025; - goto yy951; - } + if (yych <= 0xF0) { + if (yych <= 0xED) + goto yy907; + if (yych <= 0xEF) + goto yy897; + goto yy904; + } else { + if (yych <= 0xF3) + goto yy905; + if (yych <= 0xF4) + goto yy906; } } - yy1075: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy1016; - goto yy958; - yy1076: - ++p; - yych = *p; - if (yych <= 0x9F) - goto yy958; - if (yych <= 0xBF) - goto yy1075; - goto yy958; - yy1077: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy1075; - goto yy958; - yy1078: - ++p; - yych = *p; - if (yych <= 0x8F) - goto yy958; - if (yych <= 0xBF) - goto yy1077; - goto yy958; - yy1079: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0xBF) - goto yy1077; - goto yy958; - yy1080: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x8F) - goto yy1077; - goto yy958; - yy1081: - ++p; - yych = *p; - if (yych <= 0x7F) - goto yy958; - if (yych <= 0x9F) - goto yy1075; - goto yy958; + yy911 : { return (bufsize_t)(p - start); } } } @@ -17474,644 +14904,561 @@ bufsize_t _scan_link_title(const unsigned char *p) { 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 <= '"') { - if (yych == '\n') - goto yy1084; - if (yych <= '!') - goto yy1088; - goto yy1085; - } else { - if (yych <= '\'') { - if (yych <= '&') - goto yy1088; - goto yy1086; - } else { - if (yych <= '(') - goto yy1087; - if (yych <= 0x7F) - goto yy1088; - } - } + yych = *p; + if (yych <= '&') { + if (yych == '"') + goto yy916; } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy1089; - if (yych <= 0xE0) - goto yy1091; - if (yych <= 0xEC) - goto yy1092; - goto yy1096; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy1092; - goto yy1093; - } else { - if (yych <= 0xF3) - goto yy1094; - if (yych <= 0xF4) - goto yy1095; - } - } + if (yych <= '\'') + goto yy917; + if (yych <= '(') + goto yy918; } - yy1084 : { return 0; } - yy1085: + ++p; + yy915 : { return 0; } + yy916: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x00) - goto yy1084; + goto yy915; if (yych <= 0x7F) - goto yy1128; + goto yy951; if (yych <= 0xC1) - goto yy1084; + goto yy915; if (yych <= 0xF4) - goto yy1128; - goto yy1084; - yy1086: + goto yy951; + goto yy915; + yy917: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x00) - goto yy1084; + goto yy915; if (yych <= 0x7F) - goto yy1114; + goto yy937; if (yych <= 0xC1) - goto yy1084; + goto yy915; if (yych <= 0xF4) - goto yy1114; - goto yy1084; - yy1087: + goto yy937; + goto yy915; + yy918: yyaccept = 0; yych = *(marker = ++p); if (yych <= 0x00) - goto yy1084; + goto yy915; if (yych <= 0x7F) - goto yy1100; + goto yy923; if (yych <= 0xC1) - goto yy1084; + goto yy915; if (yych <= 0xF4) - goto yy1100; - goto yy1084; - yy1088: - yych = *++p; - goto yy1084; - yy1089: - yych = *++p; - if (yych <= 0x7F) - goto yy1090; - if (yych <= 0xBF) - goto yy1088; - yy1090: - p = marker; - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy1084; - } else { - goto yy1109; - } - } else { - if (yyaccept == 2) { - goto yy1123; - } else { - goto yy1137; - } - } - yy1091: - yych = *++p; - if (yych <= 0x9F) - goto yy1090; - if (yych <= 0xBF) - goto yy1089; - goto yy1090; - yy1092: - yych = *++p; - if (yych <= 0x7F) - goto yy1090; - if (yych <= 0xBF) - goto yy1089; - goto yy1090; - yy1093: - yych = *++p; - if (yych <= 0x8F) - goto yy1090; - if (yych <= 0xBF) - goto yy1092; - goto yy1090; - yy1094: - yych = *++p; - if (yych <= 0x7F) - goto yy1090; - if (yych <= 0xBF) - goto yy1092; - goto yy1090; - yy1095: - yych = *++p; - if (yych <= 0x7F) - goto yy1090; - if (yych <= 0x8F) - goto yy1092; - goto yy1090; - yy1096: - yych = *++p; - if (yych <= 0x7F) - goto yy1090; - if (yych <= 0x9F) - goto yy1089; - goto yy1090; - yy1097: + goto yy923; + goto yy915; + yy919: ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy1099; + goto yy922; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy1090; + goto yy921; if (yych <= ')') - goto yy1110; - goto yy1097; + goto yy933; + goto yy919; } else { if (yych <= 0xC1) - goto yy1090; + goto yy921; if (yych <= 0xDF) - goto yy1101; - goto yy1102; + goto yy924; + goto yy925; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1107; - goto yy1103; + goto yy930; + goto yy926; } else { if (yych <= 0xF0) - goto yy1104; + goto yy927; if (yych <= 0xF3) - goto yy1105; + goto yy928; if (yych <= 0xF4) - goto yy1106; - goto yy1090; + goto yy929; + } + } + yy921: + p = marker; + if (yyaccept <= 1) { + if (yyaccept == 0) { + goto yy915; + } else { + goto yy932; + } + } else { + if (yyaccept == 2) { + goto yy946; + } else { + goto yy960; } } - yy1099: + yy922: ++p; yych = *p; - yy1100: + yy923: if (yybm[0 + yych] & 32) { - goto yy1099; + goto yy922; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy1090; + goto yy921; if (yych <= ')') - goto yy1108; - goto yy1097; + goto yy931; + goto yy919; } else { if (yych <= 0xC1) - goto yy1090; + goto yy921; if (yych >= 0xE0) - goto yy1102; + goto yy925; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1107; - goto yy1103; + goto yy930; + goto yy926; } else { if (yych <= 0xF0) - goto yy1104; + goto yy927; if (yych <= 0xF3) - goto yy1105; + goto yy928; if (yych <= 0xF4) - goto yy1106; - goto yy1090; + goto yy929; + goto yy921; } } - yy1101: + yy924: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1099; - goto yy1090; - yy1102: + goto yy922; + goto yy921; + yy925: ++p; yych = *p; if (yych <= 0x9F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1101; - goto yy1090; - yy1103: + goto yy924; + goto yy921; + yy926: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1101; - goto yy1090; - yy1104: + goto yy924; + goto yy921; + yy927: ++p; yych = *p; if (yych <= 0x8F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1103; - goto yy1090; - yy1105: + goto yy926; + goto yy921; + yy928: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1103; - goto yy1090; - yy1106: + goto yy926; + goto yy921; + yy929: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0x8F) - goto yy1103; - goto yy1090; - yy1107: + goto yy926; + goto yy921; + yy930: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0x9F) - goto yy1101; - goto yy1090; - yy1108: + goto yy924; + goto yy921; + yy931: ++p; - yy1109 : { return (bufsize_t)(p - start); } - yy1110: + yy932 : { return (bufsize_t)(p - start); } + yy933: yyaccept = 1; marker = ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy1099; + goto yy922; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy1109; + goto yy932; if (yych <= ')') - goto yy1108; - goto yy1097; + goto yy931; + goto yy919; } else { if (yych <= 0xC1) - goto yy1109; + goto yy932; if (yych <= 0xDF) - goto yy1101; - goto yy1102; + goto yy924; + goto yy925; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1107; - goto yy1103; + goto yy930; + goto yy926; } else { if (yych <= 0xF0) - goto yy1104; + goto yy927; if (yych <= 0xF3) - goto yy1105; + goto yy928; if (yych <= 0xF4) - goto yy1106; - goto yy1109; + goto yy929; + goto yy932; } } - yy1111: + yy934: ++p; yych = *p; if (yybm[0 + yych] & 64) { - goto yy1113; + goto yy936; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy1090; + goto yy921; if (yych <= '\'') - goto yy1124; - goto yy1111; + goto yy947; + goto yy934; } else { if (yych <= 0xC1) - goto yy1090; + goto yy921; if (yych <= 0xDF) - goto yy1115; - goto yy1116; + goto yy938; + goto yy939; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1121; - goto yy1117; + goto yy944; + goto yy940; } else { if (yych <= 0xF0) - goto yy1118; + goto yy941; if (yych <= 0xF3) - goto yy1119; + goto yy942; if (yych <= 0xF4) - goto yy1120; - goto yy1090; + goto yy943; + goto yy921; } } - yy1113: + yy936: ++p; yych = *p; - yy1114: + yy937: if (yybm[0 + yych] & 64) { - goto yy1113; + goto yy936; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy1090; + goto yy921; if (yych <= '\'') - goto yy1122; - goto yy1111; + goto yy945; + goto yy934; } else { if (yych <= 0xC1) - goto yy1090; + goto yy921; if (yych >= 0xE0) - goto yy1116; + goto yy939; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1121; - goto yy1117; + goto yy944; + goto yy940; } else { if (yych <= 0xF0) - goto yy1118; + goto yy941; if (yych <= 0xF3) - goto yy1119; + goto yy942; if (yych <= 0xF4) - goto yy1120; - goto yy1090; + goto yy943; + goto yy921; } } - yy1115: + yy938: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1113; - goto yy1090; - yy1116: + goto yy936; + goto yy921; + yy939: ++p; yych = *p; if (yych <= 0x9F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1115; - goto yy1090; - yy1117: + goto yy938; + goto yy921; + yy940: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1115; - goto yy1090; - yy1118: + goto yy938; + goto yy921; + yy941: ++p; yych = *p; if (yych <= 0x8F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1117; - goto yy1090; - yy1119: + goto yy940; + goto yy921; + yy942: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1117; - goto yy1090; - yy1120: + goto yy940; + goto yy921; + yy943: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0x8F) - goto yy1117; - goto yy1090; - yy1121: + goto yy940; + goto yy921; + yy944: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0x9F) - goto yy1115; - goto yy1090; - yy1122: + goto yy938; + goto yy921; + yy945: ++p; - yy1123 : { return (bufsize_t)(p - start); } - yy1124: + yy946 : { return (bufsize_t)(p - start); } + yy947: yyaccept = 2; marker = ++p; yych = *p; if (yybm[0 + yych] & 64) { - goto yy1113; + goto yy936; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy1123; + goto yy946; if (yych <= '\'') - goto yy1122; - goto yy1111; + goto yy945; + goto yy934; } else { if (yych <= 0xC1) - goto yy1123; + goto yy946; if (yych <= 0xDF) - goto yy1115; - goto yy1116; + goto yy938; + goto yy939; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1121; - goto yy1117; + goto yy944; + goto yy940; } else { if (yych <= 0xF0) - goto yy1118; + goto yy941; if (yych <= 0xF3) - goto yy1119; + goto yy942; if (yych <= 0xF4) - goto yy1120; - goto yy1123; + goto yy943; + goto yy946; } } - yy1125: + yy948: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1127; + goto yy950; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy1090; + goto yy921; if (yych <= '"') - goto yy1138; - goto yy1125; + goto yy961; + goto yy948; } else { if (yych <= 0xC1) - goto yy1090; + goto yy921; if (yych <= 0xDF) - goto yy1129; - goto yy1130; + goto yy952; + goto yy953; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1135; - goto yy1131; + goto yy958; + goto yy954; } else { if (yych <= 0xF0) - goto yy1132; + goto yy955; if (yych <= 0xF3) - goto yy1133; + goto yy956; if (yych <= 0xF4) - goto yy1134; - goto yy1090; + goto yy957; + goto yy921; } } - yy1127: + yy950: ++p; yych = *p; - yy1128: + yy951: if (yybm[0 + yych] & 128) { - goto yy1127; + goto yy950; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy1090; + goto yy921; if (yych <= '"') - goto yy1136; - goto yy1125; + goto yy959; + goto yy948; } else { if (yych <= 0xC1) - goto yy1090; + goto yy921; if (yych >= 0xE0) - goto yy1130; + goto yy953; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1135; - goto yy1131; + goto yy958; + goto yy954; } else { if (yych <= 0xF0) - goto yy1132; + goto yy955; if (yych <= 0xF3) - goto yy1133; + goto yy956; if (yych <= 0xF4) - goto yy1134; - goto yy1090; + goto yy957; + goto yy921; } } - yy1129: + yy952: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1127; - goto yy1090; - yy1130: + goto yy950; + goto yy921; + yy953: ++p; yych = *p; if (yych <= 0x9F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1129; - goto yy1090; - yy1131: + goto yy952; + goto yy921; + yy954: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1129; - goto yy1090; - yy1132: + goto yy952; + goto yy921; + yy955: ++p; yych = *p; if (yych <= 0x8F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1131; - goto yy1090; - yy1133: + goto yy954; + goto yy921; + yy956: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0xBF) - goto yy1131; - goto yy1090; - yy1134: + goto yy954; + goto yy921; + yy957: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0x8F) - goto yy1131; - goto yy1090; - yy1135: + goto yy954; + goto yy921; + yy958: ++p; yych = *p; if (yych <= 0x7F) - goto yy1090; + goto yy921; if (yych <= 0x9F) - goto yy1129; - goto yy1090; - yy1136: + goto yy952; + goto yy921; + yy959: ++p; - yy1137 : { return (bufsize_t)(p - start); } - yy1138: + yy960 : { return (bufsize_t)(p - start); } + yy961: yyaccept = 3; marker = ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1127; + goto yy950; } if (yych <= 0xE0) { if (yych <= '\\') { if (yych <= 0x00) - goto yy1137; + goto yy960; if (yych <= '"') - goto yy1136; - goto yy1125; + goto yy959; + goto yy948; } else { if (yych <= 0xC1) - goto yy1137; + goto yy960; if (yych <= 0xDF) - goto yy1129; - goto yy1130; + goto yy952; + goto yy953; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1135; - goto yy1131; + goto yy958; + goto yy954; } else { if (yych <= 0xF0) - goto yy1132; + goto yy955; if (yych <= 0xF3) - goto yy1133; + goto yy956; if (yych <= 0xF4) - goto yy1134; - goto yy1137; + goto yy957; + goto yy960; } } } @@ -18119,7 +15466,6 @@ bufsize_t _scan_link_title(const unsigned char *p) { // Match space characters, including newlines. bufsize_t _scan_spacechars(const unsigned char *p) { - const unsigned char *marker = NULL; const unsigned char *start = p; { @@ -18139,108 +15485,29 @@ bufsize_t _scan_spacechars(const unsigned char *p) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 <= '\r') { - if (yych <= 0x08) - goto yy1145; - if (yych == '\n') - goto yy1143; - goto yy1142; - } else { - if (yych == ' ') - goto yy1142; - if (yych <= 0x7F) - goto yy1145; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy1147; - if (yych <= 0xE0) - goto yy1149; - if (yych <= 0xEC) - goto yy1150; - goto yy1154; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy1150; - goto yy1151; - } else { - if (yych <= 0xF3) - goto yy1152; - if (yych <= 0xF4) - goto yy1153; - } - } - } - yy1141 : { return (bufsize_t)(p - start); } - yy1142: - yych = *++p; - goto yy1144; - yy1143: - ++p; yych = *p; - yy1144: - if (yybm[0 + yych] & 128) { - goto yy1143; - } - goto yy1141; - yy1145: + if (yych <= 0x08) + goto yy964; + if (yych <= '\r') + goto yy966; + if (yych == ' ') + goto yy966; + yy964: ++p; { return 0; } - yy1147: - yych = *++p; - if (yych <= 0x7F) - goto yy1148; - if (yych <= 0xBF) - goto yy1145; - yy1148: - p = marker; - goto yy1141; - yy1149: - yych = *++p; - if (yych <= 0x9F) - goto yy1148; - if (yych <= 0xBF) - goto yy1147; - goto yy1148; - yy1150: - yych = *++p; - if (yych <= 0x7F) - goto yy1148; - if (yych <= 0xBF) - goto yy1147; - goto yy1148; - yy1151: - yych = *++p; - if (yych <= 0x8F) - goto yy1148; - if (yych <= 0xBF) - goto yy1150; - goto yy1148; - yy1152: - yych = *++p; - if (yych <= 0x7F) - goto yy1148; - if (yych <= 0xBF) - goto yy1150; - goto yy1148; - yy1153: - yych = *++p; - if (yych <= 0x7F) - goto yy1148; - if (yych <= 0x8F) - goto yy1150; - goto yy1148; - yy1154: + yy966: ++p; - if ((yych = *p) <= 0x7F) - goto yy1148; - if (yych <= 0x9F) - goto yy1147; - goto yy1148; + yych = *p; + goto yy969; + yy967 : { return (bufsize_t)(p - start); } + yy968: + ++p; + yych = *p; + yy969: + if (yybm[0 + yych] & 128) { + goto yy968; + } + goto yy967; } } @@ -18265,403 +15532,263 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 yy1159; - } else { - if (yych <= '#') - goto yy1158; - if (yych <= 0x7F) - goto yy1159; - if (yych >= 0xC2) - goto yy1160; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy1162; - if (yych == 0xED) - goto yy1167; - goto yy1163; - } else { - if (yych <= 0xF0) - goto yy1164; - if (yych <= 0xF3) - goto yy1165; - if (yych <= 0xF4) - goto yy1166; - } - } - yy1157 : { return 0; } - yy1158: + yych = *p; + if (yych == '#') + goto yy974; + ++p; + yy973 : { return 0; } + yy974: yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy1170; + goto yy977; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1157; - if (yych <= '\n') - goto yy1168; - goto yy1157; + goto yy973; + if (yych >= '\v') + goto yy973; } else { if (yych <= '\r') - goto yy1168; + goto yy975; if (yych == '#') - goto yy1172; - goto yy1157; + goto yy979; + goto yy973; } - yy1159: - yych = *++p; - goto yy1157; - yy1160: - yych = *++p; - if (yych <= 0x7F) - goto yy1161; - if (yych <= 0xBF) - goto yy1159; - yy1161: - p = marker; - goto yy1157; - yy1162: - yych = *++p; - if (yych <= 0x9F) - goto yy1161; - if (yych <= 0xBF) - goto yy1160; - goto yy1161; - yy1163: - yych = *++p; - if (yych <= 0x7F) - goto yy1161; - if (yych <= 0xBF) - goto yy1160; - goto yy1161; - yy1164: - yych = *++p; - if (yych <= 0x8F) - goto yy1161; - if (yych <= 0xBF) - goto yy1163; - goto yy1161; - yy1165: - yych = *++p; - if (yych <= 0x7F) - goto yy1161; - if (yych <= 0xBF) - goto yy1163; - goto yy1161; - yy1166: - yych = *++p; - if (yych <= 0x7F) - goto yy1161; - if (yych <= 0x8F) - goto yy1163; - goto yy1161; - yy1167: - yych = *++p; - if (yych <= 0x7F) - goto yy1161; - if (yych <= 0x9F) - goto yy1160; - goto yy1161; - yy1168: + yy975: ++p; - yy1169 : { return (bufsize_t)(p - start); } - yy1170: + yy976 : { return (bufsize_t)(p - start); } + yy977: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1170; + goto yy977; } - goto yy1169; - yy1172: + goto yy976; + yy979: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy1170; + goto yy977; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1161; + goto yy980; if (yych <= '\n') - goto yy1168; - goto yy1161; + goto yy975; } else { if (yych <= '\r') - goto yy1168; - if (yych != '#') - goto yy1161; + goto yy975; + if (yych == '#') + goto yy981; } + yy980: + p = marker; + goto yy973; + yy981: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy1170; + goto yy977; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1161; + goto yy980; if (yych <= '\n') - goto yy1168; - goto yy1161; + goto yy975; + goto yy980; } else { if (yych <= '\r') - goto yy1168; + goto yy975; if (yych != '#') - goto yy1161; + goto yy980; } yych = *++p; if (yybm[0 + yych] & 128) { - goto yy1170; + goto yy977; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1161; + goto yy980; if (yych <= '\n') - goto yy1168; - goto yy1161; + goto yy975; + goto yy980; } else { if (yych <= '\r') - goto yy1168; + goto yy975; if (yych != '#') - goto yy1161; + goto yy980; } yych = *++p; if (yybm[0 + yych] & 128) { - goto yy1170; + goto yy977; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1161; + goto yy980; if (yych <= '\n') - goto yy1168; - goto yy1161; + goto yy975; + goto yy980; } else { if (yych <= '\r') - goto yy1168; + goto yy975; if (yych != '#') - goto yy1161; + goto yy980; } ++p; if (yybm[0 + (yych = *p)] & 128) { - goto yy1170; - } - if (yych <= 0x08) - goto yy1161; - if (yych <= '\n') - goto yy1168; - if (yych == '\r') - goto yy1168; - goto yy1161; - } -} - -// 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, 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, 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 = *(marker = p); - if (yych <= 0xC1) { - if (yych <= '-') { - if (yych == '\n') - goto yy1179; - if (yych <= ',') - goto yy1182; - goto yy1181; - } else { - if (yych == '=') - goto yy1180; - if (yych <= 0x7F) - goto yy1182; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy1183; - if (yych <= 0xE0) - goto yy1185; - if (yych <= 0xEC) - goto yy1186; - goto yy1190; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy1186; - goto yy1187; - } else { - if (yych <= 0xF3) - goto yy1188; - if (yych <= 0xF4) - goto yy1189; - } - } + goto yy977; } - yy1179 : { return 0; } - yy1180: + if (yych <= 0x08) + goto yy980; + if (yych <= '\n') + goto yy975; + if (yych == '\r') + goto yy975; + goto yy980; + } +} + +// Match setext heading line. Return 1 for level-1 heading, +// 2 for level-2, 0 for no match. +bufsize_t _scan_setext_heading_line(const unsigned char *p) { + const unsigned char *marker = NULL; + + { + unsigned char yych; + static const unsigned char yybm[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + yych = *p; + if (yych == '-') + goto yy989; + if (yych == '=') + goto yy990; + ++p; + yy988 : { return 0; } + yy989: yych = *(marker = ++p); if (yybm[0 + yych] & 128) { - goto yy1201; + goto yy1002; } if (yych <= '\f') { - if (yych == '\n') - goto yy1199; - goto yy1179; + if (yych <= 0x08) + goto yy988; + if (yych <= '\n') + goto yy999; + goto yy988; } else { if (yych <= '\r') - goto yy1199; + goto yy999; if (yych == ' ') - goto yy1197; - goto yy1179; + goto yy999; + goto yy988; } - yy1181: + yy990: yych = *(marker = ++p); - if (yybm[0 + yych] & 32) { - goto yy1191; + if (yybm[0 + yych] & 64) { + goto yy996; } if (yych <= '\f') { - if (yych == '\n') - goto yy1193; - goto yy1179; + if (yych <= 0x08) + goto yy988; + if (yych <= '\n') + goto yy992; + goto yy988; } else { if (yych <= '\r') - goto yy1193; - if (yych == '-') - goto yy1195; - goto yy1179; + goto yy992; + if (yych == ' ') + goto yy992; + goto yy988; } - yy1182: - yych = *++p; - goto yy1179; - yy1183: - yych = *++p; - if (yych <= 0x7F) - goto yy1184; - if (yych <= 0xBF) - goto yy1182; - yy1184: - p = marker; - goto yy1179; - yy1185: - yych = *++p; - if (yych <= 0x9F) - goto yy1184; - if (yych <= 0xBF) - goto yy1183; - goto yy1184; - yy1186: - yych = *++p; - if (yych <= 0x7F) - goto yy1184; - if (yych <= 0xBF) - goto yy1183; - goto yy1184; - yy1187: - yych = *++p; - if (yych <= 0x8F) - goto yy1184; - if (yych <= 0xBF) - goto yy1186; - goto yy1184; - yy1188: - yych = *++p; - if (yych <= 0x7F) - goto yy1184; - if (yych <= 0xBF) - goto yy1186; - goto yy1184; - yy1189: - yych = *++p; - if (yych <= 0x7F) - goto yy1184; - if (yych <= 0x8F) - goto yy1186; - goto yy1184; - yy1190: - yych = *++p; - if (yych <= 0x7F) - goto yy1184; - if (yych <= 0x9F) - goto yy1183; - goto yy1184; - yy1191: + yy991: ++p; yych = *p; + yy992: if (yybm[0 + yych] & 32) { - goto yy1191; + goto yy991; } - if (yych == '\n') - goto yy1193; - if (yych != '\r') - goto yy1184; - yy1193: + if (yych <= 0x08) + goto yy993; + if (yych <= '\n') + goto yy994; + if (yych == '\r') + goto yy994; + yy993: + p = marker; + goto yy988; + yy994: ++p; - { return 2; } - yy1195: + { return 1; } + yy996: ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy1191; + goto yy991; } if (yych <= '\f') { - if (yych == '\n') - goto yy1193; - goto yy1184; + if (yych <= 0x08) + goto yy993; + if (yych <= '\n') + goto yy994; + goto yy993; } else { if (yych <= '\r') - goto yy1193; - if (yych == '-') - goto yy1195; - goto yy1184; + goto yy994; + if (yych == '=') + goto yy996; + goto yy993; } - yy1197: + yy998: ++p; yych = *p; + yy999: if (yych <= '\f') { - if (yych != '\n') - goto yy1184; + if (yych <= 0x08) + goto yy993; + if (yych <= '\t') + goto yy998; + if (yych >= '\v') + goto yy993; } else { if (yych <= '\r') - goto yy1199; + goto yy1000; if (yych == ' ') - goto yy1197; - goto yy1184; + goto yy998; + goto yy993; } - yy1199: + yy1000: ++p; - { return 1; } - yy1201: + { return 2; } + yy1002: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1201; + goto yy1002; } if (yych <= '\f') { - if (yych == '\n') - goto yy1199; - goto yy1184; + if (yych <= 0x08) + goto yy993; + if (yych <= '\t') + goto yy998; + if (yych <= '\n') + goto yy1000; + goto yy993; } else { if (yych <= '\r') - goto yy1199; + goto yy1000; if (yych == ' ') - goto yy1197; - goto yy1184; + goto yy998; + goto yy993; } } } @@ -18678,9 +15805,9 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 128, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 128, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -18690,335 +15817,251 @@ bufsize_t _scan_thematic_break(const unsigned char *p) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 <= 0x7F) { - if (yych <= '*') { - if (yych == '\n') - goto yy1205; - if (yych <= ')') - goto yy1209; - goto yy1206; - } else { - if (yych <= '-') { - if (yych <= ',') - goto yy1209; - goto yy1208; - } else { - if (yych == '_') - goto yy1207; - goto yy1209; - } - } + yych = *p; + if (yych <= ',') { + if (yych == '*') + goto yy1008; } else { - if (yych <= 0xED) { - if (yych <= 0xDF) { - if (yych >= 0xC2) - goto yy1210; - } else { - if (yych <= 0xE0) - goto yy1212; - if (yych <= 0xEC) - goto yy1213; - goto yy1217; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy1213; - goto yy1214; - } else { - if (yych <= 0xF3) - goto yy1215; - if (yych <= 0xF4) - goto yy1216; - } - } + if (yych <= '-') + goto yy1009; + if (yych == '_') + goto yy1010; } - yy1205 : { return 0; } - yy1206: + ++p; + yy1007 : { return 0; } + yy1008: yych = *(marker = ++p); if (yych <= 0x1F) { if (yych == '\t') - goto yy1238; - goto yy1205; + goto yy1032; + goto yy1007; } else { if (yych <= ' ') - goto yy1238; + goto yy1032; if (yych == '*') - goto yy1240; - goto yy1205; + goto yy1034; + goto yy1007; } - yy1207: + yy1009: yych = *(marker = ++p); if (yych <= 0x1F) { if (yych == '\t') - goto yy1228; - goto yy1205; + goto yy1022; + goto yy1007; } else { if (yych <= ' ') - goto yy1228; - if (yych == '_') - goto yy1230; - goto yy1205; + goto yy1022; + if (yych == '-') + goto yy1024; + goto yy1007; } - yy1208: + yy1010: yych = *(marker = ++p); if (yybm[0 + yych] & 16) { - goto yy1218; + goto yy1011; } - if (yych == '-') - goto yy1220; - goto yy1205; - yy1209: - yych = *++p; - goto yy1205; - yy1210: - yych = *++p; - if (yych <= 0x7F) - goto yy1211; - if (yych <= 0xBF) - goto yy1209; - yy1211: - p = marker; - goto yy1205; - yy1212: - yych = *++p; - if (yych <= 0x9F) - goto yy1211; - if (yych <= 0xBF) - goto yy1210; - goto yy1211; - yy1213: - yych = *++p; - if (yych <= 0x7F) - goto yy1211; - if (yych <= 0xBF) - goto yy1210; - goto yy1211; - yy1214: - yych = *++p; - if (yych <= 0x8F) - goto yy1211; - if (yych <= 0xBF) - goto yy1213; - goto yy1211; - yy1215: - yych = *++p; - if (yych <= 0x7F) - goto yy1211; - if (yych <= 0xBF) - goto yy1213; - goto yy1211; - yy1216: - yych = *++p; - if (yych <= 0x7F) - goto yy1211; - if (yych <= 0x8F) - goto yy1213; - goto yy1211; - yy1217: - yych = *++p; - if (yych <= 0x7F) - goto yy1211; - if (yych <= 0x9F) - goto yy1210; - goto yy1211; - yy1218: + if (yych == '_') + goto yy1014; + goto yy1007; + yy1011: ++p; yych = *p; if (yybm[0 + yych] & 16) { - goto yy1218; + goto yy1011; } - if (yych != '-') - goto yy1211; - yy1220: + if (yych == '_') + goto yy1014; + yy1013: + p = marker; + goto yy1007; + yy1014: ++p; yych = *p; if (yych <= 0x1F) { if (yych == '\t') - goto yy1220; - goto yy1211; + goto yy1014; + goto yy1013; } else { if (yych <= ' ') - goto yy1220; - if (yych != '-') - goto yy1211; + goto yy1014; + if (yych != '_') + goto yy1013; } - yy1222: + yy1016: ++p; yych = *p; if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08) - goto yy1211; - goto yy1222; + goto yy1013; + goto yy1016; } else { if (yych <= '\n') - goto yy1224; + goto yy1018; if (yych <= '\f') - goto yy1211; + goto yy1013; } } else { if (yych <= ' ') { if (yych <= 0x1F) - goto yy1211; - goto yy1222; + goto yy1013; + goto yy1016; } else { - if (yych == '-') - goto yy1226; - goto yy1211; + if (yych == '_') + goto yy1020; + goto yy1013; } } - yy1224: + yy1018: ++p; { return (bufsize_t)(p - start); } - yy1226: + yy1020: ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy1226; + goto yy1020; } if (yych <= 0x08) - goto yy1211; + goto yy1013; if (yych <= '\n') - goto yy1224; + goto yy1018; if (yych == '\r') - goto yy1224; - goto yy1211; - yy1228: + goto yy1018; + goto yy1013; + yy1022: ++p; yych = *p; if (yych <= 0x1F) { if (yych == '\t') - goto yy1228; - goto yy1211; + goto yy1022; + goto yy1013; } else { if (yych <= ' ') - goto yy1228; - if (yych != '_') - goto yy1211; + goto yy1022; + if (yych != '-') + goto yy1013; } - yy1230: + yy1024: ++p; yych = *p; if (yych <= 0x1F) { if (yych == '\t') - goto yy1230; - goto yy1211; + goto yy1024; + goto yy1013; } else { if (yych <= ' ') - goto yy1230; - if (yych != '_') - goto yy1211; + goto yy1024; + if (yych != '-') + goto yy1013; } - yy1232: + yy1026: ++p; yych = *p; if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08) - goto yy1211; - goto yy1232; + goto yy1013; + goto yy1026; } else { if (yych <= '\n') - goto yy1234; + goto yy1028; if (yych <= '\f') - goto yy1211; + goto yy1013; } } else { if (yych <= ' ') { if (yych <= 0x1F) - goto yy1211; - goto yy1232; + goto yy1013; + goto yy1026; } else { - if (yych == '_') - goto yy1236; - goto yy1211; + if (yych == '-') + goto yy1030; + goto yy1013; } } - yy1234: + yy1028: ++p; { return (bufsize_t)(p - start); } - yy1236: + yy1030: ++p; yych = *p; if (yybm[0 + yych] & 64) { - goto yy1236; + goto yy1030; } if (yych <= 0x08) - goto yy1211; + goto yy1013; if (yych <= '\n') - goto yy1234; + goto yy1028; if (yych == '\r') - goto yy1234; - goto yy1211; - yy1238: + goto yy1028; + goto yy1013; + yy1032: ++p; yych = *p; if (yych <= 0x1F) { if (yych == '\t') - goto yy1238; - goto yy1211; + goto yy1032; + goto yy1013; } else { if (yych <= ' ') - goto yy1238; + goto yy1032; if (yych != '*') - goto yy1211; + goto yy1013; } - yy1240: + yy1034: ++p; yych = *p; if (yych <= 0x1F) { if (yych == '\t') - goto yy1240; - goto yy1211; + goto yy1034; + goto yy1013; } else { if (yych <= ' ') - goto yy1240; + goto yy1034; if (yych != '*') - goto yy1211; + goto yy1013; } - yy1242: + yy1036: ++p; yych = *p; if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08) - goto yy1211; - goto yy1242; + goto yy1013; + goto yy1036; } else { if (yych <= '\n') - goto yy1244; + goto yy1038; if (yych <= '\f') - goto yy1211; + goto yy1013; } } else { if (yych <= ' ') { if (yych <= 0x1F) - goto yy1211; - goto yy1242; + goto yy1013; + goto yy1036; } else { if (yych == '*') - goto yy1246; - goto yy1211; + goto yy1040; + goto yy1013; } } - yy1244: + yy1038: ++p; { return (bufsize_t)(p - start); } - yy1246: + yy1040: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1246; + goto yy1040; } if (yych <= 0x08) - goto yy1211; + goto yy1013; if (yych <= '\n') - goto yy1244; + goto yy1038; if (yych == '\r') - goto yy1244; - goto yy1211; + goto yy1038; + goto yy1013; } } @@ -19050,378 +16093,294 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) { 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 <= '`') { - if (yych == '\n') - goto yy1250; - if (yych <= '_') - goto yy1253; - goto yy1251; - } else { - if (yych == '~') - goto yy1252; - if (yych <= 0x7F) - goto yy1253; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy1254; - if (yych <= 0xE0) - goto yy1256; - if (yych <= 0xEC) - goto yy1257; - goto yy1261; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy1257; - goto yy1258; - } else { - if (yych <= 0xF3) - goto yy1259; - if (yych <= 0xF4) - goto yy1260; - } - } - } - yy1250 : { return 0; } - yy1251: + yych = *p; + if (yych == '`') + goto yy1046; + if (yych == '~') + goto yy1047; + ++p; + yy1045 : { return 0; } + yy1046: yych = *(marker = ++p); if (yych == '`') - goto yy1276; - goto yy1250; - yy1252: + goto yy1063; + goto yy1045; + yy1047: yych = *(marker = ++p); - if (yych == '~') - goto yy1262; - goto yy1250; - yy1253: - yych = *++p; - goto yy1250; - yy1254: - yych = *++p; - if (yych <= 0x7F) - goto yy1255; - if (yych <= 0xBF) - goto yy1253; - yy1255: - p = marker; - goto yy1250; - yy1256: - yych = *++p; - if (yych <= 0x9F) - goto yy1255; - if (yych <= 0xBF) - goto yy1254; - goto yy1255; - yy1257: - yych = *++p; - if (yych <= 0x7F) - goto yy1255; - if (yych <= 0xBF) - goto yy1254; - goto yy1255; - yy1258: - yych = *++p; - if (yych <= 0x8F) - goto yy1255; - if (yych <= 0xBF) - goto yy1257; - goto yy1255; - yy1259: - yych = *++p; - if (yych <= 0x7F) - goto yy1255; - if (yych <= 0xBF) - goto yy1257; - goto yy1255; - yy1260: - yych = *++p; - if (yych <= 0x7F) - goto yy1255; - if (yych <= 0x8F) - goto yy1257; - goto yy1255; - yy1261: - yych = *++p; - if (yych <= 0x7F) - goto yy1255; - if (yych <= 0x9F) - goto yy1254; - goto yy1255; - yy1262: + if (yych != '~') + goto yy1045; yych = *++p; if (yybm[0 + yych] & 16) { - goto yy1263; + goto yy1050; } - goto yy1255; - yy1263: + yy1049: + p = marker; + goto yy1045; + yy1050: ++p; yych = *p; marker = p; if (yybm[0 + yych] & 32) { - goto yy1265; + goto yy1052; } if (yych <= 0xE0) { if (yych <= '~') { if (yych <= 0x00) - goto yy1255; + goto yy1049; if (yych <= '\r') - goto yy1274; - goto yy1263; + goto yy1061; + goto yy1050; } else { if (yych <= 0xC1) - goto yy1255; + goto yy1049; if (yych <= 0xDF) - goto yy1267; - goto yy1268; + goto yy1054; + goto yy1055; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1273; - goto yy1269; + goto yy1060; + goto yy1056; } else { if (yych <= 0xF0) - goto yy1270; + goto yy1057; if (yych <= 0xF3) - goto yy1271; + goto yy1058; if (yych <= 0xF4) - goto yy1272; - goto yy1255; + goto yy1059; + goto yy1049; } } - yy1265: + yy1052: ++p; yych = *p; if (yybm[0 + yych] & 32) { - goto yy1265; + goto yy1052; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy1255; + goto yy1049; if (yych <= '\r') - goto yy1274; - goto yy1255; + goto yy1061; + goto yy1049; } else { if (yych <= 0xDF) - goto yy1267; + goto yy1054; if (yych <= 0xE0) - goto yy1268; - goto yy1269; + goto yy1055; + goto yy1056; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy1273; + goto yy1060; if (yych <= 0xEF) - goto yy1269; - goto yy1270; + goto yy1056; + goto yy1057; } else { if (yych <= 0xF3) - goto yy1271; + goto yy1058; if (yych <= 0xF4) - goto yy1272; - goto yy1255; + goto yy1059; + goto yy1049; } } - yy1267: + yy1054: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1265; - goto yy1255; - yy1268: + goto yy1052; + goto yy1049; + yy1055: ++p; yych = *p; if (yych <= 0x9F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1267; - goto yy1255; - yy1269: + goto yy1054; + goto yy1049; + yy1056: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1267; - goto yy1255; - yy1270: + goto yy1054; + goto yy1049; + yy1057: ++p; yych = *p; if (yych <= 0x8F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1269; - goto yy1255; - yy1271: + goto yy1056; + goto yy1049; + yy1058: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1269; - goto yy1255; - yy1272: + goto yy1056; + goto yy1049; + yy1059: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0x8F) - goto yy1269; - goto yy1255; - yy1273: + goto yy1056; + goto yy1049; + yy1060: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0x9F) - goto yy1267; - goto yy1255; - yy1274: + goto yy1054; + goto yy1049; + yy1061: ++p; p = marker; { return (bufsize_t)(p - start); } - yy1276: + yy1063: yych = *++p; if (yybm[0 + yych] & 64) { - goto yy1277; + goto yy1064; } - goto yy1255; - yy1277: + goto yy1049; + yy1064: ++p; yych = *p; marker = p; if (yybm[0 + yych] & 128) { - goto yy1279; + goto yy1066; } if (yych <= 0xE0) { if (yych <= '`') { if (yych <= 0x00) - goto yy1255; + goto yy1049; if (yych <= '\r') - goto yy1288; - goto yy1277; + goto yy1075; + goto yy1064; } else { if (yych <= 0xC1) - goto yy1255; + goto yy1049; if (yych <= 0xDF) - goto yy1281; - goto yy1282; + goto yy1068; + goto yy1069; } } else { if (yych <= 0xEF) { if (yych == 0xED) - goto yy1287; - goto yy1283; + goto yy1074; + goto yy1070; } else { if (yych <= 0xF0) - goto yy1284; + goto yy1071; if (yych <= 0xF3) - goto yy1285; + goto yy1072; if (yych <= 0xF4) - goto yy1286; - goto yy1255; + goto yy1073; + goto yy1049; } } - yy1279: + yy1066: ++p; yych = *p; if (yybm[0 + yych] & 128) { - goto yy1279; + goto yy1066; } if (yych <= 0xEC) { if (yych <= 0xC1) { if (yych <= 0x00) - goto yy1255; + goto yy1049; if (yych <= '\r') - goto yy1288; - goto yy1255; + goto yy1075; + goto yy1049; } else { if (yych <= 0xDF) - goto yy1281; + goto yy1068; if (yych <= 0xE0) - goto yy1282; - goto yy1283; + goto yy1069; + goto yy1070; } } else { if (yych <= 0xF0) { if (yych <= 0xED) - goto yy1287; + goto yy1074; if (yych <= 0xEF) - goto yy1283; - goto yy1284; + goto yy1070; + goto yy1071; } else { if (yych <= 0xF3) - goto yy1285; + goto yy1072; if (yych <= 0xF4) - goto yy1286; - goto yy1255; + goto yy1073; + goto yy1049; } } - yy1281: + yy1068: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1279; - goto yy1255; - yy1282: + goto yy1066; + goto yy1049; + yy1069: ++p; yych = *p; if (yych <= 0x9F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1281; - goto yy1255; - yy1283: + goto yy1068; + goto yy1049; + yy1070: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1281; - goto yy1255; - yy1284: + goto yy1068; + goto yy1049; + yy1071: ++p; yych = *p; if (yych <= 0x8F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1283; - goto yy1255; - yy1285: + goto yy1070; + goto yy1049; + yy1072: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0xBF) - goto yy1283; - goto yy1255; - yy1286: + goto yy1070; + goto yy1049; + yy1073: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0x8F) - goto yy1283; - goto yy1255; - yy1287: + goto yy1070; + goto yy1049; + yy1074: ++p; yych = *p; if (yych <= 0x7F) - goto yy1255; + goto yy1049; if (yych <= 0x9F) - goto yy1281; - goto yy1255; - yy1288: + goto yy1068; + goto yy1049; + yy1075: ++p; p = marker; { return (bufsize_t)(p - start); } @@ -19449,194 +16408,110 @@ bufsize_t _scan_close_code_fence(const unsigned char *p) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 <= '`') { - if (yych == '\n') - goto yy1292; - if (yych <= '_') - goto yy1295; - goto yy1293; - } else { - if (yych == '~') - goto yy1294; - if (yych <= 0x7F) - goto yy1295; - } - } else { - if (yych <= 0xED) { - if (yych <= 0xDF) - goto yy1296; - if (yych <= 0xE0) - goto yy1298; - if (yych <= 0xEC) - goto yy1299; - goto yy1303; - } else { - if (yych <= 0xF0) { - if (yych <= 0xEF) - goto yy1299; - goto yy1300; - } else { - if (yych <= 0xF3) - goto yy1301; - if (yych <= 0xF4) - goto yy1302; - } - } - } - yy1292 : { return 0; } - yy1293: + yych = *p; + if (yych == '`') + goto yy1081; + if (yych == '~') + goto yy1082; + ++p; + yy1080 : { return 0; } + yy1081: yych = *(marker = ++p); if (yych == '`') - goto yy1311; - goto yy1292; - yy1294: + goto yy1091; + goto yy1080; + yy1082: yych = *(marker = ++p); - if (yych == '~') - goto yy1304; - goto yy1292; - yy1295: - yych = *++p; - goto yy1292; - yy1296: - yych = *++p; - if (yych <= 0x7F) - goto yy1297; - if (yych <= 0xBF) - goto yy1295; - yy1297: - p = marker; - goto yy1292; - yy1298: - yych = *++p; - if (yych <= 0x9F) - goto yy1297; - if (yych <= 0xBF) - goto yy1296; - goto yy1297; - yy1299: - yych = *++p; - if (yych <= 0x7F) - goto yy1297; - if (yych <= 0xBF) - goto yy1296; - goto yy1297; - yy1300: - yych = *++p; - if (yych <= 0x8F) - goto yy1297; - if (yych <= 0xBF) - goto yy1299; - goto yy1297; - yy1301: - yych = *++p; - if (yych <= 0x7F) - goto yy1297; - if (yych <= 0xBF) - goto yy1299; - goto yy1297; - yy1302: - yych = *++p; - if (yych <= 0x7F) - goto yy1297; - if (yych <= 0x8F) - goto yy1299; - goto yy1297; - yy1303: - yych = *++p; - if (yych <= 0x7F) - goto yy1297; - if (yych <= 0x9F) - goto yy1296; - goto yy1297; - yy1304: + if (yych != '~') + goto yy1080; yych = *++p; if (yybm[0 + yych] & 32) { - goto yy1305; + goto yy1085; } - goto yy1297; - yy1305: + yy1084: + p = marker; + goto yy1080; + yy1085: ++p; yych = *p; marker = p; if (yybm[0 + yych] & 64) { - goto yy1307; + goto yy1087; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1297; + goto yy1084; if (yych <= '\n') - goto yy1309; - goto yy1297; + goto yy1089; + goto yy1084; } else { if (yych <= '\r') - goto yy1309; + goto yy1089; if (yych == '~') - goto yy1305; - goto yy1297; + goto yy1085; + goto yy1084; } - yy1307: + yy1087: ++p; yych = *p; if (yybm[0 + yych] & 64) { - goto yy1307; + goto yy1087; } if (yych <= 0x08) - goto yy1297; + goto yy1084; if (yych <= '\n') - goto yy1309; + goto yy1089; if (yych != '\r') - goto yy1297; - yy1309: + goto yy1084; + yy1089: ++p; p = marker; { return (bufsize_t)(p - start); } - yy1311: + yy1091: yych = *++p; if (yybm[0 + yych] & 128) { - goto yy1312; + goto yy1092; } - goto yy1297; - yy1312: + goto yy1084; + yy1092: ++p; yych = *p; marker = p; if (yybm[0 + yych] & 128) { - goto yy1312; + goto yy1092; } if (yych <= '\f') { if (yych <= 0x08) - goto yy1297; + goto yy1084; if (yych <= '\t') - goto yy1314; + goto yy1094; if (yych <= '\n') - goto yy1316; - goto yy1297; + goto yy1096; + goto yy1084; } else { if (yych <= '\r') - goto yy1316; + goto yy1096; if (yych != ' ') - goto yy1297; + goto yy1084; } - yy1314: + yy1094: ++p; yych = *p; if (yych <= '\f') { if (yych <= 0x08) - goto yy1297; + goto yy1084; if (yych <= '\t') - goto yy1314; + goto yy1094; if (yych >= '\v') - goto yy1297; + goto yy1084; } else { if (yych <= '\r') - goto yy1316; + goto yy1096; if (yych == ' ') - goto yy1314; - goto yy1297; + goto yy1094; + goto yy1084; } - yy1316: + yy1096: ++p; p = marker; { return (bufsize_t)(p - start); } @@ -19651,1001 +16526,921 @@ bufsize_t _scan_entity(const unsigned char *p) { { unsigned char yych; - yych = *(marker = p); - if (yych <= 0xDF) { - if (yych <= '%') { - if (yych != '\n') - goto yy1322; - } else { - if (yych <= '&') - goto yy1321; - if (yych <= 0x7F) - goto yy1322; - if (yych >= 0xC2) - goto yy1323; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy1325; - if (yych == 0xED) - goto yy1330; - goto yy1326; - } else { - if (yych <= 0xF0) - goto yy1327; - if (yych <= 0xF3) - goto yy1328; - if (yych <= 0xF4) - goto yy1329; - } - } - yy1320 : { return 0; } - yy1321: + yych = *p; + if (yych == '&') + goto yy1102; + ++p; + yy1101 : { return 0; } + yy1102: yych = *(marker = ++p); if (yych <= '@') { - if (yych == '#') - goto yy1331; - goto yy1320; + if (yych != '#') + goto yy1101; } else { if (yych <= 'Z') - goto yy1332; + goto yy1105; if (yych <= '`') - goto yy1320; + goto yy1101; if (yych <= 'z') - goto yy1332; - goto yy1320; + goto yy1105; + goto yy1101; } - yy1322: - yych = *++p; - goto yy1320; - yy1323: - yych = *++p; - if (yych <= 0x7F) - goto yy1324; - if (yych <= 0xBF) - goto yy1322; - yy1324: - p = marker; - goto yy1320; - yy1325: - yych = *++p; - if (yych <= 0x9F) - goto yy1324; - if (yych <= 0xBF) - goto yy1323; - goto yy1324; - yy1326: - yych = *++p; - if (yych <= 0x7F) - goto yy1324; - if (yych <= 0xBF) - goto yy1323; - goto yy1324; - yy1327: - yych = *++p; - if (yych <= 0x8F) - goto yy1324; - if (yych <= 0xBF) - goto yy1326; - goto yy1324; - yy1328: - yych = *++p; - if (yych <= 0x7F) - goto yy1324; - if (yych <= 0xBF) - goto yy1326; - goto yy1324; - yy1329: - yych = *++p; - if (yych <= 0x7F) - goto yy1324; - if (yych <= 0x8F) - goto yy1326; - goto yy1324; - yy1330: - yych = *++p; - if (yych <= 0x7F) - goto yy1324; - if (yych <= 0x9F) - goto yy1323; - goto yy1324; - yy1331: yych = *++p; if (yych <= 'W') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1367; - goto yy1324; + goto yy1140; } else { if (yych <= 'X') - goto yy1366; + goto yy1139; if (yych == 'x') - goto yy1366; - goto yy1324; + goto yy1139; } - yy1332: + yy1104: + p = marker; + goto yy1101; + yy1105: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych >= ':') - goto yy1324; + goto yy1104; } else { if (yych <= 'Z') - goto yy1333; + goto yy1106; if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } - yy1333: + yy1106: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1336; + goto yy1109; if (yych <= ':') - goto yy1324; + goto yy1104; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; - goto yy1336; + goto yy1104; + goto yy1109; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych <= 'z') - goto yy1336; - goto yy1324; + goto yy1109; + goto yy1104; } } - yy1334: + yy1107: ++p; { return (bufsize_t)(p - start); } - yy1336: + yy1109: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1337; + goto yy1110; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1337: + yy1110: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1338; + goto yy1111; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1338: + yy1111: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1339; + goto yy1112; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1339: + yy1112: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1340; + goto yy1113; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1340: + yy1113: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1341; + goto yy1114; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1341: + yy1114: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1342; + goto yy1115; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1342: + yy1115: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1343; + goto yy1116; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1343: + yy1116: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1344; + goto yy1117; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1344: + yy1117: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1345; + goto yy1118; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1345: + yy1118: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1346; + goto yy1119; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1346: + yy1119: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1347; + goto yy1120; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1347: + yy1120: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1348; + goto yy1121; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1348: + yy1121: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1349; + goto yy1122; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1349: + yy1122: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1350; + goto yy1123; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1350: + yy1123: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1351; + goto yy1124; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1351: + yy1124: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1352; + goto yy1125; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1352: + yy1125: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1353; + goto yy1126; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1353: + yy1126: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1354; + goto yy1127; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1354: + yy1127: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1355; + goto yy1128; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1355: + yy1128: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1356; + goto yy1129; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1356: + yy1129: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1357; + goto yy1130; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1357: + yy1130: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1358; + goto yy1131; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1358: + yy1131: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1359; + goto yy1132; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1359: + yy1132: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1360; + goto yy1133; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1360: + yy1133: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1361; + goto yy1134; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1361: + yy1134: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1362; + goto yy1135; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1362: + yy1135: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1363; + goto yy1136; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1363: + yy1136: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1364; + goto yy1137; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1364: + yy1137: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1365; + goto yy1138; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'Z') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= '{') - goto yy1324; + goto yy1104; } } - yy1365: + yy1138: yych = *++p; if (yych == ';') - goto yy1334; - goto yy1324; - yy1366: + goto yy1107; + goto yy1104; + yy1139: yych = *++p; if (yych <= '@') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1374; - goto yy1324; + goto yy1147; + goto yy1104; } else { if (yych <= 'F') - goto yy1374; + goto yy1147; if (yych <= '`') - goto yy1324; + goto yy1104; if (yych <= 'f') - goto yy1374; - goto yy1324; + goto yy1147; + goto yy1104; } - yy1367: + yy1140: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1368; + goto yy1141; if (yych == ';') - goto yy1334; - goto yy1324; - yy1368: + goto yy1107; + goto yy1104; + yy1141: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1369; + goto yy1142; if (yych == ';') - goto yy1334; - goto yy1324; - yy1369: + goto yy1107; + goto yy1104; + yy1142: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1370; + goto yy1143; if (yych == ';') - goto yy1334; - goto yy1324; - yy1370: + goto yy1107; + goto yy1104; + yy1143: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1371; + goto yy1144; if (yych == ';') - goto yy1334; - goto yy1324; - yy1371: + goto yy1107; + goto yy1104; + yy1144: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1372; + goto yy1145; if (yych == ';') - goto yy1334; - goto yy1324; - yy1372: + goto yy1107; + goto yy1104; + yy1145: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1373; + goto yy1146; if (yych == ';') - goto yy1334; - goto yy1324; - yy1373: + goto yy1107; + goto yy1104; + yy1146: yych = *++p; if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1365; + goto yy1138; if (yych == ';') - goto yy1334; - goto yy1324; - yy1374: + goto yy1107; + goto yy1104; + yy1147: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1375; + goto yy1148; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= 'g') - goto yy1324; + goto yy1104; } } - yy1375: + yy1148: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1376; + goto yy1149; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= 'g') - goto yy1324; + goto yy1104; } } - yy1376: + yy1149: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1377; + goto yy1150; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= 'g') - goto yy1324; + goto yy1104; } } - yy1377: + yy1150: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1378; + goto yy1151; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= 'g') - goto yy1324; + goto yy1104; } } - yy1378: + yy1151: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1379; + goto yy1152; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= 'g') - goto yy1324; + goto yy1104; } } - yy1379: + yy1152: yych = *++p; if (yych <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1380; + goto yy1153; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; + goto yy1104; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych >= 'g') - goto yy1324; + goto yy1104; } } - yy1380: + yy1153: ++p; if ((yych = *p) <= ';') { if (yych <= '/') - goto yy1324; + goto yy1104; if (yych <= '9') - goto yy1365; + goto yy1138; if (yych <= ':') - goto yy1324; - goto yy1334; + goto yy1104; + goto yy1107; } else { if (yych <= 'F') { if (yych <= '@') - goto yy1324; - goto yy1365; + goto yy1104; + goto yy1138; } else { if (yych <= '`') - goto yy1324; + goto yy1104; if (yych <= 'f') - goto yy1365; - goto yy1324; + goto yy1138; + goto yy1104; } } } @@ -20660,420 +17455,339 @@ bufsize_t _scan_dangerous_url(const unsigned char *p) { { unsigned char yych; unsigned int yyaccept = 0; - yych = *(marker = p); - if (yych <= 'f') { - if (yych <= 'I') { - if (yych <= 'C') { - if (yych != '\n') - goto yy1388; - } else { - if (yych <= 'D') - goto yy1384; - if (yych == 'F') - goto yy1387; - goto yy1388; - } + yych = *p; + if (yych <= 'V') { + if (yych <= 'F') { + if (yych == 'D') + goto yy1158; + if (yych >= 'F') + goto yy1159; } else { - if (yych <= 'V') { - if (yych <= 'J') - goto yy1385; - if (yych <= 'U') - goto yy1388; - goto yy1386; - } else { - if (yych == 'd') - goto yy1384; - if (yych <= 'e') - goto yy1388; - goto yy1387; - } + if (yych == 'J') + goto yy1160; + if (yych >= 'V') + goto yy1161; } } else { - if (yych <= 0xDF) { - if (yych <= 'u') { - if (yych == 'j') - goto yy1385; - goto yy1388; - } else { - if (yych <= 'v') - goto yy1386; - if (yych <= 0x7F) - goto yy1388; - if (yych >= 0xC2) - goto yy1389; - } + if (yych <= 'f') { + if (yych == 'd') + goto yy1158; + if (yych >= 'f') + goto yy1159; } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) - goto yy1391; - if (yych == 0xED) - goto yy1396; - goto yy1392; + if (yych <= 'j') { + if (yych >= 'j') + goto yy1160; } else { - if (yych <= 0xF0) - goto yy1393; - if (yych <= 0xF3) - goto yy1394; - if (yych <= 0xF4) - goto yy1395; + if (yych == 'v') + goto yy1161; } } } - yy1383 : { return 0; } - yy1384: + ++p; + yy1157 : { return 0; } + yy1158: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy1418; + goto yy1184; if (yych == 'a') - goto yy1418; - goto yy1383; - yy1385: + goto yy1184; + goto yy1157; + yy1159: + yyaccept = 0; + yych = *(marker = ++p); + if (yych == 'I') + goto yy1181; + if (yych == 'i') + goto yy1181; + goto yy1157; + yy1160: yyaccept = 0; yych = *(marker = ++p); if (yych == 'A') - goto yy1409; + goto yy1172; if (yych == 'a') - goto yy1409; - goto yy1383; - yy1386: + goto yy1172; + goto yy1157; + yy1161: yyaccept = 0; yych = *(marker = ++p); if (yych == 'B') - goto yy1402; - if (yych == 'b') - goto yy1402; - goto yy1383; - yy1387: - yyaccept = 0; - yych = *(marker = ++p); - if (yych == 'I') - goto yy1397; - if (yych == 'i') - goto yy1397; - goto yy1383; - yy1388: - yych = *++p; - goto yy1383; - yy1389: + goto yy1162; + if (yych != 'b') + goto yy1157; + yy1162: yych = *++p; - if (yych <= 0x7F) - goto yy1390; - if (yych <= 0xBF) - goto yy1388; - yy1390: + if (yych == 'S') + goto yy1164; + if (yych == 's') + goto yy1164; + yy1163: p = marker; if (yyaccept == 0) { - goto yy1383; + goto yy1157; } else { - goto yy1401; + goto yy1171; } - yy1391: - yych = *++p; - if (yych <= 0x9F) - goto yy1390; - if (yych <= 0xBF) - goto yy1389; - goto yy1390; - yy1392: - yych = *++p; - if (yych <= 0x7F) - goto yy1390; - if (yych <= 0xBF) - goto yy1389; - goto yy1390; - yy1393: - yych = *++p; - if (yych <= 0x8F) - goto yy1390; - if (yych <= 0xBF) - goto yy1392; - goto yy1390; - yy1394: - yych = *++p; - if (yych <= 0x7F) - goto yy1390; - if (yych <= 0xBF) - goto yy1392; - goto yy1390; - yy1395: - yych = *++p; - if (yych <= 0x7F) - goto yy1390; - if (yych <= 0x8F) - goto yy1392; - goto yy1390; - yy1396: - yych = *++p; - if (yych <= 0x7F) - goto yy1390; - if (yych <= 0x9F) - goto yy1389; - goto yy1390; - yy1397: - yych = *++p; - if (yych == 'L') - goto yy1398; - if (yych != 'l') - goto yy1390; - yy1398: - yych = *++p; - if (yych == 'E') - goto yy1399; - if (yych != 'e') - goto yy1390; - yy1399: - yych = *++p; - if (yych != ':') - goto yy1390; - yy1400: - ++p; - yy1401 : { return (bufsize_t)(p - start); } - yy1402: - yych = *++p; - if (yych == 'S') - goto yy1403; - if (yych != 's') - goto yy1390; - yy1403: + yy1164: yych = *++p; if (yych == 'C') - goto yy1404; + goto yy1165; if (yych != 'c') - goto yy1390; - yy1404: + goto yy1163; + yy1165: yych = *++p; if (yych == 'R') - goto yy1405; + goto yy1166; if (yych != 'r') - goto yy1390; - yy1405: + goto yy1163; + yy1166: yych = *++p; if (yych == 'I') - goto yy1406; + goto yy1167; if (yych != 'i') - goto yy1390; - yy1406: + goto yy1163; + yy1167: yych = *++p; if (yych == 'P') - goto yy1407; + goto yy1168; if (yych != 'p') - goto yy1390; - yy1407: + goto yy1163; + yy1168: yych = *++p; if (yych == 'T') - goto yy1408; + goto yy1169; if (yych != 't') - goto yy1390; - yy1408: + goto yy1163; + yy1169: yych = *++p; - if (yych == ':') - goto yy1400; - goto yy1390; - yy1409: + if (yych != ':') + goto yy1163; + yy1170: + ++p; + yy1171 : { return (bufsize_t)(p - start); } + yy1172: yych = *++p; if (yych == 'V') - goto yy1410; + goto yy1173; if (yych != 'v') - goto yy1390; - yy1410: + goto yy1163; + yy1173: yych = *++p; if (yych == 'A') - goto yy1411; + goto yy1174; if (yych != 'a') - goto yy1390; - yy1411: + goto yy1163; + yy1174: yych = *++p; if (yych == 'S') - goto yy1412; + goto yy1175; if (yych != 's') - goto yy1390; - yy1412: + goto yy1163; + yy1175: yych = *++p; if (yych == 'C') - goto yy1413; + goto yy1176; if (yych != 'c') - goto yy1390; - yy1413: + goto yy1163; + yy1176: yych = *++p; if (yych == 'R') - goto yy1414; + goto yy1177; if (yych != 'r') - goto yy1390; - yy1414: + goto yy1163; + yy1177: yych = *++p; if (yych == 'I') - goto yy1415; + goto yy1178; if (yych != 'i') - goto yy1390; - yy1415: + goto yy1163; + yy1178: yych = *++p; if (yych == 'P') - goto yy1416; + goto yy1179; if (yych != 'p') - goto yy1390; - yy1416: + goto yy1163; + yy1179: yych = *++p; if (yych == 'T') - goto yy1417; + goto yy1180; if (yych != 't') - goto yy1390; - yy1417: + goto yy1163; + yy1180: + yych = *++p; + if (yych == ':') + goto yy1170; + goto yy1163; + yy1181: + yych = *++p; + if (yych == 'L') + goto yy1182; + if (yych != 'l') + goto yy1163; + yy1182: + yych = *++p; + if (yych == 'E') + goto yy1183; + if (yych != 'e') + goto yy1163; + yy1183: yych = *++p; if (yych == ':') - goto yy1400; - goto yy1390; - yy1418: + goto yy1170; + goto yy1163; + yy1184: yych = *++p; if (yych == 'T') - goto yy1419; + goto yy1185; if (yych != 't') - goto yy1390; - yy1419: + goto yy1163; + yy1185: yych = *++p; if (yych == 'A') - goto yy1420; + goto yy1186; if (yych != 'a') - goto yy1390; - yy1420: + goto yy1163; + yy1186: yych = *++p; if (yych != ':') - goto yy1390; + goto yy1163; yyaccept = 1; yych = *(marker = ++p); if (yych == 'I') - goto yy1422; + goto yy1188; if (yych != 'i') - goto yy1401; - yy1422: + goto yy1171; + yy1188: yych = *++p; if (yych == 'M') - goto yy1423; + goto yy1189; if (yych != 'm') - goto yy1390; - yy1423: + goto yy1163; + yy1189: yych = *++p; if (yych == 'A') - goto yy1424; + goto yy1190; if (yych != 'a') - goto yy1390; - yy1424: + goto yy1163; + yy1190: yych = *++p; if (yych == 'G') - goto yy1425; + goto yy1191; if (yych != 'g') - goto yy1390; - yy1425: + goto yy1163; + yy1191: yych = *++p; if (yych == 'E') - goto yy1426; + goto yy1192; if (yych != 'e') - goto yy1390; - yy1426: + goto yy1163; + yy1192: yych = *++p; if (yych != '/') - goto yy1390; + goto yy1163; yych = *++p; if (yych <= 'W') { if (yych <= 'J') { if (yych == 'G') - goto yy1429; + goto yy1195; if (yych <= 'I') - goto yy1390; - goto yy1430; + goto yy1163; + goto yy1196; } else { if (yych == 'P') - goto yy1428; + goto yy1194; if (yych <= 'V') - goto yy1390; - goto yy1431; + goto yy1163; + goto yy1197; } } else { if (yych <= 'j') { if (yych == 'g') - goto yy1429; + goto yy1195; if (yych <= 'i') - goto yy1390; - goto yy1430; + goto yy1163; + goto yy1196; } else { if (yych <= 'p') { if (yych <= 'o') - goto yy1390; + goto yy1163; } else { if (yych == 'w') - goto yy1431; - goto yy1390; + goto yy1197; + goto yy1163; } } } - yy1428: + yy1194: yych = *++p; if (yych == 'N') - goto yy1439; + goto yy1205; if (yych == 'n') - goto yy1439; - goto yy1390; - yy1429: + goto yy1205; + goto yy1163; + yy1195: yych = *++p; if (yych == 'I') - goto yy1438; + goto yy1204; if (yych == 'i') - goto yy1438; - goto yy1390; - yy1430: + goto yy1204; + goto yy1163; + yy1196: yych = *++p; if (yych == 'P') - goto yy1436; + goto yy1202; if (yych == 'p') - goto yy1436; - goto yy1390; - yy1431: + goto yy1202; + goto yy1163; + yy1197: yych = *++p; if (yych == 'E') - goto yy1432; + goto yy1198; if (yych != 'e') - goto yy1390; - yy1432: + goto yy1163; + yy1198: yych = *++p; if (yych == 'B') - goto yy1433; + goto yy1199; if (yych != 'b') - goto yy1390; - yy1433: + goto yy1163; + yy1199: yych = *++p; if (yych == 'P') - goto yy1434; + goto yy1200; if (yych != 'p') - goto yy1390; - yy1434: + goto yy1163; + yy1200: ++p; { return 0; } - yy1436: + yy1202: yych = *++p; if (yych == 'E') - goto yy1437; + goto yy1203; if (yych != 'e') - goto yy1390; - yy1437: + goto yy1163; + yy1203: yych = *++p; if (yych == 'G') - goto yy1434; + goto yy1200; if (yych == 'g') - goto yy1434; - goto yy1390; - yy1438: + goto yy1200; + goto yy1163; + yy1204: yych = *++p; if (yych == 'F') - goto yy1434; + goto yy1200; if (yych == 'f') - goto yy1434; - goto yy1390; - yy1439: + goto yy1200; + goto yy1163; + yy1205: ++p; if ((yych = *p) == 'G') - goto yy1434; + goto yy1200; if (yych == 'g') - goto yy1434; - goto yy1390; + goto yy1200; + goto yy1163; } } diff --git a/scanners.h b/scanners.h index 5e3cbe7..207f91a 100644 --- a/scanners.h +++ b/scanners.h @@ -18,7 +18,6 @@ bufsize_t _scan_html_block_end_2(const unsigned char *p); bufsize_t _scan_html_block_end_3(const unsigned char *p); bufsize_t _scan_html_block_end_4(const unsigned char *p); bufsize_t _scan_html_block_end_5(const unsigned char *p); -bufsize_t _scan_link_url(const unsigned char *p); bufsize_t _scan_link_title(const unsigned char *p); bufsize_t _scan_spacechars(const unsigned char *p); bufsize_t _scan_atx_heading_start(const unsigned char *p); @@ -40,7 +39,6 @@ bufsize_t _scan_dangerous_url(const unsigned char *p); #define scan_html_block_end_3(c, n) _scan_at(&_scan_html_block_end_3, c, n) #define scan_html_block_end_4(c, n) _scan_at(&_scan_html_block_end_4, c, n) #define scan_html_block_end_5(c, n) _scan_at(&_scan_html_block_end_5, c, n) -#define scan_link_url(c, n) _scan_at(&_scan_link_url, c, n) #define scan_link_title(c, n) _scan_at(&_scan_link_title, c, n) #define scan_spacechars(c, n) _scan_at(&_scan_spacechars, c, n) #define scan_atx_heading_start(c, n) _scan_at(&_scan_atx_heading_start, c, n) diff --git a/scanners.re b/scanners.re index 52bf5aa..b20a954 100644 --- a/scanners.re +++ b/scanners.re @@ -37,13 +37,13 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, tagname = [A-Za-z][A-Za-z0-9-]*; - blocktagname = 'address'|'article'|'aside'|'base'|'basefont'|'blockquote'|'body'|'caption'|'center'|'col'|'colgroup'|'dd'|'details'|'dialog'|'dir'|'div'|'dl'|'dt'|'fieldset'|'figcaption'|'figure'|'footer'|'form'|'frame'|'frameset'|'h1'|'head'|'header'|'hr'|'html'|'iframe'|'legend'|'li'|'link'|'main'|'menu'|'menuitem'|'meta'|'nav'|'noframes'|'ol'|'optgroup'|'option'|'p'|'param'|'section'|'source'|'title'|'summary'|'table'|'tbody'|'td'|'tfoot'|'th'|'thead'|'title'|'tr'|'track'|'ul'; + blocktagname = 'address'|'article'|'aside'|'base'|'basefont'|'blockquote'|'body'|'caption'|'center'|'col'|'colgroup'|'dd'|'details'|'dialog'|'dir'|'div'|'dl'|'dt'|'fieldset'|'figcaption'|'figure'|'footer'|'form'|'frame'|'frameset'|'h1'|'h2'|'h3'|'h4'|'h5'|'h6'|'head'|'header'|'hr'|'html'|'iframe'|'legend'|'li'|'link'|'main'|'menu'|'menuitem'|'meta'|'nav'|'noframes'|'ol'|'optgroup'|'option'|'p'|'param'|'section'|'source'|'title'|'summary'|'table'|'tbody'|'td'|'tfoot'|'th'|'thead'|'title'|'tr'|'track'|'ul'; attributename = [a-zA-Z_:][a-zA-Z0-9:._-]*; - unquotedvalue = [^\"'=<>`\x00]+; + unquotedvalue = [^"'=<>`\x00]+; singlequotedvalue = ['][^'\x00]*[']; - doublequotedvalue = [\"][^\"\x00]*[\"]; + doublequotedvalue = ["][^"\x00]*["]; attributevalue = unquotedvalue | singlequotedvalue | doublequotedvalue; @@ -71,7 +71,7 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, in_single_quotes = ['] (escaped_char|[^'\x00])* [']; in_parens = [(] (escaped_char|[^)\x00])* [)]; - scheme = [A-Za-z ][A-Za-z.+-]{1,31}; + scheme = [A-Za-z][A-Za-z0-9.+-]{1,31}; */ // Try to match a scheme including colon. @@ -81,7 +81,7 @@ bufsize_t _scan_scheme(const unsigned char *p) const unsigned char *start = p; /*!re2c scheme [:] { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } @@ -92,7 +92,7 @@ bufsize_t _scan_autolink_uri(const unsigned char *p) const unsigned char *start = p; /*!re2c scheme [:][^\x00-\x20<>]*[>] { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } @@ -107,7 +107,7 @@ bufsize_t _scan_autolink_email(const unsigned char *p) [a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])? ([.][a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)* [>] { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } @@ -118,7 +118,7 @@ bufsize_t _scan_html_tag(const unsigned char *p) const unsigned char *start = p; /*!re2c htmltag { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } @@ -135,7 +135,7 @@ bufsize_t _scan_html_block_start(const unsigned char *p) ']) { return 6; } - .? { return 0; } + * { return 0; } */ } @@ -146,7 +146,7 @@ bufsize_t _scan_html_block_start_7(const unsigned char *p) const unsigned char *marker = NULL; /*!re2c [<] (opentag | closetag) [\t\n\f ]* [\r\n] { return 7; } - .? { return 0; } + * { return 0; } */ } @@ -156,8 +156,8 @@ bufsize_t _scan_html_block_end_1(const unsigned char *p) const unsigned char *marker = NULL; const unsigned char *start = p; /*!re2c - .* [<] [/] ('script'|'pre'|'style') [>] { return (bufsize_t)(p - start); } - .? { return 0; } + [^\n\x00]* [<] [/] ('script'|'pre'|'style') [>] { return (bufsize_t)(p - start); } + * { return 0; } */ } @@ -167,8 +167,8 @@ bufsize_t _scan_html_block_end_2(const unsigned char *p) const unsigned char *marker = NULL; const unsigned char *start = p; /*!re2c - .* '-->' { return (bufsize_t)(p - start); } - .? { return 0; } + [^\n\x00]* '-->' { return (bufsize_t)(p - start); } + * { return 0; } */ } @@ -178,8 +178,8 @@ bufsize_t _scan_html_block_end_3(const unsigned char *p) const unsigned char *marker = NULL; const unsigned char *start = p; /*!re2c - .* '?>' { return (bufsize_t)(p - start); } - .? { return 0; } + [^\n\x00]* '?>' { return (bufsize_t)(p - start); } + * { return 0; } */ } @@ -189,8 +189,8 @@ bufsize_t _scan_html_block_end_4(const unsigned char *p) const unsigned char *marker = NULL; const unsigned char *start = p; /*!re2c - .* '>' { return (bufsize_t)(p - start); } - .? { return 0; } + [^\n\x00]* '>' { return (bufsize_t)(p - start); } + * { return 0; } */ } @@ -200,23 +200,8 @@ bufsize_t _scan_html_block_end_5(const unsigned char *p) const unsigned char *marker = NULL; const unsigned char *start = p; /*!re2c - .* ']]>' { return (bufsize_t)(p - start); } - .? { return 0; } -*/ -} - -// Try to match a URL in a link or reference, return number of chars matched. -// This may optionally be contained in <..>; otherwise -// whitespace and unbalanced right parentheses aren't allowed. -// Newlines aren't ever allowed. -bufsize_t _scan_link_url(const unsigned char *p) -{ - const unsigned char *marker = NULL; - const unsigned char *start = p; -/*!re2c - [ \r\n]* [<] ([^<> \t\r\n\\\x00] | escaped_char | [\\])* [>] { return (bufsize_t)(p - start); } - [ \r\n]* (reg_char+ | escaped_char | [\\] [^() \t\v\f\r\n] | in_parens_nosp)* [\\]? { return (bufsize_t)(p - start); } - .? { return 0; } + [^\n\x00]* ']]>' { return (bufsize_t)(p - start); } + * { return 0; } */ } @@ -231,18 +216,17 @@ bufsize_t _scan_link_title(const unsigned char *p) ["] (escaped_char|[^"\x00])* ["] { return (bufsize_t)(p - start); } ['] (escaped_char|[^'\x00])* ['] { return (bufsize_t)(p - start); } [(] (escaped_char|[^)\x00])* [)] { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } // Match space characters, including newlines. bufsize_t _scan_spacechars(const unsigned char *p) { - const unsigned char *marker = NULL; const unsigned char *start = p; \ /*!re2c - [ \t\v\f\r\n]* { return (bufsize_t)(p - start); } - . { return 0; } + [ \t\v\f\r\n]+ { return (bufsize_t)(p - start); } + * { return 0; } */ } @@ -253,7 +237,7 @@ bufsize_t _scan_atx_heading_start(const unsigned char *p) const unsigned char *start = p; /*!re2c [#]{1,6} ([ \t]+|[\r\n]) { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } @@ -263,9 +247,9 @@ bufsize_t _scan_setext_heading_line(const unsigned char *p) { const unsigned char *marker = NULL; /*!re2c - [=]+ [ ]* [\r\n] { return 1; } - [-]+ [ ]* [\r\n] { return 2; } - .? { return 0; } + [=]+ [ \t]* [\r\n] { return 1; } + [-]+ [ \t]* [\r\n] { return 2; } + * { return 0; } */ } @@ -280,7 +264,7 @@ bufsize_t _scan_thematic_break(const unsigned char *p) ([*][ \t]*){3,} [ \t]* [\r\n] { return (bufsize_t)(p - start); } ([_][ \t]*){3,} [ \t]* [\r\n] { return (bufsize_t)(p - start); } ([-][ \t]*){3,} [ \t]* [\r\n] { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } @@ -292,7 +276,7 @@ bufsize_t _scan_open_code_fence(const unsigned char *p) /*!re2c [`]{3,} / [^`\r\n\x00]*[\r\n] { return (bufsize_t)(p - start); } [~]{3,} / [^~\r\n\x00]*[\r\n] { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } @@ -304,7 +288,7 @@ bufsize_t _scan_close_code_fence(const unsigned char *p) /*!re2c [`]{3,} / [ \t]*[\r\n] { return (bufsize_t)(p - start); } [~]{3,} / [ \t]*[\r\n] { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } @@ -317,7 +301,7 @@ bufsize_t _scan_entity(const unsigned char *p) /*!re2c [&] ([#] ([Xx][A-Fa-f0-9]{1,8}|[0-9]{1,8}) |[A-Za-z][A-Za-z0-9]{1,31} ) [;] { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } @@ -330,7 +314,7 @@ bufsize_t _scan_dangerous_url(const unsigned char *p) /*!re2c 'data:image/' ('png'|'gif'|'jpeg'|'webp') { return 0; } 'javascript:' | 'vbscript:' | 'file:' | 'data:' { return (bufsize_t)(p - start); } - .? { return 0; } + * { return 0; } */ } From 61d9fae6231667bba618f71af09f87205a146945 Mon Sep 17 00:00:00 2001 From: Adrian Nowicki Date: Sun, 20 Aug 2017 22:39:30 +0200 Subject: [PATCH 5/6] fix build Signed-off-by: Adrian Nowicki --- cmark.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmark.h b/cmark.h index d1a65aa..5b88f31 100644 --- a/cmark.h +++ b/cmark.h @@ -2,8 +2,8 @@ #define CMARK_H #include -#include -#include +#include "cmark_export.h" +#include "cmark_version.h" #ifdef __cplusplus extern "C" { From 02f705bb035c7d4908e51d5e4ea8a0160b4cf2ce Mon Sep 17 00:00:00 2001 From: Adrian Nowicki Date: Mon, 21 Aug 2017 13:41:31 +0200 Subject: [PATCH 6/6] fix update to 0.28.0 Signed-off-by: Adrian Nowicki --- inlines.c | 14 +++++--------- latex.c | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/inlines.c b/inlines.c index 2d7f385..f223baf 100644 --- a/inlines.c +++ b/inlines.c @@ -345,8 +345,7 @@ static int scan_delims(subject *subj, unsigned char c, bool *can_open, *can_close = right_flanking && (!left_flanking || cmark_utf8proc_is_punctuation(after_char)); } else if (c == '\'' || c == '"') { - *can_open = left_flanking && !right_flanking && - before_char != ']' && before_char != ')'; + *can_open = left_flanking && !right_flanking; *can_close = right_flanking; } else { *can_open = left_flanking; @@ -616,7 +615,7 @@ static delimiter *S_insert_emph(subject *subj, delimiter *opener, cmark_node *tmp, *tmpnext, *emph; // calculate the actual number of characters used from this closer - use_delims = (closer_num_chars >= 2 && opener_num_chars >= 2) ? 2 : 1; + use_delims = (closer_num_chars >= 2 && opener_num_chars >=2) ? 2 : 1; // remove used characters from associated inlines. opener_num_chars -= use_delims; @@ -822,8 +821,7 @@ static int link_label(subject *subj, cmark_chunk *raw_label) { return 0; } -static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset, - cmark_chunk *output) { +static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset, cmark_chunk *output) { bufsize_t i = offset; size_t nb_p = 0; @@ -856,8 +854,7 @@ static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset, return i - offset; } -static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset, - cmark_chunk *output) { +static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset, cmark_chunk *output) { bufsize_t i = offset; if (i < input->len && input->data[i] == '<') { @@ -927,8 +924,7 @@ static cmark_node *handle_close_bracket(subject *subj) { // First, look for an inline link. if (peek_char(subj) == '(' && ((sps = scan_spacechars(&subj->input, subj->pos + 1)) > -1) && - ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps, - &url_chunk)) > -1)) { + ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps, &url_chunk)) > -1)) { // try to parse an explicit link: endurl = subj->pos + 1 + sps + n; diff --git a/latex.c b/latex.c index 0d9517d..f372a13 100644 --- a/latex.c +++ b/latex.c @@ -252,24 +252,24 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node, CR(); list_number = cmark_node_get_list_start(node); if (list_number > 1) { - enumlevel = S_get_enumlevel(node); - // latex normally supports only five levels - if (enumlevel >= 1 && enumlevel <= 5) { + enumlevel = S_get_enumlevel(node); + // latex normally supports only five levels + if (enumlevel >= 1 && enumlevel <= 5) { snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d", list_number); LIT("\\setcounter{enum"); - switch (enumlevel) { - case 1: LIT("i"); break; - case 2: LIT("ii"); break; - case 3: LIT("iii"); break; - case 4: LIT("iv"); break; - case 5: LIT("v"); break; - default: LIT("i"); break; + switch(enumlevel) { + case 1: LIT("i"); break; + case 2: LIT("ii"); break; + case 3: LIT("iii"); break; + case 4: LIT("iv"); break; + case 5: LIT("v"); break; + default: LIT("i"); break; } LIT("}{"); OUT(list_number_string, false, NORMAL); LIT("}"); - } + } CR(); } } else {