summaryrefslogtreecommitdiff
path: root/streamhtmlparser
diff options
context:
space:
mode:
authorAndreas Baumann <abaumann@yahoo.com>2012-07-14 17:16:21 +0200
committerAndreas Baumann <abaumann@yahoo.com>2012-07-14 17:16:21 +0200
commit54cce110784d33d658b5f78286a98bee244a9eeb (patch)
tree9c4d998343e7dc88323ae8ef6d5a04c6b958df9c /streamhtmlparser
parentfcb682cb1955d362390665330fdf476cab7dc10b (diff)
downloadcrawler-54cce110784d33d658b5f78286a98bee244a9eeb.tar.gz
crawler-54cce110784d33d658b5f78286a98bee244a9eeb.tar.bz2
added streamhtmlparser
Diffstat (limited to 'streamhtmlparser')
-rw-r--r--streamhtmlparser/GNUmakefile42
-rw-r--r--streamhtmlparser/config.h1
-rw-r--r--streamhtmlparser/htmlparser.c1145
-rw-r--r--streamhtmlparser/htmlparser_fsm.config336
-rw-r--r--streamhtmlparser/htmlparser_fsm.h8400
-rw-r--r--streamhtmlparser/include/htmlparser.h397
-rw-r--r--streamhtmlparser/include/htmlparser_cpp.h322
-rw-r--r--streamhtmlparser/include/jsparser.h163
-rw-r--r--streamhtmlparser/include/statemachine.h224
-rw-r--r--streamhtmlparser/jsparser.c662
-rw-r--r--streamhtmlparser/jsparser_fsm.config157
-rw-r--r--streamhtmlparser/jsparser_fsm.h3946
-rw-r--r--streamhtmlparser/statemachine.c450
-rwxr-xr-xstreamhtmlparser/tools/fsm_config.py223
-rwxr-xr-xstreamhtmlparser/tools/generate_fsm.py331
15 files changed, 16799 insertions, 0 deletions
diff --git a/streamhtmlparser/GNUmakefile b/streamhtmlparser/GNUmakefile
new file mode 100644
index 0000000..100d8b2
--- /dev/null
+++ b/streamhtmlparser/GNUmakefile
@@ -0,0 +1,42 @@
+TOPDIR = ..
+
+SUBDIRS =
+
+-include $(TOPDIR)/makefiles/gmake/platform.mk
+
+INCLUDE_CFLAGS =
+
+INCLUDE_LDFLAGS = \
+
+INCLUDE_DIRS = \
+ -Iinclude
+
+INCLUDE_LIBS =
+
+OBJS = \
+ statemachine.o \
+ jsparser.o \
+ htmlparser.o
+
+STATIC_LIB = \
+ libstreamhtmlparser.a
+
+-include $(TOPDIR)/makefiles/gmake/sub.mk
+
+%.h: %.config
+ python2 tools/generate_fsm.py $< > $@
+
+htmlparser_fsm.h: htmlparser_fsm.config
+jsparser_fsm.h: jsparser_fsm.config
+
+local_all:
+
+local_clean:
+
+local_distclean:
+
+local_install:
+
+local_uninstall:
+
+local_test:
diff --git a/streamhtmlparser/config.h b/streamhtmlparser/config.h
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/streamhtmlparser/config.h
@@ -0,0 +1 @@
+
diff --git a/streamhtmlparser/htmlparser.c b/streamhtmlparser/htmlparser.c
new file mode 100644
index 0000000..c88486a
--- /dev/null
+++ b/streamhtmlparser/htmlparser.c
@@ -0,0 +1,1145 @@
+/* Copyright (c) 2007, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Filipe Almeida
+ */
+
+/* TODO(falmeida): Breaks on NULL characters in the stream. fix.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+#include <ctype.h>
+#include <assert.h>
+
+#include "statemachine.h"
+#include "htmlparser.h"
+#include "jsparser.h"
+
+/* So we can support both C and C++ compilers, we use the CAST() macro instead
+ * of using C style casts or static_cast<>() directly.
+ */
+#ifdef __cplusplus
+ #define CAST(type, expression) (static_cast<type>(expression))
+#else
+ #define CAST(type, expression) ((type)(expression))
+#endif
+
+/* Generated state machine definition. */
+#include "htmlparser_fsm.h"
+
+#define is_js_attribute(attr) ((attr)[0] == 'o' && (attr)[1] == 'n')
+#define is_style_attribute(attr) (strcmp((attr), "style") == 0)
+
+/* html entity filter */
+static struct entityfilter_table_s {
+ const char *entity;
+ const char *value;
+} entityfilter_table[] = {
+ { "lt", "<" },
+ { "gt", ">" },
+ { "quot", "\"" },
+ { "amp", "&" },
+ { "apos", "\'" },
+ { NULL, NULL }
+};
+
+/* Utility functions */
+
+/* Similar to strncpy() but avoids the NULL padding. */
+static inline void nopad_strncpy(char *dst, const char *src, size_t dst_size,
+ size_t src_size)
+{
+ size_t size;
+
+ /* size = min(dst_size, src_size) */
+ size = dst_size > src_size ? src_size : dst_size;
+ strncpy(dst, src, size);
+ if (size > 0)
+ dst[size - 1] = '\0';
+}
+
+/* Converts the internal state into the external superstate.
+ */
+static int state_external(int st)
+{
+ if (st == STATEMACHINE_ERROR)
+ return HTMLPARSER_STATE_ERROR;
+ else
+ return htmlparser_states_external[st];
+}
+
+/* Returns true if the character is considered an html whitespace character.
+ *
+ * From: http://www.w3.org/TR/html401/struct/text.html#h-9.1
+ */
+static inline int html_isspace(char chr)
+{
+ if (chr == ' ' || chr == '\t' || chr == '\n' || chr == '\r') {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+/* Returns true if the attribute is expected to contain a url
+ * This list was taken from: http://www.w3.org/TR/html4/index/attributes.html
+ */
+static int is_uri_attribute(char *attr)
+{
+ if (attr == NULL)
+ return 0;
+
+ switch (attr[0]) {
+ case 'a':
+ if (strcmp(attr, "action") == 0)
+ return 1;
+ /* TODO(falmeida): This is a uri list. Should we treat it diferently? */
+ if (strcmp(attr, "archive") == 0) /* This is a uri list */
+ return 1;
+ break;
+
+ case 'b':
+ if (strcmp(attr, "background") == 0)
+ return 1;
+ break;
+
+ case 'c':
+ if (strcmp(attr, "cite") == 0)
+ return 1;
+ if (strcmp(attr, "classid") == 0)
+ return 1;
+ if (strcmp(attr, "codebase") == 0)
+ return 1;
+ break;
+
+ case 'd':
+ if (strcmp(attr, "data") == 0)
+ return 1;
+ if (strcmp(attr, "dynsrc") == 0) /* from msdn */
+ return 1;
+ break;
+
+ case 'h':
+ if (strcmp(attr, "href") == 0)
+ return 1;
+ break;
+
+ case 'l':
+ if (strcmp(attr, "longdesc") == 0)
+ return 1;
+ break;
+
+ case 's':
+ if (strcmp(attr, "src") == 0)
+ return 1;
+ break;
+
+ case 'u':
+ if (strcmp(attr, "usemap") == 0)
+ return 1;
+ break;
+ }
+
+ return 0;
+
+}
+
+/* Convert a string to lower case characters inplace.
+ */
+static void tolower_str(char *s)
+{
+ while (*s != '\0') {
+ *s = CAST(char, tolower(CAST(unsigned char,*s)));
+ s++;
+ }
+}
+
+static const char *ignore_spaces_or_digits(const char *value) {
+ while (html_isspace(*value) || ((*value >= '0' && *value <= '9')))
+ value++;
+
+ return value;
+}
+
+static const char *ignore_spaces(const char *value) {
+ while (html_isspace(*value))
+ value++;
+
+ return value;
+}
+
+/* Return type of the function meta_redirect_type.
+ */
+enum meta_redirect_type_enum {
+ META_REDIRECT_TYPE_NONE,
+ META_REDIRECT_TYPE_URL_START,
+ META_REDIRECT_TYPE_URL
+};
+
+/* Analyzes a string for the presence of a meta refresh type url.
+ *
+ * This function receives the value of the content attribute of a meta tag and
+ * parses it in order to identify if a url is going to be present. This is the
+ * format of such tag:
+ *
+ * <meta http-equiv="refresh" content="5; URL=http://www.google.com">
+ *
+ * Using a regular expression library would be the most obvious way to implement
+ * this functionality, but introducing such a dependency is undesirable. We
+ * opted instead to parse programmaticly since the expression is simple enough.
+ *
+ * For reference, this is the spec on the meta http refresh tag:
+ * http://dev.w3.org/html5/spec/Overview.html#attr-meta-http-equiv-refresh
+ *
+ * If the value has no content after the expression, we know we are at the start
+ * of the URL. Otherwise we are past the start of the URL.
+ *
+ *
+ * Returns:
+ *
+ * This functions returns one of the following values:
+ * META_REDIRECT_TYPE_NONE - A url was not identified in the input string.
+ * META_REDIRECT_TYPE_URL_START - The input string ends exactly at the start
+ * of the url.
+ * META_REDIRECT_TYPE_URL - The input string ends somewhere in the middle or
+ * the end of the url.
+ *
+ * A few examples:
+ * "5"
+ * Returns META_REDIRECT_TYPE_NONE since we don't expect a url to follow.
+ *
+ * "5; URL = "
+ * The function returns META_REDIRECT_TYPE_URL_START since we expect a url to
+ * follow.
+ *
+ * "5; URL = http://www.google.com/?"
+ * Returns META_REDIRECT_TYPE_URL since the input value terminates in the
+ * middle or end of a url.
+ *
+ *
+ * Caveats: We are only recording up to 256 characters of attribute values, so
+ * our analysis is limited to that. This shouldn't be an issue in practice
+ * though as it would be unexpected for the part of the string that we are
+ * matching to be so long.
+ */
+static enum meta_redirect_type_enum meta_redirect_type(const char *value) {
+
+ if (value == NULL)
+ return META_REDIRECT_TYPE_NONE;
+
+ /* Match while [ \t\r\n0-9]* */
+ value = ignore_spaces_or_digits(value);
+
+ /* Verify that we got a semi-colon character */
+ if (*value != ';')
+ return META_REDIRECT_TYPE_NONE;
+ value++;
+
+ /* Match while [ \t\r\n]* */
+ value = ignore_spaces(value);
+
+ /* Validate that we have 'URL' */
+ if (strncasecmp(value, "url", strlen("url")) != 0)
+ return META_REDIRECT_TYPE_NONE;
+
+ value += strlen("url");
+
+ /* Match while [ \t\r\n]* */
+ value = ignore_spaces(value);
+
+ if (*value != '=')
+ return META_REDIRECT_TYPE_NONE;
+ value++;
+
+ /* Match while [ \t\r\n]* */
+ value = ignore_spaces(value);
+
+ /* The HTML5 spec allows for the url to be quoted, so we skip a single or
+ * double quote if we find one.
+ */
+ if (*value == '"' || *value == '\'')
+ value++;
+
+ if (*value == '\0')
+ return META_REDIRECT_TYPE_URL_START;
+ else
+ return META_REDIRECT_TYPE_URL;
+}
+
+
+/* Resets the entityfilter to it's initial state so it can be reused.
+ */
+void entityfilter_reset(entityfilter_ctx *ctx)
+{
+ ctx->buffer[0] = 0;
+ ctx->buffer_pos = 0;
+ ctx->in_entity = 0;
+}
+
+/* Initializes a new entity filter object.
+ */
+entityfilter_ctx *entityfilter_new(void)
+{
+ entityfilter_ctx *ctx;
+ ctx = CAST(entityfilter_ctx *,
+ malloc(sizeof(entityfilter_ctx)));
+
+ if (ctx == NULL)
+ return NULL;
+ ctx->buffer[0] = 0;
+ ctx->buffer_pos = 0;
+ ctx->in_entity = 0;
+
+ return ctx;
+}
+
+/* Copies the context of the entityfilter pointed to by src to the entityfilter
+ * dst.
+ */
+void entityfilter_copy(entityfilter_ctx *dst, entityfilter_ctx *src)
+{
+ assert(src != NULL);
+ assert(dst != NULL);
+ assert(src != dst);
+ memcpy(dst, src, sizeof(entityfilter_ctx));
+}
+
+
+/* Deallocates an entity filter object.
+ */
+void entityfilter_delete(entityfilter_ctx *ctx)
+{
+ free(ctx);
+}
+
+/* Converts a string containing an hexadecimal number to a string containing
+ * one character with the corresponding ascii value.
+ *
+ * The provided output char array must be at least 2 chars long.
+ */
+static const char *parse_hex(const char *s, char *output)
+{
+ int n;
+ n = strtol(s, NULL, 16);
+ output[0] = n;
+ output[1] = 0;
+ /* TODO(falmeida): Make this function return void */
+ return output;
+}
+
+/* Converts a string containing a decimal number to a string containing one
+ * character with the corresponding ascii value.
+ *
+ * The provided output char array must be at least 2 chars long.
+ */
+static const char *parse_dec(const char *s, char *output)
+{
+ int n;
+ n = strtol(s, NULL, 10);
+ output[0] = n;
+ output[1] = 0;
+ return output;
+}
+
+/* Converts a string with an html entity to it's encoded form, which is written
+ * to the output string.
+ */
+static const char *entity_convert(const char *s, char *output, char terminator)
+{
+ /* TODO(falmeida): Handle wide char encodings */
+ struct entityfilter_table_s *t = entityfilter_table;
+
+ if (s[0] == '#') {
+ if (s[1] == 'x' || s[1] == 'X') { /* hex */
+ return parse_hex(s + 2, output);
+ } else { /* decimal */
+ return parse_dec(s + 1, output);
+ }
+ }
+
+ while (t->entity != NULL) {
+ if (strcasecmp(t->entity, s) == 0)
+ return t->value;
+ t++;
+ }
+
+ snprintf(output, HTMLPARSER_MAX_ENTITY_SIZE, "&%s%c", s, terminator);
+ output[HTMLPARSER_MAX_ENTITY_SIZE - 1] = '\0';
+
+ return output;
+}
+
+
+/* Processes a character from the input stream and decodes any html entities
+ * in the processed input stream.
+ */
+const char *entityfilter_process(entityfilter_ctx *ctx, char c)
+{
+ if (ctx->in_entity) {
+ if (c == ';' || html_isspace(c)) {
+ ctx->in_entity = 0;
+ ctx->buffer[ctx->buffer_pos] = '\0';
+ ctx->buffer_pos = 0;
+ return entity_convert(ctx->buffer, ctx->output, c);
+ } else {
+ ctx->buffer[ctx->buffer_pos++] = c;
+ if (ctx->buffer_pos >= HTMLPARSER_MAX_ENTITY_SIZE - 2) {
+ /* No more buffer to use, finalize and return.
+ * We need two characters left, one for the '&' character and
+ * another for the NULL termination. */
+ ctx->buffer[ctx->buffer_pos] = '\0';
+ ctx->in_entity=0;
+ ctx->buffer_pos = 0;
+ snprintf(ctx->output, HTMLPARSER_MAX_ENTITY_SIZE, "&%s",
+ ctx->buffer);
+ ctx->output[HTMLPARSER_MAX_ENTITY_SIZE - 1] = '\0';
+ return ctx->output;
+ }
+ }
+ } else {
+ if (c == '&') {
+ ctx->in_entity = 1;
+ ctx->buffer_pos = 0;
+ } else {
+ ctx->output[0] = c;
+ ctx->output[1] = 0;
+ return ctx->output;
+ }
+ }
+ return "";
+}
+
+/* Called when the parser enters a new tag. Starts recording it's name into
+ * html->tag.
+ */
+static void enter_tag_name(statemachine_ctx *ctx, int start, char chr, int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ html->tag[0] = '\0';
+ statemachine_start_record(ctx);
+}
+
+/* Called when the parser exits the tag name in order to finalize the recording.
+ *
+ * It converts the tag name to lowercase, and if the tag was closed, just
+ * clears html->tag.
+ */
+static void exit_tag_name(statemachine_ctx *ctx, int start, char chr, int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ nopad_strncpy(html->tag, statemachine_stop_record(ctx),
+ HTMLPARSER_MAX_STRING, statemachine_record_length(ctx));
+
+ tolower_str(html->tag);
+
+ if (html->tag[0] == '/')
+ html->tag[0] = '\0';
+}
+
+/* Called when the parser enters a new tag. Starts recording it's name into
+ * html->attr
+ */
+static void enter_attr(statemachine_ctx *ctx, int start, char chr, int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ html->attr[0] = '\0';
+ statemachine_start_record(ctx);
+}
+
+/* Called when the parser exits the attribute name in order to finalize the
+ * recording.
+ *
+ * It converts the tag name to lowercase.
+ */
+static void exit_attr(statemachine_ctx *ctx, int start, char chr, int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ nopad_strncpy(html->attr, statemachine_stop_record(ctx),
+ HTMLPARSER_MAX_STRING, statemachine_record_length(ctx));
+
+ tolower_str(html->attr);
+}
+
+/* Called when we enter an attribute value.
+ *
+ * Keeps track of a position index inside the value and initializes the
+ * javascript state machine for attributes that accept javascript.
+ */
+static void enter_value(statemachine_ctx *ctx, int start, char chr, int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ html->value_index = 0;
+
+ if (is_js_attribute(html->attr)) {
+ entityfilter_reset(html->entityfilter);
+ jsparser_reset(html->jsparser);
+ html->in_js = 1;
+ } else {
+ html->in_js = 0;
+ }
+}
+
+/* Called when we enter the contents of an attribute value.
+ *
+ * Initializes the recording of the contents of the value.
+ */
+static void enter_value_content(statemachine_ctx *ctx, int start, char chr,
+ int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ html->value[0] = '\0';
+ statemachine_start_record(ctx);
+}
+
+/* Called when we exit the contents of an attribute value.
+ *
+ * Finalizes the recording of the contents of the value.
+ */
+static void exit_value_content(statemachine_ctx *ctx, int start, char chr,
+ int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ nopad_strncpy(html->value, statemachine_stop_record(ctx),
+ HTMLPARSER_MAX_STRING, statemachine_record_length(ctx));
+
+ html->in_js = 0;
+}
+
+/* Called for every character inside an attribute value.
+ *
+ * Used to process javascript and keep track of the position index inside the
+ * attribute value.
+ */
+static void in_state_value(statemachine_ctx *ctx, int start, char chr, int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ html->value_index++;
+
+ if (html->in_js == 1) {
+ const char *output;
+ output = entityfilter_process(html->entityfilter, chr);
+ jsparser_parse_str(html->jsparser, output);
+ }
+}
+
+/* Called everytime the parser leaves a tag definition.
+ *
+ * When we encounter a script tag, we initialize the js parser and switch the
+ * state to cdata. We also switch to the cdata state when we encounter any
+ * other CDATA/RCDATA tag (style, title or textarea) except that we do not
+ * initialize the js parser.
+ *
+ * To simplify the code, we treat RCDATA and CDATA sections the same since the
+ * differences between them don't affect the context we are in.
+ */
+static void tag_close(statemachine_ctx *ctx, int start, char chr, int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ if (strcmp(html->tag, "script") == 0) {
+ ctx->next_state = HTMLPARSER_STATE_INT_CDATA_TEXT;
+ jsparser_reset(html->jsparser);
+ html->in_js = 1;
+ } else if (strcmp(html->tag, "style") == 0 ||
+ strcmp(html->tag, "title") == 0 ||
+ strcmp(html->tag, "textarea") == 0) {
+ ctx->next_state = HTMLPARSER_STATE_INT_CDATA_TEXT;
+ html->in_js = 0;
+ }
+}
+
+/* Called inside cdata blocks in order to parse the javascript.
+ *
+ * Calls the javascript parser if currently in a script tag.
+ */
+static void in_state_cdata(statemachine_ctx *ctx, int start, char chr, int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ if (html->in_js)
+ jsparser_parse_chr(html->jsparser, chr);
+}
+
+/* Called if we encounter a '<' character in a cdata section.
+ *
+ * When encountering a '<' character inside cdata, we need to find the closing
+ * tag name in order to know if the tag is going to be closed or not, so we
+ * start recording the name of what could be the closing tag.
+ */
+static void enter_state_cdata_may_close(statemachine_ctx *ctx, int start,
+ char chr, int end)
+{
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ statemachine_start_record(ctx);
+}
+
+/* Called when we finish reading what could be a closing cdata tag.
+ *
+ * Checks if the closing tag name matches the current entity, and if so closes
+ * the element.
+ */
+static void exit_state_cdata_may_close(statemachine_ctx *ctx, int start,
+ char chr, int end)
+{
+ htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user);
+ const char *cdata_close_tag;
+ assert(html != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ cdata_close_tag = statemachine_stop_record(ctx);
+ assert(cdata_close_tag[0] == '/');
+
+ if (strcasecmp(&cdata_close_tag[1], html->tag) == 0 &&
+ (chr == '>' || html_isspace(chr))) { /* Make sure we have a delimiter */
+ html->tag[0] = '\0'; /* Empty tag mimicking exit_tag_name(). */
+ html->in_js = 0; /* In case this was a script tag. */
+ } else {
+ /* Does not close the CDATA section. Go back to CDATA. */
+ ctx->next_state = HTMLPARSER_STATE_INT_CDATA_TEXT;
+ }
+}
+
+/* Resets the parser to it's initial state and changes the parser mode.
+ */
+void htmlparser_reset_mode(htmlparser_ctx *ctx, int mode)
+{
+ assert(ctx != NULL);
+ statemachine_reset(ctx->statemachine);
+ ctx->in_js = 0;
+ ctx->tag[0] = '\0';
+ ctx->attr[0] = '\0';
+ ctx->value[0] = '\0';
+
+ jsparser_reset(ctx->jsparser);
+
+ switch (mode) {
+ case HTMLPARSER_MODE_HTML:
+ ctx->statemachine->current_state = HTMLPARSER_STATE_INT_TEXT;
+ break;
+ case HTMLPARSER_MODE_JS:
+ ctx->statemachine->current_state = HTMLPARSER_STATE_INT_JS_FILE;
+ ctx->in_js = 1;
+ break;
+ case HTMLPARSER_MODE_CSS:
+ ctx->statemachine->current_state = HTMLPARSER_STATE_INT_CSS_FILE;
+ break;
+ case HTMLPARSER_MODE_HTML_IN_TAG:
+ ctx->statemachine->current_state = HTMLPARSER_STATE_INT_TAG_SPACE;
+ break;
+ default:
+ assert("Invalid mode in htmlparser_reset_mode()." == NULL);
+ }
+}
+
+/* Resets the parser to it's initial state and to the default mode, which
+ * is MODE_HTML.
+ */
+void htmlparser_reset(htmlparser_ctx *ctx)
+{
+ assert(ctx != NULL);
+ htmlparser_reset_mode(ctx, HTMLPARSER_MODE_HTML);
+}
+
+/* Creates a new state machine definition and initializes the events for the
+ * state transitions.
+ *
+ * Although each instance of the parser has it's own private instance of a
+ * statemachine definition, they are still identical across html parser objects
+ * and are never modified after creation. As such, changes to this definition
+ * should not occur outside this function and should not depend on properties
+ * of this particular parser instance as in the future we may opt to use a
+ * single public definition across parser objects.
+ */
+static statemachine_definition *create_statemachine_definition(void)
+{
+ statemachine_definition *def;
+ def = statemachine_definition_new(HTMLPARSER_NUM_STATES);
+ if (def == NULL)
+ return NULL;
+
+ statemachine_definition_populate(def, htmlparser_state_transitions,
+ htmlparser_states_internal_names);
+
+ statemachine_enter_state(def, HTMLPARSER_STATE_INT_TAG_NAME,
+ enter_tag_name);
+ statemachine_exit_state(def, HTMLPARSER_STATE_INT_TAG_NAME, exit_tag_name);
+
+ statemachine_enter_state(def, HTMLPARSER_STATE_INT_ATTR, enter_attr);
+ statemachine_exit_state(def, HTMLPARSER_STATE_INT_ATTR, exit_attr);
+
+ statemachine_enter_state(def, HTMLPARSER_STATE_INT_TAG_CLOSE, tag_close);
+
+ /* CDATA states. We must list all cdata and javascript states here. */
+ /* TODO(falmeida): Declare this list in htmlparser_fsm.config so it doesn't
+ * go out of sync.
+ */
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_TEXT, in_state_cdata);
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_START,
+ in_state_cdata);
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_START_DASH,
+ in_state_cdata);
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ in_state_cdata);
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH,
+ in_state_cdata);
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH,
+ in_state_cdata);
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_LT, in_state_cdata);
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ in_state_cdata);
+
+ /* For simplification, we treat the javascript mode as if it were cdata. */
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_JS_FILE, in_state_cdata);
+
+ statemachine_enter_state(def, HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ enter_state_cdata_may_close);
+ statemachine_exit_state(def, HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ exit_state_cdata_may_close);
+ /* value states */
+ statemachine_enter_state(def, HTMLPARSER_STATE_INT_VALUE, enter_value);
+
+ /* Called when we enter the content of the value */
+ statemachine_enter_state(def, HTMLPARSER_STATE_INT_VALUE_TEXT,
+ enter_value_content);
+ statemachine_enter_state(def, HTMLPARSER_STATE_INT_VALUE_Q,
+ enter_value_content);
+ statemachine_enter_state(def, HTMLPARSER_STATE_INT_VALUE_DQ,
+ enter_value_content);
+
+ /* Called when we exit the content of the value */
+ statemachine_exit_state(def, HTMLPARSER_STATE_INT_VALUE_TEXT,
+ exit_value_content);
+ statemachine_exit_state(def, HTMLPARSER_STATE_INT_VALUE_Q,
+ exit_value_content);
+ statemachine_exit_state(def, HTMLPARSER_STATE_INT_VALUE_DQ,
+ exit_value_content);
+
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_VALUE_TEXT, in_state_value);
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_VALUE_Q, in_state_value);
+ statemachine_in_state(def, HTMLPARSER_STATE_INT_VALUE_DQ, in_state_value);
+
+ return def;
+}
+
+
+/* Initializes a new htmlparser instance.
+ *
+ * Returns a pointer to the new instance or NULL if the initialization fails.
+ * Initialization failure is fatal, and if this function fails it may not
+ * deallocate all previsouly allocated memory.
+ */
+htmlparser_ctx *htmlparser_new(void)
+{
+ htmlparser_ctx *html;
+
+ html = CAST(htmlparser_ctx *, calloc(1, sizeof(htmlparser_ctx)));
+ if (html == NULL)
+ return NULL;
+
+ html->statemachine_def = create_statemachine_definition();
+ if (html->statemachine_def == NULL)
+ return NULL;
+
+ html->statemachine = statemachine_new(html->statemachine_def, html);
+ if (html->statemachine == NULL)
+ return NULL;
+
+ html->jsparser = jsparser_new();
+ if (html->jsparser == NULL)
+ return NULL;
+
+ html->entityfilter = entityfilter_new();
+ if (html->entityfilter == NULL)
+ return NULL;
+
+ htmlparser_reset(html);
+
+ return html;
+}
+
+/* Copies the context of the htmlparser pointed to by src to the htmlparser dst.
+ */
+void htmlparser_copy(htmlparser_ctx *dst, const htmlparser_ctx *src)
+{
+ dst->value_index = src->value_index;
+ dst->in_js = src->in_js;
+ strcpy(dst->tag, src->tag);
+ strcpy(dst->attr, src->attr);
+ strcpy(dst->value, src->value);
+
+ statemachine_copy(dst->statemachine,
+ src->statemachine,
+ dst->statemachine_def,
+ dst);
+
+ jsparser_copy(dst->jsparser, src->jsparser);
+
+ entityfilter_copy(dst->entityfilter, src->entityfilter);
+
+}
+
+/* Receives an htmlparser context and Returns the current html state.
+ */
+int htmlparser_state(htmlparser_ctx *ctx)
+{
+ return state_external(ctx->statemachine->current_state);
+}
+
+/* Parses the input html stream and returns the finishing state.
+ */
+int htmlparser_parse(htmlparser_ctx *ctx, const char *str, int size)
+{
+ int internal_state;
+ internal_state = statemachine_parse(ctx->statemachine, str, size);
+ return state_external(internal_state);
+}
+
+
+/* Returns true if the parser is inside an attribute value and the value is
+ * surrounded by single or double quotes. */
+int htmlparser_is_attr_quoted(htmlparser_ctx *ctx) {
+ int st = statemachine_get_state(ctx->statemachine);
+ if (st == HTMLPARSER_STATE_INT_VALUE_Q_START ||
+ st == HTMLPARSER_STATE_INT_VALUE_Q ||
+ st == HTMLPARSER_STATE_INT_VALUE_DQ_START ||
+ st == HTMLPARSER_STATE_INT_VALUE_DQ)
+ return 1;
+ else
+ return 0;
+}
+
+/* Returns true if the parser is currently in javascript.
+ */
+int htmlparser_in_js(htmlparser_ctx *ctx) {
+ int st = statemachine_get_state(ctx->statemachine);
+
+/* CDATA states plus JS_FILE. We must list all cdata and javascript states
+ * here. */
+/* TODO(falmeida): Declare this list in htmlparser_fsm.config so it doesn't go
+ * out of sync. */
+ if (ctx->in_js &&
+ (st == HTMLPARSER_STATE_INT_CDATA_TEXT ||
+ st == HTMLPARSER_STATE_INT_CDATA_COMMENT_START ||
+ st == HTMLPARSER_STATE_INT_CDATA_COMMENT_START_DASH ||
+ st == HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY ||
+ st == HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH ||
+ st == HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH ||
+ st == HTMLPARSER_STATE_INT_CDATA_LT ||
+ st == HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE ||
+ st == HTMLPARSER_STATE_INT_JS_FILE))
+ return 1;
+
+ if (state_external(st) == HTMLPARSER_STATE_VALUE && ctx->in_js)
+ return 1;
+ else
+ return 0;
+}
+
+/* Returns the current tag or NULL if not available or we haven't seen the
+ * entire tag yet.
+ */
+const char *htmlparser_tag(htmlparser_ctx *ctx)
+{
+ if (ctx->tag[0] != '\0')
+ return ctx->tag;
+ else
+ return NULL;
+}
+
+/* Returns true if inside an attribute or a value */
+int htmlparser_in_attr(htmlparser_ctx *ctx);
+int htmlparser_in_attr(htmlparser_ctx *ctx)
+{
+ int ext_state = state_external(statemachine_get_state(ctx->statemachine));
+ return ext_state == HTMLPARSER_STATE_ATTR ||
+ ext_state == HTMLPARSER_STATE_VALUE;
+}
+
+/* Returns the current attribute name if after an attribute name or in an
+ * attribute value. Returns NULL otherwise. */
+const char *htmlparser_attr(htmlparser_ctx *ctx)
+{
+ if (htmlparser_in_attr(ctx))
+ return ctx->attr;
+ else
+ return NULL;
+}
+
+/* Returns true if the parser is currently inside a CSS construct.
+ */
+int htmlparser_in_css(htmlparser_ctx *ctx) {
+ int state = statemachine_get_state(ctx->statemachine);
+ const char *tag = htmlparser_tag(ctx);
+ int external_state = state_external(state);
+
+ if (state == HTMLPARSER_STATE_INT_CSS_FILE ||
+ (external_state == HTMLPARSER_STATE_VALUE &&
+ htmlparser_attr_type(ctx) == HTMLPARSER_ATTR_STYLE) ||
+ (tag && strcmp(tag, "style") == 0)) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+/* Returns the contents of the current attribute value.
+ */
+const char *htmlparser_value(htmlparser_ctx *ctx)
+{
+ int ext_state = state_external(statemachine_get_state(ctx->statemachine));
+ if (ext_state == HTMLPARSER_STATE_VALUE) {
+ strncpy(ctx->value, statemachine_record_buffer(ctx->statemachine),
+ HTMLPARSER_MAX_STRING);
+ ctx->value[HTMLPARSER_MAX_STRING - 1] = '\0';
+ return ctx->value;
+ } else {
+ return NULL;
+ }
+}
+
+
+/* Returns the current state of the javascript state machine
+ *
+ * Currently only present for testing purposes.
+ */
+int htmlparser_js_state(htmlparser_ctx *ctx)
+{
+ return jsparser_state(ctx->jsparser);
+}
+
+/* True is currently inside a javascript string literal
+ */
+int htmlparser_is_js_quoted(htmlparser_ctx *ctx)
+{
+ if (htmlparser_in_js(ctx)) {
+ int st = jsparser_state(ctx->jsparser);
+ if (st == JSPARSER_STATE_Q ||
+ st == JSPARSER_STATE_DQ)
+ return 1;
+ }
+ return 0;
+}
+
+/* True if currently inside an attribute value
+ */
+int htmlparser_in_value(htmlparser_ctx *ctx);
+int htmlparser_in_value(htmlparser_ctx *ctx)
+{
+ int ext_state = state_external(statemachine_get_state(ctx->statemachine));
+ return ext_state == HTMLPARSER_STATE_VALUE;
+}
+
+/* Returns the position inside the current attribute value
+ */
+int htmlparser_value_index(htmlparser_ctx *ctx)
+{
+ if (htmlparser_in_value(ctx))
+ return ctx->value_index;
+
+ return -1;
+}
+
+/* Returns true if this is the first character of a url inside an attribute.
+ */
+int htmlparser_is_url_start(htmlparser_ctx *ctx)
+{
+ const char *tag;
+
+ if (htmlparser_attr_type(ctx) == HTMLPARSER_ATTR_URI) {
+ tag = htmlparser_tag(ctx);
+
+ if ((tag && strcmp(tag, "meta") == 0 &&
+ meta_redirect_type(htmlparser_value(ctx)) ==
+ META_REDIRECT_TYPE_URL_START) ||
+ htmlparser_value_index(ctx) == 0)
+ return 1;
+
+ }
+ return 0;
+}
+
+/* Returns the current attribute type.
+ */
+int htmlparser_attr_type(htmlparser_ctx *ctx)
+{
+ const char *tag;
+ const char *attr;
+ const char *value;
+ enum meta_redirect_type_enum redirect_type;
+
+ if (!htmlparser_in_attr(ctx))
+ return HTMLPARSER_ATTR_NONE;
+
+ if (is_js_attribute(ctx->attr))
+ return HTMLPARSER_ATTR_JS;
+
+ if (is_uri_attribute(ctx->attr))
+ return HTMLPARSER_ATTR_URI;
+
+ if (is_style_attribute(ctx->attr))
+ return HTMLPARSER_ATTR_STYLE;
+
+ tag = htmlparser_tag(ctx);
+ attr = htmlparser_attr(ctx);
+
+ /* Special logic to handle meta redirect type tags. */
+ if (tag && strcmp(tag, "meta") == 0 &&
+ attr && strcmp(attr, "content") == 0) {
+
+ value = htmlparser_value(ctx);
+ redirect_type = meta_redirect_type(value);
+
+ if (redirect_type == META_REDIRECT_TYPE_URL ||
+ redirect_type == META_REDIRECT_TYPE_URL_START)
+ return HTMLPARSER_ATTR_URI;
+ }
+
+ return HTMLPARSER_ATTR_REGULAR;
+}
+
+/* Return the current line number. */
+int htmlparser_get_line_number(htmlparser_ctx *ctx) {
+ return statemachine_get_line_number(ctx->statemachine);
+}
+
+/* Set the current line number. */
+void htmlparser_set_line_number(htmlparser_ctx *ctx, int line) {
+ statemachine_set_line_number(ctx->statemachine, line);
+}
+
+/* Return the current column number. */
+int htmlparser_get_column_number(htmlparser_ctx *ctx) {
+ return statemachine_get_column_number(ctx->statemachine);
+}
+
+/* Set the current column number. */
+void htmlparser_set_column_number(htmlparser_ctx *ctx, int column) {
+ statemachine_set_column_number(ctx->statemachine, column);
+}
+
+/* Retrieve a human readable error message in case an error occurred.
+ *
+ * NULL is returned if the parser didn't encounter an error.
+ */
+const char *htmlparser_get_error_msg(htmlparser_ctx *ctx) {
+ return statemachine_get_error_msg(ctx->statemachine);
+}
+
+/* Invoked by the caller when text is expanded by the caller.
+ */
+int htmlparser_insert_text(htmlparser_ctx *ctx)
+{
+ /* TODO(falmeida): Generalize and use a table for these values. */
+
+ if (statemachine_get_state(ctx->statemachine) == HTMLPARSER_STATE_INT_VALUE) {
+ statemachine_set_state(ctx->statemachine, HTMLPARSER_STATE_INT_VALUE_TEXT);
+ }
+ return 1;
+}
+
+/* Deallocates an htmlparser context object.
+ */
+void htmlparser_delete(htmlparser_ctx *ctx)
+{
+ assert(ctx != NULL);
+ statemachine_definition_delete(ctx->statemachine_def);
+ statemachine_delete(ctx->statemachine);
+ jsparser_delete(ctx->jsparser);
+ entityfilter_delete(ctx->entityfilter);
+ free(ctx);
+}
diff --git a/streamhtmlparser/htmlparser_fsm.config b/streamhtmlparser/htmlparser_fsm.config
new file mode 100644
index 0000000..e80d055
--- /dev/null
+++ b/streamhtmlparser/htmlparser_fsm.config
@@ -0,0 +1,336 @@
+# Copyright 2008 Google Inc. All Rights Reserved.
+# Author: falmeida@google.com (Filipe Almeida)
+
+# TODO(falmeida): Add more descriptive names to the states and drop the
+# abbreviations.
+# TODO(falmeida): Reorder the states so that it's easier to read.
+# TODO(falmeida): Support CDATA blocks in the form: <![CDATA[.
+
+name = 'htmlparser'
+
+comment = 'Definition of a finite state machine for a subset of HTTP 4.1'
+
+condition('<', '<')
+condition('>', '>')
+condition('=', '=')
+
+# TODO(falmeida): This is not the correct expression. tag and attribute names
+# can only consist of alpha character.
+condition('id', 'A-Za-z0-9_:-')
+condition('idtag', 'A-Za-z0-9/_:-')
+
+# Whitespace according to: http://www.w3.org/TR/html401/struct/text.html#h-9.1
+condition('space', ' \t\n\r')
+condition('!', '!')
+condition('q', '\'')
+condition('dq', '\"')
+condition('/', '/')
+condition('*', '*')
+condition('-', '-')
+condition('?', '?')
+condition('lf', '\n')
+condition('quote', '\\')
+
+# TODO(falmeida): This default rule is a hack and shouldn't be here.
+condition('default', '[:default:]')
+
+state(name = 'text',
+ external = 'text',
+ transitions = [
+ ['<', 'tag_start'],
+ ['default', 'text']
+ ])
+
+# When we found the < character in text.
+# Tag opening is defined in the HTML5 draft here:
+# http://www.whatwg.org/specs/web-apps/current-work/#tag-open-state
+# We don't exactly follow this and are much more loose in order to mimic the way
+# the major browsers behave.
+state(name = 'tag_start',
+ external = 'tag',
+ transitions = [
+ ['idtag', 'tag_name'],
+ ['?', 'pi'],
+ ['!', 'declaration_start'],
+ ['<', 'tag_start'],
+ ['default', 'text']
+ ])
+
+# Name of the tag. Includes the closing tag character '/'.
+state(name = 'tag_name',
+ external = 'tag',
+ transitions = [
+ ['idtag', 'tag_name'],
+ ['space', 'tag_space'],
+ ['>', 'tag_close']
+ ])
+
+# HTML declaration and comment parsing
+#
+# We don't expose declaration state because at this point we only want to
+# ensure that we are parsing them correctly so we don't get out of sync.
+# This is specifically made for DOCTYPE declarations and won't work if DTD's
+# are defined inside the declaration.
+# The HTML5 spec says we should specificly look for the string '<!DOCTYPE HTML'
+# but that will add a lot of unecessary states, and unless we build a simple
+# declarative way to unfold a string match into multiple states, I don't
+# think it's worth worrying about for now.
+
+# Got '<!'. The next character will decide if we open a declaration or a
+# comment.
+state(name = 'declaration_start',
+ external = 'text',
+ transitions = [
+ ['-', 'comment_open'],
+ ['>', 'text'],
+ ['default', 'declaration_body']
+ ])
+
+# Inside a declaration. Ie: <!DOCTYPE. We close when we see a '>'
+state(name = 'declaration_body',
+ external = 'text',
+ transitions = [
+ ['>', 'text'],
+ ['default', 'declaration_body']
+ ])
+
+# Got '<!-'.
+state(name = 'comment_open',
+ external = 'text',
+ transitions = [
+ ['-', 'comment_body'],
+ ['default', 'text']
+ ])
+
+# Inside a comment. We only close when we see '-->'
+state(name = 'comment_body',
+ external = 'comment',
+ transitions = [
+ ['-', 'comment_dash'],
+ ['default', 'comment_body']
+ ])
+
+# Got '-' inside a comment.
+state(name = 'comment_dash',
+ external = 'comment',
+ transitions = [
+ ['-', 'comment_dash_dash'],
+ ['default', 'comment_body']
+ ])
+
+# Got '--' inside a comment.
+state(name = 'comment_dash_dash',
+ external = 'comment',
+ transitions = [
+ ['-', 'comment_dash_dash'],
+ ['>', 'text'],
+ ['default', 'comment_body']
+ ])
+
+# XML Processing instruction parsing according to:
+# http://www.w3.org/TR/REC-xml/#sec-pi
+#
+# Everything between the characters <? and ?> is considered to be part of the
+# processing instruction.
+state(name = 'pi',
+ external = 'text',
+ transitions = [
+ ['?', 'pi_may_end'],
+ ['default', 'pi']
+ ])
+
+state(name = 'pi_may_end',
+ external = 'text',
+ transitions = [
+ ['>', 'text'],
+ ['default', 'pi']
+ ])
+
+# Whitespace between tag name, attributes.
+state(name = 'tag_space',
+ external = 'tag',
+ transitions = [
+ ['>', 'tag_close'],
+ ['space', 'tag_space'],
+ ['id', 'attr'],
+ ['/', 'tag_space']
+ ])
+
+state(name = 'tag_close',
+ external = 'text',
+ transitions = [
+ ['<', 'tag_start'],
+ ['default', 'text']
+ ])
+
+# Name of the attribute.
+state(name = 'attr',
+ external = 'attr',
+ transitions = [
+ ['id', 'attr'],
+ ['>', 'tag_close'],
+ ['/', 'tag_space'],
+ ['=', 'value'],
+ ['space', 'attr_space']
+ ])
+
+# After the attribute name.
+state(name = 'attr_space',
+ external = 'attr',
+ transitions = [
+ ['>', 'tag_close'],
+ ['space', 'attr_space'],
+ ['id', 'attr'],
+ ['/', 'tag_space'],
+ ['=', 'value']
+ ])
+
+# Expecting a value, after attribute=
+state(name = 'value',
+ external = 'value',
+ transitions = [
+ ['q', 'value_q_start'],
+ ['dq', 'value_dq_start'],
+ ['space', 'value'],
+ ['>', 'tag_close'],
+ ['default', 'value_text']
+ ])
+
+# Unquoted attribute value.
+state(name = 'value_text',
+ external = 'value',
+ transitions = [
+ ['>', 'tag_close'],
+ ['space', 'tag_space'],
+ ['default', 'value_text']
+ ])
+
+# First character of a single quoted attribute value.
+state(name = 'value_q_start',
+ external = 'value',
+ transitions = [
+ ['q', 'tag_space'],
+ ['default', 'value_q']
+ ])
+
+# In the middle of a single quoted attribute value.
+state(name = 'value_q',
+ external = 'value',
+ transitions = [
+ ['q', 'tag_space'],
+ ['default', 'value_q']
+ ])
+
+# First character of a double quoted attribute value.
+state(name = 'value_dq_start',
+ external = 'value',
+ transitions = [
+ ['dq', 'tag_space'],
+ ['default', 'value_dq']
+ ])
+
+# In the middle of a double quoted attribute value.
+state(name = 'value_dq',
+ external = 'value',
+ transitions = [
+ ['dq', 'tag_space'],
+ ['default', 'value_dq']
+ ])
+
+# CDATA escaping text spans.
+# TODO(falmeida): These states should go after cdata_text.
+
+# Got '<!'
+state(name = 'cdata_comment_start',
+ external = 'text',
+ transitions = [
+ ['-', 'cdata_comment_start_dash'],
+ ['default', 'cdata_text'],
+ ])
+
+# Got '<!-'.
+state(name = 'cdata_comment_start_dash',
+ external = 'text',
+ transitions = [
+ ['-', 'cdata_comment_body'],
+ ['default', 'cdata_text']
+ ])
+
+# Inside a comment
+state(name = 'cdata_comment_body',
+ external = 'text',
+ transitions = [
+ ['-', 'cdata_comment_dash'],
+ ['default', 'cdata_comment_body']
+ ])
+
+# Got '-' inside a comment.
+state(name = 'cdata_comment_dash',
+ external = 'text',
+ transitions = [
+ ['-', 'cdata_comment_dash_dash'],
+ ['default', 'cdata_comment_body']
+ ])
+
+# Got '--' inside a comment.
+state(name = 'cdata_comment_dash_dash',
+ external = 'text',
+ transitions = [
+ ['-', 'cdata_comment_dash_dash'],
+ ['>', 'cdata_text'],
+ ['default', 'cdata_comment_body']
+ ])
+
+# CDATA processing
+#
+# To simplify the code, we treat RCDATA and CDATA sections the same since the
+# differences between them don't affect the context we are in.
+state(name = 'cdata_text',
+ external = 'text',
+ transitions = [
+ ['<', 'cdata_lt'],
+ ['default', 'cdata_text']
+ ])
+
+# Possible beginning of the closing tag.
+state(name = 'cdata_lt',
+ external = 'text',
+ transitions = [
+ ['/', 'cdata_may_close'],
+ ['!', 'cdata_comment_start'],
+ ['default', 'cdata_text']
+ ])
+
+# If we encounter </tag where tag matches the last opened tag, we exit the
+# CDATA section. Part of this logic is handled in the code.
+state(name = 'cdata_may_close',
+ external = 'text',
+ transitions = [
+ ['idtag', 'cdata_may_close'],
+ ['>', 'text'],
+ ['space', 'tag_space'],
+ ['default', 'cdata_text']
+ ])
+
+# The next states are used for specialized parser modes.
+state(name = 'js_file',
+ external = 'js_file',
+ transitions = [
+ ['default', 'js_file']
+ ])
+
+# TODO(falmeida): Having css_file and js_file as the external name doesn't make
+# sense. This should instead be text and the js/css state be
+# returned by # in_js() and in_css().
+state(name = 'css_file',
+ external = 'css_file',
+ transitions = [
+ ['default', 'css_file']
+ ])
+
+state(name = 'null',
+ external = 'text',
+ transitions = [
+ ['default', 'null']
+ ])
+
diff --git a/streamhtmlparser/htmlparser_fsm.h b/streamhtmlparser/htmlparser_fsm.h
new file mode 100644
index 0000000..20fca32
--- /dev/null
+++ b/streamhtmlparser/htmlparser_fsm.h
@@ -0,0 +1,8400 @@
+/* Definition of a finite state machine for a subset of HTTP 4.1
+ * Auto generated by generate_fsm.py. Please do not edit.
+ */
+#define HTMLPARSER_NUM_STATES 33
+enum htmlparser_state_internal_enum {
+ HTMLPARSER_STATE_INT_TEXT,
+ HTMLPARSER_STATE_INT_TAG_START,
+ HTMLPARSER_STATE_INT_TAG_NAME,
+ HTMLPARSER_STATE_INT_DECLARATION_START,
+ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ HTMLPARSER_STATE_INT_COMMENT_OPEN,
+ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ HTMLPARSER_STATE_INT_COMMENT_DASH,
+ HTMLPARSER_STATE_INT_COMMENT_DASH_DASH,
+ HTMLPARSER_STATE_INT_PI,
+ HTMLPARSER_STATE_INT_PI_MAY_END,
+ HTMLPARSER_STATE_INT_TAG_SPACE,
+ HTMLPARSER_STATE_INT_TAG_CLOSE,
+ HTMLPARSER_STATE_INT_ATTR,
+ HTMLPARSER_STATE_INT_ATTR_SPACE,
+ HTMLPARSER_STATE_INT_VALUE,
+ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ HTMLPARSER_STATE_INT_VALUE_Q_START,
+ HTMLPARSER_STATE_INT_VALUE_Q,
+ HTMLPARSER_STATE_INT_VALUE_DQ_START,
+ HTMLPARSER_STATE_INT_VALUE_DQ,
+ HTMLPARSER_STATE_INT_CDATA_COMMENT_START,
+ HTMLPARSER_STATE_INT_CDATA_COMMENT_START_DASH,
+ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH,
+ HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH,
+ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ HTMLPARSER_STATE_INT_CDATA_LT,
+ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ HTMLPARSER_STATE_INT_JS_FILE,
+ HTMLPARSER_STATE_INT_CSS_FILE,
+ HTMLPARSER_STATE_INT_NULL
+};
+
+static const int htmlparser_states_external[] = {
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TAG,
+ HTMLPARSER_STATE_TAG,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_COMMENT,
+ HTMLPARSER_STATE_COMMENT,
+ HTMLPARSER_STATE_COMMENT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TAG,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_ATTR,
+ HTMLPARSER_STATE_ATTR,
+ HTMLPARSER_STATE_VALUE,
+ HTMLPARSER_STATE_VALUE,
+ HTMLPARSER_STATE_VALUE,
+ HTMLPARSER_STATE_VALUE,
+ HTMLPARSER_STATE_VALUE,
+ HTMLPARSER_STATE_VALUE,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_JS_FILE,
+ HTMLPARSER_STATE_CSS_FILE,
+ HTMLPARSER_STATE_TEXT
+};
+
+static const char * htmlparser_states_internal_names[] = {
+ "text",
+ "tag_start",
+ "tag_name",
+ "declaration_start",
+ "declaration_body",
+ "comment_open",
+ "comment_body",
+ "comment_dash",
+ "comment_dash_dash",
+ "pi",
+ "pi_may_end",
+ "tag_space",
+ "tag_close",
+ "attr",
+ "attr_space",
+ "value",
+ "value_text",
+ "value_q_start",
+ "value_q",
+ "value_dq_start",
+ "value_dq",
+ "cdata_comment_start",
+ "cdata_comment_start_dash",
+ "cdata_comment_body",
+ "cdata_comment_dash",
+ "cdata_comment_dash_dash",
+ "cdata_text",
+ "cdata_lt",
+ "cdata_may_close",
+ "js_file",
+ "css_file",
+ "null"
+};
+
+static const int htmlparser_transition_row_text[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\n' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '!' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '"' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '.' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ':' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ';' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_TAG_START,
+ /* '=' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'B' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'C' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'D' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'E' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'F' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'G' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'H' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'I' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'J' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'K' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'L' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'M' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'N' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'O' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'P' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'Q' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'R' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'S' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'T' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'U' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'V' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'W' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'X' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'Y' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'Z' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '[' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '`' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'g' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'h' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'i' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'j' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'k' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'l' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'm' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'n' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'o' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'p' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'q' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'r' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 's' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 't' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'u' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'v' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'w' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'x' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'y' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'z' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '{' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_TEXT
+};
+
+static const int htmlparser_transition_row_tag_start[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\n' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '!' */ HTMLPARSER_STATE_INT_DECLARATION_START,
+ /* '"' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '.' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '0' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '1' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '2' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '3' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '4' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '5' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '6' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '7' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '8' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '9' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* ':' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* ';' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_TAG_START,
+ /* '=' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_PI,
+ /* '@' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'B' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'C' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'D' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'E' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'F' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'G' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'H' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'I' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'J' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'K' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'L' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'M' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'N' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'O' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'P' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'Q' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'R' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'S' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'T' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'U' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'V' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'W' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'X' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'Y' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'Z' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '[' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '`' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'b' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'c' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'd' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'e' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'f' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'g' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'h' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'i' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'j' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'k' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'l' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'm' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'n' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'o' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'p' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'q' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'r' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 's' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 't' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'u' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'v' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'w' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'x' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'y' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'z' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '{' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_TEXT
+};
+
+static const int htmlparser_transition_row_tag_name[] = {
+ /* '\x00' */ STATEMACHINE_ERROR,
+ /* '\x01' */ STATEMACHINE_ERROR,
+ /* '\x02' */ STATEMACHINE_ERROR,
+ /* '\x03' */ STATEMACHINE_ERROR,
+ /* '\x04' */ STATEMACHINE_ERROR,
+ /* '\x05' */ STATEMACHINE_ERROR,
+ /* '\x06' */ STATEMACHINE_ERROR,
+ /* '\x07' */ STATEMACHINE_ERROR,
+ /* '\x08' */ STATEMACHINE_ERROR,
+ /* '\t' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\n' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\x0b' */ STATEMACHINE_ERROR,
+ /* '\x0c' */ STATEMACHINE_ERROR,
+ /* '\r' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\x0e' */ STATEMACHINE_ERROR,
+ /* '\x0f' */ STATEMACHINE_ERROR,
+ /* '\x10' */ STATEMACHINE_ERROR,
+ /* '\x11' */ STATEMACHINE_ERROR,
+ /* '\x12' */ STATEMACHINE_ERROR,
+ /* '\x13' */ STATEMACHINE_ERROR,
+ /* '\x14' */ STATEMACHINE_ERROR,
+ /* '\x15' */ STATEMACHINE_ERROR,
+ /* '\x16' */ STATEMACHINE_ERROR,
+ /* '\x17' */ STATEMACHINE_ERROR,
+ /* '\x18' */ STATEMACHINE_ERROR,
+ /* '\x19' */ STATEMACHINE_ERROR,
+ /* '\x1a' */ STATEMACHINE_ERROR,
+ /* '\x1b' */ STATEMACHINE_ERROR,
+ /* '\x1c' */ STATEMACHINE_ERROR,
+ /* '\x1d' */ STATEMACHINE_ERROR,
+ /* '\x1e' */ STATEMACHINE_ERROR,
+ /* '\x1f' */ STATEMACHINE_ERROR,
+ /* ' ' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '!' */ STATEMACHINE_ERROR,
+ /* '"' */ STATEMACHINE_ERROR,
+ /* '#' */ STATEMACHINE_ERROR,
+ /* '$' */ STATEMACHINE_ERROR,
+ /* '%' */ STATEMACHINE_ERROR,
+ /* '&' */ STATEMACHINE_ERROR,
+ /* "'" */ STATEMACHINE_ERROR,
+ /* '(' */ STATEMACHINE_ERROR,
+ /* ')' */ STATEMACHINE_ERROR,
+ /* '*' */ STATEMACHINE_ERROR,
+ /* '+' */ STATEMACHINE_ERROR,
+ /* ',' */ STATEMACHINE_ERROR,
+ /* '-' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '.' */ STATEMACHINE_ERROR,
+ /* '/' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '0' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '1' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '2' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '3' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '4' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '5' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '6' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '7' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '8' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '9' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* ':' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* ';' */ STATEMACHINE_ERROR,
+ /* '<' */ STATEMACHINE_ERROR,
+ /* '=' */ STATEMACHINE_ERROR,
+ /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE,
+ /* '?' */ STATEMACHINE_ERROR,
+ /* '@' */ STATEMACHINE_ERROR,
+ /* 'A' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'B' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'C' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'D' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'E' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'F' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'G' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'H' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'I' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'J' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'K' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'L' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'M' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'N' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'O' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'P' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'Q' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'R' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'S' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'T' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'U' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'V' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'W' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'X' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'Y' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'Z' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '[' */ STATEMACHINE_ERROR,
+ /* '\\' */ STATEMACHINE_ERROR,
+ /* ']' */ STATEMACHINE_ERROR,
+ /* '^' */ STATEMACHINE_ERROR,
+ /* '_' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '`' */ STATEMACHINE_ERROR,
+ /* 'a' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'b' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'c' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'd' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'e' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'f' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'g' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'h' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'i' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'j' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'k' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'l' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'm' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'n' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'o' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'p' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'q' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'r' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 's' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 't' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'u' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'v' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'w' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'x' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'y' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* 'z' */ HTMLPARSER_STATE_INT_TAG_NAME,
+ /* '{' */ STATEMACHINE_ERROR,
+ /* '|' */ STATEMACHINE_ERROR,
+ /* '}' */ STATEMACHINE_ERROR,
+ /* '~' */ STATEMACHINE_ERROR,
+ /* '\x7f' */ STATEMACHINE_ERROR,
+ /* '\x80' */ STATEMACHINE_ERROR,
+ /* '\x81' */ STATEMACHINE_ERROR,
+ /* '\x82' */ STATEMACHINE_ERROR,
+ /* '\x83' */ STATEMACHINE_ERROR,
+ /* '\x84' */ STATEMACHINE_ERROR,
+ /* '\x85' */ STATEMACHINE_ERROR,
+ /* '\x86' */ STATEMACHINE_ERROR,
+ /* '\x87' */ STATEMACHINE_ERROR,
+ /* '\x88' */ STATEMACHINE_ERROR,
+ /* '\x89' */ STATEMACHINE_ERROR,
+ /* '\x8a' */ STATEMACHINE_ERROR,
+ /* '\x8b' */ STATEMACHINE_ERROR,
+ /* '\x8c' */ STATEMACHINE_ERROR,
+ /* '\x8d' */ STATEMACHINE_ERROR,
+ /* '\x8e' */ STATEMACHINE_ERROR,
+ /* '\x8f' */ STATEMACHINE_ERROR,
+ /* '\x90' */ STATEMACHINE_ERROR,
+ /* '\x91' */ STATEMACHINE_ERROR,
+ /* '\x92' */ STATEMACHINE_ERROR,
+ /* '\x93' */ STATEMACHINE_ERROR,
+ /* '\x94' */ STATEMACHINE_ERROR,
+ /* '\x95' */ STATEMACHINE_ERROR,
+ /* '\x96' */ STATEMACHINE_ERROR,
+ /* '\x97' */ STATEMACHINE_ERROR,
+ /* '\x98' */ STATEMACHINE_ERROR,
+ /* '\x99' */ STATEMACHINE_ERROR,
+ /* '\x9a' */ STATEMACHINE_ERROR,
+ /* '\x9b' */ STATEMACHINE_ERROR,
+ /* '\x9c' */ STATEMACHINE_ERROR,
+ /* '\x9d' */ STATEMACHINE_ERROR,
+ /* '\x9e' */ STATEMACHINE_ERROR,
+ /* '\x9f' */ STATEMACHINE_ERROR,
+ /* '\xa0' */ STATEMACHINE_ERROR,
+ /* '\xa1' */ STATEMACHINE_ERROR,
+ /* '\xa2' */ STATEMACHINE_ERROR,
+ /* '\xa3' */ STATEMACHINE_ERROR,
+ /* '\xa4' */ STATEMACHINE_ERROR,
+ /* '\xa5' */ STATEMACHINE_ERROR,
+ /* '\xa6' */ STATEMACHINE_ERROR,
+ /* '\xa7' */ STATEMACHINE_ERROR,
+ /* '\xa8' */ STATEMACHINE_ERROR,
+ /* '\xa9' */ STATEMACHINE_ERROR,
+ /* '\xaa' */ STATEMACHINE_ERROR,
+ /* '\xab' */ STATEMACHINE_ERROR,
+ /* '\xac' */ STATEMACHINE_ERROR,
+ /* '\xad' */ STATEMACHINE_ERROR,
+ /* '\xae' */ STATEMACHINE_ERROR,
+ /* '\xaf' */ STATEMACHINE_ERROR,
+ /* '\xb0' */ STATEMACHINE_ERROR,
+ /* '\xb1' */ STATEMACHINE_ERROR,
+ /* '\xb2' */ STATEMACHINE_ERROR,
+ /* '\xb3' */ STATEMACHINE_ERROR,
+ /* '\xb4' */ STATEMACHINE_ERROR,
+ /* '\xb5' */ STATEMACHINE_ERROR,
+ /* '\xb6' */ STATEMACHINE_ERROR,
+ /* '\xb7' */ STATEMACHINE_ERROR,
+ /* '\xb8' */ STATEMACHINE_ERROR,
+ /* '\xb9' */ STATEMACHINE_ERROR,
+ /* '\xba' */ STATEMACHINE_ERROR,
+ /* '\xbb' */ STATEMACHINE_ERROR,
+ /* '\xbc' */ STATEMACHINE_ERROR,
+ /* '\xbd' */ STATEMACHINE_ERROR,
+ /* '\xbe' */ STATEMACHINE_ERROR,
+ /* '\xbf' */ STATEMACHINE_ERROR,
+ /* '\xc0' */ STATEMACHINE_ERROR,
+ /* '\xc1' */ STATEMACHINE_ERROR,
+ /* '\xc2' */ STATEMACHINE_ERROR,
+ /* '\xc3' */ STATEMACHINE_ERROR,
+ /* '\xc4' */ STATEMACHINE_ERROR,
+ /* '\xc5' */ STATEMACHINE_ERROR,
+ /* '\xc6' */ STATEMACHINE_ERROR,
+ /* '\xc7' */ STATEMACHINE_ERROR,
+ /* '\xc8' */ STATEMACHINE_ERROR,
+ /* '\xc9' */ STATEMACHINE_ERROR,
+ /* '\xca' */ STATEMACHINE_ERROR,
+ /* '\xcb' */ STATEMACHINE_ERROR,
+ /* '\xcc' */ STATEMACHINE_ERROR,
+ /* '\xcd' */ STATEMACHINE_ERROR,
+ /* '\xce' */ STATEMACHINE_ERROR,
+ /* '\xcf' */ STATEMACHINE_ERROR,
+ /* '\xd0' */ STATEMACHINE_ERROR,
+ /* '\xd1' */ STATEMACHINE_ERROR,
+ /* '\xd2' */ STATEMACHINE_ERROR,
+ /* '\xd3' */ STATEMACHINE_ERROR,
+ /* '\xd4' */ STATEMACHINE_ERROR,
+ /* '\xd5' */ STATEMACHINE_ERROR,
+ /* '\xd6' */ STATEMACHINE_ERROR,
+ /* '\xd7' */ STATEMACHINE_ERROR,
+ /* '\xd8' */ STATEMACHINE_ERROR,
+ /* '\xd9' */ STATEMACHINE_ERROR,
+ /* '\xda' */ STATEMACHINE_ERROR,
+ /* '\xdb' */ STATEMACHINE_ERROR,
+ /* '\xdc' */ STATEMACHINE_ERROR,
+ /* '\xdd' */ STATEMACHINE_ERROR,
+ /* '\xde' */ STATEMACHINE_ERROR,
+ /* '\xdf' */ STATEMACHINE_ERROR,
+ /* '\xe0' */ STATEMACHINE_ERROR,
+ /* '\xe1' */ STATEMACHINE_ERROR,
+ /* '\xe2' */ STATEMACHINE_ERROR,
+ /* '\xe3' */ STATEMACHINE_ERROR,
+ /* '\xe4' */ STATEMACHINE_ERROR,
+ /* '\xe5' */ STATEMACHINE_ERROR,
+ /* '\xe6' */ STATEMACHINE_ERROR,
+ /* '\xe7' */ STATEMACHINE_ERROR,
+ /* '\xe8' */ STATEMACHINE_ERROR,
+ /* '\xe9' */ STATEMACHINE_ERROR,
+ /* '\xea' */ STATEMACHINE_ERROR,
+ /* '\xeb' */ STATEMACHINE_ERROR,
+ /* '\xec' */ STATEMACHINE_ERROR,
+ /* '\xed' */ STATEMACHINE_ERROR,
+ /* '\xee' */ STATEMACHINE_ERROR,
+ /* '\xef' */ STATEMACHINE_ERROR,
+ /* '\xf0' */ STATEMACHINE_ERROR,
+ /* '\xf1' */ STATEMACHINE_ERROR,
+ /* '\xf2' */ STATEMACHINE_ERROR,
+ /* '\xf3' */ STATEMACHINE_ERROR,
+ /* '\xf4' */ STATEMACHINE_ERROR,
+ /* '\xf5' */ STATEMACHINE_ERROR,
+ /* '\xf6' */ STATEMACHINE_ERROR,
+ /* '\xf7' */ STATEMACHINE_ERROR,
+ /* '\xf8' */ STATEMACHINE_ERROR,
+ /* '\xf9' */ STATEMACHINE_ERROR,
+ /* '\xfa' */ STATEMACHINE_ERROR,
+ /* '\xfb' */ STATEMACHINE_ERROR,
+ /* '\xfc' */ STATEMACHINE_ERROR,
+ /* '\xfd' */ STATEMACHINE_ERROR,
+ /* '\xfe' */ STATEMACHINE_ERROR
+};
+
+static const int htmlparser_transition_row_declaration_start[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x01' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x02' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x03' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x04' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x05' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x06' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x07' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x08' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\t' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\n' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\r' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x10' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x11' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x12' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x13' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x14' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x15' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x16' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x17' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x18' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x19' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ' ' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '!' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '"' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '#' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '$' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '%' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '&' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* "'" */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '(' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ')' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '*' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '+' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ',' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '-' */ HTMLPARSER_STATE_INT_COMMENT_OPEN,
+ /* '.' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '/' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ':' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ';' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '<' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '=' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '>' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '@' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'A' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'B' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'C' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'D' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'E' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'F' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'G' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'H' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'I' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'J' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'K' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'L' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'M' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'N' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'O' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'P' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'Q' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'R' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'S' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'T' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'U' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'V' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'W' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'X' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'Y' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'Z' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '[' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\\' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ']' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '^' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '_' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '`' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'g' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'h' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'i' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'j' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'k' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'l' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'm' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'n' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'o' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'p' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'q' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'r' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 's' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 't' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'u' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'v' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'w' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'x' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'y' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'z' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '{' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '|' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '}' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '~' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x80' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x81' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x82' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x83' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x84' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x85' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x86' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x87' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x88' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x89' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x90' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x91' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x92' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x93' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x94' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x95' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x96' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x97' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x98' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x99' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xab' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xac' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xad' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xae' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xba' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xca' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xce' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xda' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xde' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xea' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xec' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xed' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xee' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xef' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_DECLARATION_BODY
+};
+
+static const int htmlparser_transition_row_declaration_body[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x01' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x02' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x03' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x04' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x05' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x06' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x07' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x08' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\t' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\n' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\r' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x10' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x11' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x12' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x13' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x14' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x15' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x16' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x17' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x18' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x19' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ' ' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '!' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '"' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '#' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '$' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '%' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '&' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* "'" */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '(' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ')' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '*' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '+' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ',' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '-' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '.' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '/' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ':' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ';' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '<' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '=' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '>' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '@' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'A' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'B' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'C' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'D' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'E' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'F' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'G' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'H' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'I' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'J' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'K' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'L' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'M' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'N' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'O' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'P' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'Q' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'R' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'S' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'T' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'U' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'V' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'W' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'X' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'Y' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'Z' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '[' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\\' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* ']' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '^' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '_' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '`' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'g' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'h' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'i' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'j' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'k' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'l' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'm' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'n' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'o' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'p' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'q' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'r' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 's' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 't' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'u' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'v' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'w' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'x' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'y' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* 'z' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '{' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '|' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '}' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '~' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x80' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x81' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x82' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x83' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x84' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x85' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x86' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x87' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x88' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x89' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x90' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x91' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x92' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x93' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x94' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x95' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x96' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x97' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x98' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x99' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xab' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xac' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xad' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xae' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xba' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xca' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xce' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xda' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xde' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xea' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xec' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xed' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xee' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xef' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_DECLARATION_BODY
+};
+
+static const int htmlparser_transition_row_comment_open[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\n' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '!' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '"' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '.' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ':' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ';' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '=' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'B' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'C' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'D' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'E' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'F' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'G' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'H' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'I' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'J' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'K' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'L' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'M' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'N' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'O' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'P' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'Q' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'R' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'S' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'T' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'U' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'V' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'W' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'X' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'Y' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'Z' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '[' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '`' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'g' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'h' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'i' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'j' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'k' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'l' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'm' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'n' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'o' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'p' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'q' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'r' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 's' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 't' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'u' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'v' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'w' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'x' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'y' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'z' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '{' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_TEXT
+};
+
+static const int htmlparser_transition_row_comment_body[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x01' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x02' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x03' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x04' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x05' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x06' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x07' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x08' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\t' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\n' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\r' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x10' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x11' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x12' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x13' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x14' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x15' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x16' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x17' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x18' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x19' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ' ' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '!' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '"' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '#' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '$' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '%' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '&' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* "'" */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '(' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ')' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '*' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '+' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ',' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '-' */ HTMLPARSER_STATE_INT_COMMENT_DASH,
+ /* '.' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '/' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ':' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ';' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '<' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '=' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '>' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '?' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '@' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'A' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'B' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'C' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'D' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'E' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'F' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'G' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'H' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'I' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'J' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'K' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'L' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'M' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'N' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'O' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'P' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'Q' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'R' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'S' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'T' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'U' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'V' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'W' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'X' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'Y' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'Z' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '[' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\\' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ']' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '^' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '_' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '`' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'g' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'h' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'i' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'j' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'k' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'l' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'm' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'n' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'o' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'p' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'q' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'r' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 's' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 't' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'u' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'v' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'w' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'x' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'y' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'z' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '{' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '|' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '}' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '~' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x80' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x81' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x82' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x83' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x84' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x85' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x86' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x87' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x88' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x89' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x90' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x91' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x92' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x93' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x94' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x95' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x96' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x97' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x98' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x99' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xab' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xac' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xad' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xae' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xba' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xca' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xce' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xda' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xde' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xea' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xec' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xed' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xee' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xef' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_COMMENT_BODY
+};
+
+static const int htmlparser_transition_row_comment_dash[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x01' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x02' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x03' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x04' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x05' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x06' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x07' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x08' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\t' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\n' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\r' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x10' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x11' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x12' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x13' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x14' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x15' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x16' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x17' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x18' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x19' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ' ' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '!' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '"' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '#' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '$' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '%' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '&' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* "'" */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '(' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ')' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '*' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '+' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ',' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '-' */ HTMLPARSER_STATE_INT_COMMENT_DASH_DASH,
+ /* '.' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '/' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ':' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ';' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '<' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '=' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '>' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '?' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '@' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'A' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'B' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'C' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'D' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'E' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'F' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'G' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'H' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'I' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'J' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'K' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'L' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'M' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'N' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'O' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'P' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'Q' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'R' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'S' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'T' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'U' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'V' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'W' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'X' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'Y' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'Z' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '[' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\\' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ']' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '^' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '_' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '`' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'g' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'h' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'i' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'j' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'k' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'l' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'm' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'n' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'o' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'p' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'q' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'r' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 's' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 't' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'u' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'v' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'w' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'x' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'y' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'z' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '{' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '|' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '}' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '~' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x80' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x81' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x82' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x83' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x84' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x85' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x86' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x87' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x88' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x89' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x90' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x91' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x92' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x93' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x94' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x95' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x96' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x97' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x98' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x99' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xab' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xac' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xad' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xae' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xba' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xca' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xce' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xda' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xde' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xea' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xec' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xed' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xee' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xef' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_COMMENT_BODY
+};
+
+static const int htmlparser_transition_row_comment_dash_dash[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x01' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x02' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x03' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x04' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x05' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x06' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x07' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x08' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\t' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\n' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\r' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x10' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x11' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x12' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x13' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x14' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x15' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x16' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x17' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x18' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x19' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ' ' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '!' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '"' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '#' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '$' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '%' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '&' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* "'" */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '(' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ')' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '*' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '+' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ',' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '-' */ HTMLPARSER_STATE_INT_COMMENT_DASH_DASH,
+ /* '.' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '/' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ':' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ';' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '<' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '=' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '>' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '@' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'A' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'B' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'C' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'D' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'E' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'F' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'G' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'H' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'I' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'J' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'K' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'L' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'M' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'N' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'O' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'P' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'Q' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'R' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'S' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'T' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'U' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'V' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'W' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'X' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'Y' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'Z' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '[' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\\' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* ']' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '^' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '_' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '`' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'g' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'h' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'i' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'j' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'k' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'l' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'm' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'n' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'o' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'p' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'q' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'r' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 's' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 't' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'u' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'v' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'w' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'x' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'y' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* 'z' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '{' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '|' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '}' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '~' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x80' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x81' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x82' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x83' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x84' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x85' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x86' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x87' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x88' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x89' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x90' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x91' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x92' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x93' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x94' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x95' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x96' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x97' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x98' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x99' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xab' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xac' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xad' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xae' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xba' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xca' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xce' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xda' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xde' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xea' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xec' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xed' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xee' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xef' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_COMMENT_BODY,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_COMMENT_BODY
+};
+
+static const int htmlparser_transition_row_pi[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x01' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x02' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x03' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x04' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x05' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x06' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x07' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x08' */ HTMLPARSER_STATE_INT_PI,
+ /* '\t' */ HTMLPARSER_STATE_INT_PI,
+ /* '\n' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_PI,
+ /* '\r' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x10' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x11' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x12' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x13' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x14' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x15' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x16' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x17' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x18' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x19' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_PI,
+ /* ' ' */ HTMLPARSER_STATE_INT_PI,
+ /* '!' */ HTMLPARSER_STATE_INT_PI,
+ /* '"' */ HTMLPARSER_STATE_INT_PI,
+ /* '#' */ HTMLPARSER_STATE_INT_PI,
+ /* '$' */ HTMLPARSER_STATE_INT_PI,
+ /* '%' */ HTMLPARSER_STATE_INT_PI,
+ /* '&' */ HTMLPARSER_STATE_INT_PI,
+ /* "'" */ HTMLPARSER_STATE_INT_PI,
+ /* '(' */ HTMLPARSER_STATE_INT_PI,
+ /* ')' */ HTMLPARSER_STATE_INT_PI,
+ /* '*' */ HTMLPARSER_STATE_INT_PI,
+ /* '+' */ HTMLPARSER_STATE_INT_PI,
+ /* ',' */ HTMLPARSER_STATE_INT_PI,
+ /* '-' */ HTMLPARSER_STATE_INT_PI,
+ /* '.' */ HTMLPARSER_STATE_INT_PI,
+ /* '/' */ HTMLPARSER_STATE_INT_PI,
+ /* '0' */ HTMLPARSER_STATE_INT_PI,
+ /* '1' */ HTMLPARSER_STATE_INT_PI,
+ /* '2' */ HTMLPARSER_STATE_INT_PI,
+ /* '3' */ HTMLPARSER_STATE_INT_PI,
+ /* '4' */ HTMLPARSER_STATE_INT_PI,
+ /* '5' */ HTMLPARSER_STATE_INT_PI,
+ /* '6' */ HTMLPARSER_STATE_INT_PI,
+ /* '7' */ HTMLPARSER_STATE_INT_PI,
+ /* '8' */ HTMLPARSER_STATE_INT_PI,
+ /* '9' */ HTMLPARSER_STATE_INT_PI,
+ /* ':' */ HTMLPARSER_STATE_INT_PI,
+ /* ';' */ HTMLPARSER_STATE_INT_PI,
+ /* '<' */ HTMLPARSER_STATE_INT_PI,
+ /* '=' */ HTMLPARSER_STATE_INT_PI,
+ /* '>' */ HTMLPARSER_STATE_INT_PI,
+ /* '?' */ HTMLPARSER_STATE_INT_PI_MAY_END,
+ /* '@' */ HTMLPARSER_STATE_INT_PI,
+ /* 'A' */ HTMLPARSER_STATE_INT_PI,
+ /* 'B' */ HTMLPARSER_STATE_INT_PI,
+ /* 'C' */ HTMLPARSER_STATE_INT_PI,
+ /* 'D' */ HTMLPARSER_STATE_INT_PI,
+ /* 'E' */ HTMLPARSER_STATE_INT_PI,
+ /* 'F' */ HTMLPARSER_STATE_INT_PI,
+ /* 'G' */ HTMLPARSER_STATE_INT_PI,
+ /* 'H' */ HTMLPARSER_STATE_INT_PI,
+ /* 'I' */ HTMLPARSER_STATE_INT_PI,
+ /* 'J' */ HTMLPARSER_STATE_INT_PI,
+ /* 'K' */ HTMLPARSER_STATE_INT_PI,
+ /* 'L' */ HTMLPARSER_STATE_INT_PI,
+ /* 'M' */ HTMLPARSER_STATE_INT_PI,
+ /* 'N' */ HTMLPARSER_STATE_INT_PI,
+ /* 'O' */ HTMLPARSER_STATE_INT_PI,
+ /* 'P' */ HTMLPARSER_STATE_INT_PI,
+ /* 'Q' */ HTMLPARSER_STATE_INT_PI,
+ /* 'R' */ HTMLPARSER_STATE_INT_PI,
+ /* 'S' */ HTMLPARSER_STATE_INT_PI,
+ /* 'T' */ HTMLPARSER_STATE_INT_PI,
+ /* 'U' */ HTMLPARSER_STATE_INT_PI,
+ /* 'V' */ HTMLPARSER_STATE_INT_PI,
+ /* 'W' */ HTMLPARSER_STATE_INT_PI,
+ /* 'X' */ HTMLPARSER_STATE_INT_PI,
+ /* 'Y' */ HTMLPARSER_STATE_INT_PI,
+ /* 'Z' */ HTMLPARSER_STATE_INT_PI,
+ /* '[' */ HTMLPARSER_STATE_INT_PI,
+ /* '\\' */ HTMLPARSER_STATE_INT_PI,
+ /* ']' */ HTMLPARSER_STATE_INT_PI,
+ /* '^' */ HTMLPARSER_STATE_INT_PI,
+ /* '_' */ HTMLPARSER_STATE_INT_PI,
+ /* '`' */ HTMLPARSER_STATE_INT_PI,
+ /* 'a' */ HTMLPARSER_STATE_INT_PI,
+ /* 'b' */ HTMLPARSER_STATE_INT_PI,
+ /* 'c' */ HTMLPARSER_STATE_INT_PI,
+ /* 'd' */ HTMLPARSER_STATE_INT_PI,
+ /* 'e' */ HTMLPARSER_STATE_INT_PI,
+ /* 'f' */ HTMLPARSER_STATE_INT_PI,
+ /* 'g' */ HTMLPARSER_STATE_INT_PI,
+ /* 'h' */ HTMLPARSER_STATE_INT_PI,
+ /* 'i' */ HTMLPARSER_STATE_INT_PI,
+ /* 'j' */ HTMLPARSER_STATE_INT_PI,
+ /* 'k' */ HTMLPARSER_STATE_INT_PI,
+ /* 'l' */ HTMLPARSER_STATE_INT_PI,
+ /* 'm' */ HTMLPARSER_STATE_INT_PI,
+ /* 'n' */ HTMLPARSER_STATE_INT_PI,
+ /* 'o' */ HTMLPARSER_STATE_INT_PI,
+ /* 'p' */ HTMLPARSER_STATE_INT_PI,
+ /* 'q' */ HTMLPARSER_STATE_INT_PI,
+ /* 'r' */ HTMLPARSER_STATE_INT_PI,
+ /* 's' */ HTMLPARSER_STATE_INT_PI,
+ /* 't' */ HTMLPARSER_STATE_INT_PI,
+ /* 'u' */ HTMLPARSER_STATE_INT_PI,
+ /* 'v' */ HTMLPARSER_STATE_INT_PI,
+ /* 'w' */ HTMLPARSER_STATE_INT_PI,
+ /* 'x' */ HTMLPARSER_STATE_INT_PI,
+ /* 'y' */ HTMLPARSER_STATE_INT_PI,
+ /* 'z' */ HTMLPARSER_STATE_INT_PI,
+ /* '{' */ HTMLPARSER_STATE_INT_PI,
+ /* '|' */ HTMLPARSER_STATE_INT_PI,
+ /* '}' */ HTMLPARSER_STATE_INT_PI,
+ /* '~' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x80' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x81' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x82' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x83' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x84' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x85' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x86' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x87' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x88' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x89' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x90' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x91' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x92' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x93' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x94' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x95' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x96' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x97' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x98' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x99' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xab' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xac' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xad' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xae' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xba' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xca' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xce' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xda' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xde' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xea' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xec' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xed' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xee' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xef' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_PI
+};
+
+static const int htmlparser_transition_row_pi_may_end[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x01' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x02' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x03' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x04' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x05' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x06' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x07' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x08' */ HTMLPARSER_STATE_INT_PI,
+ /* '\t' */ HTMLPARSER_STATE_INT_PI,
+ /* '\n' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_PI,
+ /* '\r' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x10' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x11' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x12' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x13' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x14' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x15' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x16' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x17' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x18' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x19' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_PI,
+ /* ' ' */ HTMLPARSER_STATE_INT_PI,
+ /* '!' */ HTMLPARSER_STATE_INT_PI,
+ /* '"' */ HTMLPARSER_STATE_INT_PI,
+ /* '#' */ HTMLPARSER_STATE_INT_PI,
+ /* '$' */ HTMLPARSER_STATE_INT_PI,
+ /* '%' */ HTMLPARSER_STATE_INT_PI,
+ /* '&' */ HTMLPARSER_STATE_INT_PI,
+ /* "'" */ HTMLPARSER_STATE_INT_PI,
+ /* '(' */ HTMLPARSER_STATE_INT_PI,
+ /* ')' */ HTMLPARSER_STATE_INT_PI,
+ /* '*' */ HTMLPARSER_STATE_INT_PI,
+ /* '+' */ HTMLPARSER_STATE_INT_PI,
+ /* ',' */ HTMLPARSER_STATE_INT_PI,
+ /* '-' */ HTMLPARSER_STATE_INT_PI,
+ /* '.' */ HTMLPARSER_STATE_INT_PI,
+ /* '/' */ HTMLPARSER_STATE_INT_PI,
+ /* '0' */ HTMLPARSER_STATE_INT_PI,
+ /* '1' */ HTMLPARSER_STATE_INT_PI,
+ /* '2' */ HTMLPARSER_STATE_INT_PI,
+ /* '3' */ HTMLPARSER_STATE_INT_PI,
+ /* '4' */ HTMLPARSER_STATE_INT_PI,
+ /* '5' */ HTMLPARSER_STATE_INT_PI,
+ /* '6' */ HTMLPARSER_STATE_INT_PI,
+ /* '7' */ HTMLPARSER_STATE_INT_PI,
+ /* '8' */ HTMLPARSER_STATE_INT_PI,
+ /* '9' */ HTMLPARSER_STATE_INT_PI,
+ /* ':' */ HTMLPARSER_STATE_INT_PI,
+ /* ';' */ HTMLPARSER_STATE_INT_PI,
+ /* '<' */ HTMLPARSER_STATE_INT_PI,
+ /* '=' */ HTMLPARSER_STATE_INT_PI,
+ /* '>' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_PI,
+ /* '@' */ HTMLPARSER_STATE_INT_PI,
+ /* 'A' */ HTMLPARSER_STATE_INT_PI,
+ /* 'B' */ HTMLPARSER_STATE_INT_PI,
+ /* 'C' */ HTMLPARSER_STATE_INT_PI,
+ /* 'D' */ HTMLPARSER_STATE_INT_PI,
+ /* 'E' */ HTMLPARSER_STATE_INT_PI,
+ /* 'F' */ HTMLPARSER_STATE_INT_PI,
+ /* 'G' */ HTMLPARSER_STATE_INT_PI,
+ /* 'H' */ HTMLPARSER_STATE_INT_PI,
+ /* 'I' */ HTMLPARSER_STATE_INT_PI,
+ /* 'J' */ HTMLPARSER_STATE_INT_PI,
+ /* 'K' */ HTMLPARSER_STATE_INT_PI,
+ /* 'L' */ HTMLPARSER_STATE_INT_PI,
+ /* 'M' */ HTMLPARSER_STATE_INT_PI,
+ /* 'N' */ HTMLPARSER_STATE_INT_PI,
+ /* 'O' */ HTMLPARSER_STATE_INT_PI,
+ /* 'P' */ HTMLPARSER_STATE_INT_PI,
+ /* 'Q' */ HTMLPARSER_STATE_INT_PI,
+ /* 'R' */ HTMLPARSER_STATE_INT_PI,
+ /* 'S' */ HTMLPARSER_STATE_INT_PI,
+ /* 'T' */ HTMLPARSER_STATE_INT_PI,
+ /* 'U' */ HTMLPARSER_STATE_INT_PI,
+ /* 'V' */ HTMLPARSER_STATE_INT_PI,
+ /* 'W' */ HTMLPARSER_STATE_INT_PI,
+ /* 'X' */ HTMLPARSER_STATE_INT_PI,
+ /* 'Y' */ HTMLPARSER_STATE_INT_PI,
+ /* 'Z' */ HTMLPARSER_STATE_INT_PI,
+ /* '[' */ HTMLPARSER_STATE_INT_PI,
+ /* '\\' */ HTMLPARSER_STATE_INT_PI,
+ /* ']' */ HTMLPARSER_STATE_INT_PI,
+ /* '^' */ HTMLPARSER_STATE_INT_PI,
+ /* '_' */ HTMLPARSER_STATE_INT_PI,
+ /* '`' */ HTMLPARSER_STATE_INT_PI,
+ /* 'a' */ HTMLPARSER_STATE_INT_PI,
+ /* 'b' */ HTMLPARSER_STATE_INT_PI,
+ /* 'c' */ HTMLPARSER_STATE_INT_PI,
+ /* 'd' */ HTMLPARSER_STATE_INT_PI,
+ /* 'e' */ HTMLPARSER_STATE_INT_PI,
+ /* 'f' */ HTMLPARSER_STATE_INT_PI,
+ /* 'g' */ HTMLPARSER_STATE_INT_PI,
+ /* 'h' */ HTMLPARSER_STATE_INT_PI,
+ /* 'i' */ HTMLPARSER_STATE_INT_PI,
+ /* 'j' */ HTMLPARSER_STATE_INT_PI,
+ /* 'k' */ HTMLPARSER_STATE_INT_PI,
+ /* 'l' */ HTMLPARSER_STATE_INT_PI,
+ /* 'm' */ HTMLPARSER_STATE_INT_PI,
+ /* 'n' */ HTMLPARSER_STATE_INT_PI,
+ /* 'o' */ HTMLPARSER_STATE_INT_PI,
+ /* 'p' */ HTMLPARSER_STATE_INT_PI,
+ /* 'q' */ HTMLPARSER_STATE_INT_PI,
+ /* 'r' */ HTMLPARSER_STATE_INT_PI,
+ /* 's' */ HTMLPARSER_STATE_INT_PI,
+ /* 't' */ HTMLPARSER_STATE_INT_PI,
+ /* 'u' */ HTMLPARSER_STATE_INT_PI,
+ /* 'v' */ HTMLPARSER_STATE_INT_PI,
+ /* 'w' */ HTMLPARSER_STATE_INT_PI,
+ /* 'x' */ HTMLPARSER_STATE_INT_PI,
+ /* 'y' */ HTMLPARSER_STATE_INT_PI,
+ /* 'z' */ HTMLPARSER_STATE_INT_PI,
+ /* '{' */ HTMLPARSER_STATE_INT_PI,
+ /* '|' */ HTMLPARSER_STATE_INT_PI,
+ /* '}' */ HTMLPARSER_STATE_INT_PI,
+ /* '~' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x80' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x81' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x82' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x83' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x84' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x85' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x86' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x87' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x88' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x89' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x90' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x91' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x92' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x93' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x94' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x95' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x96' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x97' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x98' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x99' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_PI,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xab' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xac' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xad' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xae' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xba' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xca' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xce' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xda' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xde' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xea' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xec' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xed' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xee' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xef' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_PI,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_PI
+};
+
+static const int htmlparser_transition_row_tag_space[] = {
+ /* '\x00' */ STATEMACHINE_ERROR,
+ /* '\x01' */ STATEMACHINE_ERROR,
+ /* '\x02' */ STATEMACHINE_ERROR,
+ /* '\x03' */ STATEMACHINE_ERROR,
+ /* '\x04' */ STATEMACHINE_ERROR,
+ /* '\x05' */ STATEMACHINE_ERROR,
+ /* '\x06' */ STATEMACHINE_ERROR,
+ /* '\x07' */ STATEMACHINE_ERROR,
+ /* '\x08' */ STATEMACHINE_ERROR,
+ /* '\t' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\n' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\x0b' */ STATEMACHINE_ERROR,
+ /* '\x0c' */ STATEMACHINE_ERROR,
+ /* '\r' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\x0e' */ STATEMACHINE_ERROR,
+ /* '\x0f' */ STATEMACHINE_ERROR,
+ /* '\x10' */ STATEMACHINE_ERROR,
+ /* '\x11' */ STATEMACHINE_ERROR,
+ /* '\x12' */ STATEMACHINE_ERROR,
+ /* '\x13' */ STATEMACHINE_ERROR,
+ /* '\x14' */ STATEMACHINE_ERROR,
+ /* '\x15' */ STATEMACHINE_ERROR,
+ /* '\x16' */ STATEMACHINE_ERROR,
+ /* '\x17' */ STATEMACHINE_ERROR,
+ /* '\x18' */ STATEMACHINE_ERROR,
+ /* '\x19' */ STATEMACHINE_ERROR,
+ /* '\x1a' */ STATEMACHINE_ERROR,
+ /* '\x1b' */ STATEMACHINE_ERROR,
+ /* '\x1c' */ STATEMACHINE_ERROR,
+ /* '\x1d' */ STATEMACHINE_ERROR,
+ /* '\x1e' */ STATEMACHINE_ERROR,
+ /* '\x1f' */ STATEMACHINE_ERROR,
+ /* ' ' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '!' */ STATEMACHINE_ERROR,
+ /* '"' */ STATEMACHINE_ERROR,
+ /* '#' */ STATEMACHINE_ERROR,
+ /* '$' */ STATEMACHINE_ERROR,
+ /* '%' */ STATEMACHINE_ERROR,
+ /* '&' */ STATEMACHINE_ERROR,
+ /* "'" */ STATEMACHINE_ERROR,
+ /* '(' */ STATEMACHINE_ERROR,
+ /* ')' */ STATEMACHINE_ERROR,
+ /* '*' */ STATEMACHINE_ERROR,
+ /* '+' */ STATEMACHINE_ERROR,
+ /* ',' */ STATEMACHINE_ERROR,
+ /* '-' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '.' */ STATEMACHINE_ERROR,
+ /* '/' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '0' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '1' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '2' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '3' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '4' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '5' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '6' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '7' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '8' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '9' */ HTMLPARSER_STATE_INT_ATTR,
+ /* ':' */ HTMLPARSER_STATE_INT_ATTR,
+ /* ';' */ STATEMACHINE_ERROR,
+ /* '<' */ STATEMACHINE_ERROR,
+ /* '=' */ STATEMACHINE_ERROR,
+ /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE,
+ /* '?' */ STATEMACHINE_ERROR,
+ /* '@' */ STATEMACHINE_ERROR,
+ /* 'A' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'B' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'C' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'D' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'E' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'F' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'G' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'H' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'I' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'J' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'K' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'L' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'M' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'N' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'O' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'P' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'Q' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'R' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'S' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'T' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'U' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'V' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'W' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'X' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'Y' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'Z' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '[' */ STATEMACHINE_ERROR,
+ /* '\\' */ STATEMACHINE_ERROR,
+ /* ']' */ STATEMACHINE_ERROR,
+ /* '^' */ STATEMACHINE_ERROR,
+ /* '_' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '`' */ STATEMACHINE_ERROR,
+ /* 'a' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'b' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'c' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'd' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'e' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'f' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'g' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'h' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'i' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'j' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'k' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'l' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'm' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'n' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'o' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'p' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'q' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'r' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 's' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 't' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'u' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'v' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'w' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'x' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'y' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'z' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '{' */ STATEMACHINE_ERROR,
+ /* '|' */ STATEMACHINE_ERROR,
+ /* '}' */ STATEMACHINE_ERROR,
+ /* '~' */ STATEMACHINE_ERROR,
+ /* '\x7f' */ STATEMACHINE_ERROR,
+ /* '\x80' */ STATEMACHINE_ERROR,
+ /* '\x81' */ STATEMACHINE_ERROR,
+ /* '\x82' */ STATEMACHINE_ERROR,
+ /* '\x83' */ STATEMACHINE_ERROR,
+ /* '\x84' */ STATEMACHINE_ERROR,
+ /* '\x85' */ STATEMACHINE_ERROR,
+ /* '\x86' */ STATEMACHINE_ERROR,
+ /* '\x87' */ STATEMACHINE_ERROR,
+ /* '\x88' */ STATEMACHINE_ERROR,
+ /* '\x89' */ STATEMACHINE_ERROR,
+ /* '\x8a' */ STATEMACHINE_ERROR,
+ /* '\x8b' */ STATEMACHINE_ERROR,
+ /* '\x8c' */ STATEMACHINE_ERROR,
+ /* '\x8d' */ STATEMACHINE_ERROR,
+ /* '\x8e' */ STATEMACHINE_ERROR,
+ /* '\x8f' */ STATEMACHINE_ERROR,
+ /* '\x90' */ STATEMACHINE_ERROR,
+ /* '\x91' */ STATEMACHINE_ERROR,
+ /* '\x92' */ STATEMACHINE_ERROR,
+ /* '\x93' */ STATEMACHINE_ERROR,
+ /* '\x94' */ STATEMACHINE_ERROR,
+ /* '\x95' */ STATEMACHINE_ERROR,
+ /* '\x96' */ STATEMACHINE_ERROR,
+ /* '\x97' */ STATEMACHINE_ERROR,
+ /* '\x98' */ STATEMACHINE_ERROR,
+ /* '\x99' */ STATEMACHINE_ERROR,
+ /* '\x9a' */ STATEMACHINE_ERROR,
+ /* '\x9b' */ STATEMACHINE_ERROR,
+ /* '\x9c' */ STATEMACHINE_ERROR,
+ /* '\x9d' */ STATEMACHINE_ERROR,
+ /* '\x9e' */ STATEMACHINE_ERROR,
+ /* '\x9f' */ STATEMACHINE_ERROR,
+ /* '\xa0' */ STATEMACHINE_ERROR,
+ /* '\xa1' */ STATEMACHINE_ERROR,
+ /* '\xa2' */ STATEMACHINE_ERROR,
+ /* '\xa3' */ STATEMACHINE_ERROR,
+ /* '\xa4' */ STATEMACHINE_ERROR,
+ /* '\xa5' */ STATEMACHINE_ERROR,
+ /* '\xa6' */ STATEMACHINE_ERROR,
+ /* '\xa7' */ STATEMACHINE_ERROR,
+ /* '\xa8' */ STATEMACHINE_ERROR,
+ /* '\xa9' */ STATEMACHINE_ERROR,
+ /* '\xaa' */ STATEMACHINE_ERROR,
+ /* '\xab' */ STATEMACHINE_ERROR,
+ /* '\xac' */ STATEMACHINE_ERROR,
+ /* '\xad' */ STATEMACHINE_ERROR,
+ /* '\xae' */ STATEMACHINE_ERROR,
+ /* '\xaf' */ STATEMACHINE_ERROR,
+ /* '\xb0' */ STATEMACHINE_ERROR,
+ /* '\xb1' */ STATEMACHINE_ERROR,
+ /* '\xb2' */ STATEMACHINE_ERROR,
+ /* '\xb3' */ STATEMACHINE_ERROR,
+ /* '\xb4' */ STATEMACHINE_ERROR,
+ /* '\xb5' */ STATEMACHINE_ERROR,
+ /* '\xb6' */ STATEMACHINE_ERROR,
+ /* '\xb7' */ STATEMACHINE_ERROR,
+ /* '\xb8' */ STATEMACHINE_ERROR,
+ /* '\xb9' */ STATEMACHINE_ERROR,
+ /* '\xba' */ STATEMACHINE_ERROR,
+ /* '\xbb' */ STATEMACHINE_ERROR,
+ /* '\xbc' */ STATEMACHINE_ERROR,
+ /* '\xbd' */ STATEMACHINE_ERROR,
+ /* '\xbe' */ STATEMACHINE_ERROR,
+ /* '\xbf' */ STATEMACHINE_ERROR,
+ /* '\xc0' */ STATEMACHINE_ERROR,
+ /* '\xc1' */ STATEMACHINE_ERROR,
+ /* '\xc2' */ STATEMACHINE_ERROR,
+ /* '\xc3' */ STATEMACHINE_ERROR,
+ /* '\xc4' */ STATEMACHINE_ERROR,
+ /* '\xc5' */ STATEMACHINE_ERROR,
+ /* '\xc6' */ STATEMACHINE_ERROR,
+ /* '\xc7' */ STATEMACHINE_ERROR,
+ /* '\xc8' */ STATEMACHINE_ERROR,
+ /* '\xc9' */ STATEMACHINE_ERROR,
+ /* '\xca' */ STATEMACHINE_ERROR,
+ /* '\xcb' */ STATEMACHINE_ERROR,
+ /* '\xcc' */ STATEMACHINE_ERROR,
+ /* '\xcd' */ STATEMACHINE_ERROR,
+ /* '\xce' */ STATEMACHINE_ERROR,
+ /* '\xcf' */ STATEMACHINE_ERROR,
+ /* '\xd0' */ STATEMACHINE_ERROR,
+ /* '\xd1' */ STATEMACHINE_ERROR,
+ /* '\xd2' */ STATEMACHINE_ERROR,
+ /* '\xd3' */ STATEMACHINE_ERROR,
+ /* '\xd4' */ STATEMACHINE_ERROR,
+ /* '\xd5' */ STATEMACHINE_ERROR,
+ /* '\xd6' */ STATEMACHINE_ERROR,
+ /* '\xd7' */ STATEMACHINE_ERROR,
+ /* '\xd8' */ STATEMACHINE_ERROR,
+ /* '\xd9' */ STATEMACHINE_ERROR,
+ /* '\xda' */ STATEMACHINE_ERROR,
+ /* '\xdb' */ STATEMACHINE_ERROR,
+ /* '\xdc' */ STATEMACHINE_ERROR,
+ /* '\xdd' */ STATEMACHINE_ERROR,
+ /* '\xde' */ STATEMACHINE_ERROR,
+ /* '\xdf' */ STATEMACHINE_ERROR,
+ /* '\xe0' */ STATEMACHINE_ERROR,
+ /* '\xe1' */ STATEMACHINE_ERROR,
+ /* '\xe2' */ STATEMACHINE_ERROR,
+ /* '\xe3' */ STATEMACHINE_ERROR,
+ /* '\xe4' */ STATEMACHINE_ERROR,
+ /* '\xe5' */ STATEMACHINE_ERROR,
+ /* '\xe6' */ STATEMACHINE_ERROR,
+ /* '\xe7' */ STATEMACHINE_ERROR,
+ /* '\xe8' */ STATEMACHINE_ERROR,
+ /* '\xe9' */ STATEMACHINE_ERROR,
+ /* '\xea' */ STATEMACHINE_ERROR,
+ /* '\xeb' */ STATEMACHINE_ERROR,
+ /* '\xec' */ STATEMACHINE_ERROR,
+ /* '\xed' */ STATEMACHINE_ERROR,
+ /* '\xee' */ STATEMACHINE_ERROR,
+ /* '\xef' */ STATEMACHINE_ERROR,
+ /* '\xf0' */ STATEMACHINE_ERROR,
+ /* '\xf1' */ STATEMACHINE_ERROR,
+ /* '\xf2' */ STATEMACHINE_ERROR,
+ /* '\xf3' */ STATEMACHINE_ERROR,
+ /* '\xf4' */ STATEMACHINE_ERROR,
+ /* '\xf5' */ STATEMACHINE_ERROR,
+ /* '\xf6' */ STATEMACHINE_ERROR,
+ /* '\xf7' */ STATEMACHINE_ERROR,
+ /* '\xf8' */ STATEMACHINE_ERROR,
+ /* '\xf9' */ STATEMACHINE_ERROR,
+ /* '\xfa' */ STATEMACHINE_ERROR,
+ /* '\xfb' */ STATEMACHINE_ERROR,
+ /* '\xfc' */ STATEMACHINE_ERROR,
+ /* '\xfd' */ STATEMACHINE_ERROR,
+ /* '\xfe' */ STATEMACHINE_ERROR
+};
+
+static const int htmlparser_transition_row_tag_close[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\n' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '!' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '"' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '.' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ':' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ';' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_TAG_START,
+ /* '=' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'B' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'C' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'D' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'E' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'F' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'G' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'H' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'I' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'J' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'K' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'L' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'M' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'N' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'O' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'P' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'Q' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'R' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'S' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'T' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'U' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'V' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'W' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'X' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'Y' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'Z' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '[' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '`' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'g' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'h' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'i' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'j' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'k' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'l' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'm' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'n' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'o' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'p' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'q' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'r' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 's' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 't' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'u' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'v' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'w' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'x' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'y' */ HTMLPARSER_STATE_INT_TEXT,
+ /* 'z' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '{' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_TEXT
+};
+
+static const int htmlparser_transition_row_attr[] = {
+ /* '\x00' */ STATEMACHINE_ERROR,
+ /* '\x01' */ STATEMACHINE_ERROR,
+ /* '\x02' */ STATEMACHINE_ERROR,
+ /* '\x03' */ STATEMACHINE_ERROR,
+ /* '\x04' */ STATEMACHINE_ERROR,
+ /* '\x05' */ STATEMACHINE_ERROR,
+ /* '\x06' */ STATEMACHINE_ERROR,
+ /* '\x07' */ STATEMACHINE_ERROR,
+ /* '\x08' */ STATEMACHINE_ERROR,
+ /* '\t' */ HTMLPARSER_STATE_INT_ATTR_SPACE,
+ /* '\n' */ HTMLPARSER_STATE_INT_ATTR_SPACE,
+ /* '\x0b' */ STATEMACHINE_ERROR,
+ /* '\x0c' */ STATEMACHINE_ERROR,
+ /* '\r' */ HTMLPARSER_STATE_INT_ATTR_SPACE,
+ /* '\x0e' */ STATEMACHINE_ERROR,
+ /* '\x0f' */ STATEMACHINE_ERROR,
+ /* '\x10' */ STATEMACHINE_ERROR,
+ /* '\x11' */ STATEMACHINE_ERROR,
+ /* '\x12' */ STATEMACHINE_ERROR,
+ /* '\x13' */ STATEMACHINE_ERROR,
+ /* '\x14' */ STATEMACHINE_ERROR,
+ /* '\x15' */ STATEMACHINE_ERROR,
+ /* '\x16' */ STATEMACHINE_ERROR,
+ /* '\x17' */ STATEMACHINE_ERROR,
+ /* '\x18' */ STATEMACHINE_ERROR,
+ /* '\x19' */ STATEMACHINE_ERROR,
+ /* '\x1a' */ STATEMACHINE_ERROR,
+ /* '\x1b' */ STATEMACHINE_ERROR,
+ /* '\x1c' */ STATEMACHINE_ERROR,
+ /* '\x1d' */ STATEMACHINE_ERROR,
+ /* '\x1e' */ STATEMACHINE_ERROR,
+ /* '\x1f' */ STATEMACHINE_ERROR,
+ /* ' ' */ HTMLPARSER_STATE_INT_ATTR_SPACE,
+ /* '!' */ STATEMACHINE_ERROR,
+ /* '"' */ STATEMACHINE_ERROR,
+ /* '#' */ STATEMACHINE_ERROR,
+ /* '$' */ STATEMACHINE_ERROR,
+ /* '%' */ STATEMACHINE_ERROR,
+ /* '&' */ STATEMACHINE_ERROR,
+ /* "'" */ STATEMACHINE_ERROR,
+ /* '(' */ STATEMACHINE_ERROR,
+ /* ')' */ STATEMACHINE_ERROR,
+ /* '*' */ STATEMACHINE_ERROR,
+ /* '+' */ STATEMACHINE_ERROR,
+ /* ',' */ STATEMACHINE_ERROR,
+ /* '-' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '.' */ STATEMACHINE_ERROR,
+ /* '/' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '0' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '1' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '2' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '3' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '4' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '5' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '6' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '7' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '8' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '9' */ HTMLPARSER_STATE_INT_ATTR,
+ /* ':' */ HTMLPARSER_STATE_INT_ATTR,
+ /* ';' */ STATEMACHINE_ERROR,
+ /* '<' */ STATEMACHINE_ERROR,
+ /* '=' */ HTMLPARSER_STATE_INT_VALUE,
+ /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE,
+ /* '?' */ STATEMACHINE_ERROR,
+ /* '@' */ STATEMACHINE_ERROR,
+ /* 'A' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'B' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'C' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'D' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'E' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'F' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'G' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'H' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'I' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'J' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'K' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'L' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'M' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'N' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'O' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'P' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'Q' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'R' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'S' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'T' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'U' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'V' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'W' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'X' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'Y' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'Z' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '[' */ STATEMACHINE_ERROR,
+ /* '\\' */ STATEMACHINE_ERROR,
+ /* ']' */ STATEMACHINE_ERROR,
+ /* '^' */ STATEMACHINE_ERROR,
+ /* '_' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '`' */ STATEMACHINE_ERROR,
+ /* 'a' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'b' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'c' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'd' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'e' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'f' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'g' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'h' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'i' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'j' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'k' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'l' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'm' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'n' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'o' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'p' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'q' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'r' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 's' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 't' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'u' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'v' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'w' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'x' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'y' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'z' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '{' */ STATEMACHINE_ERROR,
+ /* '|' */ STATEMACHINE_ERROR,
+ /* '}' */ STATEMACHINE_ERROR,
+ /* '~' */ STATEMACHINE_ERROR,
+ /* '\x7f' */ STATEMACHINE_ERROR,
+ /* '\x80' */ STATEMACHINE_ERROR,
+ /* '\x81' */ STATEMACHINE_ERROR,
+ /* '\x82' */ STATEMACHINE_ERROR,
+ /* '\x83' */ STATEMACHINE_ERROR,
+ /* '\x84' */ STATEMACHINE_ERROR,
+ /* '\x85' */ STATEMACHINE_ERROR,
+ /* '\x86' */ STATEMACHINE_ERROR,
+ /* '\x87' */ STATEMACHINE_ERROR,
+ /* '\x88' */ STATEMACHINE_ERROR,
+ /* '\x89' */ STATEMACHINE_ERROR,
+ /* '\x8a' */ STATEMACHINE_ERROR,
+ /* '\x8b' */ STATEMACHINE_ERROR,
+ /* '\x8c' */ STATEMACHINE_ERROR,
+ /* '\x8d' */ STATEMACHINE_ERROR,
+ /* '\x8e' */ STATEMACHINE_ERROR,
+ /* '\x8f' */ STATEMACHINE_ERROR,
+ /* '\x90' */ STATEMACHINE_ERROR,
+ /* '\x91' */ STATEMACHINE_ERROR,
+ /* '\x92' */ STATEMACHINE_ERROR,
+ /* '\x93' */ STATEMACHINE_ERROR,
+ /* '\x94' */ STATEMACHINE_ERROR,
+ /* '\x95' */ STATEMACHINE_ERROR,
+ /* '\x96' */ STATEMACHINE_ERROR,
+ /* '\x97' */ STATEMACHINE_ERROR,
+ /* '\x98' */ STATEMACHINE_ERROR,
+ /* '\x99' */ STATEMACHINE_ERROR,
+ /* '\x9a' */ STATEMACHINE_ERROR,
+ /* '\x9b' */ STATEMACHINE_ERROR,
+ /* '\x9c' */ STATEMACHINE_ERROR,
+ /* '\x9d' */ STATEMACHINE_ERROR,
+ /* '\x9e' */ STATEMACHINE_ERROR,
+ /* '\x9f' */ STATEMACHINE_ERROR,
+ /* '\xa0' */ STATEMACHINE_ERROR,
+ /* '\xa1' */ STATEMACHINE_ERROR,
+ /* '\xa2' */ STATEMACHINE_ERROR,
+ /* '\xa3' */ STATEMACHINE_ERROR,
+ /* '\xa4' */ STATEMACHINE_ERROR,
+ /* '\xa5' */ STATEMACHINE_ERROR,
+ /* '\xa6' */ STATEMACHINE_ERROR,
+ /* '\xa7' */ STATEMACHINE_ERROR,
+ /* '\xa8' */ STATEMACHINE_ERROR,
+ /* '\xa9' */ STATEMACHINE_ERROR,
+ /* '\xaa' */ STATEMACHINE_ERROR,
+ /* '\xab' */ STATEMACHINE_ERROR,
+ /* '\xac' */ STATEMACHINE_ERROR,
+ /* '\xad' */ STATEMACHINE_ERROR,
+ /* '\xae' */ STATEMACHINE_ERROR,
+ /* '\xaf' */ STATEMACHINE_ERROR,
+ /* '\xb0' */ STATEMACHINE_ERROR,
+ /* '\xb1' */ STATEMACHINE_ERROR,
+ /* '\xb2' */ STATEMACHINE_ERROR,
+ /* '\xb3' */ STATEMACHINE_ERROR,
+ /* '\xb4' */ STATEMACHINE_ERROR,
+ /* '\xb5' */ STATEMACHINE_ERROR,
+ /* '\xb6' */ STATEMACHINE_ERROR,
+ /* '\xb7' */ STATEMACHINE_ERROR,
+ /* '\xb8' */ STATEMACHINE_ERROR,
+ /* '\xb9' */ STATEMACHINE_ERROR,
+ /* '\xba' */ STATEMACHINE_ERROR,
+ /* '\xbb' */ STATEMACHINE_ERROR,
+ /* '\xbc' */ STATEMACHINE_ERROR,
+ /* '\xbd' */ STATEMACHINE_ERROR,
+ /* '\xbe' */ STATEMACHINE_ERROR,
+ /* '\xbf' */ STATEMACHINE_ERROR,
+ /* '\xc0' */ STATEMACHINE_ERROR,
+ /* '\xc1' */ STATEMACHINE_ERROR,
+ /* '\xc2' */ STATEMACHINE_ERROR,
+ /* '\xc3' */ STATEMACHINE_ERROR,
+ /* '\xc4' */ STATEMACHINE_ERROR,
+ /* '\xc5' */ STATEMACHINE_ERROR,
+ /* '\xc6' */ STATEMACHINE_ERROR,
+ /* '\xc7' */ STATEMACHINE_ERROR,
+ /* '\xc8' */ STATEMACHINE_ERROR,
+ /* '\xc9' */ STATEMACHINE_ERROR,
+ /* '\xca' */ STATEMACHINE_ERROR,
+ /* '\xcb' */ STATEMACHINE_ERROR,
+ /* '\xcc' */ STATEMACHINE_ERROR,
+ /* '\xcd' */ STATEMACHINE_ERROR,
+ /* '\xce' */ STATEMACHINE_ERROR,
+ /* '\xcf' */ STATEMACHINE_ERROR,
+ /* '\xd0' */ STATEMACHINE_ERROR,
+ /* '\xd1' */ STATEMACHINE_ERROR,
+ /* '\xd2' */ STATEMACHINE_ERROR,
+ /* '\xd3' */ STATEMACHINE_ERROR,
+ /* '\xd4' */ STATEMACHINE_ERROR,
+ /* '\xd5' */ STATEMACHINE_ERROR,
+ /* '\xd6' */ STATEMACHINE_ERROR,
+ /* '\xd7' */ STATEMACHINE_ERROR,
+ /* '\xd8' */ STATEMACHINE_ERROR,
+ /* '\xd9' */ STATEMACHINE_ERROR,
+ /* '\xda' */ STATEMACHINE_ERROR,
+ /* '\xdb' */ STATEMACHINE_ERROR,
+ /* '\xdc' */ STATEMACHINE_ERROR,
+ /* '\xdd' */ STATEMACHINE_ERROR,
+ /* '\xde' */ STATEMACHINE_ERROR,
+ /* '\xdf' */ STATEMACHINE_ERROR,
+ /* '\xe0' */ STATEMACHINE_ERROR,
+ /* '\xe1' */ STATEMACHINE_ERROR,
+ /* '\xe2' */ STATEMACHINE_ERROR,
+ /* '\xe3' */ STATEMACHINE_ERROR,
+ /* '\xe4' */ STATEMACHINE_ERROR,
+ /* '\xe5' */ STATEMACHINE_ERROR,
+ /* '\xe6' */ STATEMACHINE_ERROR,
+ /* '\xe7' */ STATEMACHINE_ERROR,
+ /* '\xe8' */ STATEMACHINE_ERROR,
+ /* '\xe9' */ STATEMACHINE_ERROR,
+ /* '\xea' */ STATEMACHINE_ERROR,
+ /* '\xeb' */ STATEMACHINE_ERROR,
+ /* '\xec' */ STATEMACHINE_ERROR,
+ /* '\xed' */ STATEMACHINE_ERROR,
+ /* '\xee' */ STATEMACHINE_ERROR,
+ /* '\xef' */ STATEMACHINE_ERROR,
+ /* '\xf0' */ STATEMACHINE_ERROR,
+ /* '\xf1' */ STATEMACHINE_ERROR,
+ /* '\xf2' */ STATEMACHINE_ERROR,
+ /* '\xf3' */ STATEMACHINE_ERROR,
+ /* '\xf4' */ STATEMACHINE_ERROR,
+ /* '\xf5' */ STATEMACHINE_ERROR,
+ /* '\xf6' */ STATEMACHINE_ERROR,
+ /* '\xf7' */ STATEMACHINE_ERROR,
+ /* '\xf8' */ STATEMACHINE_ERROR,
+ /* '\xf9' */ STATEMACHINE_ERROR,
+ /* '\xfa' */ STATEMACHINE_ERROR,
+ /* '\xfb' */ STATEMACHINE_ERROR,
+ /* '\xfc' */ STATEMACHINE_ERROR,
+ /* '\xfd' */ STATEMACHINE_ERROR,
+ /* '\xfe' */ STATEMACHINE_ERROR
+};
+
+static const int htmlparser_transition_row_attr_space[] = {
+ /* '\x00' */ STATEMACHINE_ERROR,
+ /* '\x01' */ STATEMACHINE_ERROR,
+ /* '\x02' */ STATEMACHINE_ERROR,
+ /* '\x03' */ STATEMACHINE_ERROR,
+ /* '\x04' */ STATEMACHINE_ERROR,
+ /* '\x05' */ STATEMACHINE_ERROR,
+ /* '\x06' */ STATEMACHINE_ERROR,
+ /* '\x07' */ STATEMACHINE_ERROR,
+ /* '\x08' */ STATEMACHINE_ERROR,
+ /* '\t' */ HTMLPARSER_STATE_INT_ATTR_SPACE,
+ /* '\n' */ HTMLPARSER_STATE_INT_ATTR_SPACE,
+ /* '\x0b' */ STATEMACHINE_ERROR,
+ /* '\x0c' */ STATEMACHINE_ERROR,
+ /* '\r' */ HTMLPARSER_STATE_INT_ATTR_SPACE,
+ /* '\x0e' */ STATEMACHINE_ERROR,
+ /* '\x0f' */ STATEMACHINE_ERROR,
+ /* '\x10' */ STATEMACHINE_ERROR,
+ /* '\x11' */ STATEMACHINE_ERROR,
+ /* '\x12' */ STATEMACHINE_ERROR,
+ /* '\x13' */ STATEMACHINE_ERROR,
+ /* '\x14' */ STATEMACHINE_ERROR,
+ /* '\x15' */ STATEMACHINE_ERROR,
+ /* '\x16' */ STATEMACHINE_ERROR,
+ /* '\x17' */ STATEMACHINE_ERROR,
+ /* '\x18' */ STATEMACHINE_ERROR,
+ /* '\x19' */ STATEMACHINE_ERROR,
+ /* '\x1a' */ STATEMACHINE_ERROR,
+ /* '\x1b' */ STATEMACHINE_ERROR,
+ /* '\x1c' */ STATEMACHINE_ERROR,
+ /* '\x1d' */ STATEMACHINE_ERROR,
+ /* '\x1e' */ STATEMACHINE_ERROR,
+ /* '\x1f' */ STATEMACHINE_ERROR,
+ /* ' ' */ HTMLPARSER_STATE_INT_ATTR_SPACE,
+ /* '!' */ STATEMACHINE_ERROR,
+ /* '"' */ STATEMACHINE_ERROR,
+ /* '#' */ STATEMACHINE_ERROR,
+ /* '$' */ STATEMACHINE_ERROR,
+ /* '%' */ STATEMACHINE_ERROR,
+ /* '&' */ STATEMACHINE_ERROR,
+ /* "'" */ STATEMACHINE_ERROR,
+ /* '(' */ STATEMACHINE_ERROR,
+ /* ')' */ STATEMACHINE_ERROR,
+ /* '*' */ STATEMACHINE_ERROR,
+ /* '+' */ STATEMACHINE_ERROR,
+ /* ',' */ STATEMACHINE_ERROR,
+ /* '-' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '.' */ STATEMACHINE_ERROR,
+ /* '/' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '0' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '1' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '2' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '3' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '4' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '5' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '6' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '7' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '8' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '9' */ HTMLPARSER_STATE_INT_ATTR,
+ /* ':' */ HTMLPARSER_STATE_INT_ATTR,
+ /* ';' */ STATEMACHINE_ERROR,
+ /* '<' */ STATEMACHINE_ERROR,
+ /* '=' */ HTMLPARSER_STATE_INT_VALUE,
+ /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE,
+ /* '?' */ STATEMACHINE_ERROR,
+ /* '@' */ STATEMACHINE_ERROR,
+ /* 'A' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'B' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'C' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'D' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'E' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'F' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'G' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'H' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'I' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'J' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'K' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'L' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'M' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'N' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'O' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'P' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'Q' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'R' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'S' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'T' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'U' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'V' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'W' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'X' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'Y' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'Z' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '[' */ STATEMACHINE_ERROR,
+ /* '\\' */ STATEMACHINE_ERROR,
+ /* ']' */ STATEMACHINE_ERROR,
+ /* '^' */ STATEMACHINE_ERROR,
+ /* '_' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '`' */ STATEMACHINE_ERROR,
+ /* 'a' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'b' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'c' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'd' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'e' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'f' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'g' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'h' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'i' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'j' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'k' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'l' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'm' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'n' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'o' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'p' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'q' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'r' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 's' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 't' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'u' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'v' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'w' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'x' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'y' */ HTMLPARSER_STATE_INT_ATTR,
+ /* 'z' */ HTMLPARSER_STATE_INT_ATTR,
+ /* '{' */ STATEMACHINE_ERROR,
+ /* '|' */ STATEMACHINE_ERROR,
+ /* '}' */ STATEMACHINE_ERROR,
+ /* '~' */ STATEMACHINE_ERROR,
+ /* '\x7f' */ STATEMACHINE_ERROR,
+ /* '\x80' */ STATEMACHINE_ERROR,
+ /* '\x81' */ STATEMACHINE_ERROR,
+ /* '\x82' */ STATEMACHINE_ERROR,
+ /* '\x83' */ STATEMACHINE_ERROR,
+ /* '\x84' */ STATEMACHINE_ERROR,
+ /* '\x85' */ STATEMACHINE_ERROR,
+ /* '\x86' */ STATEMACHINE_ERROR,
+ /* '\x87' */ STATEMACHINE_ERROR,
+ /* '\x88' */ STATEMACHINE_ERROR,
+ /* '\x89' */ STATEMACHINE_ERROR,
+ /* '\x8a' */ STATEMACHINE_ERROR,
+ /* '\x8b' */ STATEMACHINE_ERROR,
+ /* '\x8c' */ STATEMACHINE_ERROR,
+ /* '\x8d' */ STATEMACHINE_ERROR,
+ /* '\x8e' */ STATEMACHINE_ERROR,
+ /* '\x8f' */ STATEMACHINE_ERROR,
+ /* '\x90' */ STATEMACHINE_ERROR,
+ /* '\x91' */ STATEMACHINE_ERROR,
+ /* '\x92' */ STATEMACHINE_ERROR,
+ /* '\x93' */ STATEMACHINE_ERROR,
+ /* '\x94' */ STATEMACHINE_ERROR,
+ /* '\x95' */ STATEMACHINE_ERROR,
+ /* '\x96' */ STATEMACHINE_ERROR,
+ /* '\x97' */ STATEMACHINE_ERROR,
+ /* '\x98' */ STATEMACHINE_ERROR,
+ /* '\x99' */ STATEMACHINE_ERROR,
+ /* '\x9a' */ STATEMACHINE_ERROR,
+ /* '\x9b' */ STATEMACHINE_ERROR,
+ /* '\x9c' */ STATEMACHINE_ERROR,
+ /* '\x9d' */ STATEMACHINE_ERROR,
+ /* '\x9e' */ STATEMACHINE_ERROR,
+ /* '\x9f' */ STATEMACHINE_ERROR,
+ /* '\xa0' */ STATEMACHINE_ERROR,
+ /* '\xa1' */ STATEMACHINE_ERROR,
+ /* '\xa2' */ STATEMACHINE_ERROR,
+ /* '\xa3' */ STATEMACHINE_ERROR,
+ /* '\xa4' */ STATEMACHINE_ERROR,
+ /* '\xa5' */ STATEMACHINE_ERROR,
+ /* '\xa6' */ STATEMACHINE_ERROR,
+ /* '\xa7' */ STATEMACHINE_ERROR,
+ /* '\xa8' */ STATEMACHINE_ERROR,
+ /* '\xa9' */ STATEMACHINE_ERROR,
+ /* '\xaa' */ STATEMACHINE_ERROR,
+ /* '\xab' */ STATEMACHINE_ERROR,
+ /* '\xac' */ STATEMACHINE_ERROR,
+ /* '\xad' */ STATEMACHINE_ERROR,
+ /* '\xae' */ STATEMACHINE_ERROR,
+ /* '\xaf' */ STATEMACHINE_ERROR,
+ /* '\xb0' */ STATEMACHINE_ERROR,
+ /* '\xb1' */ STATEMACHINE_ERROR,
+ /* '\xb2' */ STATEMACHINE_ERROR,
+ /* '\xb3' */ STATEMACHINE_ERROR,
+ /* '\xb4' */ STATEMACHINE_ERROR,
+ /* '\xb5' */ STATEMACHINE_ERROR,
+ /* '\xb6' */ STATEMACHINE_ERROR,
+ /* '\xb7' */ STATEMACHINE_ERROR,
+ /* '\xb8' */ STATEMACHINE_ERROR,
+ /* '\xb9' */ STATEMACHINE_ERROR,
+ /* '\xba' */ STATEMACHINE_ERROR,
+ /* '\xbb' */ STATEMACHINE_ERROR,
+ /* '\xbc' */ STATEMACHINE_ERROR,
+ /* '\xbd' */ STATEMACHINE_ERROR,
+ /* '\xbe' */ STATEMACHINE_ERROR,
+ /* '\xbf' */ STATEMACHINE_ERROR,
+ /* '\xc0' */ STATEMACHINE_ERROR,
+ /* '\xc1' */ STATEMACHINE_ERROR,
+ /* '\xc2' */ STATEMACHINE_ERROR,
+ /* '\xc3' */ STATEMACHINE_ERROR,
+ /* '\xc4' */ STATEMACHINE_ERROR,
+ /* '\xc5' */ STATEMACHINE_ERROR,
+ /* '\xc6' */ STATEMACHINE_ERROR,
+ /* '\xc7' */ STATEMACHINE_ERROR,
+ /* '\xc8' */ STATEMACHINE_ERROR,
+ /* '\xc9' */ STATEMACHINE_ERROR,
+ /* '\xca' */ STATEMACHINE_ERROR,
+ /* '\xcb' */ STATEMACHINE_ERROR,
+ /* '\xcc' */ STATEMACHINE_ERROR,
+ /* '\xcd' */ STATEMACHINE_ERROR,
+ /* '\xce' */ STATEMACHINE_ERROR,
+ /* '\xcf' */ STATEMACHINE_ERROR,
+ /* '\xd0' */ STATEMACHINE_ERROR,
+ /* '\xd1' */ STATEMACHINE_ERROR,
+ /* '\xd2' */ STATEMACHINE_ERROR,
+ /* '\xd3' */ STATEMACHINE_ERROR,
+ /* '\xd4' */ STATEMACHINE_ERROR,
+ /* '\xd5' */ STATEMACHINE_ERROR,
+ /* '\xd6' */ STATEMACHINE_ERROR,
+ /* '\xd7' */ STATEMACHINE_ERROR,
+ /* '\xd8' */ STATEMACHINE_ERROR,
+ /* '\xd9' */ STATEMACHINE_ERROR,
+ /* '\xda' */ STATEMACHINE_ERROR,
+ /* '\xdb' */ STATEMACHINE_ERROR,
+ /* '\xdc' */ STATEMACHINE_ERROR,
+ /* '\xdd' */ STATEMACHINE_ERROR,
+ /* '\xde' */ STATEMACHINE_ERROR,
+ /* '\xdf' */ STATEMACHINE_ERROR,
+ /* '\xe0' */ STATEMACHINE_ERROR,
+ /* '\xe1' */ STATEMACHINE_ERROR,
+ /* '\xe2' */ STATEMACHINE_ERROR,
+ /* '\xe3' */ STATEMACHINE_ERROR,
+ /* '\xe4' */ STATEMACHINE_ERROR,
+ /* '\xe5' */ STATEMACHINE_ERROR,
+ /* '\xe6' */ STATEMACHINE_ERROR,
+ /* '\xe7' */ STATEMACHINE_ERROR,
+ /* '\xe8' */ STATEMACHINE_ERROR,
+ /* '\xe9' */ STATEMACHINE_ERROR,
+ /* '\xea' */ STATEMACHINE_ERROR,
+ /* '\xeb' */ STATEMACHINE_ERROR,
+ /* '\xec' */ STATEMACHINE_ERROR,
+ /* '\xed' */ STATEMACHINE_ERROR,
+ /* '\xee' */ STATEMACHINE_ERROR,
+ /* '\xef' */ STATEMACHINE_ERROR,
+ /* '\xf0' */ STATEMACHINE_ERROR,
+ /* '\xf1' */ STATEMACHINE_ERROR,
+ /* '\xf2' */ STATEMACHINE_ERROR,
+ /* '\xf3' */ STATEMACHINE_ERROR,
+ /* '\xf4' */ STATEMACHINE_ERROR,
+ /* '\xf5' */ STATEMACHINE_ERROR,
+ /* '\xf6' */ STATEMACHINE_ERROR,
+ /* '\xf7' */ STATEMACHINE_ERROR,
+ /* '\xf8' */ STATEMACHINE_ERROR,
+ /* '\xf9' */ STATEMACHINE_ERROR,
+ /* '\xfa' */ STATEMACHINE_ERROR,
+ /* '\xfb' */ STATEMACHINE_ERROR,
+ /* '\xfc' */ STATEMACHINE_ERROR,
+ /* '\xfd' */ STATEMACHINE_ERROR,
+ /* '\xfe' */ STATEMACHINE_ERROR
+};
+
+static const int htmlparser_transition_row_value[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_VALUE,
+ /* '\n' */ HTMLPARSER_STATE_INT_VALUE,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_VALUE,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_VALUE,
+ /* '!' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '"' */ HTMLPARSER_STATE_INT_VALUE_DQ_START,
+ /* '#' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_VALUE_Q_START,
+ /* '(' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '.' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ':' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ';' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '=' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE,
+ /* '?' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'B' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'C' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'D' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'E' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'F' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'G' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'H' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'I' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'J' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'K' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'L' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'M' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'N' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'O' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'P' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'R' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'S' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'T' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'U' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'V' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'W' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'X' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '[' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '`' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'g' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'h' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'i' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'j' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'k' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'l' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'm' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'n' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'o' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'p' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'q' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'r' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 's' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 't' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'u' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'v' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'w' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'x' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'y' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'z' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '{' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_TEXT
+};
+
+static const int htmlparser_transition_row_value_text[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\n' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '!' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '"' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '.' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ':' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ';' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '=' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE,
+ /* '?' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'B' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'C' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'D' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'E' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'F' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'G' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'H' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'I' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'J' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'K' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'L' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'M' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'N' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'O' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'P' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'R' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'S' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'T' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'U' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'V' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'W' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'X' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '[' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '`' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'g' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'h' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'i' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'j' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'k' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'l' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'm' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'n' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'o' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'p' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'q' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'r' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 's' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 't' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'u' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'v' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'w' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'x' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'y' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* 'z' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '{' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_TEXT
+};
+
+static const int htmlparser_transition_row_value_q_start[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\t' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\n' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\r' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ' ' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '!' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '"' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '#' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '$' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '%' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '&' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* "'" */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '(' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ')' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '*' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '+' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ',' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '-' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '.' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '/' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ':' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ';' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '<' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '=' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '>' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '?' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '@' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'A' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'B' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'C' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'D' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'E' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'F' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'G' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'H' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'I' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'J' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'K' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'L' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'M' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'N' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'O' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'P' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'R' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'S' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'T' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'U' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'V' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'W' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'X' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '[' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\\' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ']' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '^' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '_' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '`' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'a' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'g' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'h' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'i' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'j' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'k' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'l' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'm' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'n' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'o' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'p' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'q' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'r' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 's' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 't' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'u' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'v' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'w' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'x' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'y' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'z' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '{' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '|' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '}' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '~' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_Q
+};
+
+static const int htmlparser_transition_row_value_q[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\t' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\n' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\r' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ' ' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '!' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '"' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '#' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '$' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '%' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '&' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* "'" */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '(' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ')' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '*' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '+' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ',' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '-' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '.' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '/' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ':' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ';' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '<' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '=' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '>' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '?' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '@' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'A' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'B' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'C' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'D' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'E' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'F' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'G' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'H' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'I' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'J' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'K' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'L' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'M' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'N' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'O' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'P' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'R' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'S' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'T' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'U' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'V' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'W' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'X' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '[' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\\' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* ']' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '^' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '_' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '`' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'a' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'g' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'h' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'i' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'j' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'k' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'l' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'm' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'n' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'o' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'p' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'q' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'r' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 's' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 't' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'u' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'v' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'w' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'x' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'y' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* 'z' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '{' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '|' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '}' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '~' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_Q,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_Q
+};
+
+static const int htmlparser_transition_row_value_dq_start[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\t' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\n' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\r' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ' ' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '!' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '"' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '#' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '$' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '%' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '&' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* "'" */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '(' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ')' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '*' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '+' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ',' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '-' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '.' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '/' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ':' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ';' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '<' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '=' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '>' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '?' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '@' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'A' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'B' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'C' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'D' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'E' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'F' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'G' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'H' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'I' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'J' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'K' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'L' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'M' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'N' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'O' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'P' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'R' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'S' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'T' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'U' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'V' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'W' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'X' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '[' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\\' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ']' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '^' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '_' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '`' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'a' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'g' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'h' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'i' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'j' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'k' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'l' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'm' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'n' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'o' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'p' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'q' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'r' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 's' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 't' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'u' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'v' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'w' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'x' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'y' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'z' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '{' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '|' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '}' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '~' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_DQ
+};
+
+static const int htmlparser_transition_row_value_dq[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\t' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\n' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\r' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ' ' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '!' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '"' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '#' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '$' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '%' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '&' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* "'" */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '(' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ')' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '*' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '+' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ',' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '-' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '.' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '/' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ':' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ';' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '<' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '=' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '>' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '?' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '@' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'A' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'B' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'C' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'D' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'E' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'F' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'G' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'H' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'I' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'J' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'K' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'L' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'M' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'N' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'O' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'P' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'R' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'S' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'T' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'U' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'V' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'W' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'X' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '[' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\\' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* ']' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '^' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '_' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '`' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'a' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'g' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'h' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'i' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'j' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'k' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'l' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'm' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'n' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'o' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'p' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'q' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'r' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 's' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 't' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'u' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'v' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'w' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'x' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'y' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* 'z' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '{' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '|' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '}' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '~' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_DQ,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_DQ
+};
+
+static const int htmlparser_transition_row_cdata_comment_start[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\n' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '!' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_START_DASH,
+ /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ':' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'B' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'C' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'D' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'E' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'F' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'G' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'H' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'I' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'J' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'K' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'L' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'M' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'N' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'O' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'P' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'R' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'S' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'T' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'U' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'V' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'W' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'X' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'g' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'h' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'i' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'j' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'k' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'l' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'm' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'n' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'o' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'p' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'q' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'r' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 's' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 't' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'u' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'v' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'w' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'x' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'y' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'z' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT
+};
+
+static const int htmlparser_transition_row_cdata_comment_start_dash[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\n' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '!' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ':' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'B' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'C' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'D' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'E' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'F' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'G' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'H' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'I' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'J' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'K' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'L' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'M' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'N' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'O' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'P' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'R' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'S' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'T' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'U' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'V' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'W' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'X' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'g' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'h' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'i' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'j' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'k' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'l' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'm' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'n' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'o' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'p' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'q' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'r' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 's' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 't' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'u' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'v' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'w' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'x' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'y' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'z' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT
+};
+
+static const int htmlparser_transition_row_cdata_comment_body[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\t' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ' ' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '!' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '"' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '#' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '$' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '%' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '&' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* "'" */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '(' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ')' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '*' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '+' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ',' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH,
+ /* '.' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '/' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ':' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ';' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '<' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '=' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '>' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '?' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '@' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'A' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'B' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'C' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'D' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'E' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'F' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'G' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'H' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'I' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'J' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'K' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'L' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'M' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'N' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'O' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'P' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'R' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'S' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'T' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'U' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'V' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'W' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'X' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '[' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\\' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ']' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '^' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '_' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '`' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'g' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'h' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'i' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'j' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'k' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'l' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'm' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'o' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'p' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 's' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 't' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'u' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'v' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'w' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'x' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '{' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '|' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '}' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '~' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY
+};
+
+static const int htmlparser_transition_row_cdata_comment_dash[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\t' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ' ' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '!' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '"' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '#' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '$' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '%' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '&' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* "'" */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '(' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ')' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '*' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '+' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ',' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH,
+ /* '.' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '/' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ':' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ';' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '<' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '=' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '>' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '?' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '@' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'A' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'B' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'C' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'D' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'E' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'F' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'G' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'H' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'I' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'J' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'K' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'L' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'M' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'N' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'O' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'P' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'R' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'S' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'T' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'U' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'V' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'W' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'X' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '[' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\\' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ']' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '^' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '_' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '`' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'g' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'h' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'i' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'j' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'k' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'l' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'm' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'o' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'p' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 's' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 't' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'u' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'v' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'w' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'x' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '{' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '|' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '}' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '~' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY
+};
+
+static const int htmlparser_transition_row_cdata_comment_dash_dash[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\t' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ' ' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '!' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '"' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '#' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '$' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '%' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '&' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* "'" */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '(' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ')' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '*' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '+' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ',' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH,
+ /* '.' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '/' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ':' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ';' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '<' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '=' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '@' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'A' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'B' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'C' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'D' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'E' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'F' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'G' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'H' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'I' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'J' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'K' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'L' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'M' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'N' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'O' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'P' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'R' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'S' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'T' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'U' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'V' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'W' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'X' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '[' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\\' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* ']' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '^' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '_' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '`' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'g' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'h' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'i' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'j' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'k' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'l' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'm' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'o' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'p' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 's' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 't' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'u' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'v' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'w' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'x' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* 'z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '{' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '|' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '}' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '~' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY
+};
+
+static const int htmlparser_transition_row_cdata_text[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\n' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '!' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ':' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_CDATA_LT,
+ /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'B' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'C' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'D' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'E' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'F' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'G' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'H' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'I' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'J' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'K' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'L' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'M' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'N' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'O' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'P' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'R' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'S' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'T' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'U' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'V' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'W' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'X' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'g' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'h' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'i' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'j' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'k' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'l' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'm' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'n' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'o' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'p' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'q' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'r' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 's' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 't' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'u' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'v' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'w' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'x' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'y' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'z' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT
+};
+
+static const int htmlparser_transition_row_cdata_lt[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\n' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '!' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_START,
+ /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ':' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'B' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'C' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'D' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'E' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'F' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'G' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'H' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'I' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'J' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'K' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'L' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'M' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'N' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'O' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'P' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'R' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'S' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'T' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'U' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'V' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'W' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'X' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'g' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'h' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'i' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'j' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'k' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'l' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'm' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'n' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'o' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'p' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'q' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'r' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 's' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 't' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'u' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'v' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'w' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'x' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'y' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'z' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT
+};
+
+static const int htmlparser_transition_row_cdata_may_close[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\t' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\n' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\r' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ' ' */ HTMLPARSER_STATE_INT_TAG_SPACE,
+ /* '!' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '-' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '/' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '0' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '1' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '2' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '3' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '4' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '5' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '6' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '7' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '8' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '9' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* ':' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '<' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '>' */ HTMLPARSER_STATE_INT_TEXT,
+ /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'A' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'B' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'C' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'D' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'E' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'F' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'G' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'H' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'I' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'J' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'K' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'L' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'M' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'N' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'O' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'P' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'R' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'S' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'T' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'U' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'V' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'W' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'X' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '_' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* 'a' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'b' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'c' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'd' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'e' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'f' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'g' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'h' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'i' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'j' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'k' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'l' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'm' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'n' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'o' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'p' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'q' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'r' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 's' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 't' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'u' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'v' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'w' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'x' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'y' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* 'z' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE,
+ /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT
+};
+
+static const int htmlparser_transition_row_js_file[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x01' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x02' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x03' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x04' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x05' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x06' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x07' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x08' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\t' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\n' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\r' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x10' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x11' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x12' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x13' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x14' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x15' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x16' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x17' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x18' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x19' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* ' ' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '!' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '"' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '#' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '$' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '%' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '&' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* "'" */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '(' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* ')' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '*' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '+' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* ',' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '-' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '.' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '/' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '0' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '1' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '2' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '3' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '4' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '5' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '6' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '7' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '8' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '9' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* ':' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* ';' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '<' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '=' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '>' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '?' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '@' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'A' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'B' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'C' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'D' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'E' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'F' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'G' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'H' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'I' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'J' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'K' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'L' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'M' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'N' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'O' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'P' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'Q' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'R' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'S' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'T' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'U' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'V' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'W' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'X' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'Y' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'Z' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '[' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\\' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* ']' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '^' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '_' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '`' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'a' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'b' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'c' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'd' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'e' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'f' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'g' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'h' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'i' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'j' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'k' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'l' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'm' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'n' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'o' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'p' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'q' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'r' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 's' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 't' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'u' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'v' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'w' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'x' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'y' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* 'z' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '{' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '|' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '}' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '~' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x80' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x81' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x82' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x83' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x84' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x85' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x86' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x87' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x88' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x89' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x90' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x91' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x92' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x93' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x94' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x95' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x96' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x97' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x98' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x99' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xab' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xac' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xad' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xae' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xba' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xca' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xce' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xda' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xde' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xea' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xec' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xed' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xee' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xef' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_JS_FILE,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_JS_FILE
+};
+
+static const int htmlparser_transition_row_css_file[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x01' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x02' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x03' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x04' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x05' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x06' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x07' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x08' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\t' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\n' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\r' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x10' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x11' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x12' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x13' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x14' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x15' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x16' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x17' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x18' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x19' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* ' ' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '!' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '"' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '#' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '$' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '%' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '&' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* "'" */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '(' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* ')' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '*' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '+' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* ',' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '-' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '.' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '/' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '0' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '1' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '2' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '3' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '4' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '5' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '6' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '7' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '8' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '9' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* ':' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* ';' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '<' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '=' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '>' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '?' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '@' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'A' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'B' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'C' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'D' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'E' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'F' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'G' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'H' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'I' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'J' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'K' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'L' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'M' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'N' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'O' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'P' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'Q' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'R' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'S' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'T' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'U' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'V' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'W' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'X' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'Y' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'Z' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '[' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\\' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* ']' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '^' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '_' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '`' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'a' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'b' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'c' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'd' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'e' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'f' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'g' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'h' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'i' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'j' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'k' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'l' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'm' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'n' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'o' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'p' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'q' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'r' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 's' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 't' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'u' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'v' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'w' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'x' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'y' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* 'z' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '{' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '|' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '}' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '~' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x80' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x81' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x82' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x83' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x84' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x85' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x86' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x87' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x88' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x89' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x90' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x91' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x92' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x93' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x94' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x95' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x96' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x97' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x98' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x99' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xab' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xac' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xad' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xae' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xba' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xca' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xce' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xda' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xde' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xea' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xec' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xed' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xee' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xef' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_CSS_FILE,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_CSS_FILE
+};
+
+static const int htmlparser_transition_row_null[] = {
+ /* '\x00' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x01' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x02' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x03' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x04' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x05' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x06' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x07' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x08' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\t' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\n' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x0b' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x0c' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\r' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x0e' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x0f' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x10' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x11' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x12' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x13' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x14' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x15' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x16' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x17' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x18' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x19' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x1a' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x1b' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x1c' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x1d' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x1e' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x1f' */ HTMLPARSER_STATE_INT_NULL,
+ /* ' ' */ HTMLPARSER_STATE_INT_NULL,
+ /* '!' */ HTMLPARSER_STATE_INT_NULL,
+ /* '"' */ HTMLPARSER_STATE_INT_NULL,
+ /* '#' */ HTMLPARSER_STATE_INT_NULL,
+ /* '$' */ HTMLPARSER_STATE_INT_NULL,
+ /* '%' */ HTMLPARSER_STATE_INT_NULL,
+ /* '&' */ HTMLPARSER_STATE_INT_NULL,
+ /* "'" */ HTMLPARSER_STATE_INT_NULL,
+ /* '(' */ HTMLPARSER_STATE_INT_NULL,
+ /* ')' */ HTMLPARSER_STATE_INT_NULL,
+ /* '*' */ HTMLPARSER_STATE_INT_NULL,
+ /* '+' */ HTMLPARSER_STATE_INT_NULL,
+ /* ',' */ HTMLPARSER_STATE_INT_NULL,
+ /* '-' */ HTMLPARSER_STATE_INT_NULL,
+ /* '.' */ HTMLPARSER_STATE_INT_NULL,
+ /* '/' */ HTMLPARSER_STATE_INT_NULL,
+ /* '0' */ HTMLPARSER_STATE_INT_NULL,
+ /* '1' */ HTMLPARSER_STATE_INT_NULL,
+ /* '2' */ HTMLPARSER_STATE_INT_NULL,
+ /* '3' */ HTMLPARSER_STATE_INT_NULL,
+ /* '4' */ HTMLPARSER_STATE_INT_NULL,
+ /* '5' */ HTMLPARSER_STATE_INT_NULL,
+ /* '6' */ HTMLPARSER_STATE_INT_NULL,
+ /* '7' */ HTMLPARSER_STATE_INT_NULL,
+ /* '8' */ HTMLPARSER_STATE_INT_NULL,
+ /* '9' */ HTMLPARSER_STATE_INT_NULL,
+ /* ':' */ HTMLPARSER_STATE_INT_NULL,
+ /* ';' */ HTMLPARSER_STATE_INT_NULL,
+ /* '<' */ HTMLPARSER_STATE_INT_NULL,
+ /* '=' */ HTMLPARSER_STATE_INT_NULL,
+ /* '>' */ HTMLPARSER_STATE_INT_NULL,
+ /* '?' */ HTMLPARSER_STATE_INT_NULL,
+ /* '@' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'A' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'B' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'C' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'D' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'E' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'F' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'G' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'H' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'I' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'J' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'K' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'L' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'M' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'N' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'O' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'P' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'Q' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'R' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'S' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'T' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'U' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'V' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'W' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'X' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'Y' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'Z' */ HTMLPARSER_STATE_INT_NULL,
+ /* '[' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\\' */ HTMLPARSER_STATE_INT_NULL,
+ /* ']' */ HTMLPARSER_STATE_INT_NULL,
+ /* '^' */ HTMLPARSER_STATE_INT_NULL,
+ /* '_' */ HTMLPARSER_STATE_INT_NULL,
+ /* '`' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'a' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'b' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'c' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'd' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'e' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'f' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'g' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'h' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'i' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'j' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'k' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'l' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'm' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'n' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'o' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'p' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'q' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'r' */ HTMLPARSER_STATE_INT_NULL,
+ /* 's' */ HTMLPARSER_STATE_INT_NULL,
+ /* 't' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'u' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'v' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'w' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'x' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'y' */ HTMLPARSER_STATE_INT_NULL,
+ /* 'z' */ HTMLPARSER_STATE_INT_NULL,
+ /* '{' */ HTMLPARSER_STATE_INT_NULL,
+ /* '|' */ HTMLPARSER_STATE_INT_NULL,
+ /* '}' */ HTMLPARSER_STATE_INT_NULL,
+ /* '~' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x7f' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x80' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x81' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x82' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x83' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x84' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x85' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x86' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x87' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x88' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x89' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x8a' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x8b' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x8c' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x8d' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x8e' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x8f' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x90' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x91' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x92' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x93' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x94' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x95' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x96' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x97' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x98' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x99' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x9a' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x9b' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x9c' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x9d' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x9e' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\x9f' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa0' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa1' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa2' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa3' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa4' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa5' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa6' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa7' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa8' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xa9' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xaa' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xab' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xac' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xad' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xae' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xaf' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb0' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb1' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb2' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb3' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb4' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb5' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb6' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb7' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb8' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xb9' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xba' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xbb' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xbc' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xbd' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xbe' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xbf' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc0' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc1' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc2' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc3' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc4' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc5' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc6' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc7' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc8' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xc9' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xca' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xcb' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xcc' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xcd' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xce' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xcf' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd0' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd1' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd2' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd3' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd4' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd5' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd6' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd7' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd8' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xd9' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xda' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xdb' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xdc' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xdd' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xde' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xdf' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe0' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe1' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe2' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe3' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe4' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe5' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe6' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe7' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe8' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xe9' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xea' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xeb' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xec' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xed' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xee' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xef' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf0' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf1' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf2' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf3' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf4' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf5' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf6' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf7' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf8' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xf9' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xfa' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xfb' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xfc' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xfd' */ HTMLPARSER_STATE_INT_NULL,
+ /* '\xfe' */ HTMLPARSER_STATE_INT_NULL
+};
+
+static const int * htmlparser_state_transitions[] = {
+ htmlparser_transition_row_text,
+ htmlparser_transition_row_tag_start,
+ htmlparser_transition_row_tag_name,
+ htmlparser_transition_row_declaration_start,
+ htmlparser_transition_row_declaration_body,
+ htmlparser_transition_row_comment_open,
+ htmlparser_transition_row_comment_body,
+ htmlparser_transition_row_comment_dash,
+ htmlparser_transition_row_comment_dash_dash,
+ htmlparser_transition_row_pi,
+ htmlparser_transition_row_pi_may_end,
+ htmlparser_transition_row_tag_space,
+ htmlparser_transition_row_tag_close,
+ htmlparser_transition_row_attr,
+ htmlparser_transition_row_attr_space,
+ htmlparser_transition_row_value,
+ htmlparser_transition_row_value_text,
+ htmlparser_transition_row_value_q_start,
+ htmlparser_transition_row_value_q,
+ htmlparser_transition_row_value_dq_start,
+ htmlparser_transition_row_value_dq,
+ htmlparser_transition_row_cdata_comment_start,
+ htmlparser_transition_row_cdata_comment_start_dash,
+ htmlparser_transition_row_cdata_comment_body,
+ htmlparser_transition_row_cdata_comment_dash,
+ htmlparser_transition_row_cdata_comment_dash_dash,
+ htmlparser_transition_row_cdata_text,
+ htmlparser_transition_row_cdata_lt,
+ htmlparser_transition_row_cdata_may_close,
+ htmlparser_transition_row_js_file,
+ htmlparser_transition_row_css_file,
+ htmlparser_transition_row_null
+};
+
diff --git a/streamhtmlparser/include/htmlparser.h b/streamhtmlparser/include/htmlparser.h
new file mode 100644
index 0000000..58db4a5
--- /dev/null
+++ b/streamhtmlparser/include/htmlparser.h
@@ -0,0 +1,397 @@
+/* Copyright (c) 2007, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Filipe Almeida
+ */
+
+#ifndef STREAMHTMLPARSER_HTMLPARSER_H
+#define STREAMHTMLPARSER_HTMLPARSER_H
+
+#include "statemachine.h"
+#include "jsparser.h"
+
+/* entity filter */
+
+/* String sizes used in htmlparser and entityfilter structures including the
+ * NULL terminator.
+ */
+#define HTMLPARSER_MAX_STRING STATEMACHINE_RECORD_BUFFER_SIZE
+#define HTMLPARSER_MAX_ENTITY_SIZE 10
+
+
+enum htmlparser_state_external_enum {
+ HTMLPARSER_STATE_TEXT,
+ HTMLPARSER_STATE_TAG,
+ HTMLPARSER_STATE_ATTR,
+ HTMLPARSER_STATE_VALUE,
+ HTMLPARSER_STATE_COMMENT,
+ HTMLPARSER_STATE_JS_FILE,
+ HTMLPARSER_STATE_CSS_FILE,
+ HTMLPARSER_STATE_ERROR
+};
+
+enum htmlparser_mode {
+ HTMLPARSER_MODE_HTML,
+ HTMLPARSER_MODE_JS,
+ HTMLPARSER_MODE_CSS,
+ HTMLPARSER_MODE_HTML_IN_TAG
+};
+
+enum htmlparser_attr_type {
+ HTMLPARSER_ATTR_NONE,
+ HTMLPARSER_ATTR_REGULAR,
+ HTMLPARSER_ATTR_URI,
+ HTMLPARSER_ATTR_JS,
+ HTMLPARSER_ATTR_STYLE
+};
+
+
+/* TODO(falmeida): Maybe move some of these declaration to the .c and only keep
+ * a forward declaration in here, since these structures are private.
+ */
+
+/* entityfilter context structure.
+ *
+ * The entity filter collection of routines provide a way to decode html
+ * entities from an html document in a streaming way.
+ *
+ * The html_process() function receives a character at a time from the input
+ * stream and returns 0 or more characters which should be appended to the
+ * resulting decoded document.
+ *
+ * Currently this collection of functions are only exported for testing purposes
+ * and shouldn't be called from outside of htmlparser.c.
+ *
+ * Since we really only use these functions with the very specific purpose of
+ * decoding html entities for javascript attributes, only a small subset of
+ * entities are supported: &lt;, &gt;, &quote;, &amp;, &apos, and the numeric
+ * character references for both decimal and hexadecimal.
+ */
+typedef struct entityfilter_ctx_s {
+
+ /* Current position into the buffer. */
+ int buffer_pos;
+
+ /* True if currently processing an html entity. */
+ int in_entity;
+
+ /* Temporary character buffer that is used while processing html entities.
+ */
+ char buffer[HTMLPARSER_MAX_ENTITY_SIZE];
+
+ /* String buffer returned to the application after we decoded an html
+ * entity.
+ */
+ char output[HTMLPARSER_MAX_ENTITY_SIZE];
+} entityfilter_ctx;
+
+/* Resets the entityfilter to its initial state so it can be reused.
+ */
+void entityfilter_reset(entityfilter_ctx *ctx);
+
+/* Initializes a new entity filter object.
+ */
+entityfilter_ctx *entityfilter_new(void);
+
+/* Deallocates an entity filter object.
+ */
+void entityfilter_delete(entityfilter_ctx *ctx);
+
+/* Copies the context of the entityfilter pointed to by src to the entityfilter
+ * dst.
+ */
+void entityfilter_copy(entityfilter_ctx *dst, entityfilter_ctx *src);
+
+/* Processes a character from the input stream and decodes any html entities
+ * in the accumulated buffer.
+ *
+ * Returns a reference to a string that points to an internal buffer. This
+ * buffer will be changed after every call to entityfilter_process(). As
+ * such this string should be duplicated before subsequent calls to
+ * entityfilter_process().
+ */
+const char *entityfilter_process(entityfilter_ctx *ctx, char c);
+
+
+/* html parser */
+
+/* Stores the context of the html parser.
+ * If this structure is changed, htmlparser_new(), htmlparser_copy() and
+ * htmlparser_reset() should be updated accordingly.
+ */
+typedef struct htmlparser_ctx_s {
+
+ /* Holds a reference to the statemachine context. */
+ statemachine_ctx *statemachine;
+
+ /* Holds a reference to the statemachine definition in use. Right now this is
+ * only used so we can deallocate it at the end.
+ *
+ * It should be readonly and contain the same values across jsparser
+ * instances.
+ */
+ /* TODO(falmeida): Change statemachine_def to const. */
+ statemachine_definition *statemachine_def;
+
+ /* Holds a reference to the javascript parser. */
+ jsparser_ctx *jsparser;
+
+ /* Holds a reference to the entity filter. Used for decoding html entities
+ * inside javascript attributes. */
+ entityfilter_ctx *entityfilter;
+
+ /* Offset into the current attribute value where 0 is the first character in
+ * the value. */
+ int value_index;
+
+ /* True if currently processing javascript. */
+ int in_js;
+
+ /* Current tag name. */
+ char tag[HTMLPARSER_MAX_STRING];
+
+ /* Current attribute name. */
+ char attr[HTMLPARSER_MAX_STRING];
+
+ /* Contents of the current value capped to HTMLPARSER_MAX_STRING. */
+ char value[HTMLPARSER_MAX_STRING];
+
+} htmlparser_ctx;
+
+/* Resets the parser to its initial state and to the default mode, which
+ * is MODE_HTML.
+ *
+ * All internal context like tag name, attribute name or the state of the
+ * statemachine are reset to its original values as if the object was just
+ * created.
+ */
+void htmlparser_reset(htmlparser_ctx *ctx);
+
+/* Resets the parser to its initial state and changes the parser mode.
+ * All internal context like tag name, attribute name or the state of the
+ * statemachine are reset to their original values as if the object was just
+ * created.
+ *
+ * Available modes:
+ * HTMLPARSER_MODE_HTML - Parses html text
+ * HTMLPARSER_MODE_JS - Parses javascript files
+ * HTMLPARSER_MODE_CSS - Parses CSS files. No actual parsing is actually done
+ * but htmlparser_in_css() always returns true.
+ * HTMLPARSER_MODE_HTML_IN_TAG - Parses an attribute list inside a tag. To
+ * be used in a template expanded in the
+ * following context: <a $template>
+ *
+ */
+void htmlparser_reset_mode(htmlparser_ctx *ctx, int mode);
+
+/* Initializes a new htmlparser instance.
+ *
+ * Returns a pointer to the new instance or NULL if the initialization fails.
+ * Initialization failure is fatal, and if this function fails it may not
+ * deallocate all previsouly allocated memory.
+ */
+htmlparser_ctx *htmlparser_new(void);
+
+/* Copies the context of the htmlparser pointed to by src to the htmlparser dst.
+ *
+ * Also copies over the instances of the state machine, the jsparser and the
+ * entity filter but not the statemachine definition since this one is read
+ * only.
+ */
+void htmlparser_copy(htmlparser_ctx *dst, const htmlparser_ctx *src);
+
+/* Receives an htmlparser context and returns the current html state.
+ *
+ * The return value will be one of the states of htmlparser_state_external_enum.
+ */
+int htmlparser_state(htmlparser_ctx *ctx);
+
+/* Parses the input html stream and returns the finishing state.
+ *
+ * Returns HTMLPARSER_ERROR if unable to parse the input. If htmlparser_parse()
+ * is called after an error situation was encountered the behaviour is
+ * unspecified. At this point, htmlparser_reset() or htmlparser_reset_mode()
+ * can be called to reset the state.
+ */
+int htmlparser_parse(htmlparser_ctx *ctx, const char *str, int size);
+
+/* Returns true if the parser is inside an attribute value and the value is
+ * surrounded by single or double quotes. */
+int htmlparser_is_attr_quoted(htmlparser_ctx *ctx);
+
+/* Returns true if the parser is currently in javascript. This can be a
+ * an attribute that takes javascript, a javascript block or the parser
+ * can just be in MODE_JS. */
+int htmlparser_in_js(htmlparser_ctx *ctx);
+
+/* Returns the current tag or NULL if not available or we haven't seen the
+ * entire tag yet.
+ *
+ * There is no stack implemented because we currently don't have a need for
+ * it, which means tag names are tracked only one level deep.
+ *
+ * This is better understood by looking at the following example:
+ *
+ * <b [tag=b]>
+ * [tag=b]
+ * <i>
+ * [tag=i]
+ * </i>
+ * [tag=NULL]
+ * </b>
+ *
+ * The tag is correctly filled inside the tag itself and before any new inner
+ * tag is closed, at which point the tag will be null.
+ *
+ * For our current purposes this is not a problem, but we may implement a tag
+ * tracking stack in the future for completeness.
+ *
+ */
+const char *htmlparser_tag(htmlparser_ctx *ctx);
+
+/* Returns the current attribute name if after an attribute name or in an
+ * attribute value. Returns NULL otherwise. */
+const char *htmlparser_attr(htmlparser_ctx *ctx);
+
+/* Returns the contents of the current attribute value.
+ *
+ * Returns NULL if not inside an attribute value.
+ */
+const char *htmlparser_value(htmlparser_ctx *ctx);
+
+/* Returns true if the parser is currently inside a CSS construct.
+ *
+ * Currently this can be either a STYLE tag, a STYLE attribute or the fact that
+ * the parser was reset in HTMLPARSER_MODE_CSS using
+ * htmlparser_reset_mode().
+ */
+int htmlparser_in_css(htmlparser_ctx *ctx);
+
+/* Returns the current state of the javascript state machine.
+ *
+ * Currently only present for testing purposes.
+ */
+int htmlparser_js_state(htmlparser_ctx *ctx);
+
+/* Returns non-zero if currently inside a javascript string literal and zero
+ * otherwise.
+ */
+int htmlparser_is_js_quoted(htmlparser_ctx *ctx);
+
+/* Returns non-zero if currently inside an attribute value and zero otherwise.
+ */
+int htmlparser_value_index(htmlparser_ctx *ctx);
+
+/* Returns true if this is the first character of a url inside an attribute.
+ *
+ * This function can be used by an html sanitizer or auto escaping system as a
+ * hint that it should validate the url for a whitelist of protocol handlers and
+ * for well-formedness, or that it should just escape a component of it.
+ *
+ * For attributes that expect a URL, this will return true if we are at the
+ * first character of the URL, false otherwise.
+ * For most attributes, this is the same as checking that we are at the first
+ * character of the attribute value but it also works correctly for the
+ * "content" attribute of the "meta" tag where the URL follows some earlier
+ * content.
+ * e.g: <meta http-equiv="refresh" * content="5; URL=http://bla.">
+ *
+ * For any other attributes, the result will always be false.
+ */
+int htmlparser_is_url_start(htmlparser_ctx *ctx);
+
+/* Returns the current attribute type.
+ *
+ * The attribute type can be one of:
+ * HTMLPARSER_ATTR_NONE - not inside an attribute.
+ * HTMLPARSER_ATTR_REGULAR - Inside a normal attribute.
+ * HTMLPARSER_ATTR_URI - Inside an attribute that accepts a uri.
+ * HTMLPARSER_ATTR_JS - Inside a javascript attribute.
+ * HTMLPARSER_ATTR_STYLE - Inside a css style attribute.
+ */
+int htmlparser_attr_type(htmlparser_ctx *ctx);
+
+/* Return the current line number. */
+int htmlparser_get_line_number(htmlparser_ctx *ctx);
+
+/* Set the current line number. */
+void htmlparser_set_line_number(htmlparser_ctx *ctx, int line);
+
+/* Return the current column number. */
+int htmlparser_get_column_number(htmlparser_ctx *ctx);
+
+/* Set the current column number. */
+void htmlparser_set_column_number(htmlparser_ctx *ctx, int column);
+
+/* Retrieve a human readable error message in case an error occurred.
+ *
+ * NULL is returned if the parser didn't encounter an error.
+ */
+const char *htmlparser_get_error_msg(htmlparser_ctx *ctx);
+
+/* Invoked by the caller when text is expanded by the caller.
+ *
+ * Should be invoked when a template directive that expands to content is
+ * executed but we don't provide this content to the parser itself. This changes
+ * the current state by following the default rule, ensuring we stay in sync
+ * with the template.
+ *
+ * Returns 1 if template directives are accepted for this state and 0 if they
+ * are not, which should result in an error condition.
+ *
+ * Right now the only case being handled are unquoted attribute values and it
+ * always returns 1. When insert_text() is called after the equals sign, we
+ * assume some text was consumed and we are now in the middle of the attribute
+ * value itself. Example:
+ *
+ * <a href=$HREF_VALUE alt=alternate_text>
+ *
+ * The template calls insert_text() when it encounters $HREF_VALUE. If it didn't
+ * the parser would only have seen the following html:
+ *
+ * <a href= alt=alternate_text>
+ *
+ * and would interpret alt=alternate_text as the value of the href attribute.
+ */
+int htmlparser_insert_text(htmlparser_ctx *ctx);
+
+/* Deallocates an htmlparser context object.
+ */
+void htmlparser_delete(htmlparser_ctx *ctx);
+
+#define htmlparser_parse_chr(a,b) htmlparser_parse(a, &(b), 1);
+#ifdef __cplusplus
+#define htmlparser_parse_str(a,b) htmlparser_parse(a, b, \
+ static_cast<int>(strlen(b)));
+#else
+#define htmlparser_parse_str(a,b) htmlparser_parse(a, b, (int)strlen(b));
+#endif
+
+#endif /* STREAMHTMLPARSER_HTMLPARSER_H */
diff --git a/streamhtmlparser/include/htmlparser_cpp.h b/streamhtmlparser/include/htmlparser_cpp.h
new file mode 100644
index 0000000..3802233
--- /dev/null
+++ b/streamhtmlparser/include/htmlparser_cpp.h
@@ -0,0 +1,322 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// ---
+// Author: Filipe Almeida
+//
+// c++ bindings for htmlparser.
+
+#ifndef STREAMHTMLPARSER_HTMLPARSER_CPP_H__
+#define STREAMHTMLPARSER_HTMLPARSER_CPP_H__
+
+#include <string>
+#include <assert.h>
+extern "C" {
+ #include "htmlparser.h"
+ #include "jsparser.h"
+}
+
+namespace streamhtmlparser {
+
+class JavascriptParser {
+ public:
+ enum State {
+ STATE_TEXT = JSPARSER_STATE_TEXT,
+ STATE_Q = JSPARSER_STATE_Q,
+ STATE_DQ = JSPARSER_STATE_DQ,
+ STATE_REGEXP = JSPARSER_STATE_REGEXP,
+ STATE_COMMENT = JSPARSER_STATE_COMMENT
+ };
+};
+
+class HtmlParser {
+ public:
+
+ /* html states */
+ enum State {
+ STATE_TEXT = HTMLPARSER_STATE_TEXT,
+ STATE_TAG = HTMLPARSER_STATE_TAG,
+ STATE_ATTR = HTMLPARSER_STATE_ATTR,
+ STATE_VALUE = HTMLPARSER_STATE_VALUE,
+ STATE_COMMENT = HTMLPARSER_STATE_COMMENT,
+ STATE_JS_FILE = HTMLPARSER_STATE_JS_FILE,
+ STATE_CSS_FILE = HTMLPARSER_STATE_CSS_FILE,
+ STATE_ERROR = HTMLPARSER_STATE_ERROR
+ };
+
+ /* attribute types */
+ enum AttributeType {
+ ATTR_NONE = HTMLPARSER_ATTR_NONE,
+ ATTR_REGULAR = HTMLPARSER_ATTR_REGULAR,
+ ATTR_URI = HTMLPARSER_ATTR_URI,
+ ATTR_JS = HTMLPARSER_ATTR_JS,
+ ATTR_STYLE = HTMLPARSER_ATTR_STYLE
+ };
+
+ /* Parser modes */
+ enum Mode {
+ MODE_HTML = HTMLPARSER_MODE_HTML,
+ MODE_JS = HTMLPARSER_MODE_JS,
+ MODE_CSS = HTMLPARSER_MODE_CSS,
+ MODE_HTML_IN_TAG = HTMLPARSER_MODE_HTML_IN_TAG
+ };
+
+ HtmlParser() {
+ parser_ = htmlparser_new();
+ assert(parser_ != NULL);
+ };
+
+ /* Parses the input html stream and returns the finishing state.
+ *
+ * Returns HtmlParser::STATE_ERROR if unable to parse the input. If
+ * htmlparser_parse() is called after an error situation was encountered
+ * the behaviour is unspecified. At this point, Reset() or ResetMode()
+ * can be called to reset the state so it can be used to parse a new file.
+ */
+ int Parse(const char *str, int len) {
+ return htmlparser_parse(parser_, str, len);
+ };
+
+ int Parse(const std::string &str) {
+ return Parse(str.c_str(), static_cast<int>(str.length()));
+ };
+
+ /* Returns the current state the parser is in */
+ int state() const {
+ return htmlparser_state(parser_);
+ };
+
+ /* Returns the current tag or NULL if not available.
+ *
+ * There is no stack implemented because we currently don't have a need for
+ * it, which means tag names are tracked only one level deep.
+ *
+ * This is better understood by looking at the following example:
+ *
+ * <b [tag=b]>
+ * [tag=b]
+ * <i>
+ * [tag=i]
+ * </i>
+ * [tag=NULL]
+ * </b>
+ *
+ * The tag is correctly filled inside the tag itself and before any new
+ * inner tag is closed, at which point the tag will be set to NULL.
+ *
+ * For our current purposes this is not a problem, but we may implement a
+ * tag tracking stack in the future for completeness.
+ */
+ const char *tag() const {
+ return htmlparser_tag(parser_);
+ }
+
+ /* Returns the current attribute name if inside an attribute name or an
+ * attribute value. Returns NULL otherwise. */
+ const char *attribute() const {
+ return htmlparser_attr(parser_);
+ }
+
+ /* Returns the contents of the current attribute value. */
+ const char *value() const {
+ return htmlparser_value(parser_);
+ }
+
+ /* Returns true if inside javascript. This can be a javascript block, a
+ * javascript attribute value or the parser may just be in javascript mode
+ * (HtmlParser::MODE_JS) */
+ bool InJavascript() const {
+ return static_cast<bool>(htmlparser_in_js(parser_));
+ }
+
+ /* Returns true if the parser is currently inside a CSS construct.
+ *
+ * Currently this can be either a STYLE tag, a STYLE attribute or the fact
+ * that the parser was reset using MODE_CSS using ResetMode().
+ */
+ bool InCss() const {
+ return static_cast<bool>(htmlparser_in_css(parser_));
+ }
+
+ /* Returns true if the current attribute is quoted */
+ bool IsAttributeQuoted() const {
+ return static_cast<bool>(htmlparser_is_attr_quoted(parser_));
+ }
+
+ /* Returns true if the parser is inside a js string literal.
+ */
+ bool IsJavascriptQuoted() const {
+ return static_cast<bool>(htmlparser_is_js_quoted(parser_));
+ }
+
+ /* Returns the index within the current value or -1 if the parser is not
+ * inside an attribute value */
+ int ValueIndex() const {
+ return htmlparser_value_index(parser_);
+ }
+
+ /* Returns true if this is the first character of a url inside an attribute.
+ *
+ * This function can be used by an html sanitizer or auto escaping system as
+ * a hint that it should validate the url for a whitelist of protocol
+ * handlers and for well-formedness, or that it should just escape a
+ * component of it.
+ *
+ * For attributes that expect a url this will return true if we are at the
+ * first character of the attribute, but for the special case of a meta
+ * redirect tag some analysis is made in order to verify if we are at the
+ * start of a url or not.
+ *
+ * For any other attributes, the result will always be false.
+ *
+ */
+ bool IsUrlStart() const {
+ return htmlparser_is_url_start(parser_);
+ }
+
+ /* Returns the current attribute type.
+ *
+ * The attribute type can be one of:
+ * ATTR_NONE - not inside an attribute
+ * ATTR_REGULAR - Inside a normal attribute
+ * ATTR_URI - Inside an attribute that accepts a uri
+ * ATTR_JS - Inside a javascript attribute
+ * ATTR_STYLE - Inside a css style attribute
+ * */
+ int AttributeType() const {
+ return htmlparser_attr_type(parser_);
+ }
+
+ /* Return the current line number. */
+ int line_number() const {
+ return htmlparser_get_line_number(parser_);
+ }
+
+ /* Set the current line number. */
+ void set_line_number(int line) {
+ return htmlparser_set_line_number(parser_, line);
+ }
+
+ /* Return the current column number. */
+ int column_number() const {
+ return htmlparser_get_column_number(parser_);
+ }
+
+ /* Set the current line number. */
+ void set_column_number(int column) {
+ return htmlparser_set_column_number(parser_, column);
+ }
+
+ /* Retrieve a human readable error message in case an error occurred.
+ *
+ * NULL is returned if the parser didn't encounter an error.
+ */
+ const char *GetErrorMessage() {
+ return htmlparser_get_error_msg(parser_);
+ }
+
+ /* Returns the current state the javascript parser is in.
+ *
+ * Should only be used for testing.
+ */
+ int javascript_state() const {
+ return htmlparser_js_state(parser_);
+ };
+
+ /* Resets the parser to it's initial state and changes the parser mode.
+ *
+ * Internal state (tag name, attribute name, state of statemachine) is
+ * reset as * though the object was just created.
+ *
+ * Available modes:
+ * MODE_HTML - Parses html text
+ * MODE_JS - Parses javascript files
+ * MODE_CSS - Parses CSS files. No actual parsing is actually done
+ * but InCss() always returns true.
+ * MODE_HTML_IN_TAG - Parses an attribute list inside a tag. To
+ * be used in a template expanded in the
+ * following context: <a $template>
+ */
+ void ResetMode(enum Mode mode) {
+ return htmlparser_reset_mode(parser_, mode);
+ }
+
+ /* Resets the parser to it's initial state and to the default mode, which is
+ * MODE_HTML.
+ *
+ * All internal context like tag name, attribute name or the state of the
+ * statemachine are reset to it's original values as if the object was just
+ * created.
+ */
+ void Reset() {
+ return htmlparser_reset(parser_);
+ }
+
+ /* Invoked when text is inserted by the caller.
+ *
+ * Should be called before a template directive that expands to content is
+ * found. This changes the current state by following the default rule,
+ * ensuring we stay in sync with template.
+ *
+ * Returns true if template directives are accepted for this state and
+ * false if they are not, which should result in an error condition.
+ *
+ * Right now the only case being handled are unquoted attribute values and
+ * it always returns true. In the future we can handle more cases and
+ * restrict the states were we allow template directives by returning false
+ * for those.
+ */
+ bool InsertText() {
+ return static_cast<bool>(htmlparser_insert_text(parser_));
+ }
+
+ /* Copies the context of the HtmlParser object referenced in source to the
+ * current object.
+ */
+ void CopyFrom(const HtmlParser *source) {
+ assert(this != source);
+ assert(source != NULL);
+ htmlparser_copy(parser_, source->parser_);
+ }
+
+ ~HtmlParser() {
+ htmlparser_delete(parser_);
+ };
+
+
+ private:
+ htmlparser_ctx *parser_;
+ HtmlParser(const HtmlParser&); // disallow copy
+ void operator=(const HtmlParser&); // and assign
+
+};
+
+}
+
+#endif // STREAMHTMLPARSER_HTMLPARSER_CPP_H__
diff --git a/streamhtmlparser/include/jsparser.h b/streamhtmlparser/include/jsparser.h
new file mode 100644
index 0000000..4077aa4
--- /dev/null
+++ b/streamhtmlparser/include/jsparser.h
@@ -0,0 +1,163 @@
+/* Copyright (c) 2007, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Filipe Almeida
+ */
+
+#ifndef STREAMHTMLPARSER_JSPARSER_H
+#define STREAMHTMLPARSER_JSPARSER_H
+
+#include "statemachine.h"
+
+/* Size of the ring buffer used to lookup the last token in the javascript
+ * stream. The size is pretty much arbitrary at this point but must be bigger
+ * than the biggest token we want to lookup plus 3: Two delimiters plus an empty
+ * ring buffer slot. */
+#define JSPARSER_RING_BUFFER_SIZE 18
+
+enum js_state_external_enum {
+ JSPARSER_STATE_TEXT,
+ JSPARSER_STATE_Q,
+ JSPARSER_STATE_DQ,
+ JSPARSER_STATE_REGEXP,
+ JSPARSER_STATE_COMMENT
+};
+
+/* Stores the context of the javascript parser.
+ *
+ * If this structure is changed, jsparser_new(), jsparser_copy() and
+ * jsparser_reset() should be updated accordingly.
+ */
+typedef struct jsparser_ctx_s {
+
+ /* Reference to the statemachine context. */
+ statemachine_ctx *statemachine;
+
+ /* Reference to the statemachine definition.
+ *
+ * It should be readonly and contain the same values across jsparser
+ * instances.
+ */
+ /* TODO(falmeida): Change statemachine_def to const. */
+ statemachine_definition *statemachine_def;
+
+ /* Index to the start of the buffer. */
+ int buffer_start;
+
+ /* Index the current writing position (end of the buffer plus one). */
+ int buffer_end;
+
+ /* Ring buffer used to lookup the last token. */
+ char buffer[JSPARSER_RING_BUFFER_SIZE];
+
+} jsparser_ctx;
+
+
+void jsparser_reset(jsparser_ctx *ctx);
+jsparser_ctx *jsparser_new(void);
+
+/* Returns a pointer to a context which is a duplicate of the jsparser src.
+ */
+jsparser_ctx *jsparser_duplicate(jsparser_ctx *src);
+
+/* Copies the context of the jsparser pointed to by src to the jsparser dst.
+ */
+void jsparser_copy(jsparser_ctx *dst, jsparser_ctx *src);
+int jsparser_state(jsparser_ctx *ctx);
+int jsparser_parse(jsparser_ctx *ctx, const char *str, int size);
+
+void jsparser_delete(jsparser_ctx *ctx);
+
+/**
+ * Ring buffer functions.
+ *
+ * These functions are only exported for testing and should not be called from
+ * outside of jsparser.c in production code.
+ */
+
+/* Appends a character to the ring buffer.
+ *
+ * Sequences of whitespaces and newlines are folded into one character.
+ */
+void jsparser_buffer_append_chr(jsparser_ctx *js, char chr);
+
+/* Appends a string to the ring buffer.
+ *
+ * Sequences of whitespaces and newlines are folded into one character.
+ */
+void jsparser_buffer_append_str(jsparser_ctx *js, const char *str);
+
+/* Returns the last appended character and removes it from the buffer. If the
+ * buffer is empty, then it returns ASCII 0 ('\0').
+ */
+char jsparser_buffer_pop(jsparser_ctx *js);
+
+/* Returns the value of the character at a certain index in the buffer or an
+ * ASCII 0 ('\0') character if the index is extends beyond the size of the
+ * buffer, either because we don't have as many characters in the buffer, or
+ * because the index points to a place bigger than the size of the buffer..
+ *
+ * Index positions must be negative, where -1 is the last character appended to
+ * the buffer.
+ */
+char jsparser_buffer_get(jsparser_ctx *js, int pos);
+
+/* Sets the value of the character at a certain index in the buffer. Returns
+ * true if the write was successful or false if there was an attempt to write
+ * outside of the buffer boundaries.
+ *
+ * Index positions are negative, were -1 is the last character appended to the
+ * buffer. Using positive integers for the index will result in undefined
+ * behaviour.
+ */
+int jsparser_buffer_set(jsparser_ctx *js, int pos, char value);
+
+/* Copies a slice of the buffer to the string pointed to by output. start and
+ * end are the indexes of the sliced region. If the start argument extends
+ * beyond the beginning of the buffer, the slice will only contain characters
+ * starting from beginning of the buffer.
+ */
+void jsparser_buffer_slice(jsparser_ctx *js, char *buffer, int start, int end);
+
+/* Copy the last javascript identifier or keyword found in the buffer to the
+ * string pointed by identifier.
+ */
+int jsparser_buffer_last_identifier(jsparser_ctx *js, char *identifier);
+
+
+#define jsparser_parse_chr(a,b) jsparser_parse(a, &(b), 1);
+#ifdef __cplusplus
+#define jsparser_parse_str(a,b) jsparser_parse(a, b, \
+ static_cast<int>(strlen(b)));
+#else
+#define jsparser_parse_str(a,b) jsparser_parse(a, b, (int)strlen(b));
+#endif
+
+#endif /* STREAMHTMLPARSER_JSPARSER_H */
diff --git a/streamhtmlparser/include/statemachine.h b/streamhtmlparser/include/statemachine.h
new file mode 100644
index 0000000..a05ffe7
--- /dev/null
+++ b/streamhtmlparser/include/statemachine.h
@@ -0,0 +1,224 @@
+/* Copyright (c) 2007, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Filipe Almeida
+ */
+
+#ifndef STREAMHTMLPARSER_STATEMACHINE_H
+#define STREAMHTMLPARSER_STATEMACHINE_H
+
+/* TODO(falmeida): I'm not sure about these limits, but since right now we only
+ * have 24 states it should be fine */
+
+enum {
+ STATEMACHINE_ERROR = 127
+};
+
+#define STATEMACHINE_RECORD_BUFFER_SIZE 256
+
+#define STATEMACHINE_MAX_STR_ERROR 80
+
+struct statemachine_ctx_s;
+
+typedef void(*state_event_function)(struct statemachine_ctx_s *, int, char,
+ int);
+
+typedef struct statemachine_definition_s {
+ int num_states;
+ const int* const* transition_table;
+
+ /* Array containing the name of the states as a C string.
+ * This field is optional and if not in use it should be set to NULL.
+ */
+ const char* const* state_names;
+ state_event_function *in_state_events;
+ state_event_function *enter_state_events;
+ state_event_function *exit_state_events;
+} statemachine_definition;
+
+typedef struct statemachine_ctx_s {
+ int current_state;
+ int next_state;
+ statemachine_definition *definition;
+ char current_char;
+
+ /* Current line number. */
+ int line_number;
+
+ /* Current column number. */
+ int column_number;
+ char record_buffer[STATEMACHINE_RECORD_BUFFER_SIZE];
+ size_t record_pos;
+
+ /* True if we are recording the stream to record_buffer. */
+ int recording;
+
+ /* In case there was an error (we are in state STATEMACHINE_ERROR), it will
+ * contain a human readable description of the error.
+ */
+ char error_msg[STATEMACHINE_MAX_STR_ERROR];
+
+ /* Storage space for the layer above. */
+ void *user;
+} statemachine_ctx;
+
+/* Populates the statemachine definition.
+ *
+ * Receives a transition table and an optional array of state names. It uses
+ * this data to populate the state machine definition.
+ *
+ * The transition table structure is a list of lists of ints (int **). The
+ * outer list indexes the source state and the inner list contains the
+ * destination state for each of the possible input characters:
+ *
+ * const int* const* transitions[source][input] == destination.
+ *
+ * The optional argument state_names points to a list of strings containing
+ * human readable state names. These strings are used when reporting error
+ * messages.
+ */
+void statemachine_definition_populate(statemachine_definition *def,
+ const int* const* transition_table,
+ const char* const* state_names);
+
+void statemachine_in_state(statemachine_definition *def, int st,
+ state_event_function func);
+void statemachine_enter_state(statemachine_definition *def, int st,
+ state_event_function func);
+void statemachine_exit_state(statemachine_definition *def, int st,
+ state_event_function func);
+
+statemachine_definition *statemachine_definition_new(int states);
+void statemachine_definition_delete(statemachine_definition *def);
+
+int statemachine_get_state(statemachine_ctx *ctx);
+void statemachine_set_state(statemachine_ctx *ctx, int state);
+
+void statemachine_start_record(statemachine_ctx *ctx);
+const char *statemachine_stop_record(statemachine_ctx *ctx);
+const char *statemachine_record_buffer(statemachine_ctx *ctx);
+
+/* Returns the the number of characters currently stored in the record buffer.
+ */
+static inline size_t statemachine_record_length(statemachine_ctx *ctx) {
+ return ctx->record_pos + 1;
+}
+
+/* Return the current line number. */
+static inline int statemachine_get_line_number(statemachine_ctx *ctx) {
+ return ctx->line_number;
+}
+
+/* Set the current line number. */
+static inline void statemachine_set_line_number(statemachine_ctx *ctx,
+ int line) {
+ ctx->line_number = line;
+}
+
+/* Return the current column number. */
+static inline int statemachine_get_column_number(statemachine_ctx *ctx) {
+ return ctx->column_number;
+}
+
+/* Set the current column number. */
+static inline void statemachine_set_column_number(statemachine_ctx *ctx,
+ int column) {
+ ctx->column_number = column;
+}
+
+
+/* Retrieve a human readable error message in case an error occurred.
+ *
+ * NULL is returned if the parser didn't encounter an error.
+ */
+static inline const char *statemachine_get_error_msg(statemachine_ctx *ctx) {
+ if (ctx->next_state == STATEMACHINE_ERROR) {
+ return ctx->error_msg;
+ } else {
+ return NULL;
+ }
+}
+
+/* Reset the statemachine.
+ *
+ * The state is set to the initialization values. This includes setting the
+ * state to the default state (0), stopping recording and setting the line
+ * number to 1.
+ */
+void statemachine_reset(statemachine_ctx *ctx);
+
+/* Initializes a new statemachine. Receives a statemachine definition object
+ * that should have been initialized with statemachine_definition_new() and a
+ * user reference to be used by the caller.
+ *
+ * Returns NULL if initialization fails.
+ *
+ * Initialization failure is fatal, and if this function fails it may not
+ * deallocate all previsouly allocated memory.
+ */
+statemachine_ctx *statemachine_new(statemachine_definition *def,
+ void *user);
+
+/* Returns a pointer to a context which is a duplicate of the statemachine src.
+ * The statemachine definition and the user pointer have to be provided since
+ * these references are not owned by the statemachine itself.
+ */
+statemachine_ctx *statemachine_duplicate(statemachine_ctx *ctx,
+ statemachine_definition *def,
+ void *user);
+
+/* Copies the context of the statemachine pointed to by src to the statemachine
+ * provided by dst.
+ * The statemachine definition and the user pointer have to be provided since
+ * these references are not owned by the statemachine itself.
+ */
+void statemachine_copy(statemachine_ctx *dst,
+ statemachine_ctx *src,
+ statemachine_definition *def,
+ void *user);
+
+int statemachine_parse(statemachine_ctx *ctx, const char *str, int size);
+
+void statemachine_delete(statemachine_ctx *ctx);
+
+
+/*****
+ * The following functions are only exported for testing purposes and should
+ * be treated as private. */
+
+
+/* Encode the character as an escaped C string.
+ *
+ * Encode the character chr into the string output. Writes at most len
+ * characters to the output string but makes sure output is NULL terminated.
+ */
+void statemachine_encode_char(char chr, char *output, size_t len);
+
+#endif /* STREAMHTMLPARSER_STATEMACHINE_H */
diff --git a/streamhtmlparser/jsparser.c b/streamhtmlparser/jsparser.c
new file mode 100644
index 0000000..9d71c74
--- /dev/null
+++ b/streamhtmlparser/jsparser.c
@@ -0,0 +1,662 @@
+/* Copyright (c) 2007, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Filipe Almeida
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "statemachine.h"
+#include "jsparser.h"
+
+/* So we can support both C and C++ compilers, we use the CAST() macro instead
+ * of using C style casts or static_cast<>() directly.
+ */
+#ifdef __cplusplus
+ #define CAST(type, expression) (static_cast<type>(expression))
+#else
+ #define CAST(type, expression) ((type)(expression))
+#endif
+
+/* Generated state machine definition. */
+#include "jsparser_fsm.h"
+
+/* List of keywords that can precede a regular expression literal. Taken from:
+ * http://www.mozilla.org/js/language/js20-2000-07/rationale/syntax.html
+ *
+ * 'void' was added to this list.
+ * The list is used as input to a binary search, so it must be kept in a sorted
+ * form.
+ * There are a large number of keywords in here that don't exist in
+ * ecmascript 3, either because they are reserved or because they are part of
+ * ecmascript 4. However they weren't removed in order to keep the list in sync
+ * with the previous document.
+ */
+static const char *regexp_token_prefix[] = {
+ "abstract",
+ "break",
+ "case",
+ "catch",
+ "class",
+ "const",
+ "continue",
+ "debugger",
+ "default",
+ "delete",
+ "do",
+ "else",
+ "enum",
+ "eval",
+ "export",
+ "extends",
+ "field",
+ "final",
+ "finally",
+ "for",
+ "function",
+ "goto",
+ "if",
+ "implements",
+ "import",
+ "in",
+ "instanceof",
+ "native",
+ "new",
+ "package",
+ "private",
+ "protected",
+ "public",
+ "return",
+ "static",
+ "switch",
+ "synchronized",
+ "throw",
+ "throws",
+ "transient",
+ "try",
+ "typeof",
+ "var",
+ "void",
+ "volatile",
+ "while",
+ "with"
+};
+
+/* Utility functions */
+
+/* Converts the internal state into the external superstate.
+ */
+static inline int state_external(int state)
+{
+ assert(state < JSPARSER_NUM_STATES);
+ assert(state >= 0);
+ return jsparser_states_external[state];
+}
+
+/* Returns true if the character is an ecmascript whitespace or line terminator
+ * character. Includes the characters in sections 7.2 and 7.3 of ECMAScript 3
+ * with the exception of unicode space and line terminators:
+ * http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
+ */
+static inline int js_is_whitespace(char c)
+{
+ return c == '\t' || /* Tab 0x09 */
+ c == '\v' || /* Vertical Tab 0x0B */
+ c == '\f' || /* Form Feed 0x0C */
+ c == ' ' || /* Space 0x20 */
+ c == '\xa0' || /* No-Break Space 0xA0 */
+ c == '\n' || /* line Feed 0x0A */
+ c == '\r'; /* Carriage Return 0x0D */
+}
+
+/* Returns true if the character is part of a javascript identifier. The rules
+ * are pretty relaxed here since we don't accept unicode and don't care if the
+ * first character doesn't contain numbers or not.
+ *
+ * For more detail on the limitations of having this relaxed set of characters
+ * please see the comments in_state_js_text().
+ */
+static inline int js_is_identifier(char c) {
+ return (c >= 'a' && c <= 'z') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c >= '0' && c <= '9') ||
+ c == '_' ||
+ c == '$';
+}
+
+/* Appends a character to the ring buffer. Sequences of whitespace and newlines
+ * are folded into one.
+ *
+ * js->buffer_start points to the first character in the buffer and
+ * js->buffer_end points to the position of the next character to be written,
+ * or one plus the last character written. If the buffer is full there will be
+ * an empty slot position so we can diferentiate an empty buffer from a full
+ * buffer.
+ *
+ * If the buffer is empty, then:
+ * js->buffer_start == js->buffer_end.
+ * If the buffer is full, then:
+ * (js->buffer_end + 1) % JSPARSER_RING_BUFFER_SIZE == js->buffer_start.
+ *
+ */
+void jsparser_buffer_append_chr(jsparser_ctx *js, char chr)
+{
+ /* Fold whitespace so we have enough space in the buffer. */
+ if (js_is_whitespace(chr) &&
+ js_is_whitespace(jsparser_buffer_get(js, -1))) {
+ return;
+ }
+
+ js->buffer[js->buffer_end] = chr;
+ js->buffer_end = (js->buffer_end + 1) % JSPARSER_RING_BUFFER_SIZE;
+ if (js->buffer_end == js->buffer_start) {
+ js->buffer_start = (js->buffer_end + 1) %
+ JSPARSER_RING_BUFFER_SIZE;
+ }
+}
+
+/* Appends a string to the ring buffer. Sequences of whitespace and newlines
+ * are folded into one.
+ */
+void jsparser_buffer_append_str(jsparser_ctx *js, const char *str)
+{
+ assert(js != NULL);
+ assert(str != NULL);
+
+ while(*str != '\0') {
+ jsparser_buffer_append_chr(js, *str++);
+ }
+}
+
+/* Returns the position relative to the start of the buffer or -1 if past the
+ * size of the buffer..
+ */
+static inline int jsparser_buffer_absolute_pos(jsparser_ctx *js, int pos)
+{
+ int absolute_pos;
+ int buffer_len;
+ assert(pos < 0);
+
+ if(pos <= -JSPARSER_RING_BUFFER_SIZE) {
+ return -1;
+ }
+
+ buffer_len = js->buffer_end - js->buffer_start;
+ if (buffer_len < 0) {
+ buffer_len += JSPARSER_RING_BUFFER_SIZE;
+ }
+
+ if (pos < -buffer_len) {
+ return -1;
+ }
+
+ absolute_pos = (pos + js->buffer_end) % JSPARSER_RING_BUFFER_SIZE;
+ if (absolute_pos < 0) {
+ absolute_pos += JSPARSER_RING_BUFFER_SIZE;
+ }
+
+ return absolute_pos;
+}
+
+/* Returns the last appended character and removes it from the buffer. If the
+ * buffer is empty, then it returns ASCII 0 ('\0').
+ */
+char jsparser_buffer_pop(jsparser_ctx *js)
+{
+ if (js->buffer_start == js->buffer_end) {
+ return '\0';
+ }
+
+ js->buffer_end--;
+ if (js->buffer_end < 0) {
+ js->buffer_end += JSPARSER_RING_BUFFER_SIZE;
+ }
+
+ return js->buffer[js->buffer_end];
+}
+
+/* Returns the value of the character at a certain index in the buffer or an
+ * ASCII 0 ('\0') character if the index is outside the buffer boundaries.
+ *
+ * Index positions are negative, were -1 is the last character appended to the
+ * buffer. Using positive integers for the index will result in undefined
+ * behaviour.
+ */
+char jsparser_buffer_get(jsparser_ctx *js, int pos)
+{
+ int absolute_pos;
+ assert(pos < 0);
+
+ absolute_pos = jsparser_buffer_absolute_pos(js, pos);
+ if (absolute_pos < 0) {
+ return '\0';
+ }
+
+ return js->buffer[absolute_pos];
+}
+
+/* Sets the value of the character at a certain index in the buffer. Returns
+ * true if the write was successful or false if there was an attempt to write
+ * outside of the buffer boundaries.
+ *
+ * Index positions are negative, were -1 is the last character appended to the
+ * buffer. Using positive integers for the index will result in undefined
+ * behaviour.
+ */
+int jsparser_buffer_set(jsparser_ctx *js, int pos, char value)
+{
+ int absolute_pos;
+ assert(pos < 0);
+
+ absolute_pos = jsparser_buffer_absolute_pos(js, pos);
+ if (absolute_pos < 0) {
+ return 0;
+ }
+
+ js->buffer[absolute_pos] = value;
+ return 1;
+}
+
+/* Copies a slice of the buffer to the string pointed to by output. start and
+ * end are the indexes of the sliced region. If start extends beyond the
+ * beginning of the buffer, the slice will only contain character from the
+ * beginning of the buffer.
+ */
+void jsparser_buffer_slice(jsparser_ctx *js, char *output, int start, int end)
+{
+ int pos;
+
+ assert(start <= end);
+ assert(start < 0);
+ assert(end < 0);
+
+ for (pos = start; pos <= end; ++pos) {
+ char c;
+ c = jsparser_buffer_get(js, pos);
+ if (c != '\0') {
+ *output++ = jsparser_buffer_get(js, pos);
+ }
+ }
+ *output++ = '\0';
+}
+
+/* Copy the last javascript identifier or keyword found in the buffer to the
+ * string pointed by identifier.
+ *
+ * For simplicity, we consider an identifier to be a sequence of alphanumeric
+ * characters (as opposed to a digit followed by an alphanumeric character.
+ *
+ * Returns 0 if no identifier was matched, in which case the identifier
+ * argument is replaced with an empty string, or non 0 if the identifier was
+ * found.
+ */
+int jsparser_buffer_last_identifier(jsparser_ctx *js, char *identifier)
+{
+ int end;
+ int pos;
+
+ assert(identifier != NULL);
+
+ end = -1;
+ /* Ignore the optional whitespace delimiter */
+ if (js_is_whitespace(jsparser_buffer_get(js, -1))) {
+ --end;
+ }
+
+ /* Find the beginning of the identifier. This loop ends either when we find a
+ * character that doesn't belong to an identifier, or when we find a '\0'
+ * character, which means we reached the end of the buffer. */
+ for(pos = end; js_is_identifier(jsparser_buffer_get(js, pos)); --pos) {
+ }
+ if (pos + 1 >= end) {
+ identifier[0] = '\0';
+ return 0;
+ }
+
+ jsparser_buffer_slice(js, identifier, pos + 1, end);
+ return 1;
+}
+
+/* Callback used in bsearch() for comparing a string against an array of
+ * strings.
+ */
+static int bsearch_strcmp(const void *a, const void *b)
+{
+ return strcmp(CAST(const char*, a), *CAST(const char * const *, b));
+}
+
+/* Returns true if the token argument can be a token prefix to a javascript
+ * regular expression.
+ *
+ * The token argument is compared against a list of identifiers that can
+ * precede a regular expression in the javascript grammar, and returns true if
+ * the argument is found on that list.
+ */
+static inline int is_regexp_token_prefix(char *token)
+{
+ assert(token != NULL);
+
+ return bsearch(token,
+ regexp_token_prefix,
+ sizeof(regexp_token_prefix) / sizeof(char *),
+ sizeof(char *), bsearch_strcmp) != NULL;
+}
+
+/* Called for every character in state text.
+ *
+ * We copy every character we find when we are in state text to the ring
+ * buffer. This has the side effect of also pushing slash characters that are
+ * part of comments into the buffer, although for parsing purposes these should
+ * be treated as whitespace. This issue is addressed in
+ * enter_state_js_comment_ml_after().
+ */
+static void in_state_js_text(statemachine_ctx *ctx, int start, char chr,
+ int end)
+{
+ jsparser_ctx *js = CAST(jsparser_ctx *, ctx->user);
+ assert(js != NULL);
+
+ (void)start;
+ (void)end;
+
+ jsparser_buffer_append_chr(js, chr);
+}
+
+/* This function is called every time we find a slash ('/') character in the
+ * javascript text (except for slashes that close comments or regexp literals).
+ *
+ * Implements the logic to figure out if this slash character is a division
+ * operator or if it opens a regular expression literal. This is heavily
+ * inspired by the syntactic resynchronization for javascript 2.0:
+ * http://www.mozilla.org/js/language/js20-2000-07/rationale/syntax.html
+ *
+ * When we receive a '/', we look at the previous non space character to figure
+ * out if it's the ending of a punctuator that can precede a regexp literal, in
+ * which case we assume the current '/' is part of a regular expression literal
+ * (or the opening of a javascript comment, but that part is dealt with in the
+ * state machine). The exceptions to this are unary operators, so we look back
+ * a second character to rule out '++' and '--'. Although it is not
+ * straightforward to figure out if the binary operator is a postfix of the
+ * previous expression or a prefix of the regular expression, we rule out the
+ * later as it is an uncommon practice.
+ *
+ * If we ruled out the previous token to be a valid regexp preceding
+ * punctuator, we extract the last identifier in the buffer and match against a
+ * list of keywords that are known to precede expressions in the grammar. If we
+ * get a match on any of these keywords, then we are opening a regular
+ * expression, if not, then we have a division operator.
+ *
+ * Known cases that are accepted by the grammar but we handle differently,
+ * although I don't believe there is a legitimate usage for those:
+ *
+ * Division of a regular expression:
+ * var result = /test/ / 5;
+ *
+ * Prefix unary increment of a regular expression:
+ * var result = ++/test/;
+ *
+ * Division of an object literal:
+ * { a: 1 } /x/.exec('x');
+ *
+ * We only support ascii right now, so unicode characters in identifiers will
+ * be treated as delimiters, effectively breaking the identifier name where
+ * they appear, and this may cause issues in very specific situations. Namely,
+ * if we have a unicode character in an identifier directly preceding a suffix
+ * that matches one of the keywords in regexp_token_prefix[], if this
+ * identifier precedes a / (slash) character:
+ *
+ * var x = test<unicode char>return / 5;
+ *
+ * We will interpret that slash as the start of a regular expression, when in
+ * reality it is a division operator.
+ */
+static void enter_state_js_slash(statemachine_ctx *ctx, int start, char chr,
+ int end)
+{
+ jsparser_ctx *js;
+ char buffer[JSPARSER_RING_BUFFER_SIZE];
+ int pos;
+
+ (void)start;
+ (void)end;
+
+ assert(ctx != NULL);
+ assert(ctx->user != NULL);
+
+ js = CAST(jsparser_ctx *, ctx->user);
+ assert(js != NULL);
+
+ pos = -1;
+ /* Consume the last whitespace. */
+ if (js_is_whitespace(jsparser_buffer_get(js, pos))) {
+ --pos;
+ }
+
+ switch (jsparser_buffer_get(js, pos)) {
+ /* Ignore unary increment */
+ case '+':
+ if (jsparser_buffer_get(js, pos - 1) != '+') {
+ ctx->next_state = JSPARSER_STATE_INT_JS_REGEXP_SLASH;
+ }
+ break;
+
+ /* Ignore unary decrement */
+ case '-':
+ if (jsparser_buffer_get(js, pos - 1) != '-') {
+ ctx->next_state = JSPARSER_STATE_INT_JS_REGEXP_SLASH;
+ }
+ break;
+
+ /* List of punctuator endings except ), ], }, + and - */
+ case '=':
+ case '<':
+ case '>':
+ case '&':
+ case '|':
+ case '!':
+ case '%':
+ case '*':
+ case '/':
+ case ',':
+ case ';':
+ case '?':
+ case ':':
+ case '^':
+ case '~':
+ case '{':
+ case '(':
+ case '[':
+ case '}':
+ case '\0':
+ ctx->next_state = JSPARSER_STATE_INT_JS_REGEXP_SLASH;
+ break;
+
+ default:
+ if (jsparser_buffer_last_identifier(js, buffer) &&
+ is_regexp_token_prefix(buffer)) {
+ ctx->next_state = JSPARSER_STATE_INT_JS_REGEXP_SLASH;
+ }
+ }
+
+ jsparser_buffer_append_chr(js, chr);
+}
+
+/* Called at the end of a javascript comment.
+ *
+ * When we open a comment, the initial '/' was inserted into the ring buffer,
+ * but it is not a token and should be considered whitespace for parsing
+ * purposes.
+ *
+ * When we first saw the '/' character, we didn't yet know if it was the
+ * beginning of a comment, a division operator, or a regexp.
+ *
+ * In this function we just replace the inital '/' with a whitespace character,
+ * unless we had a preceding whitespace character, in which case we just remove
+ * the '/'. This is needed to ensure all spaces in the buffer are correctly
+ * folded.
+ */
+static void enter_state_js_comment_after(statemachine_ctx *ctx, int start,
+ char chr, int end)
+{
+ jsparser_ctx *js;
+
+ assert(ctx != NULL);
+ assert(ctx->user != NULL);
+
+ (void)start;
+ (void)chr;
+ (void)end;
+
+ js = CAST(jsparser_ctx *, ctx->user);
+
+ if (js_is_whitespace(jsparser_buffer_get(js, -2))) {
+ (void)jsparser_buffer_pop(js);
+ } else {
+ jsparser_buffer_set(js, -1, ' ');
+ }
+}
+
+static statemachine_definition *create_statemachine_definition(void)
+{
+ statemachine_definition *def;
+ def = statemachine_definition_new(JSPARSER_NUM_STATES);
+ if (def == NULL)
+ return NULL;
+
+ /* TODO(falmeida): Check return value. */
+ statemachine_definition_populate(def, jsparser_state_transitions,
+ jsparser_states_internal_names);
+
+ statemachine_in_state(def, JSPARSER_STATE_INT_JS_TEXT,
+ in_state_js_text);
+ statemachine_enter_state(def, JSPARSER_STATE_INT_JS_SLASH,
+ enter_state_js_slash);
+ statemachine_enter_state(def, JSPARSER_STATE_INT_JS_COMMENT_AFTER,
+ enter_state_js_comment_after);
+
+ return def;
+}
+
+
+/* Initializes a new jsparser instance.
+ *
+ * Returns a pointer to the new instance or NULL if the initialization
+ * fails.
+ *
+ * Initialization failure is fatal, and if this function fails it may not
+ * deallocate all previsouly allocated memory.
+ */
+
+jsparser_ctx *jsparser_new(void)
+{
+ jsparser_ctx *js;
+
+ js = CAST(jsparser_ctx *, calloc(1, sizeof(jsparser_ctx)));
+ if (js == NULL)
+ return NULL;
+
+ js->statemachine_def = create_statemachine_definition();
+ if (js->statemachine_def == NULL)
+ return NULL;
+
+ js->statemachine = statemachine_new(js->statemachine_def, js);
+ if (js->statemachine == NULL)
+ return NULL;
+
+ jsparser_reset(js);
+
+ return js;
+}
+
+/* Returns a pointer to a context which is a duplicate of the jsparser src.
+ */
+jsparser_ctx *jsparser_duplicate(jsparser_ctx *src)
+{
+ jsparser_ctx *dst;
+ assert(src != NULL);
+
+ dst = jsparser_new();
+ if (dst == NULL)
+ return NULL;
+
+ jsparser_copy(dst, src);
+
+ return dst;
+}
+
+/* Copies the context of the jsparser pointed to by src to the jsparser dst.
+ *
+ * The state machine definition is preserved since it is read only.
+ */
+void jsparser_copy(jsparser_ctx *dst, jsparser_ctx *src)
+{
+
+ dst->buffer_start = src->buffer_start;
+ dst->buffer_end = src->buffer_end;
+ memcpy(dst->buffer, src->buffer, sizeof(src->buffer));
+
+ statemachine_copy(dst->statemachine,
+ src->statemachine,
+ dst->statemachine_def,
+ dst);
+
+}
+
+void jsparser_reset(jsparser_ctx *ctx)
+{
+ assert(ctx != NULL);
+ ctx->statemachine->current_state = 0;
+ ctx->buffer_start = 0;
+ ctx->buffer_end = 0;
+}
+
+int jsparser_state(jsparser_ctx *ctx)
+{
+ return state_external(ctx->statemachine->current_state);
+}
+
+int jsparser_parse(jsparser_ctx *ctx, const char *str, int size)
+{
+ int internal_state;
+ internal_state = statemachine_parse(ctx->statemachine, str, size);
+ return state_external(internal_state);
+}
+
+void jsparser_delete(jsparser_ctx *ctx)
+{
+ assert(ctx != NULL);
+ statemachine_delete(ctx->statemachine);
+ statemachine_definition_delete(ctx->statemachine_def);
+ free(ctx);
+}
diff --git a/streamhtmlparser/jsparser_fsm.config b/streamhtmlparser/jsparser_fsm.config
new file mode 100644
index 0000000..830e13a
--- /dev/null
+++ b/streamhtmlparser/jsparser_fsm.config
@@ -0,0 +1,157 @@
+# Copyright 2008 Google Inc. All Rights Reserved.
+# Author: falmeida@google.com (Filipe Almeida)
+
+name = 'jsparser'
+
+comment = 'Simplified finite state machine for tracking of javascript states'
+
+condition('q', '\''),
+condition('dq', '\"'),
+condition('/', '/'),
+condition('*', '*'),
+condition('[', '['),
+condition(']', ']'),
+condition('lf', '\n'),
+condition('backslash', '\\'),
+condition('default', '[:default:]')
+
+# Main javascript body.
+state(name = 'js_text',
+ external = 'text',
+ transitions = [
+ ['q', 'js_q'],
+ ['dq', 'js_dq'],
+ ['/', 'js_slash'],
+ ['default', 'js_text']
+ ])
+
+# Single quoted string literal.
+state(name = 'js_q',
+ external = 'q',
+ transitions = [
+ ['backslash', 'js_q_e'],
+ ['q', 'js_text'],
+ ['default', 'js_q']
+ ])
+
+# Javascript escaped character in a single quoted string literal.
+state(name = 'js_q_e',
+ external = 'q',
+ transitions = [
+ ['default', 'js_q']
+ ])
+
+# Double quoted string literal
+state(name = 'js_dq',
+ external = 'dq',
+ transitions = [
+ ['backslash', 'js_dq_e'],
+ ['dq', 'js_text'],
+ ['default', 'js_dq']
+ ])
+
+# Javascript escaped character in a double quoted string literal.
+state(name = 'js_dq_e',
+ external = 'dq',
+ transitions = [
+ ['default', 'js_dq']
+ ])
+
+# Possible start of a javascript comment.
+state(name = 'js_slash',
+ external = 'text',
+ transitions = [
+ ['/', 'js_comment_ln'],
+ ['*', 'js_comment_ml'],
+ ['default', 'js_text']
+ ])
+
+# Possible start of a regular expression literal.
+#
+# The state diagram does not reach this state directly. When js_slash is
+# reached, the function enter_state_js_slash() is called, which checks if the
+# last token belongs to the set of tokens that can precede a regular
+# expression, in which case it changes the state to js_regexp_slash.
+#
+# For more information please read the comments in
+# jsparser.c:enter_state_js_slash().
+state(name = 'js_regexp_slash',
+ external = 'text',
+ transitions = [
+ ['/', 'js_comment_ln'],
+ ['*', 'js_comment_ml'],
+ ['backslash', 'js_regexp_e'],
+ ['[', 'js_regexp_bracket'],
+ ['default', 'js_regexp']
+ ])
+
+# Regular expression literal.
+state(name = 'js_regexp',
+ external = 'regexp',
+ transitions = [
+ ['backslash', 'js_regexp_e'],
+ ['[', 'js_regexp_bracket'],
+ ['/', 'js_text'],
+ ['default', 'js_regexp']
+ ])
+
+# Regexp bracket expression
+state(name = 'js_regexp_bracket',
+ external = 'regexp',
+ transitions = [
+ ['backslash', 'js_regexp_bracket_e'],
+ [']', 'js_regexp'],
+ ['default', 'js_regexp_bracket']
+ ])
+
+# Backslash escaped regexp bracket expression
+state(name = 'js_regexp_bracket_e',
+ external = 'regexp',
+ transitions = [
+ ['default', 'js_regexp_bracket']
+ ])
+
+# Escaped regular expression char.
+state(name = 'js_regexp_e',
+ external = 'regexp',
+ transitions = [
+ ['default', 'js_regexp']
+ ])
+
+# Start of a single line javascript comment (//).
+state(name = 'js_comment_ln',
+ external = 'comment',
+ transitions = [
+ ['lf', 'js_comment_after'],
+ ['default', 'js_comment_ln']
+ ])
+
+# Start of a multiline javascript comment (/*).
+state(name = 'js_comment_ml',
+ external = 'comment',
+ transitions = [
+ ['*', 'js_comment_ml_close'],
+ ['default', 'js_comment_ml']
+ ])
+
+# Close of a multiline javascript comment (*/).
+state(name = 'js_comment_ml_close',
+ external = 'comment',
+ transitions = [
+ ['/', 'js_comment_after'],
+ ['default', 'js_comment_ml']
+ ])
+
+# Ending character of a javascript comment.
+# In can either be a '/ in the case of a multiline comment, or a line
+# terminator in the case of a single line comment.
+# This is needed so we don't insert the '/' or the new line character into the
+# ring buffer.
+state(name = 'js_comment_after',
+ external = 'text',
+ transitions = [
+ ['q', 'js_q'],
+ ['dq', 'js_dq'],
+ ['/', 'js_slash'],
+ ['default', 'js_text']
+ ])
diff --git a/streamhtmlparser/jsparser_fsm.h b/streamhtmlparser/jsparser_fsm.h
new file mode 100644
index 0000000..aba093b
--- /dev/null
+++ b/streamhtmlparser/jsparser_fsm.h
@@ -0,0 +1,3946 @@
+/* Simplified finite state machine for tracking of javascript states
+ * Auto generated by generate_fsm.py. Please do not edit.
+ */
+#define JSPARSER_NUM_STATES 16
+enum jsparser_state_internal_enum {
+ JSPARSER_STATE_INT_JS_TEXT,
+ JSPARSER_STATE_INT_JS_Q,
+ JSPARSER_STATE_INT_JS_Q_E,
+ JSPARSER_STATE_INT_JS_DQ,
+ JSPARSER_STATE_INT_JS_DQ_E,
+ JSPARSER_STATE_INT_JS_SLASH,
+ JSPARSER_STATE_INT_JS_REGEXP_SLASH,
+ JSPARSER_STATE_INT_JS_REGEXP,
+ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ JSPARSER_STATE_INT_JS_REGEXP_BRACKET_E,
+ JSPARSER_STATE_INT_JS_REGEXP_E,
+ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ JSPARSER_STATE_INT_JS_COMMENT_ML_CLOSE,
+ JSPARSER_STATE_INT_JS_COMMENT_AFTER
+};
+
+static const int jsparser_states_external[] = {
+ JSPARSER_STATE_TEXT,
+ JSPARSER_STATE_Q,
+ JSPARSER_STATE_Q,
+ JSPARSER_STATE_DQ,
+ JSPARSER_STATE_DQ,
+ JSPARSER_STATE_TEXT,
+ JSPARSER_STATE_TEXT,
+ JSPARSER_STATE_REGEXP,
+ JSPARSER_STATE_REGEXP,
+ JSPARSER_STATE_REGEXP,
+ JSPARSER_STATE_REGEXP,
+ JSPARSER_STATE_COMMENT,
+ JSPARSER_STATE_COMMENT,
+ JSPARSER_STATE_COMMENT,
+ JSPARSER_STATE_TEXT
+};
+
+static const char * jsparser_states_internal_names[] = {
+ "js_text",
+ "js_q",
+ "js_q_e",
+ "js_dq",
+ "js_dq_e",
+ "js_slash",
+ "js_regexp_slash",
+ "js_regexp",
+ "js_regexp_bracket",
+ "js_regexp_bracket_e",
+ "js_regexp_e",
+ "js_comment_ln",
+ "js_comment_ml",
+ "js_comment_ml_close",
+ "js_comment_after"
+};
+
+static const int jsparser_transition_row_js_text[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\t' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\n' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\r' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ' ' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '!' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '"' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '#' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '$' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '%' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '&' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* "'" */ JSPARSER_STATE_INT_JS_Q,
+ /* '(' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ')' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '*' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '+' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ',' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '-' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '.' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '/' */ JSPARSER_STATE_INT_JS_SLASH,
+ /* '0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ':' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ';' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '<' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '=' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '>' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '?' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '@' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'A' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'B' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'C' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'D' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'E' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'F' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'G' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'H' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'I' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'J' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'K' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'L' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'M' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'N' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'O' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'P' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'R' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'S' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'T' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'U' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'V' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'W' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'X' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '[' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\\' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ']' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '^' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '_' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '`' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'g' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'h' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'i' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'j' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'k' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'l' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'm' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'n' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'o' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'p' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'q' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'r' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 's' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 't' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'u' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'v' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'w' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'x' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'y' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'z' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '{' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '|' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '}' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '~' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_TEXT
+};
+
+static const int jsparser_transition_row_js_q[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\t' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\n' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\r' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_Q,
+ /* ' ' */ JSPARSER_STATE_INT_JS_Q,
+ /* '!' */ JSPARSER_STATE_INT_JS_Q,
+ /* '"' */ JSPARSER_STATE_INT_JS_Q,
+ /* '#' */ JSPARSER_STATE_INT_JS_Q,
+ /* '$' */ JSPARSER_STATE_INT_JS_Q,
+ /* '%' */ JSPARSER_STATE_INT_JS_Q,
+ /* '&' */ JSPARSER_STATE_INT_JS_Q,
+ /* "'" */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '(' */ JSPARSER_STATE_INT_JS_Q,
+ /* ')' */ JSPARSER_STATE_INT_JS_Q,
+ /* '*' */ JSPARSER_STATE_INT_JS_Q,
+ /* '+' */ JSPARSER_STATE_INT_JS_Q,
+ /* ',' */ JSPARSER_STATE_INT_JS_Q,
+ /* '-' */ JSPARSER_STATE_INT_JS_Q,
+ /* '.' */ JSPARSER_STATE_INT_JS_Q,
+ /* '/' */ JSPARSER_STATE_INT_JS_Q,
+ /* '0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '9' */ JSPARSER_STATE_INT_JS_Q,
+ /* ':' */ JSPARSER_STATE_INT_JS_Q,
+ /* ';' */ JSPARSER_STATE_INT_JS_Q,
+ /* '<' */ JSPARSER_STATE_INT_JS_Q,
+ /* '=' */ JSPARSER_STATE_INT_JS_Q,
+ /* '>' */ JSPARSER_STATE_INT_JS_Q,
+ /* '?' */ JSPARSER_STATE_INT_JS_Q,
+ /* '@' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'A' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'B' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'C' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'D' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'E' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'F' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'G' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'H' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'I' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'J' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'K' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'L' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'M' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'N' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'O' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'P' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'R' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'S' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'T' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'U' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'V' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'W' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'X' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_Q,
+ /* '[' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\\' */ JSPARSER_STATE_INT_JS_Q_E,
+ /* ']' */ JSPARSER_STATE_INT_JS_Q,
+ /* '^' */ JSPARSER_STATE_INT_JS_Q,
+ /* '_' */ JSPARSER_STATE_INT_JS_Q,
+ /* '`' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'a' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'b' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'c' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'd' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'e' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'f' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'g' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'h' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'i' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'j' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'k' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'l' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'm' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'n' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'o' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'p' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'q' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'r' */ JSPARSER_STATE_INT_JS_Q,
+ /* 's' */ JSPARSER_STATE_INT_JS_Q,
+ /* 't' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'u' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'v' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'w' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'x' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'y' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'z' */ JSPARSER_STATE_INT_JS_Q,
+ /* '{' */ JSPARSER_STATE_INT_JS_Q,
+ /* '|' */ JSPARSER_STATE_INT_JS_Q,
+ /* '}' */ JSPARSER_STATE_INT_JS_Q,
+ /* '~' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_Q
+};
+
+static const int jsparser_transition_row_js_q_e[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\t' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\n' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\r' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_Q,
+ /* ' ' */ JSPARSER_STATE_INT_JS_Q,
+ /* '!' */ JSPARSER_STATE_INT_JS_Q,
+ /* '"' */ JSPARSER_STATE_INT_JS_Q,
+ /* '#' */ JSPARSER_STATE_INT_JS_Q,
+ /* '$' */ JSPARSER_STATE_INT_JS_Q,
+ /* '%' */ JSPARSER_STATE_INT_JS_Q,
+ /* '&' */ JSPARSER_STATE_INT_JS_Q,
+ /* "'" */ JSPARSER_STATE_INT_JS_Q,
+ /* '(' */ JSPARSER_STATE_INT_JS_Q,
+ /* ')' */ JSPARSER_STATE_INT_JS_Q,
+ /* '*' */ JSPARSER_STATE_INT_JS_Q,
+ /* '+' */ JSPARSER_STATE_INT_JS_Q,
+ /* ',' */ JSPARSER_STATE_INT_JS_Q,
+ /* '-' */ JSPARSER_STATE_INT_JS_Q,
+ /* '.' */ JSPARSER_STATE_INT_JS_Q,
+ /* '/' */ JSPARSER_STATE_INT_JS_Q,
+ /* '0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '9' */ JSPARSER_STATE_INT_JS_Q,
+ /* ':' */ JSPARSER_STATE_INT_JS_Q,
+ /* ';' */ JSPARSER_STATE_INT_JS_Q,
+ /* '<' */ JSPARSER_STATE_INT_JS_Q,
+ /* '=' */ JSPARSER_STATE_INT_JS_Q,
+ /* '>' */ JSPARSER_STATE_INT_JS_Q,
+ /* '?' */ JSPARSER_STATE_INT_JS_Q,
+ /* '@' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'A' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'B' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'C' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'D' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'E' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'F' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'G' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'H' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'I' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'J' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'K' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'L' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'M' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'N' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'O' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'P' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'R' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'S' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'T' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'U' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'V' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'W' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'X' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_Q,
+ /* '[' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\\' */ JSPARSER_STATE_INT_JS_Q,
+ /* ']' */ JSPARSER_STATE_INT_JS_Q,
+ /* '^' */ JSPARSER_STATE_INT_JS_Q,
+ /* '_' */ JSPARSER_STATE_INT_JS_Q,
+ /* '`' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'a' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'b' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'c' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'd' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'e' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'f' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'g' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'h' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'i' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'j' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'k' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'l' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'm' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'n' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'o' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'p' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'q' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'r' */ JSPARSER_STATE_INT_JS_Q,
+ /* 's' */ JSPARSER_STATE_INT_JS_Q,
+ /* 't' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'u' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'v' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'w' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'x' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'y' */ JSPARSER_STATE_INT_JS_Q,
+ /* 'z' */ JSPARSER_STATE_INT_JS_Q,
+ /* '{' */ JSPARSER_STATE_INT_JS_Q,
+ /* '|' */ JSPARSER_STATE_INT_JS_Q,
+ /* '}' */ JSPARSER_STATE_INT_JS_Q,
+ /* '~' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_Q,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_Q
+};
+
+static const int jsparser_transition_row_js_dq[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\t' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\n' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\r' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ' ' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '!' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '"' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '#' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '$' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '%' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '&' */ JSPARSER_STATE_INT_JS_DQ,
+ /* "'" */ JSPARSER_STATE_INT_JS_DQ,
+ /* '(' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ')' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '*' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '+' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ',' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '-' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '.' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '/' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ':' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ';' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '<' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '=' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '>' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '?' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '@' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'A' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'B' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'C' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'D' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'E' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'F' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'G' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'H' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'I' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'J' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'K' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'L' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'M' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'N' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'O' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'P' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'R' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'S' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'T' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'U' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'V' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'W' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'X' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '[' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\\' */ JSPARSER_STATE_INT_JS_DQ_E,
+ /* ']' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '^' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '_' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '`' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'a' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'g' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'h' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'i' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'j' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'k' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'l' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'm' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'n' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'o' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'p' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'q' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'r' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 's' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 't' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'u' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'v' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'w' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'x' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'y' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'z' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '{' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '|' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '}' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '~' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_DQ
+};
+
+static const int jsparser_transition_row_js_dq_e[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\t' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\n' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\r' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ' ' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '!' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '"' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '#' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '$' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '%' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '&' */ JSPARSER_STATE_INT_JS_DQ,
+ /* "'" */ JSPARSER_STATE_INT_JS_DQ,
+ /* '(' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ')' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '*' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '+' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ',' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '-' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '.' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '/' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ':' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ';' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '<' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '=' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '>' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '?' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '@' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'A' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'B' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'C' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'D' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'E' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'F' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'G' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'H' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'I' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'J' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'K' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'L' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'M' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'N' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'O' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'P' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'R' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'S' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'T' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'U' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'V' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'W' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'X' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '[' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\\' */ JSPARSER_STATE_INT_JS_DQ,
+ /* ']' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '^' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '_' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '`' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'a' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'g' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'h' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'i' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'j' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'k' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'l' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'm' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'n' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'o' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'p' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'q' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'r' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 's' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 't' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'u' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'v' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'w' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'x' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'y' */ JSPARSER_STATE_INT_JS_DQ,
+ /* 'z' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '{' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '|' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '}' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '~' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_DQ
+};
+
+static const int jsparser_transition_row_js_slash[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\t' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\n' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\r' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ' ' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '!' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '"' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '#' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '$' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '%' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '&' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* "'" */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '(' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ')' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '+' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ',' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '-' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '.' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ':' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ';' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '<' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '=' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '>' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '?' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '@' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'A' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'B' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'C' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'D' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'E' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'F' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'G' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'H' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'I' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'J' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'K' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'L' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'M' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'N' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'O' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'P' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'R' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'S' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'T' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'U' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'V' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'W' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'X' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '[' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\\' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ']' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '^' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '_' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '`' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'g' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'h' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'i' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'j' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'k' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'l' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'm' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'n' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'o' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'p' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'q' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'r' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 's' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 't' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'u' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'v' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'w' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'x' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'y' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'z' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '{' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '|' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '}' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '~' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_TEXT
+};
+
+static const int jsparser_transition_row_js_regexp_slash[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '!' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '"' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '#' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '$' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '%' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '&' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* "'" */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '(' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ')' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '+' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ',' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '-' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '.' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ':' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ';' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '<' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '=' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '>' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '?' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '@' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '[' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP_E,
+ /* ']' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '^' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '_' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '`' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 's' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 't' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '{' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '|' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '}' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '~' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP
+};
+
+static const int jsparser_transition_row_js_regexp[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '!' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '"' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '#' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '$' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '%' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '&' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* "'" */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '(' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ')' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '*' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '+' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ',' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '-' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '.' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '/' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ':' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ';' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '<' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '=' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '>' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '?' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '@' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '[' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP_E,
+ /* ']' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '^' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '_' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '`' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 's' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 't' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '{' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '|' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '}' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '~' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP
+};
+
+static const int jsparser_transition_row_js_regexp_bracket[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '!' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '"' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '#' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '$' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '%' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '&' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* "'" */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '(' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ')' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '*' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '+' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ',' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '-' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '.' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '/' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ':' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ';' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '<' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '=' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '>' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '?' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '@' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '[' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET_E,
+ /* ']' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '^' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '_' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '`' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 's' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 't' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '{' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '|' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '}' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '~' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET
+};
+
+static const int jsparser_transition_row_js_regexp_bracket_e[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '!' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '"' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '#' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '$' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '%' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '&' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* "'" */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '(' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ')' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '*' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '+' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ',' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '-' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '.' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '/' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ':' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ';' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '<' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '=' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '>' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '?' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '@' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '[' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* ']' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '^' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '_' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '`' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 's' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 't' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '{' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '|' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '}' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '~' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET
+};
+
+static const int jsparser_transition_row_js_regexp_e[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '!' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '"' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '#' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '$' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '%' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '&' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* "'" */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '(' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ')' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '*' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '+' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ',' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '-' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '.' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '/' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ':' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ';' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '<' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '=' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '>' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '?' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '@' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '[' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* ']' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '^' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '_' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '`' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 's' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 't' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '{' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '|' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '}' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '~' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP
+};
+
+static const int jsparser_transition_row_js_comment_ln[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\t' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\n' */ JSPARSER_STATE_INT_JS_COMMENT_AFTER,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\r' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* ' ' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '!' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '"' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '#' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '$' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '%' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '&' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* "'" */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '(' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* ')' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '+' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* ',' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '-' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '.' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '0' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '1' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '2' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '3' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '4' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '5' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '6' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '7' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '8' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '9' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* ':' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* ';' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '<' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '=' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '>' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '?' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '@' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'A' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'B' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'C' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'D' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'E' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'F' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'G' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'H' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'I' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'J' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'K' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'L' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'M' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'N' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'O' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'P' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'R' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'S' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'T' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'U' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'V' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'W' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'X' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '[' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\\' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* ']' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '^' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '_' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '`' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'a' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'b' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'c' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'd' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'e' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'f' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'g' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'h' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'i' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'j' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'k' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'l' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'm' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'n' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'o' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'p' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'q' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'r' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 's' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 't' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'u' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'v' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'w' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'x' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'y' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* 'z' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '{' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '|' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '}' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '~' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_COMMENT_LN,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_COMMENT_LN
+};
+
+static const int jsparser_transition_row_js_comment_ml[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\t' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\n' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\r' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ' ' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '!' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '"' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '#' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '$' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '%' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '&' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* "'" */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '(' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ')' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_ML_CLOSE,
+ /* '+' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ',' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '-' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '.' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ':' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ';' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '<' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '=' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '>' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '?' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '@' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'A' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'B' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'C' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'D' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'E' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'F' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'G' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'H' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'I' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'J' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'K' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'L' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'M' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'N' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'O' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'P' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'R' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'S' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'T' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'U' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'V' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'W' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'X' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '[' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\\' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ']' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '^' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '_' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '`' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'a' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'g' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'h' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'i' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'j' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'k' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'l' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'm' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'n' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'o' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'p' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'q' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'r' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 's' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 't' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'u' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'v' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'w' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'x' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'y' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'z' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '{' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '|' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '}' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '~' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_COMMENT_ML
+};
+
+static const int jsparser_transition_row_js_comment_ml_close[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\t' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\n' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\r' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ' ' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '!' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '"' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '#' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '$' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '%' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '&' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* "'" */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '(' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ')' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '+' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ',' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '-' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '.' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_AFTER,
+ /* '0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ':' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ';' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '<' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '=' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '>' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '?' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '@' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'A' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'B' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'C' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'D' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'E' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'F' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'G' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'H' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'I' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'J' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'K' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'L' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'M' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'N' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'O' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'P' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'R' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'S' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'T' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'U' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'V' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'W' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'X' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '[' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\\' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* ']' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '^' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '_' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '`' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'a' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'g' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'h' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'i' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'j' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'k' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'l' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'm' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'n' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'o' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'p' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'q' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'r' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 's' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 't' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'u' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'v' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'w' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'x' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'y' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* 'z' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '{' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '|' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '}' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '~' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_COMMENT_ML,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_COMMENT_ML
+};
+
+static const int jsparser_transition_row_js_comment_after[] = {
+ /* '\x00' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x01' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x02' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x03' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x04' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x05' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x06' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x07' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x08' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\t' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\n' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\r' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x0f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x10' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x11' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x12' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x13' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x14' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x15' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x16' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x17' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x18' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x19' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1d' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x1f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ' ' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '!' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '"' */ JSPARSER_STATE_INT_JS_DQ,
+ /* '#' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '$' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '%' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '&' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* "'" */ JSPARSER_STATE_INT_JS_Q,
+ /* '(' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ')' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '*' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '+' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ',' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '-' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '.' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '/' */ JSPARSER_STATE_INT_JS_SLASH,
+ /* '0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ':' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ';' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '<' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '=' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '>' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '?' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '@' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'A' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'B' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'C' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'D' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'E' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'F' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'G' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'H' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'I' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'J' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'K' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'L' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'M' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'N' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'O' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'P' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'Q' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'R' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'S' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'T' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'U' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'V' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'W' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'X' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'Y' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'Z' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '[' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\\' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* ']' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '^' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '_' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '`' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'g' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'h' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'i' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'j' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'k' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'l' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'm' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'n' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'o' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'p' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'q' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'r' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 's' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 't' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'u' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'v' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'w' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'x' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'y' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* 'z' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '{' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '|' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '}' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '~' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x7f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x80' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x81' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x82' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x83' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x84' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x85' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x86' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x87' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x88' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x89' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8d' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x8f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x90' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x91' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x92' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x93' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x94' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x95' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x96' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x97' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x98' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x99' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9a' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9b' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9c' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9d' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9e' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\x9f' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xa9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xaa' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xab' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xac' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xad' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xae' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xaf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xb9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xba' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbe' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xbf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xc9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xca' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xce' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xcf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xd9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xda' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xde' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xdf' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xe9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xea' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xeb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xec' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xed' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xee' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xef' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf0' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf1' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf2' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf3' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf4' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf5' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf6' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf7' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf8' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xf9' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfa' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfb' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfc' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfd' */ JSPARSER_STATE_INT_JS_TEXT,
+ /* '\xfe' */ JSPARSER_STATE_INT_JS_TEXT
+};
+
+static const int * jsparser_state_transitions[] = {
+ jsparser_transition_row_js_text,
+ jsparser_transition_row_js_q,
+ jsparser_transition_row_js_q_e,
+ jsparser_transition_row_js_dq,
+ jsparser_transition_row_js_dq_e,
+ jsparser_transition_row_js_slash,
+ jsparser_transition_row_js_regexp_slash,
+ jsparser_transition_row_js_regexp,
+ jsparser_transition_row_js_regexp_bracket,
+ jsparser_transition_row_js_regexp_bracket_e,
+ jsparser_transition_row_js_regexp_e,
+ jsparser_transition_row_js_comment_ln,
+ jsparser_transition_row_js_comment_ml,
+ jsparser_transition_row_js_comment_ml_close,
+ jsparser_transition_row_js_comment_after
+};
+
diff --git a/streamhtmlparser/statemachine.c b/streamhtmlparser/statemachine.c
new file mode 100644
index 0000000..c0d604e
--- /dev/null
+++ b/streamhtmlparser/statemachine.c
@@ -0,0 +1,450 @@
+/* Copyright (c) 2007, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Filipe Almeida
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "statemachine.h"
+
+/* So we can support both C and C++ compilers, we use the CAST() macro instead
+ * of using C style casts or static_cast<>() directly.
+ */
+#ifdef __cplusplus
+ #define CAST(type, expression) (static_cast<type>(expression))
+#else
+ #define CAST(type, expression) ((type)(expression))
+#endif
+
+#define MAX_CHAR_8BIT 256
+
+/* Populates the statemachine definition.
+ */
+void statemachine_definition_populate(statemachine_definition *def,
+ const int* const* transition_table,
+ const char* const* state_names)
+{
+ assert(def != NULL);
+ assert(transition_table != NULL);
+
+ def->transition_table = transition_table;
+
+ def->state_names = state_names;
+}
+
+/* Add's the callback for the event in_state that is called when the
+ * statemachine is in state st.
+ *
+ * This event is called everytime the the statemachine is in the specified
+ * state forevery character in the input stream even if the state remains
+ * the same.
+ *
+ * This is event is the last event to be called and is fired after both events
+ * exit_state and enter_state.
+ */
+void statemachine_in_state(statemachine_definition *def, int st,
+ state_event_function func)
+{
+ assert(def != NULL);
+ assert(st < def->num_states);
+ def->in_state_events[st] = func;
+}
+
+/* Add's the callback for the event enter_state that is called when the
+ * statemachine enters state st.
+ *
+ * This event is fired after the event exit_state but before the event
+ * in_state.
+ */
+void statemachine_enter_state(statemachine_definition *def, int st,
+ state_event_function func)
+{
+ assert(def != NULL);
+ assert(st < def->num_states);
+ def->enter_state_events[st] = func;
+}
+
+/* Add's the callback for the event exit_state that is called when the
+ * statemachine exits from state st.
+ *
+ * This is the first event to be called and is fired before both the events
+ * enter_state and in_state.
+ */
+void statemachine_exit_state(statemachine_definition *def, int st,
+ state_event_function func)
+{
+ assert(def != NULL);
+ assert(st < def->num_states);
+ def->exit_state_events[st] = func;
+}
+
+/* Initializes a new statemachine definition with a defined number of states.
+ *
+ * Returns NULL if initialization fails.
+ *
+ * Initialization failure is fatal, and if this function fails it may not
+ * deallocate all previsouly allocated memory.
+ */
+statemachine_definition *statemachine_definition_new(int states)
+{
+ statemachine_definition *def;
+ def = CAST(statemachine_definition *,
+ malloc(sizeof(statemachine_definition)));
+ if (def == NULL)
+ return NULL;
+
+ def->in_state_events = CAST(state_event_function *,
+ calloc(states, sizeof(state_event_function)));
+ if (def->in_state_events == NULL)
+ return NULL;
+
+ def->enter_state_events =CAST(state_event_function *,
+ calloc(states,
+ sizeof(state_event_function)));
+ if (def->enter_state_events == NULL)
+ return NULL;
+
+ def->exit_state_events = CAST(state_event_function *,
+ calloc(states, sizeof(state_event_function)));
+ if (def->exit_state_events == NULL)
+ return NULL;
+
+ def->num_states = states;
+ def->state_names = NULL;
+ return def;
+}
+
+/* Deallocates a statemachine definition object
+ */
+void statemachine_definition_delete(statemachine_definition *def)
+{
+ assert(def != NULL);
+ free(def->in_state_events);
+ free(def->enter_state_events);
+ free(def->exit_state_events);
+ free(def);
+}
+
+/* Returns the current state.
+ */
+int statemachine_get_state(statemachine_ctx *ctx) {
+ return ctx->current_state;
+}
+
+/* Sets the current state.
+ *
+ * It calls the exit event for the old state and the enter event for the state
+ * we intend to move into.
+ *
+ * Since this state change was not initiated by a character in the input stream
+ * we pass a null char to the event functions.
+ */
+void statemachine_set_state(statemachine_ctx *ctx, int state)
+{
+
+ statemachine_definition *def;
+
+ assert(ctx != NULL);
+ assert(ctx->definition != NULL);
+
+ def = ctx->definition;
+
+ assert(state < def->num_states);
+
+ ctx->next_state = state;
+
+ if (ctx->current_state != ctx->next_state) {
+ if (def->exit_state_events[ctx->current_state])
+ def->exit_state_events[ctx->current_state](ctx,
+ ctx->current_state,
+ '\0',
+ ctx->next_state);
+
+ if (def->enter_state_events[ctx->next_state])
+ def->enter_state_events[ctx->next_state](ctx,
+ ctx->current_state,
+ '\0',
+ ctx->next_state);
+ }
+
+ ctx->current_state = state;
+}
+
+/* Reset the statemachine.
+ *
+ * The state is set to the initialization values. This includes setting the
+ * state to the default state (0), stopping recording and setting the line
+ * number to 1.
+ */
+void statemachine_reset(statemachine_ctx *ctx)
+{
+ ctx->current_state = 0;
+ ctx->next_state = 0;
+ ctx->record_buffer[0] = '\0';
+ ctx->record_pos = 0;
+ ctx->recording = 0;
+ ctx->line_number = 1;
+ ctx->column_number = 1;
+}
+
+/* Initializes a new statemachine. Receives a statemachine definition object
+ * that should have been initialized with statemachine_definition_new() and a
+ * user reference to be used by the caller.
+ *
+ * The user reference is used by the caller to store any instance specific data
+ * the caller may need and is typically used to propagate context information
+ * to the event callbacks. The user pointer can just be set to NULL if the
+ * caller doesn't need it.
+ *
+ * Returns NULL if initialization fails.
+ *
+ * Initialization failure is fatal, and if this function fails it may not
+ * deallocate all previously allocated memory.
+ */
+statemachine_ctx *statemachine_new(statemachine_definition *def,
+ void *user)
+{
+ statemachine_ctx *ctx;
+ assert(def != NULL);
+ ctx = CAST(statemachine_ctx *, malloc(sizeof(statemachine_ctx)));
+ if (ctx == NULL)
+ return NULL;
+
+ statemachine_reset(ctx);
+
+ ctx->definition = def;
+ ctx->user = user;
+
+ return ctx;
+}
+
+/* Returns a pointer to a context which is a duplicate of the statemachine src.
+ * The statemachine definition and the user pointer have to be provided since
+ * these references are not owned by the statemachine itself, but this will be
+ * shallow copies as they point to data structures we do not own.
+ */
+statemachine_ctx *statemachine_duplicate(statemachine_ctx *src,
+ statemachine_definition *def,
+ void *user)
+{
+ statemachine_ctx *dst;
+ assert(src != NULL);
+ dst = statemachine_new(def, user);
+ if (dst == NULL)
+ return NULL;
+
+ statemachine_copy(dst, src, def, user);
+
+ return dst;
+}
+
+/* Copies the context of the statemachine pointed to by src to the statemachine
+ * provided by dst.
+ * The statemachine definition and the user pointer have to be provided since
+ * these references are not owned by the statemachine itself.
+ */
+void statemachine_copy(statemachine_ctx *dst,
+ statemachine_ctx *src,
+ statemachine_definition *def,
+ void *user)
+{
+ memcpy(dst, src, sizeof(statemachine_ctx));
+ dst->definition = def;
+ dst->user = user;
+}
+
+/* Deallocates a statemachine object
+ */
+void statemachine_delete(statemachine_ctx *ctx)
+{
+ assert(ctx != NULL);
+ free(ctx);
+}
+
+/* Starts recording the current input stream into an internal buffer.
+ * The current input character is included in the recording.
+ */
+void statemachine_start_record(statemachine_ctx *ctx)
+{
+ assert(ctx != NULL);
+ ctx->record_buffer[0] = '\0';
+ ctx->record_pos = 0;
+ ctx->recording = 1;
+}
+
+/* Stops recording the current input stream.
+ * The last input character is not included in the recording.
+ * This function returns a pointer to the recorded string buffer.
+ */
+const char *statemachine_stop_record(statemachine_ctx *ctx)
+{
+ assert(ctx != NULL);
+ assert(ctx->recording);
+ ctx->record_buffer[ctx->record_pos] = '\0';
+ ctx->recording = 0;
+ return ctx->record_buffer;
+}
+
+ /* Returns a pointer to the record string buffer.
+ */
+const char *statemachine_record_buffer(statemachine_ctx *ctx)
+{
+ return ctx->record_buffer;
+}
+
+void statemachine_encode_char(char schr, char *output, size_t len)
+{
+ unsigned char chr = schr;
+ if (chr == '\'') {
+ strncpy(output, "\\'", len);
+ } else if (chr == '\\') {
+ strncpy(output, "\\\\", len);
+
+ /* Like isprint() but not dependent on locale. */
+ } else if (chr >= 32 && chr <= 126) {
+ snprintf(output, len, "%c", chr);
+ } else if (chr == '\n') {
+ strncpy(output, "\\n", len);
+ } else if (chr == '\r') {
+ strncpy(output, "\\r", len);
+ } else if (chr == '\t') {
+ strncpy(output, "\\t", len);
+ } else {
+ snprintf(output, len, "\\x%.2x", chr);
+ }
+
+ output[len - 1] = '\0';
+}
+
+/* Sets the error message in case of a transition error.
+ *
+ * Called from statemachine_parse to set the error message in case of a
+ * transition error.
+ */
+static void statemachine_set_transition_error_message(statemachine_ctx *ctx)
+{
+ char encoded_char[10];
+ statemachine_encode_char(ctx->current_char, encoded_char,
+ sizeof(encoded_char));
+
+ if (ctx->definition->state_names) {
+ snprintf(ctx->error_msg, STATEMACHINE_MAX_STR_ERROR,
+ "Unexpected character '%s' in state '%s'",
+ encoded_char,
+ ctx->definition->state_names[ctx->current_state]);
+ } else {
+ snprintf(ctx->error_msg, STATEMACHINE_MAX_STR_ERROR,
+ "Unexpected character '%s'", encoded_char);
+ }
+
+}
+
+/* Parses the input html stream and returns the finishing state.
+ *
+ * Returns STATEMACHINE_ERROR if unable to parse the input. If
+ * statemachine_parse() is called after an error situation was encountered
+ * the behaviour is unspecified.
+ */
+/* TODO(falmeida): change int size to size_t size */
+int statemachine_parse(statemachine_ctx *ctx, const char *str, int size)
+{
+ int i;
+ const int* const* state_table = ctx->definition->transition_table;
+ statemachine_definition *def;
+
+ assert(ctx !=NULL &&
+ ctx->definition != NULL &&
+ ctx->definition->transition_table != NULL);
+
+ if (size < 0) {
+ snprintf(ctx->error_msg, STATEMACHINE_MAX_STR_ERROR, "%s",
+ "Negative size in statemachine_parse().");
+ return STATEMACHINE_ERROR;
+ }
+
+ def = ctx->definition;
+
+ for (i = 0; i < size; i++) {
+ ctx->current_char = *str;
+ ctx->next_state =
+ state_table[ctx->current_state][CAST(unsigned char, *str)];
+ if (ctx->next_state == STATEMACHINE_ERROR) {
+ statemachine_set_transition_error_message(ctx);
+ return STATEMACHINE_ERROR;
+ }
+
+ if (ctx->current_state != ctx->next_state) {
+ if (def->exit_state_events[ctx->current_state])
+ def->exit_state_events[ctx->current_state](ctx,
+ ctx->current_state,
+ *str,
+ ctx->next_state);
+ }
+ if (ctx->current_state != ctx->next_state) {
+ if (def->enter_state_events[ctx->next_state])
+ def->enter_state_events[ctx->next_state](ctx,
+ ctx->current_state,
+ *str,
+ ctx->next_state);
+ }
+
+ if (def->in_state_events[ctx->next_state])
+ def->in_state_events[ctx->next_state](ctx,
+ ctx->current_state,
+ *str,
+ ctx->next_state);
+
+ /* We need two bytes left so we can NULL terminate the string. */
+ if (ctx->recording &&
+ STATEMACHINE_RECORD_BUFFER_SIZE - 1 > ctx->record_pos) {
+ ctx->record_buffer[ctx->record_pos++] = *str;
+ ctx->record_buffer[ctx->record_pos] = '\0';
+ }
+
+/* TODO(falmeida): Should clarify the contract here, since an event can change
+ * ctx->next_state and we need this functionality */
+
+ ctx->current_state = ctx->next_state;
+ ctx->column_number++;
+
+ if (*str == '\n') {
+ ctx->line_number++;
+ ctx->column_number = 1;
+ }
+ str++;
+ }
+
+ return ctx->current_state;
+}
diff --git a/streamhtmlparser/tools/fsm_config.py b/streamhtmlparser/tools/fsm_config.py
new file mode 100755
index 0000000..6046621
--- /dev/null
+++ b/streamhtmlparser/tools/fsm_config.py
@@ -0,0 +1,223 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# ---
+# Author: Filipe Almeida
+#
+# Create a state machine object based on a definition file.
+#
+
+__author__ = 'falmeida@google.com (Filipe Almeida)'
+
+class OrderedDict:
+ """Ordered dictionary implementation."""
+
+ # Define the minimum functionality we need for our application.
+ # Easiser would be to subclass from UserDict.DictMixin, and only
+ # define __getitem__, __setitem__, __delitem__, and keys, but that's
+ # not as portable. We don't need to define much more, so we just do.
+
+ def __init__(self):
+ self._dict = {}
+ self._keys = []
+
+ def __getitem__(self, key):
+ return self._dict[key]
+
+ def __setitem__(self, key, value):
+ if key not in self._keys:
+ self._keys.append(key)
+ self._dict[key] = value
+
+ def __delitem__(self, key):
+ self._keys.remove(key)
+ del self._dict[key]
+
+ def keys(self):
+ return self._keys
+
+ # Below are all we have to define in addition to what DictMixin would need
+ def __len__(self):
+ return len(self.keys())
+
+ def __contains__(self, key):
+ return self.has_key(key)
+
+ def __iter__(self):
+ # It's not as portable -- though it would be more space-efficient -- to do
+ # for k in self.keys(): yield k
+ return iter(self.keys())
+
+class State(object):
+ """Contains information about a specific state."""
+
+ def __init__(self):
+ pass
+
+ name = None
+ external_name = None
+ transitions = []
+
+
+class Transition(object):
+ """Contains information about a specific transition."""
+
+ def __init__(self, condition, source, destination):
+ self.condition = condition
+ self.source = source
+ self.destination = destination
+
+
+class FSMConfig(object):
+ """Container for the statemachine definition."""
+
+ sm = {} # dictionary that contains the finite state machine definition
+ # loaded from a config file.
+ transitions = [] # List of transitions.
+ conditions = {} # Mapping between the condition name and the bracket
+ # expression.
+ states = OrderedDict() # Ordered dictionary of states.
+ name = None
+ comment = None
+
+ def AddState(self, **dic):
+ """Called from the definition file with the description of the state.
+
+ Receives a dictionary and populates internal structures based on it. The
+ dictionary is in the following format:
+
+ {'name': state_name,
+ 'external': exposed state name,
+ 'transitions': [
+ [condition, destination_state ],
+ [condition, destination_state ]
+ ]
+ }
+
+ """
+
+ state = State()
+ state.name = dic['name']
+ state.external_name = dic['external']
+
+ state_transitions = []
+
+ for (condition, destination) in dic['transitions']:
+ transition = Transition(condition, state.name, destination)
+ state_transitions.append(transition)
+
+ self.transitions.extend(state_transitions)
+ state.transitions = state_transitions
+ self.states[state.name] = state
+
+ def AddCondition(self, name, expression):
+ """Called from the definition file with the definition of a condition.
+
+ Receives the name of the condition and it's expression.
+ """
+ self.conditions[name] = expression
+
+ def Load(self, filename):
+ """Load the state machine definition file.
+
+ In the definition file, which is based on the python syntax, the following
+ variables and functions are defined.
+
+ name: Name of the state machine
+ comment: Comment line on the generated file.
+ condition(): A mapping between condition names and bracket expressions.
+ state(): Defines a state and it's transitions. It accepts the following
+ attributes:
+ name: name of the state
+ external: exported name of the state. The exported name can be used
+ multiple times in order to create a super state.
+ transitions: List of pairs containing the condition for the transition
+ and the destination state. Transitions are ordered so if
+ a default rule is used, it must be the last one in the list.
+
+ Example:
+
+ name = 'c comment parser'
+
+ condition('/', '/')
+ condition('*', '*')
+ condition('linefeed', '\\n')
+ condition('default', '[:default:]')
+
+ state(name = 'text',
+ external = 'comment',
+ transitions = [
+ [ '/', 'comment_start' ],
+ [ 'default', 'text' ]
+ ])
+
+ state(name = 'comment_start',
+ external = 'comment',
+ transitions = [
+ [ '/', 'comment_line' ],
+ [ '*', 'comment_multiline' ],
+ [ 'default', 'text' ]
+ ])
+
+ state(name = 'comment_line',
+ external = 'comment',
+ transitions = [
+ [ 'linefeed', 'text' ],
+ [ 'default', 'comment_line' ]
+ ])
+
+ state(name = 'comment_multiline',
+ external = 'comment',
+ transitions = [
+ [ '*', 'comment_multiline_close' ],
+ [ 'default', 'comment_multiline' ]
+ ])
+
+ state(name = 'comment_multiline_close',
+ external = 'comment',
+ transitions = [
+ [ '/', 'text' ],
+ [ 'default', 'comment_multiline' ]
+ ])
+
+ """
+
+ self.sm['state'] = self.AddState
+ self.sm['condition'] = self.AddCondition
+ execfile(filename, self.sm)
+ self.name = self.sm['name']
+ if not self.name.isalnum():
+ raise Exception("State machine name must consist of only alphanumeric"
+ "characters.")
+ self.comment = self.sm['comment']
+
+ def __init__(self):
+ pass
diff --git a/streamhtmlparser/tools/generate_fsm.py b/streamhtmlparser/tools/generate_fsm.py
new file mode 100755
index 0000000..fac54a0
--- /dev/null
+++ b/streamhtmlparser/tools/generate_fsm.py
@@ -0,0 +1,331 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# ---
+# Author: Filipe Almeida
+#
+# Generate a C include file from a finite state machine definition.
+#
+# Right now the form is the one expected by htmlparser.cc so this file is pretty
+# tightly coupled with htmlparser.cc.
+
+__author__ = 'falmeida@google.com (Filipe Almeida)'
+
+import sys
+
+from fsm_config import FSMConfig
+
+
+class FSMGenerateAbstract(object):
+
+ def __init__(self, config):
+ self._config = config
+
+ def Generate(self):
+ """Returns the generated FSM description for the specified language.
+
+ Raises a TypeError, because abstract methods can not be called.
+
+ Raises:
+ TypeError
+ """
+ raise TypeError('Abstract method %s.%s called' % (self._class.__name__,
+ self._function))
+
+
+class FSMGenerateC(FSMGenerateAbstract):
+ """Generate the C definition from a statemachien configuration object."""
+
+ TABSTOP_ = 2
+
+ def _Prefix(self):
+ """Return a c declaration prefix."""
+
+ return self._config.name.lower() + '_'
+
+ def _StateInternalC(self, st):
+ """Return the internal name of the state."""
+
+ return '%sSTATE_INT_%s' % (self._Prefix().upper(), st.upper())
+
+ def _StateExternalC(self, st):
+ """Return the external name of the state."""
+
+ return '%sSTATE_%s' % (self._Prefix().upper(), st.upper())
+
+ def _MakeTuple(self, data):
+ """Converts data to a string representation of a C tuple."""
+
+ return '{ %s }' % ', '.join(data)
+
+ def _CreateHeader(self):
+ """Print the include file header."""
+
+ out = []
+
+ if self._config.comment:
+ out.append('/* ' + self._config.comment)
+ else:
+ out.append('/* State machine definition for ' + self._config.name)
+ out.append(' * Auto generated by generate_fsm.py. Please do not edit.')
+ out.append(' */')
+
+ return '\n'.join(out)
+
+ def _ListToIndentedString(self, list):
+ indented_list = [' ' + e for e in list]
+ return ',\n'.join(indented_list)
+
+ def _CreateEnum(self, name, data):
+ """Print a c enum definition."""
+
+ return 'enum %s {\n%s\n};\n' % (name,
+ self._ListToIndentedString(data))
+
+ def _CreateStructList(self, name, type, data):
+ """Print a c flat list.
+
+ Generic function to print list in c in the form of a struct.
+
+ Args:
+ name: name of the structure.
+ type: type of the struct.
+ data: contents of the struct as a list of elements
+
+ Returns:
+ String with the generated list.
+ """
+
+ return "static const %s %s[] = {\n%s\n};\n" % (
+ type,
+ name,
+ self._ListToIndentedString(data))
+
+ def _CreateStatesEnum(self):
+ """Print the internal states enum.
+
+ Prints an enum containing all the valid states.
+
+ Returns:
+ String containing a C enumeration of the states.
+ """
+ list = [] # output list
+
+ for state in self._config.states:
+ list.append(self._StateInternalC(state))
+ return self._CreateEnum(self._Prefix() + 'state_internal_enum', list)
+
+ def _CreateStatesExternal(self):
+ """Print a struct with a mapping from internal to external states."""
+ list = [] # output list
+
+ for state_name in self._config.states:
+ list.append(self._StateExternalC(
+ self._config.states[state_name].external_name))
+
+ return self._CreateStructList(self._Prefix() + 'states_external',
+ 'int',
+ list)
+
+ def _CreateStatesInternalNames(self):
+ """Return a struct mapping internal states to a strings."""
+ out = [] # output list
+
+ for state_name in self._config.states:
+ out.append('"' + state_name + '"')
+
+ return self._CreateStructList(self._Prefix() + 'states_internal_names',
+ 'char *',
+ out)
+
+ def _CreateNumStates(self):
+ """Print a Macro defining the number of states."""
+
+ return "#define %s_NUM_STATES %s" % (self._config.name.upper(),
+ str(len(self._config.states) + 1))
+
+ def _ExpandBracketExpression(self, expression):
+ """Expand ranges in a regexp bracket expression.
+
+ Returns a string with the ranges in a bracket expression expanded.
+
+ The bracket expression is similar to grep(1) or regular expression bracket
+ expressions but it does not support the negation (^) modifier or named
+ character classes like [:alpha:] or [:alnum:].
+
+ The especial character class [:default:] will expand to all elements in the
+ ascii range.
+
+ For example, the expression 'a-c13A-D' will expand to 'abc13ABCD'.
+
+ Args:
+ expression: A regexp bracket expression. Ie: 'A-Z0-9'.
+
+ Returns:
+ A string with the ranges in the bracket expression expanded.
+ """
+
+ def ExpandRange(start, end):
+ """Return a sequence of characters between start and end.
+
+ Args:
+ start: first character of the sequence.
+ end: last character of the sequence.
+
+ Returns:
+ string containing the sequence of characters between start and end.
+ """
+ return [chr(c) for c in range(ord(start), ord(end) + 1)]
+
+ def ListNext(input_list):
+ """Pop the first element of a list.
+
+ Args:
+ input_list: python list object.
+
+ Returns:
+ First element of the list or None if the list is empty.
+ """
+ if input_list:
+ return input_list.pop(0)
+ else:
+ return None
+
+ out = [] # List containing the output
+
+ # Special case for the character class [:default:]
+ if expression == '[:default:]':
+ out = [chr(c) for c in range(0, 255)]
+ return ''.join(out)
+
+ chars = [c for c in expression] # list o characters in the expression.
+
+ current = ListNext(chars)
+ while current:
+ next = ListNext(chars)
+ if next == '-':
+ next = ListNext(chars)
+ if next:
+ out.extend(ExpandRange(current, next))
+ else:
+ out.append(current)
+ out.append('-')
+ current = ListNext(chars)
+ else:
+ out.append(current)
+ current = next
+
+ return ''.join(out)
+
+ def _CreateTransitionTable(self):
+ """Print the state transition list.
+
+ Returns a set of C structures that define the transition table for the state
+ machine. This structure is a list of lists of ints (int **). The outer list
+ indexes the source state and the inner list contains the destination state
+ for each of the possible input characters:
+
+ const int * const* transitions[source][input] == destination.
+
+ The conditions are mapped from the conditions variable.
+
+ Returns:
+ String containing the generated transition table in a C struct.
+ """
+ out = [] # output list
+ default_state = 'STATEMACHINE_ERROR'
+ state_table = {}
+
+ for state in self._config.states:
+ state_table[state] = [default_state for col in xrange(255)]
+
+ # We process the transition in reverse order while updating the table.
+ for i_transition in range(len(self._config.transitions) - 1, -1, -1):
+ transition = self._config.transitions[i_transition]
+ (condition_name, src, dst) = (transition.condition,
+ transition.source,
+ transition.destination)
+ condition = self._config.conditions[condition_name]
+ char_list = self._ExpandBracketExpression(condition)
+
+ for c in char_list:
+ state_table[src][ord(c)] = self._StateInternalC(dst)
+
+ # Create the inner lists which map input characters to destination states.
+ for state in self._config.states:
+ transition_row = []
+ for c in xrange(0, 255):
+ transition_row.append(' /* %06s */ %s' % (repr(chr(c)),
+ state_table[state][c]))
+
+ out.append(self._CreateStructList('%stransition_row_%s' %
+ (self._Prefix(),
+ state),
+ 'int',
+ transition_row))
+ out.append('\n')
+
+ # Create the outer list, which map source states to input characters.
+ out.append('static const %s %s[] = {\n' % ('int *', self._Prefix() +
+ 'state_transitions'))
+
+ row_list = [' %stransition_row_%s' %
+ (self._Prefix(), row) for row in self._config.states]
+ out.append(',\n'.join(row_list))
+ out.append('\n};\n')
+
+ return ''.join(out)
+
+ def Generate(self):
+ """Returns the generated the C include statements for the statemachine."""
+
+ print '\n'.join((self._CreateHeader(),
+ self._CreateNumStates(),
+ self._CreateStatesEnum(),
+ self._CreateStatesExternal(),
+ self._CreateStatesInternalNames(),
+ self._CreateTransitionTable()))
+
+
+def main():
+ if len(sys.argv) != 2:
+ print "usage: generate_fsm.py config_file"
+ sys.exit(1)
+
+ config = FSMConfig()
+ config.Load(sys.argv[1])
+
+ gen = FSMGenerateC(config)
+ gen.Generate()
+
+
+if __name__ == "__main__":
+ main()