/* Generated by re2c 1.0.3 */
#include <stdlib.h>
#include "chunk.h"
#include "scanners.h"

bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, bufsize_t offset)
{
	bufsize_t res;
	unsigned char *ptr = (unsigned char *)c->data;

        if (ptr == NULL || offset > c->len) {
          return 0;
        } else {
	  unsigned char lim = ptr[c->len];

	  ptr[c->len] = '\0';
	  res = scanner(ptr + offset);
	  ptr[c->len] = lim;
        }

	return res;
}



// Try to match a scheme including colon.
bufsize_t _scan_scheme(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	yych = *p;
	if (yych <= '@') goto yy2;
	if (yych <= 'Z') goto yy4;
	if (yych <= '`') goto yy2;
	if (yych <= 'z') goto yy4;
yy2:
	++p;
yy3:
	{ return 0; }
yy4:
	yych = *(marker = ++p);
	if (yych <= '/') {
		if (yych <= '+') {
			if (yych <= '*') goto yy3;
		} else {
			if (yych <= ',') goto yy3;
			if (yych >= '/') goto yy3;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '9') goto yy5;
			if (yych <= '@') goto yy3;
		} else {
			if (yych <= '`') goto yy3;
			if (yych >= '{') goto yy3;
		}
	}
yy5:
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych == '+') goto yy7;
		} else {
			if (yych != '/') goto yy7;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych >= 'A') goto yy7;
		} else {
			if (yych <= '`') goto yy6;
			if (yych <= 'z') goto yy7;
		}
	}
yy6:
	p = marker;
	goto yy3;
yy7:
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych == '+') goto yy10;
			goto yy6;
		} else {
			if (yych == '/') goto yy6;
			goto yy10;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
			goto yy10;
		} else {
			if (yych <= '`') goto yy6;
			if (yych <= 'z') goto yy10;
			goto yy6;
		}
	}
yy8:
	++p;
	{ return (bufsize_t)(p - start); }
yy10:
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy6;
		} else {
			if (yych == '/') goto yy6;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy8;
			if (yych <= '@') goto yy6;
		} else {
			if (yych <= '`') goto yy6;
			if (yych >= '{') goto yy6;
		}
	}
	yych = *++p;
	if (yych == ':') goto yy8;
	goto yy6;
}

}

// Try to match URI autolink after first <, returning number of chars matched.
bufsize_t _scan_autolink_uri(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128,   0, 128,   0, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= '@') goto yy41;
	if (yych <= 'Z') goto yy43;
	if (yych <= '`') goto yy41;
	if (yych <= 'z') goto yy43;
yy41:
	++p;
yy42:
	{ return 0; }
yy43:
	yych = *(marker = ++p);
	if (yych <= '/') {
		if (yych <= '+') {
			if (yych <= '*') goto yy42;
		} else {
			if (yych <= ',') goto yy42;
			if (yych >= '/') goto yy42;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '9') goto yy44;
			if (yych <= '@') goto yy42;
		} else {
			if (yych <= '`') goto yy42;
			if (yych >= '{') goto yy42;
		}
	}
yy44:
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych == '+') goto yy46;
		} else {
			if (yych != '/') goto yy46;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych >= 'A') goto yy46;
		} else {
			if (yych <= '`') goto yy45;
			if (yych <= 'z') goto yy46;
		}
	}
yy45:
	p = marker;
	goto yy42;
yy46:
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych == '+') goto yy49;
			goto yy45;
		} else {
			if (yych == '/') goto yy45;
			goto yy49;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
			goto yy49;
		} else {
			if (yych <= '`') goto yy45;
			if (yych <= 'z') goto yy49;
			goto yy45;
		}
	}
yy47:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy47;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '<') goto yy45;
			if (yych <= '>') goto yy50;
			goto yy45;
		} else {
			if (yych <= 0xDF) goto yy52;
			if (yych <= 0xE0) goto yy53;
			goto yy54;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy55;
			if (yych <= 0xEF) goto yy54;
			goto yy56;
		} else {
			if (yych <= 0xF3) goto yy57;
			if (yych <= 0xF4) goto yy58;
			goto yy45;
		}
	}
yy49:
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych == '+') goto yy59;
			goto yy45;
		} else {
			if (yych == '/') goto yy45;
			goto yy59;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
			goto yy59;
		} else {
			if (yych <= '`') goto yy45;
			if (yych <= 'z') goto yy59;
			goto yy45;
		}
	}
yy50:
	++p;
	{ return (bufsize_t)(p - start); }
yy52:
	yych = *++p;
	if (yych <= 0x7F) goto yy45;
	if (yych <= 0xBF) goto yy47;
	goto yy45;
yy53:
	yych = *++p;
	if (yych <= 0x9F) goto yy45;
	if (yych <= 0xBF) goto yy52;
	goto yy45;
yy54:
	yych = *++p;
	if (yych <= 0x7F) goto yy45;
	if (yych <= 0xBF) goto yy52;
	goto yy45;
yy55:
	yych = *++p;
	if (yych <= 0x7F) goto yy45;
	if (yych <= 0x9F) goto yy52;
	goto yy45;
yy56:
	yych = *++p;
	if (yych <= 0x8F) goto yy45;
	if (yych <= 0xBF) goto yy54;
	goto yy45;
yy57:
	yych = *++p;
	if (yych <= 0x7F) goto yy45;
	if (yych <= 0xBF) goto yy54;
	goto yy45;
yy58:
	yych = *++p;
	if (yych <= 0x7F) goto yy45;
	if (yych <= 0x8F) goto yy54;
	goto yy45;
yy59:
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych <= ',') {
			if (yych != '+') goto yy45;
		} else {
			if (yych == '/') goto yy45;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= ':') goto yy47;
			if (yych <= '@') goto yy45;
		} else {
			if (yych <= '`') goto yy45;
			if (yych >= '{') goto yy45;
		}
	}
	yych = *++p;
	if (yych == ':') goto yy47;
	goto yy45;
}

}

// Try to match email autolink after first <, returning num of chars matched.
bufsize_t _scan_autolink_email(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0, 128,   0, 128, 128, 128, 128, 128, 
		  0,   0, 128, 128,   0, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128,   0,   0,   0, 128,   0, 128, 
		  0, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128,   0,   0,   0, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= '9') {
		if (yych <= '\'') {
			if (yych == '!') goto yy91;
			if (yych >= '#') goto yy91;
		} else {
			if (yych <= ')') goto yy89;
			if (yych != ',') goto yy91;
		}
	} else {
		if (yych <= '?') {
			if (yych == '=') goto yy91;
			if (yych >= '?') goto yy91;
		} else {
			if (yych <= 'Z') {
				if (yych >= 'A') goto yy91;
			} else {
				if (yych <= ']') goto yy89;
				if (yych <= '~') goto yy91;
			}
		}
	}
yy89:
	++p;
yy90:
	{ return 0; }
yy91:
	yych = *(marker = ++p);
	if (yych <= ',') {
		if (yych <= '"') {
			if (yych == '!') goto yy93;
			goto yy90;
		} else {
			if (yych <= '\'') goto yy93;
			if (yych <= ')') goto yy90;
			if (yych <= '+') goto yy93;
			goto yy90;
		}
	} else {
		if (yych <= '>') {
			if (yych <= '9') goto yy93;
			if (yych == '=') goto yy93;
			goto yy90;
		} else {
			if (yych <= 'Z') goto yy93;
			if (yych <= ']') goto yy90;
			if (yych <= '~') goto yy93;
			goto yy90;
		}
	}
yy92:
	yych = *++p;
yy93:
	if (yybm[0+yych] & 128) {
		goto yy92;
	}
	if (yych <= '>') goto yy94;
	if (yych <= '@') goto yy95;
yy94:
	p = marker;
	goto yy90;
yy95:
	yych = *++p;
	if (yych <= '@') {
		if (yych <= '/') goto yy94;
		if (yych >= ':') goto yy94;
	} else {
		if (yych <= 'Z') goto yy96;
		if (yych <= '`') goto yy94;
		if (yych >= '{') goto yy94;
	}
yy96:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy98;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy98;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy98;
			goto yy94;
		}
	}
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy101;
		if (yych <= '/') goto yy94;
		goto yy102;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy102;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy102;
			goto yy94;
		}
	}
yy98:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych <= '-') goto yy101;
			goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy102;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy102;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy102;
			goto yy94;
		}
	}
yy99:
	++p;
	{ return (bufsize_t)(p - start); }
yy101:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy103;
		if (yych <= '/') goto yy94;
		goto yy104;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy104;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy104;
			goto yy94;
		}
	}
yy102:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy104;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy104;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy104;
			goto yy94;
		}
	}
yy103:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy105;
		if (yych <= '/') goto yy94;
		goto yy106;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy106;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy106;
			goto yy94;
		}
	}
yy104:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy106;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy106;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy106;
			goto yy94;
		}
	}
yy105:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy107;
		if (yych <= '/') goto yy94;
		goto yy108;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy108;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy108;
			goto yy94;
		}
	}
yy106:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy108;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy108;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy108;
			goto yy94;
		}
	}
yy107:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy109;
		if (yych <= '/') goto yy94;
		goto yy110;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy110;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy110;
			goto yy94;
		}
	}
yy108:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy110;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy110;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy110;
			goto yy94;
		}
	}
yy109:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy111;
		if (yych <= '/') goto yy94;
		goto yy112;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy112;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy112;
			goto yy94;
		}
	}
yy110:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy112;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy112;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy112;
			goto yy94;
		}
	}
yy111:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy113;
		if (yych <= '/') goto yy94;
		goto yy114;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy114;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy114;
			goto yy94;
		}
	}
yy112:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy114;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy114;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy114;
			goto yy94;
		}
	}
yy113:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy115;
		if (yych <= '/') goto yy94;
		goto yy116;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy116;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy116;
			goto yy94;
		}
	}
yy114:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy116;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy116;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy116;
			goto yy94;
		}
	}
yy115:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy117;
		if (yych <= '/') goto yy94;
		goto yy118;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy118;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy118;
			goto yy94;
		}
	}
yy116:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy118;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy118;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy118;
			goto yy94;
		}
	}
yy117:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy119;
		if (yych <= '/') goto yy94;
		goto yy120;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy120;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy120;
			goto yy94;
		}
	}
yy118:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy120;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy120;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy120;
			goto yy94;
		}
	}
yy119:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy121;
		if (yych <= '/') goto yy94;
		goto yy122;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy122;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy122;
			goto yy94;
		}
	}
yy120:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy122;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy122;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy122;
			goto yy94;
		}
	}
yy121:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy123;
		if (yych <= '/') goto yy94;
		goto yy124;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy124;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy124;
			goto yy94;
		}
	}
yy122:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy124;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy124;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy124;
			goto yy94;
		}
	}
yy123:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy125;
		if (yych <= '/') goto yy94;
		goto yy126;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy126;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy126;
			goto yy94;
		}
	}
yy124:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy126;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy126;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy126;
			goto yy94;
		}
	}
yy125:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy127;
		if (yych <= '/') goto yy94;
		goto yy128;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy128;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy128;
			goto yy94;
		}
	}
yy126:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy128;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy128;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy128;
			goto yy94;
		}
	}
yy127:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy129;
		if (yych <= '/') goto yy94;
		goto yy130;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy130;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy130;
			goto yy94;
		}
	}
yy128:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy130;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy130;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy130;
			goto yy94;
		}
	}
yy129:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy131;
		if (yych <= '/') goto yy94;
		goto yy132;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy132;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy132;
			goto yy94;
		}
	}
yy130:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy132;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy132;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy132;
			goto yy94;
		}
	}
yy131:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy133;
		if (yych <= '/') goto yy94;
		goto yy134;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy134;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy134;
			goto yy94;
		}
	}
yy132:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy134;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy134;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy134;
			goto yy94;
		}
	}
yy133:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy135;
		if (yych <= '/') goto yy94;
		goto yy136;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy136;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy136;
			goto yy94;
		}
	}
yy134:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy136;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy136;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy136;
			goto yy94;
		}
	}
yy135:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy137;
		if (yych <= '/') goto yy94;
		goto yy138;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy138;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy138;
			goto yy94;
		}
	}
yy136:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy138;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy138;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy138;
			goto yy94;
		}
	}
yy137:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy139;
		if (yych <= '/') goto yy94;
		goto yy140;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy140;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy140;
			goto yy94;
		}
	}
yy138:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy140;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy140;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy140;
			goto yy94;
		}
	}
yy139:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy141;
		if (yych <= '/') goto yy94;
		goto yy142;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy142;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy142;
			goto yy94;
		}
	}
yy140:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy142;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy142;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy142;
			goto yy94;
		}
	}
yy141:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy143;
		if (yych <= '/') goto yy94;
		goto yy144;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy144;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy144;
			goto yy94;
		}
	}
yy142:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy144;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy144;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy144;
			goto yy94;
		}
	}
yy143:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy145;
		if (yych <= '/') goto yy94;
		goto yy146;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy146;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy146;
			goto yy94;
		}
	}
yy144:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy146;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy146;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy146;
			goto yy94;
		}
	}
yy145:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy147;
		if (yych <= '/') goto yy94;
		goto yy148;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy148;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy148;
			goto yy94;
		}
	}
yy146:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy148;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy148;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy148;
			goto yy94;
		}
	}
yy147:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy149;
		if (yych <= '/') goto yy94;
		goto yy150;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy150;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy150;
			goto yy94;
		}
	}
yy148:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy150;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy150;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy150;
			goto yy94;
		}
	}
yy149:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy151;
		if (yych <= '/') goto yy94;
		goto yy152;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy152;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy152;
			goto yy94;
		}
	}
yy150:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy152;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy152;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy152;
			goto yy94;
		}
	}
yy151:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy153;
		if (yych <= '/') goto yy94;
		goto yy154;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy154;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy154;
			goto yy94;
		}
	}
yy152:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy154;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy154;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy154;
			goto yy94;
		}
	}
yy153:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy155;
		if (yych <= '/') goto yy94;
		goto yy156;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy156;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy156;
			goto yy94;
		}
	}
yy154:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy156;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy156;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy156;
			goto yy94;
		}
	}
yy155:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy157;
		if (yych <= '/') goto yy94;
		goto yy158;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy158;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy158;
			goto yy94;
		}
	}
yy156:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy158;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy158;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy158;
			goto yy94;
		}
	}
yy157:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy159;
		if (yych <= '/') goto yy94;
		goto yy160;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy160;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy160;
			goto yy94;
		}
	}
yy158:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy160;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy160;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy160;
			goto yy94;
		}
	}
yy159:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy161;
		if (yych <= '/') goto yy94;
		goto yy162;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy162;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy162;
			goto yy94;
		}
	}
yy160:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy162;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy162;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy162;
			goto yy94;
		}
	}
yy161:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy163;
		if (yych <= '/') goto yy94;
		goto yy164;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy164;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy164;
			goto yy94;
		}
	}
yy162:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy164;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy164;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy164;
			goto yy94;
		}
	}
yy163:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy165;
		if (yych <= '/') goto yy94;
		goto yy166;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy166;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy166;
			goto yy94;
		}
	}
yy164:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy166;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy166;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy166;
			goto yy94;
		}
	}
yy165:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy167;
		if (yych <= '/') goto yy94;
		goto yy168;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy168;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy168;
			goto yy94;
		}
	}
yy166:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy168;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy168;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy168;
			goto yy94;
		}
	}
yy167:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy169;
		if (yych <= '/') goto yy94;
		goto yy170;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy170;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy170;
			goto yy94;
		}
	}
yy168:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy170;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy170;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy170;
			goto yy94;
		}
	}
yy169:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy171;
		if (yych <= '/') goto yy94;
		goto yy172;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy172;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy172;
			goto yy94;
		}
	}
yy170:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy172;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy172;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy172;
			goto yy94;
		}
	}
yy171:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy173;
		if (yych <= '/') goto yy94;
		goto yy174;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy174;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy174;
			goto yy94;
		}
	}
yy172:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy174;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy174;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy174;
			goto yy94;
		}
	}
yy173:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy175;
		if (yych <= '/') goto yy94;
		goto yy176;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy176;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy176;
			goto yy94;
		}
	}
yy174:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy176;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy176;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy176;
			goto yy94;
		}
	}
yy175:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy177;
		if (yych <= '/') goto yy94;
		goto yy178;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy178;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy178;
			goto yy94;
		}
	}
yy176:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy178;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy178;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy178;
			goto yy94;
		}
	}
yy177:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy179;
		if (yych <= '/') goto yy94;
		goto yy180;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy180;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy180;
			goto yy94;
		}
	}
yy178:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy180;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy180;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy180;
			goto yy94;
		}
	}
yy179:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy181;
		if (yych <= '/') goto yy94;
		goto yy182;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy182;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy182;
			goto yy94;
		}
	}
yy180:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy182;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy182;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy182;
			goto yy94;
		}
	}
yy181:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy183;
		if (yych <= '/') goto yy94;
		goto yy184;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy184;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy184;
			goto yy94;
		}
	}
yy182:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy184;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy184;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy184;
			goto yy94;
		}
	}
yy183:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy185;
		if (yych <= '/') goto yy94;
		goto yy186;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy186;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy186;
			goto yy94;
		}
	}
yy184:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy186;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy186;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy186;
			goto yy94;
		}
	}
yy185:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy187;
		if (yych <= '/') goto yy94;
		goto yy188;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy188;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy188;
			goto yy94;
		}
	}
yy186:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy188;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy188;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy188;
			goto yy94;
		}
	}
yy187:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy189;
		if (yych <= '/') goto yy94;
		goto yy190;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy190;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy190;
			goto yy94;
		}
	}
yy188:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy190;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy190;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy190;
			goto yy94;
		}
	}
yy189:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy191;
		if (yych <= '/') goto yy94;
		goto yy192;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy192;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy192;
			goto yy94;
		}
	}
yy190:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy192;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy192;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy192;
			goto yy94;
		}
	}
yy191:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy193;
		if (yych <= '/') goto yy94;
		goto yy194;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy194;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy194;
			goto yy94;
		}
	}
yy192:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy194;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy194;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy194;
			goto yy94;
		}
	}
yy193:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy195;
		if (yych <= '/') goto yy94;
		goto yy196;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy196;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy196;
			goto yy94;
		}
	}
yy194:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy196;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy196;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy196;
			goto yy94;
		}
	}
yy195:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy197;
		if (yych <= '/') goto yy94;
		goto yy198;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy198;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy198;
			goto yy94;
		}
	}
yy196:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy198;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy198;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy198;
			goto yy94;
		}
	}
yy197:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy199;
		if (yych <= '/') goto yy94;
		goto yy200;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy200;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy200;
			goto yy94;
		}
	}
yy198:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy200;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy200;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy200;
			goto yy94;
		}
	}
yy199:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy201;
		if (yych <= '/') goto yy94;
		goto yy202;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy202;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy202;
			goto yy94;
		}
	}
yy200:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy202;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy202;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy202;
			goto yy94;
		}
	}
yy201:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy203;
		if (yych <= '/') goto yy94;
		goto yy204;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy204;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy204;
			goto yy94;
		}
	}
yy202:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy204;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy204;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy204;
			goto yy94;
		}
	}
yy203:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy205;
		if (yych <= '/') goto yy94;
		goto yy206;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy206;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy206;
			goto yy94;
		}
	}
yy204:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy206;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy206;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy206;
			goto yy94;
		}
	}
yy205:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy207;
		if (yych <= '/') goto yy94;
		goto yy208;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy208;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy208;
			goto yy94;
		}
	}
yy206:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy208;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy208;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy208;
			goto yy94;
		}
	}
yy207:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy209;
		if (yych <= '/') goto yy94;
		goto yy210;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy210;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy210;
			goto yy94;
		}
	}
yy208:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy210;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy210;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy210;
			goto yy94;
		}
	}
yy209:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy211;
		if (yych <= '/') goto yy94;
		goto yy212;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy212;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy212;
			goto yy94;
		}
	}
yy210:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy212;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy212;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy212;
			goto yy94;
		}
	}
yy211:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy213;
		if (yych <= '/') goto yy94;
		goto yy214;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy214;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy214;
			goto yy94;
		}
	}
yy212:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy214;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy214;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy214;
			goto yy94;
		}
	}
yy213:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy215;
		if (yych <= '/') goto yy94;
		goto yy216;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy216;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy216;
			goto yy94;
		}
	}
yy214:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy216;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy216;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy216;
			goto yy94;
		}
	}
yy215:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy217;
		if (yych <= '/') goto yy94;
		goto yy218;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy218;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy218;
			goto yy94;
		}
	}
yy216:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy218;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy218;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy218;
			goto yy94;
		}
	}
yy217:
	yych = *++p;
	if (yych <= '9') {
		if (yych == '-') goto yy219;
		if (yych <= '/') goto yy94;
		goto yy220;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy94;
			goto yy220;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy220;
			goto yy94;
		}
	}
yy218:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= ',') goto yy94;
			if (yych >= '.') goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych <= '9') goto yy220;
			goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
			goto yy220;
		} else {
			if (yych <= '`') goto yy94;
			if (yych <= 'z') goto yy220;
			goto yy94;
		}
	}
yy219:
	yych = *++p;
	if (yych <= '@') {
		if (yych <= '/') goto yy94;
		if (yych <= '9') goto yy221;
		goto yy94;
	} else {
		if (yych <= 'Z') goto yy221;
		if (yych <= '`') goto yy94;
		if (yych <= 'z') goto yy221;
		goto yy94;
	}
yy220:
	yych = *++p;
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych <= '-') goto yy94;
			goto yy95;
		} else {
			if (yych <= '/') goto yy94;
			if (yych >= ':') goto yy94;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy99;
			if (yych <= '@') goto yy94;
		} else {
			if (yych <= '`') goto yy94;
			if (yych >= '{') goto yy94;
		}
	}
yy221:
	yych = *++p;
	if (yych == '.') goto yy95;
	if (yych == '>') goto yy99;
	goto yy94;
}

}

// Try to match an HTML tag after first <, returning num of chars matched.
bufsize_t _scan_html_tag(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		/* table 1 .. 8: 0 */
		  0, 250, 250, 250, 250, 250, 250, 250, 
		250, 235, 235, 235, 235, 235, 250, 250, 
		250, 250, 250, 250, 250, 250, 250, 250, 
		250, 250, 250, 250, 250, 250, 250, 250, 
		235, 250, 202, 250, 250, 250, 250, 170, 
		250, 250, 250, 250, 250, 246, 254, 250, 
		254, 254, 254, 254, 254, 254, 254, 254, 
		254, 254, 254, 250, 234, 234, 232, 250, 
		250, 254, 254, 254, 254, 254, 254, 254, 
		254, 254, 254, 254, 254, 254, 254, 254, 
		254, 254, 254, 254, 254, 254, 254, 254, 
		254, 254, 254, 250, 250, 122, 250, 254, 
		234, 254, 254, 254, 254, 254, 254, 254, 
		254, 254, 254, 254, 254, 254, 254, 254, 
		254, 254, 254, 254, 254, 254, 254, 254, 
		254, 254, 254, 250, 250, 250, 250, 250, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		/* table 9 .. 11: 256 */
		  0, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 192, 128, 128, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 128, 128, 128, 128, 128,   0, 
		128, 224, 224, 224, 224, 224, 224, 224, 
		224, 224, 224, 224, 224, 224, 224, 224, 
		224, 224, 224, 224, 224, 224, 224, 224, 
		224, 224, 224, 128, 128, 128, 128, 128, 
		128, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 128, 128, 128, 128, 128, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= '>') {
		if (yych <= '!') {
			if (yych >= '!') goto yy226;
		} else {
			if (yych == '/') goto yy227;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '?') goto yy228;
			if (yych >= 'A') goto yy229;
		} else {
			if (yych <= '`') goto yy224;
			if (yych <= 'z') goto yy229;
		}
	}
yy224:
	++p;
yy225:
	{ return 0; }
yy226:
	yych = *(marker = ++p);
	if (yybm[256+yych] & 32) {
		goto yy232;
	}
	if (yych == '-') goto yy230;
	if (yych <= '@') goto yy225;
	if (yych <= '[') goto yy234;
	goto yy225;
yy227:
	yych = *(marker = ++p);
	if (yych <= '@') goto yy225;
	if (yych <= 'Z') goto yy235;
	if (yych <= '`') goto yy225;
	if (yych <= 'z') goto yy235;
	goto yy225;
yy228:
	yych = *(marker = ++p);
	if (yych <= 0x00) goto yy225;
	if (yych <= 0x7F) goto yy238;
	if (yych <= 0xC1) goto yy225;
	if (yych <= 0xF4) goto yy238;
	goto yy225;
yy229:
	yych = *(marker = ++p);
	if (yych <= '.') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy225;
			if (yych <= '\r') goto yy250;
			goto yy225;
		} else {
			if (yych <= ' ') goto yy250;
			if (yych == '-') goto yy250;
			goto yy225;
		}
	} else {
		if (yych <= '@') {
			if (yych <= '9') goto yy250;
			if (yych == '>') goto yy250;
			goto yy225;
		} else {
			if (yych <= 'Z') goto yy250;
			if (yych <= '`') goto yy225;
			if (yych <= 'z') goto yy250;
			goto yy225;
		}
	}
yy230:
	yych = *++p;
	if (yych == '-') goto yy254;
yy231:
	p = marker;
	goto yy225;
yy232:
	yych = *++p;
	if (yybm[256+yych] & 32) {
		goto yy232;
	}
	if (yych <= 0x08) goto yy231;
	if (yych <= '\r') goto yy255;
	if (yych == ' ') goto yy255;
	goto yy231;
yy234:
	yych = *++p;
	if (yych == 'C') goto yy257;
	if (yych == 'c') goto yy257;
	goto yy231;
yy235:
	yych = *++p;
	if (yybm[256+yych] & 64) {
		goto yy235;
	}
	if (yych <= 0x1F) {
		if (yych <= 0x08) goto yy231;
		if (yych <= '\r') goto yy258;
		goto yy231;
	} else {
		if (yych <= ' ') goto yy258;
		if (yych == '>') goto yy252;
		goto yy231;
	}
yy237:
	yych = *++p;
yy238:
	if (yybm[256+yych] & 128) {
		goto yy237;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy231;
			if (yych >= '@') goto yy231;
		} else {
			if (yych <= 0xDF) goto yy240;
			if (yych <= 0xE0) goto yy241;
			goto yy242;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy243;
			if (yych <= 0xEF) goto yy242;
			goto yy244;
		} else {
			if (yych <= 0xF3) goto yy245;
			if (yych <= 0xF4) goto yy246;
			goto yy231;
		}
	}
	yych = *++p;
	if (yych <= 0xE0) {
		if (yych <= '>') {
			if (yych <= 0x00) goto yy231;
			if (yych <= '=') goto yy237;
			goto yy252;
		} else {
			if (yych <= 0x7F) goto yy237;
			if (yych <= 0xC1) goto yy231;
			if (yych >= 0xE0) goto yy241;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy243;
			goto yy242;
		} else {
			if (yych <= 0xF0) goto yy244;
			if (yych <= 0xF3) goto yy245;
			if (yych <= 0xF4) goto yy246;
			goto yy231;
		}
	}
yy240:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy237;
	goto yy231;
yy241:
	yych = *++p;
	if (yych <= 0x9F) goto yy231;
	if (yych <= 0xBF) goto yy240;
	goto yy231;
yy242:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy240;
	goto yy231;
yy243:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x9F) goto yy240;
	goto yy231;
yy244:
	yych = *++p;
	if (yych <= 0x8F) goto yy231;
	if (yych <= 0xBF) goto yy242;
	goto yy231;
yy245:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy242;
	goto yy231;
yy246:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x8F) goto yy242;
	goto yy231;
yy247:
	yych = *++p;
	if (yybm[0+yych] & 1) {
		goto yy247;
	}
	if (yych <= '>') {
		if (yych <= '9') {
			if (yych == '/') goto yy251;
			goto yy231;
		} else {
			if (yych <= ':') goto yy260;
			if (yych <= '=') goto yy231;
			goto yy252;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy231;
			if (yych <= 'Z') goto yy260;
			goto yy231;
		} else {
			if (yych == '`') goto yy231;
			if (yych <= 'z') goto yy260;
			goto yy231;
		}
	}
yy249:
	yych = *++p;
yy250:
	if (yybm[0+yych] & 1) {
		goto yy247;
	}
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych == '-') goto yy249;
			goto yy231;
		} else {
			if (yych <= '/') goto yy251;
			if (yych <= '9') goto yy249;
			goto yy231;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy252;
			if (yych <= '@') goto yy231;
			goto yy249;
		} else {
			if (yych <= '`') goto yy231;
			if (yych <= 'z') goto yy249;
			goto yy231;
		}
	}
yy251:
	yych = *++p;
	if (yych != '>') goto yy231;
yy252:
	++p;
	{ return (bufsize_t)(p - start); }
yy254:
	yych = *++p;
	if (yych == '-') goto yy264;
	if (yych == '>') goto yy231;
	goto yy263;
yy255:
	yych = *++p;
	if (yybm[0+yych] & 2) {
		goto yy255;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy231;
			if (yych <= '>') goto yy252;
			goto yy231;
		} else {
			if (yych <= 0xDF) goto yy272;
			if (yych <= 0xE0) goto yy273;
			goto yy274;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy275;
			if (yych <= 0xEF) goto yy274;
			goto yy276;
		} else {
			if (yych <= 0xF3) goto yy277;
			if (yych <= 0xF4) goto yy278;
			goto yy231;
		}
	}
yy257:
	yych = *++p;
	if (yych == 'D') goto yy279;
	if (yych == 'd') goto yy279;
	goto yy231;
yy258:
	yych = *++p;
	if (yych <= 0x1F) {
		if (yych <= 0x08) goto yy231;
		if (yych <= '\r') goto yy258;
		goto yy231;
	} else {
		if (yych <= ' ') goto yy258;
		if (yych == '>') goto yy252;
		goto yy231;
	}
yy260:
	yych = *++p;
	if (yybm[0+yych] & 4) {
		goto yy260;
	}
	if (yych <= ',') {
		if (yych <= '\r') {
			if (yych <= 0x08) goto yy231;
			goto yy280;
		} else {
			if (yych == ' ') goto yy280;
			goto yy231;
		}
	} else {
		if (yych <= '<') {
			if (yych <= '/') goto yy251;
			goto yy231;
		} else {
			if (yych <= '=') goto yy282;
			if (yych <= '>') goto yy252;
			goto yy231;
		}
	}
yy262:
	yych = *++p;
yy263:
	if (yybm[0+yych] & 8) {
		goto yy262;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy231;
			if (yych <= '-') goto yy284;
			goto yy231;
		} else {
			if (yych <= 0xDF) goto yy265;
			if (yych <= 0xE0) goto yy266;
			goto yy267;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy268;
			if (yych <= 0xEF) goto yy267;
			goto yy269;
		} else {
			if (yych <= 0xF3) goto yy270;
			if (yych <= 0xF4) goto yy271;
			goto yy231;
		}
	}
yy264:
	yych = *++p;
	if (yych == '-') goto yy251;
	if (yych == '>') goto yy231;
	goto yy263;
yy265:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy262;
	goto yy231;
yy266:
	yych = *++p;
	if (yych <= 0x9F) goto yy231;
	if (yych <= 0xBF) goto yy265;
	goto yy231;
yy267:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy265;
	goto yy231;
yy268:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x9F) goto yy265;
	goto yy231;
yy269:
	yych = *++p;
	if (yych <= 0x8F) goto yy231;
	if (yych <= 0xBF) goto yy267;
	goto yy231;
yy270:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy267;
	goto yy231;
yy271:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x8F) goto yy267;
	goto yy231;
yy272:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy255;
	goto yy231;
yy273:
	yych = *++p;
	if (yych <= 0x9F) goto yy231;
	if (yych <= 0xBF) goto yy272;
	goto yy231;
yy274:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy272;
	goto yy231;
yy275:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x9F) goto yy272;
	goto yy231;
yy276:
	yych = *++p;
	if (yych <= 0x8F) goto yy231;
	if (yych <= 0xBF) goto yy274;
	goto yy231;
yy277:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy274;
	goto yy231;
yy278:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x8F) goto yy274;
	goto yy231;
yy279:
	yych = *++p;
	if (yych == 'A') goto yy285;
	if (yych == 'a') goto yy285;
	goto yy231;
yy280:
	yych = *++p;
	if (yych <= '<') {
		if (yych <= ' ') {
			if (yych <= 0x08) goto yy231;
			if (yych <= '\r') goto yy280;
			if (yych <= 0x1F) goto yy231;
			goto yy280;
		} else {
			if (yych <= '/') {
				if (yych <= '.') goto yy231;
				goto yy251;
			} else {
				if (yych == ':') goto yy260;
				goto yy231;
			}
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '=') goto yy282;
			if (yych <= '>') goto yy252;
			if (yych <= '@') goto yy231;
			goto yy260;
		} else {
			if (yych <= '_') {
				if (yych <= '^') goto yy231;
				goto yy260;
			} else {
				if (yych <= '`') goto yy231;
				if (yych <= 'z') goto yy260;
				goto yy231;
			}
		}
	}
yy282:
	yych = *++p;
	if (yybm[0+yych] & 16) {
		goto yy286;
	}
	if (yych <= 0xE0) {
		if (yych <= '"') {
			if (yych <= 0x00) goto yy231;
			if (yych <= ' ') goto yy282;
			goto yy288;
		} else {
			if (yych <= '\'') goto yy290;
			if (yych <= 0xC1) goto yy231;
			if (yych <= 0xDF) goto yy292;
			goto yy293;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy295;
			goto yy294;
		} else {
			if (yych <= 0xF0) goto yy296;
			if (yych <= 0xF3) goto yy297;
			if (yych <= 0xF4) goto yy298;
			goto yy231;
		}
	}
yy284:
	yych = *++p;
	if (yybm[0+yych] & 8) {
		goto yy262;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy231;
			if (yych <= '-') goto yy251;
			goto yy231;
		} else {
			if (yych <= 0xDF) goto yy265;
			if (yych <= 0xE0) goto yy266;
			goto yy267;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy268;
			if (yych <= 0xEF) goto yy267;
			goto yy269;
		} else {
			if (yych <= 0xF3) goto yy270;
			if (yych <= 0xF4) goto yy271;
			goto yy231;
		}
	}
yy285:
	yych = *++p;
	if (yych == 'T') goto yy299;
	if (yych == 't') goto yy299;
	goto yy231;
yy286:
	yych = *++p;
	if (yybm[0+yych] & 16) {
		goto yy286;
	}
	if (yych <= 0xE0) {
		if (yych <= '=') {
			if (yych <= 0x00) goto yy231;
			if (yych <= ' ') goto yy247;
			goto yy231;
		} else {
			if (yych <= '>') goto yy252;
			if (yych <= 0xC1) goto yy231;
			if (yych <= 0xDF) goto yy292;
			goto yy293;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy295;
			goto yy294;
		} else {
			if (yych <= 0xF0) goto yy296;
			if (yych <= 0xF3) goto yy297;
			if (yych <= 0xF4) goto yy298;
			goto yy231;
		}
	}
yy288:
	yych = *++p;
	if (yybm[0+yych] & 32) {
		goto yy288;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy231;
			if (yych <= '"') goto yy300;
			goto yy231;
		} else {
			if (yych <= 0xDF) goto yy301;
			if (yych <= 0xE0) goto yy302;
			goto yy303;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy304;
			if (yych <= 0xEF) goto yy303;
			goto yy305;
		} else {
			if (yych <= 0xF3) goto yy306;
			if (yych <= 0xF4) goto yy307;
			goto yy231;
		}
	}
yy290:
	yych = *++p;
	if (yybm[0+yych] & 64) {
		goto yy290;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy231;
			if (yych <= '\'') goto yy300;
			goto yy231;
		} else {
			if (yych <= 0xDF) goto yy308;
			if (yych <= 0xE0) goto yy309;
			goto yy310;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy311;
			if (yych <= 0xEF) goto yy310;
			goto yy312;
		} else {
			if (yych <= 0xF3) goto yy313;
			if (yych <= 0xF4) goto yy314;
			goto yy231;
		}
	}
yy292:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy286;
	goto yy231;
yy293:
	yych = *++p;
	if (yych <= 0x9F) goto yy231;
	if (yych <= 0xBF) goto yy292;
	goto yy231;
yy294:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy292;
	goto yy231;
yy295:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x9F) goto yy292;
	goto yy231;
yy296:
	yych = *++p;
	if (yych <= 0x8F) goto yy231;
	if (yych <= 0xBF) goto yy294;
	goto yy231;
yy297:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy294;
	goto yy231;
yy298:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x8F) goto yy294;
	goto yy231;
yy299:
	yych = *++p;
	if (yych == 'A') goto yy315;
	if (yych == 'a') goto yy315;
	goto yy231;
yy300:
	yych = *++p;
	if (yybm[0+yych] & 1) {
		goto yy247;
	}
	if (yych == '/') goto yy251;
	if (yych == '>') goto yy252;
	goto yy231;
yy301:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy288;
	goto yy231;
yy302:
	yych = *++p;
	if (yych <= 0x9F) goto yy231;
	if (yych <= 0xBF) goto yy301;
	goto yy231;
yy303:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy301;
	goto yy231;
yy304:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x9F) goto yy301;
	goto yy231;
yy305:
	yych = *++p;
	if (yych <= 0x8F) goto yy231;
	if (yych <= 0xBF) goto yy303;
	goto yy231;
yy306:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy303;
	goto yy231;
yy307:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x8F) goto yy303;
	goto yy231;
yy308:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy290;
	goto yy231;
yy309:
	yych = *++p;
	if (yych <= 0x9F) goto yy231;
	if (yych <= 0xBF) goto yy308;
	goto yy231;
yy310:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy308;
	goto yy231;
yy311:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x9F) goto yy308;
	goto yy231;
yy312:
	yych = *++p;
	if (yych <= 0x8F) goto yy231;
	if (yych <= 0xBF) goto yy310;
	goto yy231;
yy313:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy310;
	goto yy231;
yy314:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x8F) goto yy310;
	goto yy231;
yy315:
	yych = *++p;
	if (yych != '[') goto yy231;
yy316:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy316;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy231;
			if (yych >= '^') goto yy231;
		} else {
			if (yych <= 0xDF) goto yy319;
			if (yych <= 0xE0) goto yy320;
			goto yy321;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy322;
			if (yych <= 0xEF) goto yy321;
			goto yy323;
		} else {
			if (yych <= 0xF3) goto yy324;
			if (yych <= 0xF4) goto yy325;
			goto yy231;
		}
	}
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy316;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy231;
			if (yych <= ']') goto yy326;
			goto yy231;
		} else {
			if (yych <= 0xDF) goto yy319;
			if (yych <= 0xE0) goto yy320;
			goto yy321;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy322;
			if (yych <= 0xEF) goto yy321;
			goto yy323;
		} else {
			if (yych <= 0xF3) goto yy324;
			if (yych <= 0xF4) goto yy325;
			goto yy231;
		}
	}
yy319:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy316;
	goto yy231;
yy320:
	yych = *++p;
	if (yych <= 0x9F) goto yy231;
	if (yych <= 0xBF) goto yy319;
	goto yy231;
yy321:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy319;
	goto yy231;
yy322:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x9F) goto yy319;
	goto yy231;
yy323:
	yych = *++p;
	if (yych <= 0x8F) goto yy231;
	if (yych <= 0xBF) goto yy321;
	goto yy231;
yy324:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0xBF) goto yy321;
	goto yy231;
yy325:
	yych = *++p;
	if (yych <= 0x7F) goto yy231;
	if (yych <= 0x8F) goto yy321;
	goto yy231;
yy326:
	yych = *++p;
	if (yych <= 0xE0) {
		if (yych <= '>') {
			if (yych <= 0x00) goto yy231;
			if (yych <= '=') goto yy316;
			goto yy252;
		} else {
			if (yych <= 0x7F) goto yy316;
			if (yych <= 0xC1) goto yy231;
			if (yych <= 0xDF) goto yy319;
			goto yy320;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy322;
			goto yy321;
		} else {
			if (yych <= 0xF0) goto yy323;
			if (yych <= 0xF3) goto yy324;
			if (yych <= 0xF4) goto yy325;
			goto yy231;
		}
	}
}

}

// Try to (liberally) match an HTML tag after first <, returning num of chars matched.
bufsize_t _scan_liberal_html_tag(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[] = {
		  0,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,   0,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64, 128,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= 0xE0) {
		if (yych <= '\n') {
			if (yych <= 0x00) goto yy329;
			if (yych <= '\t') goto yy331;
		} else {
			if (yych <= 0x7F) goto yy331;
			if (yych <= 0xC1) goto yy329;
			if (yych <= 0xDF) goto yy332;
			goto yy333;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy335;
			goto yy334;
		} else {
			if (yych <= 0xF0) goto yy336;
			if (yych <= 0xF3) goto yy337;
			if (yych <= 0xF4) goto yy338;
		}
	}
yy329:
	++p;
yy330:
	{ return 0; }
yy331:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= '\n') {
		if (yych <= 0x00) goto yy330;
		if (yych <= '\t') goto yy340;
		goto yy330;
	} else {
		if (yych <= 0x7F) goto yy340;
		if (yych <= 0xC1) goto yy330;
		if (yych <= 0xF4) goto yy340;
		goto yy330;
	}
yy332:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy330;
	if (yych <= 0xBF) goto yy339;
	goto yy330;
yy333:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x9F) goto yy330;
	if (yych <= 0xBF) goto yy345;
	goto yy330;
yy334:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy330;
	if (yych <= 0xBF) goto yy345;
	goto yy330;
yy335:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy330;
	if (yych <= 0x9F) goto yy345;
	goto yy330;
yy336:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x8F) goto yy330;
	if (yych <= 0xBF) goto yy347;
	goto yy330;
yy337:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy330;
	if (yych <= 0xBF) goto yy347;
	goto yy330;
yy338:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy330;
	if (yych <= 0x8F) goto yy347;
	goto yy330;
yy339:
	yych = *++p;
yy340:
	if (yybm[0+yych] & 64) {
		goto yy339;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy341;
			if (yych <= '>') goto yy342;
		} else {
			if (yych <= 0xDF) goto yy345;
			if (yych <= 0xE0) goto yy346;
			goto yy347;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy348;
			if (yych <= 0xEF) goto yy347;
			goto yy349;
		} else {
			if (yych <= 0xF3) goto yy350;
			if (yych <= 0xF4) goto yy351;
		}
	}
yy341:
	p = marker;
	if (yyaccept == 0) {
		goto yy330;
	} else {
		goto yy344;
	}
yy342:
	yyaccept = 1;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 64) {
		goto yy339;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy344;
			if (yych <= '>') goto yy342;
		} else {
			if (yych <= 0xDF) goto yy345;
			if (yych <= 0xE0) goto yy346;
			goto yy347;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy348;
			if (yych <= 0xEF) goto yy347;
			goto yy349;
		} else {
			if (yych <= 0xF3) goto yy350;
			if (yych <= 0xF4) goto yy351;
		}
	}
yy344:
	{ return (bufsize_t)(p - start); }
yy345:
	yych = *++p;
	if (yych <= 0x7F) goto yy341;
	if (yych <= 0xBF) goto yy339;
	goto yy341;
yy346:
	yych = *++p;
	if (yych <= 0x9F) goto yy341;
	if (yych <= 0xBF) goto yy345;
	goto yy341;
yy347:
	yych = *++p;
	if (yych <= 0x7F) goto yy341;
	if (yych <= 0xBF) goto yy345;
	goto yy341;
yy348:
	yych = *++p;
	if (yych <= 0x7F) goto yy341;
	if (yych <= 0x9F) goto yy345;
	goto yy341;
yy349:
	yych = *++p;
	if (yych <= 0x8F) goto yy341;
	if (yych <= 0xBF) goto yy347;
	goto yy341;
yy350:
	yych = *++p;
	if (yych <= 0x7F) goto yy341;
	if (yych <= 0xBF) goto yy347;
	goto yy341;
yy351:
	yych = *++p;
	if (yych <= 0x7F) goto yy341;
	if (yych <= 0x8F) goto yy347;
	goto yy341;
}

}

// Try to match an HTML block tag start line, returning
// an integer code for the type of block (1-6, matching the spec).
// #7 is handled by a separate function, below.
bufsize_t _scan_html_block_start(const unsigned char *p)
{
  const unsigned char *marker = NULL;

{
	unsigned char yych;
	yych = *p;
	if (yych == '<') goto yy356;
	++p;
yy355:
	{ return 0; }
yy356:
	yych = *(marker = ++p);
	switch (yych) {
	case '!':	goto yy357;
	case '/':	goto yy359;
	case '?':	goto yy360;
	case 'A':
	case 'a':	goto yy362;
	case 'B':
	case 'b':	goto yy363;
	case 'C':
	case 'c':	goto yy364;
	case 'D':
	case 'd':	goto yy365;
	case 'F':
	case 'f':	goto yy366;
	case 'H':
	case 'h':	goto yy367;
	case 'I':
	case 'i':	goto yy368;
	case 'L':
	case 'l':	goto yy369;
	case 'M':
	case 'm':	goto yy370;
	case 'N':
	case 'n':	goto yy371;
	case 'O':
	case 'o':	goto yy372;
	case 'P':
	case 'p':	goto yy373;
	case 'S':
	case 's':	goto yy374;
	case 'T':
	case 't':	goto yy375;
	case 'U':
	case 'u':	goto yy376;
	default:	goto yy355;
	}
yy357:
	yych = *++p;
	if (yych <= '@') {
		if (yych == '-') goto yy377;
	} else {
		if (yych <= 'Z') goto yy378;
		if (yych <= '[') goto yy380;
	}
yy358:
	p = marker;
	goto yy355;
yy359:
	yych = *++p;
	switch (yych) {
	case 'A':
	case 'a':	goto yy362;
	case 'B':
	case 'b':	goto yy363;
	case 'C':
	case 'c':	goto yy364;
	case 'D':
	case 'd':	goto yy365;
	case 'F':
	case 'f':	goto yy366;
	case 'H':
	case 'h':	goto yy367;
	case 'I':
	case 'i':	goto yy368;
	case 'L':
	case 'l':	goto yy369;
	case 'M':
	case 'm':	goto yy370;
	case 'N':
	case 'n':	goto yy371;
	case 'O':
	case 'o':	goto yy372;
	case 'P':
	case 'p':	goto yy381;
	case 'S':
	case 's':	goto yy382;
	case 'T':
	case 't':	goto yy375;
	case 'U':
	case 'u':	goto yy376;
	default:	goto yy358;
	}
yy360:
	++p;
	{ return 3; }
yy362:
	yych = *++p;
	if (yych <= 'S') {
		if (yych <= 'D') {
			if (yych <= 'C') goto yy358;
			goto yy383;
		} else {
			if (yych <= 'Q') goto yy358;
			if (yych <= 'R') goto yy384;
			goto yy385;
		}
	} else {
		if (yych <= 'q') {
			if (yych == 'd') goto yy383;
			goto yy358;
		} else {
			if (yych <= 'r') goto yy384;
			if (yych <= 's') goto yy385;
			goto yy358;
		}
	}
yy363:
	yych = *++p;
	if (yych <= 'O') {
		if (yych <= 'K') {
			if (yych == 'A') goto yy386;
			goto yy358;
		} else {
			if (yych <= 'L') goto yy387;
			if (yych <= 'N') goto yy358;
			goto yy388;
		}
	} else {
		if (yych <= 'k') {
			if (yych == 'a') goto yy386;
			goto yy358;
		} else {
			if (yych <= 'l') goto yy387;
			if (yych == 'o') goto yy388;
			goto yy358;
		}
	}
yy364:
	yych = *++p;
	if (yych <= 'O') {
		if (yych <= 'D') {
			if (yych == 'A') goto yy389;
			goto yy358;
		} else {
			if (yych <= 'E') goto yy390;
			if (yych <= 'N') goto yy358;
			goto yy391;
		}
	} else {
		if (yych <= 'd') {
			if (yych == 'a') goto yy389;
			goto yy358;
		} else {
			if (yych <= 'e') goto yy390;
			if (yych == 'o') goto yy391;
			goto yy358;
		}
	}
yy365:
	yych = *++p;
	switch (yych) {
	case 'D':
	case 'L':
	case 'T':
	case 'd':
	case 'l':
	case 't':	goto yy392;
	case 'E':
	case 'e':	goto yy393;
	case 'I':
	case 'i':	goto yy394;
	default:	goto yy358;
	}
yy366:
	yych = *++p;
	if (yych <= 'R') {
		if (yych <= 'N') {
			if (yych == 'I') goto yy395;
			goto yy358;
		} else {
			if (yych <= 'O') goto yy396;
			if (yych <= 'Q') goto yy358;
			goto yy397;
		}
	} else {
		if (yych <= 'n') {
			if (yych == 'i') goto yy395;
			goto yy358;
		} else {
			if (yych <= 'o') goto yy396;
			if (yych == 'r') goto yy397;
			goto yy358;
		}
	}
yy367:
	yych = *++p;
	if (yych <= 'S') {
		if (yych <= 'D') {
			if (yych <= '0') goto yy358;
			if (yych <= '6') goto yy392;
			goto yy358;
		} else {
			if (yych <= 'E') goto yy398;
			if (yych == 'R') goto yy392;
			goto yy358;
		}
	} else {
		if (yych <= 'q') {
			if (yych <= 'T') goto yy399;
			if (yych == 'e') goto yy398;
			goto yy358;
		} else {
			if (yych <= 'r') goto yy392;
			if (yych == 't') goto yy399;
			goto yy358;
		}
	}
yy368:
	yych = *++p;
	if (yych == 'F') goto yy400;
	if (yych == 'f') goto yy400;
	goto yy358;
yy369:
	yych = *++p;
	if (yych <= 'I') {
		if (yych == 'E') goto yy401;
		if (yych <= 'H') goto yy358;
		goto yy402;
	} else {
		if (yych <= 'e') {
			if (yych <= 'd') goto yy358;
			goto yy401;
		} else {
			if (yych == 'i') goto yy402;
			goto yy358;
		}
	}
yy370:
	yych = *++p;
	if (yych <= 'E') {
		if (yych == 'A') goto yy403;
		if (yych <= 'D') goto yy358;
		goto yy404;
	} else {
		if (yych <= 'a') {
			if (yych <= '`') goto yy358;
			goto yy403;
		} else {
			if (yych == 'e') goto yy404;
			goto yy358;
		}
	}
yy371:
	yych = *++p;
	if (yych <= 'O') {
		if (yych == 'A') goto yy405;
		if (yych <= 'N') goto yy358;
		goto yy406;
	} else {
		if (yych <= 'a') {
			if (yych <= '`') goto yy358;
			goto yy405;
		} else {
			if (yych == 'o') goto yy406;
			goto yy358;
		}
	}
yy372:
	yych = *++p;
	if (yych <= 'P') {
		if (yych == 'L') goto yy392;
		if (yych <= 'O') goto yy358;
		goto yy407;
	} else {
		if (yych <= 'l') {
			if (yych <= 'k') goto yy358;
			goto yy392;
		} else {
			if (yych == 'p') goto yy407;
			goto yy358;
		}
	}
yy373:
	yych = *++p;
	if (yych <= '>') {
		if (yych <= ' ') {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			if (yych <= 0x1F) goto yy358;
			goto yy408;
		} else {
			if (yych == '/') goto yy410;
			if (yych <= '=') goto yy358;
			goto yy408;
		}
	} else {
		if (yych <= 'R') {
			if (yych == 'A') goto yy411;
			if (yych <= 'Q') goto yy358;
			goto yy412;
		} else {
			if (yych <= 'a') {
				if (yych <= '`') goto yy358;
				goto yy411;
			} else {
				if (yych == 'r') goto yy412;
				goto yy358;
			}
		}
	}
yy374:
	yych = *++p;
	switch (yych) {
	case 'C':
	case 'c':	goto yy413;
	case 'E':
	case 'e':	goto yy414;
	case 'O':
	case 'o':	goto yy415;
	case 'T':
	case 't':	goto yy416;
	case 'U':
	case 'u':	goto yy417;
	default:	goto yy358;
	}
yy375:
	yych = *++p;
	switch (yych) {
	case 'A':
	case 'a':	goto yy418;
	case 'B':
	case 'b':	goto yy419;
	case 'D':
	case 'd':	goto yy392;
	case 'F':
	case 'f':	goto yy420;
	case 'H':
	case 'h':	goto yy421;
	case 'I':
	case 'i':	goto yy422;
	case 'R':
	case 'r':	goto yy423;
	default:	goto yy358;
	}
yy376:
	yych = *++p;
	if (yych == 'L') goto yy392;
	if (yych == 'l') goto yy392;
	goto yy358;
yy377:
	yych = *++p;
	if (yych == '-') goto yy424;
	goto yy358;
yy378:
	++p;
	{ return 4; }
yy380:
	yych = *++p;
	if (yych == 'C') goto yy426;
	if (yych == 'c') goto yy426;
	goto yy358;
yy381:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			goto yy358;
		} else {
			if (yych <= ' ') goto yy408;
			if (yych <= '.') goto yy358;
			goto yy410;
		}
	} else {
		if (yych <= '@') {
			if (yych == '>') goto yy408;
			goto yy358;
		} else {
			if (yych <= 'A') goto yy411;
			if (yych == 'a') goto yy411;
			goto yy358;
		}
	}
yy382:
	yych = *++p;
	if (yych <= 'U') {
		if (yych <= 'N') {
			if (yych == 'E') goto yy414;
			goto yy358;
		} else {
			if (yych <= 'O') goto yy415;
			if (yych <= 'T') goto yy358;
			goto yy417;
		}
	} else {
		if (yych <= 'n') {
			if (yych == 'e') goto yy414;
			goto yy358;
		} else {
			if (yych <= 'o') goto yy415;
			if (yych == 'u') goto yy417;
			goto yy358;
		}
	}
yy383:
	yych = *++p;
	if (yych == 'D') goto yy427;
	if (yych == 'd') goto yy427;
	goto yy358;
yy384:
	yych = *++p;
	if (yych == 'T') goto yy428;
	if (yych == 't') goto yy428;
	goto yy358;
yy385:
	yych = *++p;
	if (yych == 'I') goto yy429;
	if (yych == 'i') goto yy429;
	goto yy358;
yy386:
	yych = *++p;
	if (yych == 'S') goto yy430;
	if (yych == 's') goto yy430;
	goto yy358;
yy387:
	yych = *++p;
	if (yych == 'O') goto yy431;
	if (yych == 'o') goto yy431;
	goto yy358;
yy388:
	yych = *++p;
	if (yych == 'D') goto yy432;
	if (yych == 'd') goto yy432;
	goto yy358;
yy389:
	yych = *++p;
	if (yych == 'P') goto yy433;
	if (yych == 'p') goto yy433;
	goto yy358;
yy390:
	yych = *++p;
	if (yych == 'N') goto yy434;
	if (yych == 'n') goto yy434;
	goto yy358;
yy391:
	yych = *++p;
	if (yych == 'L') goto yy435;
	if (yych == 'l') goto yy435;
	goto yy358;
yy392:
	yych = *++p;
	if (yych <= ' ') {
		if (yych <= 0x08) goto yy358;
		if (yych <= '\r') goto yy408;
		if (yych <= 0x1F) goto yy358;
		goto yy408;
	} else {
		if (yych <= '/') {
			if (yych <= '.') goto yy358;
			goto yy410;
		} else {
			if (yych == '>') goto yy408;
			goto yy358;
		}
	}
yy393:
	yych = *++p;
	if (yych == 'T') goto yy436;
	if (yych == 't') goto yy436;
	goto yy358;
yy394:
	yych = *++p;
	if (yych <= 'V') {
		if (yych <= 'Q') {
			if (yych == 'A') goto yy437;
			goto yy358;
		} else {
			if (yych <= 'R') goto yy392;
			if (yych <= 'U') goto yy358;
			goto yy392;
		}
	} else {
		if (yych <= 'q') {
			if (yych == 'a') goto yy437;
			goto yy358;
		} else {
			if (yych <= 'r') goto yy392;
			if (yych == 'v') goto yy392;
			goto yy358;
		}
	}
yy395:
	yych = *++p;
	if (yych <= 'G') {
		if (yych == 'E') goto yy438;
		if (yych <= 'F') goto yy358;
		goto yy439;
	} else {
		if (yych <= 'e') {
			if (yych <= 'd') goto yy358;
			goto yy438;
		} else {
			if (yych == 'g') goto yy439;
			goto yy358;
		}
	}
yy396:
	yych = *++p;
	if (yych <= 'R') {
		if (yych == 'O') goto yy434;
		if (yych <= 'Q') goto yy358;
		goto yy440;
	} else {
		if (yych <= 'o') {
			if (yych <= 'n') goto yy358;
			goto yy434;
		} else {
			if (yych == 'r') goto yy440;
			goto yy358;
		}
	}
yy397:
	yych = *++p;
	if (yych == 'A') goto yy441;
	if (yych == 'a') goto yy441;
	goto yy358;
yy398:
	yych = *++p;
	if (yych == 'A') goto yy442;
	if (yych == 'a') goto yy442;
	goto yy358;
yy399:
	yych = *++p;
	if (yych == 'M') goto yy376;
	if (yych == 'm') goto yy376;
	goto yy358;
yy400:
	yych = *++p;
	if (yych == 'R') goto yy443;
	if (yych == 'r') goto yy443;
	goto yy358;
yy401:
	yych = *++p;
	if (yych == 'G') goto yy444;
	if (yych == 'g') goto yy444;
	goto yy358;
yy402:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			goto yy358;
		} else {
			if (yych <= ' ') goto yy408;
			if (yych <= '.') goto yy358;
			goto yy410;
		}
	} else {
		if (yych <= 'M') {
			if (yych == '>') goto yy408;
			goto yy358;
		} else {
			if (yych <= 'N') goto yy445;
			if (yych == 'n') goto yy445;
			goto yy358;
		}
	}
yy403:
	yych = *++p;
	if (yych == 'I') goto yy446;
	if (yych == 'i') goto yy446;
	goto yy358;
yy404:
	yych = *++p;
	if (yych == 'N') goto yy447;
	if (yych == 'n') goto yy447;
	goto yy358;
yy405:
	yych = *++p;
	if (yych == 'V') goto yy392;
	if (yych == 'v') goto yy392;
	goto yy358;
yy406:
	yych = *++p;
	if (yych == 'F') goto yy448;
	if (yych == 'f') goto yy448;
	goto yy358;
yy407:
	yych = *++p;
	if (yych == 'T') goto yy449;
	if (yych == 't') goto yy449;
	goto yy358;
yy408:
	++p;
	{ return 6; }
yy410:
	yych = *++p;
	if (yych == '>') goto yy408;
	goto yy358;
yy411:
	yych = *++p;
	if (yych == 'R') goto yy450;
	if (yych == 'r') goto yy450;
	goto yy358;
yy412:
	yych = *++p;
	if (yych == 'E') goto yy451;
	if (yych == 'e') goto yy451;
	goto yy358;
yy413:
	yych = *++p;
	if (yych == 'R') goto yy452;
	if (yych == 'r') goto yy452;
	goto yy358;
yy414:
	yych = *++p;
	if (yych == 'C') goto yy433;
	if (yych == 'c') goto yy433;
	goto yy358;
yy415:
	yych = *++p;
	if (yych == 'U') goto yy453;
	if (yych == 'u') goto yy453;
	goto yy358;
yy416:
	yych = *++p;
	if (yych == 'Y') goto yy454;
	if (yych == 'y') goto yy454;
	goto yy358;
yy417:
	yych = *++p;
	if (yych == 'M') goto yy455;
	if (yych == 'm') goto yy455;
	goto yy358;
yy418:
	yych = *++p;
	if (yych == 'B') goto yy456;
	if (yych == 'b') goto yy456;
	goto yy358;
yy419:
	yych = *++p;
	if (yych == 'O') goto yy388;
	if (yych == 'o') goto yy388;
	goto yy358;
yy420:
	yych = *++p;
	if (yych == 'O') goto yy457;
	if (yych == 'o') goto yy457;
	goto yy358;
yy421:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			goto yy358;
		} else {
			if (yych <= ' ') goto yy408;
			if (yych <= '.') goto yy358;
			goto yy410;
		}
	} else {
		if (yych <= 'D') {
			if (yych == '>') goto yy408;
			goto yy358;
		} else {
			if (yych <= 'E') goto yy458;
			if (yych == 'e') goto yy458;
			goto yy358;
		}
	}
yy422:
	yych = *++p;
	if (yych == 'T') goto yy456;
	if (yych == 't') goto yy456;
	goto yy358;
yy423:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			goto yy358;
		} else {
			if (yych <= ' ') goto yy408;
			if (yych <= '.') goto yy358;
			goto yy410;
		}
	} else {
		if (yych <= '@') {
			if (yych == '>') goto yy408;
			goto yy358;
		} else {
			if (yych <= 'A') goto yy459;
			if (yych == 'a') goto yy459;
			goto yy358;
		}
	}
yy424:
	++p;
	{ return 2; }
yy426:
	yych = *++p;
	if (yych == 'D') goto yy460;
	if (yych == 'd') goto yy460;
	goto yy358;
yy427:
	yych = *++p;
	if (yych == 'R') goto yy461;
	if (yych == 'r') goto yy461;
	goto yy358;
yy428:
	yych = *++p;
	if (yych == 'I') goto yy462;
	if (yych == 'i') goto yy462;
	goto yy358;
yy429:
	yych = *++p;
	if (yych == 'D') goto yy463;
	if (yych == 'd') goto yy463;
	goto yy358;
yy430:
	yych = *++p;
	if (yych == 'E') goto yy464;
	if (yych == 'e') goto yy464;
	goto yy358;
yy431:
	yych = *++p;
	if (yych == 'C') goto yy465;
	if (yych == 'c') goto yy465;
	goto yy358;
yy432:
	yych = *++p;
	if (yych == 'Y') goto yy392;
	if (yych == 'y') goto yy392;
	goto yy358;
yy433:
	yych = *++p;
	if (yych == 'T') goto yy466;
	if (yych == 't') goto yy466;
	goto yy358;
yy434:
	yych = *++p;
	if (yych == 'T') goto yy467;
	if (yych == 't') goto yy467;
	goto yy358;
yy435:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			goto yy358;
		} else {
			if (yych <= ' ') goto yy408;
			if (yych <= '.') goto yy358;
			goto yy410;
		}
	} else {
		if (yych <= 'F') {
			if (yych == '>') goto yy408;
			goto yy358;
		} else {
			if (yych <= 'G') goto yy468;
			if (yych == 'g') goto yy468;
			goto yy358;
		}
	}
yy436:
	yych = *++p;
	if (yych == 'A') goto yy469;
	if (yych == 'a') goto yy469;
	goto yy358;
yy437:
	yych = *++p;
	if (yych == 'L') goto yy470;
	if (yych == 'l') goto yy470;
	goto yy358;
yy438:
	yych = *++p;
	if (yych == 'L') goto yy471;
	if (yych == 'l') goto yy471;
	goto yy358;
yy439:
	yych = *++p;
	if (yych <= 'U') {
		if (yych == 'C') goto yy472;
		if (yych <= 'T') goto yy358;
		goto yy473;
	} else {
		if (yych <= 'c') {
			if (yych <= 'b') goto yy358;
			goto yy472;
		} else {
			if (yych == 'u') goto yy473;
			goto yy358;
		}
	}
yy440:
	yych = *++p;
	if (yych == 'M') goto yy392;
	if (yych == 'm') goto yy392;
	goto yy358;
yy441:
	yych = *++p;
	if (yych == 'M') goto yy474;
	if (yych == 'm') goto yy474;
	goto yy358;
yy442:
	yych = *++p;
	if (yych == 'D') goto yy475;
	if (yych == 'd') goto yy475;
	goto yy358;
yy443:
	yych = *++p;
	if (yych == 'A') goto yy476;
	if (yych == 'a') goto yy476;
	goto yy358;
yy444:
	yych = *++p;
	if (yych == 'E') goto yy477;
	if (yych == 'e') goto yy477;
	goto yy358;
yy445:
	yych = *++p;
	if (yych == 'K') goto yy392;
	if (yych == 'k') goto yy392;
	goto yy358;
yy446:
	yych = *++p;
	if (yych == 'N') goto yy392;
	if (yych == 'n') goto yy392;
	goto yy358;
yy447:
	yych = *++p;
	if (yych == 'U') goto yy478;
	if (yych == 'u') goto yy478;
	goto yy358;
yy448:
	yych = *++p;
	if (yych == 'R') goto yy479;
	if (yych == 'r') goto yy479;
	goto yy358;
yy449:
	yych = *++p;
	if (yych <= 'I') {
		if (yych == 'G') goto yy468;
		if (yych <= 'H') goto yy358;
		goto yy480;
	} else {
		if (yych <= 'g') {
			if (yych <= 'f') goto yy358;
			goto yy468;
		} else {
			if (yych == 'i') goto yy480;
			goto yy358;
		}
	}
yy450:
	yych = *++p;
	if (yych == 'A') goto yy440;
	if (yych == 'a') goto yy440;
	goto yy358;
yy451:
	yych = *++p;
	if (yych <= 0x1F) {
		if (yych <= 0x08) goto yy358;
		if (yych <= '\r') goto yy481;
		goto yy358;
	} else {
		if (yych <= ' ') goto yy481;
		if (yych == '>') goto yy481;
		goto yy358;
	}
yy452:
	yych = *++p;
	if (yych == 'I') goto yy483;
	if (yych == 'i') goto yy483;
	goto yy358;
yy453:
	yych = *++p;
	if (yych == 'R') goto yy484;
	if (yych == 'r') goto yy484;
	goto yy358;
yy454:
	yych = *++p;
	if (yych == 'L') goto yy412;
	if (yych == 'l') goto yy412;
	goto yy358;
yy455:
	yych = *++p;
	if (yych == 'M') goto yy485;
	if (yych == 'm') goto yy485;
	goto yy358;
yy456:
	yych = *++p;
	if (yych == 'L') goto yy463;
	if (yych == 'l') goto yy463;
	goto yy358;
yy457:
	yych = *++p;
	if (yych == 'O') goto yy486;
	if (yych == 'o') goto yy486;
	goto yy358;
yy458:
	yych = *++p;
	if (yych == 'A') goto yy487;
	if (yych == 'a') goto yy487;
	goto yy358;
yy459:
	yych = *++p;
	if (yych == 'C') goto yy445;
	if (yych == 'c') goto yy445;
	goto yy358;
yy460:
	yych = *++p;
	if (yych == 'A') goto yy488;
	if (yych == 'a') goto yy488;
	goto yy358;
yy461:
	yych = *++p;
	if (yych == 'E') goto yy489;
	if (yych == 'e') goto yy489;
	goto yy358;
yy462:
	yych = *++p;
	if (yych == 'C') goto yy456;
	if (yych == 'c') goto yy456;
	goto yy358;
yy463:
	yych = *++p;
	if (yych == 'E') goto yy392;
	if (yych == 'e') goto yy392;
	goto yy358;
yy464:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			goto yy358;
		} else {
			if (yych <= ' ') goto yy408;
			if (yych <= '.') goto yy358;
			goto yy410;
		}
	} else {
		if (yych <= 'E') {
			if (yych == '>') goto yy408;
			goto yy358;
		} else {
			if (yych <= 'F') goto yy490;
			if (yych == 'f') goto yy490;
			goto yy358;
		}
	}
yy465:
	yych = *++p;
	if (yych == 'K') goto yy491;
	if (yych == 'k') goto yy491;
	goto yy358;
yy466:
	yych = *++p;
	if (yych == 'I') goto yy480;
	if (yych == 'i') goto yy480;
	goto yy358;
yy467:
	yych = *++p;
	if (yych == 'E') goto yy492;
	if (yych == 'e') goto yy492;
	goto yy358;
yy468:
	yych = *++p;
	if (yych == 'R') goto yy493;
	if (yych == 'r') goto yy493;
	goto yy358;
yy469:
	yych = *++p;
	if (yych == 'I') goto yy494;
	if (yych == 'i') goto yy494;
	goto yy358;
yy470:
	yych = *++p;
	if (yych == 'O') goto yy495;
	if (yych == 'o') goto yy495;
	goto yy358;
yy471:
	yych = *++p;
	if (yych == 'D') goto yy496;
	if (yych == 'd') goto yy496;
	goto yy358;
yy472:
	yych = *++p;
	if (yych == 'A') goto yy389;
	if (yych == 'a') goto yy389;
	goto yy358;
yy473:
	yych = *++p;
	if (yych == 'R') goto yy463;
	if (yych == 'r') goto yy463;
	goto yy358;
yy474:
	yych = *++p;
	if (yych == 'E') goto yy497;
	if (yych == 'e') goto yy497;
	goto yy358;
yy475:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			goto yy358;
		} else {
			if (yych <= ' ') goto yy408;
			if (yych <= '.') goto yy358;
			goto yy410;
		}
	} else {
		if (yych <= 'D') {
			if (yych == '>') goto yy408;
			goto yy358;
		} else {
			if (yych <= 'E') goto yy492;
			if (yych == 'e') goto yy492;
			goto yy358;
		}
	}
yy476:
	yych = *++p;
	if (yych == 'M') goto yy463;
	if (yych == 'm') goto yy463;
	goto yy358;
yy477:
	yych = *++p;
	if (yych == 'N') goto yy487;
	if (yych == 'n') goto yy487;
	goto yy358;
yy478:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			goto yy358;
		} else {
			if (yych <= ' ') goto yy408;
			if (yych <= '.') goto yy358;
			goto yy410;
		}
	} else {
		if (yych <= 'H') {
			if (yych == '>') goto yy408;
			goto yy358;
		} else {
			if (yych <= 'I') goto yy498;
			if (yych == 'i') goto yy498;
			goto yy358;
		}
	}
yy479:
	yych = *++p;
	if (yych == 'A') goto yy499;
	if (yych == 'a') goto yy499;
	goto yy358;
yy480:
	yych = *++p;
	if (yych == 'O') goto yy446;
	if (yych == 'o') goto yy446;
	goto yy358;
yy481:
	++p;
	{ return 1; }
yy483:
	yych = *++p;
	if (yych == 'P') goto yy500;
	if (yych == 'p') goto yy500;
	goto yy358;
yy484:
	yych = *++p;
	if (yych == 'C') goto yy463;
	if (yych == 'c') goto yy463;
	goto yy358;
yy485:
	yych = *++p;
	if (yych == 'A') goto yy501;
	if (yych == 'a') goto yy501;
	goto yy358;
yy486:
	yych = *++p;
	if (yych == 'T') goto yy392;
	if (yych == 't') goto yy392;
	goto yy358;
yy487:
	yych = *++p;
	if (yych == 'D') goto yy392;
	if (yych == 'd') goto yy392;
	goto yy358;
yy488:
	yych = *++p;
	if (yych == 'T') goto yy502;
	if (yych == 't') goto yy502;
	goto yy358;
yy489:
	yych = *++p;
	if (yych == 'S') goto yy503;
	if (yych == 's') goto yy503;
	goto yy358;
yy490:
	yych = *++p;
	if (yych == 'O') goto yy504;
	if (yych == 'o') goto yy504;
	goto yy358;
yy491:
	yych = *++p;
	if (yych == 'Q') goto yy505;
	if (yych == 'q') goto yy505;
	goto yy358;
yy492:
	yych = *++p;
	if (yych == 'R') goto yy392;
	if (yych == 'r') goto yy392;
	goto yy358;
yy493:
	yych = *++p;
	if (yych == 'O') goto yy506;
	if (yych == 'o') goto yy506;
	goto yy358;
yy494:
	yych = *++p;
	if (yych == 'L') goto yy503;
	if (yych == 'l') goto yy503;
	goto yy358;
yy495:
	yych = *++p;
	if (yych == 'G') goto yy392;
	if (yych == 'g') goto yy392;
	goto yy358;
yy496:
	yych = *++p;
	if (yych == 'S') goto yy507;
	if (yych == 's') goto yy507;
	goto yy358;
yy497:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy358;
			if (yych <= '\r') goto yy408;
			goto yy358;
		} else {
			if (yych <= ' ') goto yy408;
			if (yych <= '.') goto yy358;
			goto yy410;
		}
	} else {
		if (yych <= 'R') {
			if (yych == '>') goto yy408;
			goto yy358;
		} else {
			if (yych <= 'S') goto yy507;
			if (yych == 's') goto yy507;
			goto yy358;
		}
	}
yy498:
	yych = *++p;
	if (yych == 'T') goto yy508;
	if (yych == 't') goto yy508;
	goto yy358;
yy499:
	yych = *++p;
	if (yych == 'M') goto yy509;
	if (yych == 'm') goto yy509;
	goto yy358;
yy500:
	yych = *++p;
	if (yych == 'T') goto yy451;
	if (yych == 't') goto yy451;
	goto yy358;
yy501:
	yych = *++p;
	if (yych == 'R') goto yy432;
	if (yych == 'r') goto yy432;
	goto yy358;
yy502:
	yych = *++p;
	if (yych == 'A') goto yy510;
	if (yych == 'a') goto yy510;
	goto yy358;
yy503:
	yych = *++p;
	if (yych == 'S') goto yy392;
	if (yych == 's') goto yy392;
	goto yy358;
yy504:
	yych = *++p;
	if (yych == 'N') goto yy486;
	if (yych == 'n') goto yy486;
	goto yy358;
yy505:
	yych = *++p;
	if (yych == 'U') goto yy511;
	if (yych == 'u') goto yy511;
	goto yy358;
yy506:
	yych = *++p;
	if (yych == 'U') goto yy512;
	if (yych == 'u') goto yy512;
	goto yy358;
yy507:
	yych = *++p;
	if (yych == 'E') goto yy486;
	if (yych == 'e') goto yy486;
	goto yy358;
yy508:
	yych = *++p;
	if (yych == 'E') goto yy440;
	if (yych == 'e') goto yy440;
	goto yy358;
yy509:
	yych = *++p;
	if (yych == 'E') goto yy503;
	if (yych == 'e') goto yy503;
	goto yy358;
yy510:
	yych = *++p;
	if (yych == '[') goto yy513;
	goto yy358;
yy511:
	yych = *++p;
	if (yych == 'O') goto yy515;
	if (yych == 'o') goto yy515;
	goto yy358;
yy512:
	yych = *++p;
	if (yych == 'P') goto yy392;
	if (yych == 'p') goto yy392;
	goto yy358;
yy513:
	++p;
	{ return 5; }
yy515:
	yych = *++p;
	if (yych == 'T') goto yy463;
	if (yych == 't') goto yy463;
	goto yy358;
}

}

// Try to match an HTML block tag start line of type 7, returning
// 7 if successful, 0 if not.
bufsize_t _scan_html_block_start_7(const unsigned char *p)
{
  const unsigned char *marker = NULL;

{
	unsigned char yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[] = {
		  0, 224, 224, 224, 224, 224, 224, 224, 
		224, 198, 210, 194, 198, 194, 224, 224, 
		224, 224, 224, 224, 224, 224, 224, 224, 
		224, 224, 224, 224, 224, 224, 224, 224, 
		198, 224, 128, 224, 224, 224, 224,  64, 
		224, 224, 224, 224, 224, 233, 232, 224, 
		233, 233, 233, 233, 233, 233, 233, 233, 
		233, 233, 232, 224, 192, 192, 192, 224, 
		224, 233, 233, 233, 233, 233, 233, 233, 
		233, 233, 233, 233, 233, 233, 233, 233, 
		233, 233, 233, 233, 233, 233, 233, 233, 
		233, 233, 233, 224, 224, 224, 224, 232, 
		192, 233, 233, 233, 233, 233, 233, 233, 
		233, 233, 233, 233, 233, 233, 233, 233, 
		233, 233, 233, 233, 233, 233, 233, 233, 
		233, 233, 233, 224, 224, 224, 224, 224, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych == '<') goto yy520;
	++p;
yy519:
	{ return 0; }
yy520:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= '@') {
		if (yych != '/') goto yy519;
	} else {
		if (yych <= 'Z') goto yy523;
		if (yych <= '`') goto yy519;
		if (yych <= 'z') goto yy523;
		goto yy519;
	}
	yych = *++p;
	if (yych <= '@') goto yy522;
	if (yych <= 'Z') goto yy525;
	if (yych <= '`') goto yy522;
	if (yych <= 'z') goto yy525;
yy522:
	p = marker;
	if (yyaccept == 0) {
		goto yy519;
	} else {
		goto yy538;
	}
yy523:
	yych = *++p;
	if (yybm[0+yych] & 2) {
		goto yy527;
	}
	if (yych <= '=') {
		if (yych <= '.') {
			if (yych == '-') goto yy523;
			goto yy522;
		} else {
			if (yych <= '/') goto yy529;
			if (yych <= '9') goto yy523;
			goto yy522;
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '>') goto yy530;
			if (yych <= '@') goto yy522;
			goto yy523;
		} else {
			if (yych <= '`') goto yy522;
			if (yych <= 'z') goto yy523;
			goto yy522;
		}
	}
yy525:
	yych = *++p;
	if (yych <= '/') {
		if (yych <= 0x1F) {
			if (yych <= 0x08) goto yy522;
			if (yych <= '\r') goto yy532;
			goto yy522;
		} else {
			if (yych <= ' ') goto yy532;
			if (yych == '-') goto yy525;
			goto yy522;
		}
	} else {
		if (yych <= '@') {
			if (yych <= '9') goto yy525;
			if (yych == '>') goto yy530;
			goto yy522;
		} else {
			if (yych <= 'Z') goto yy525;
			if (yych <= '`') goto yy522;
			if (yych <= 'z') goto yy525;
			goto yy522;
		}
	}
yy527:
	yych = *++p;
	if (yybm[0+yych] & 2) {
		goto yy527;
	}
	if (yych <= '>') {
		if (yych <= '9') {
			if (yych != '/') goto yy522;
		} else {
			if (yych <= ':') goto yy534;
			if (yych <= '=') goto yy522;
			goto yy530;
		}
	} else {
		if (yych <= '^') {
			if (yych <= '@') goto yy522;
			if (yych <= 'Z') goto yy534;
			goto yy522;
		} else {
			if (yych == '`') goto yy522;
			if (yych <= 'z') goto yy534;
			goto yy522;
		}
	}
yy529:
	yych = *++p;
	if (yych != '>') goto yy522;
yy530:
	yych = *++p;
	if (yybm[0+yych] & 4) {
		goto yy530;
	}
	if (yych <= 0x08) goto yy522;
	if (yych <= '\n') goto yy536;
	if (yych <= '\v') goto yy522;
	if (yych <= '\r') goto yy539;
	goto yy522;
yy532:
	yych = *++p;
	if (yych <= 0x1F) {
		if (yych <= 0x08) goto yy522;
		if (yych <= '\r') goto yy532;
		goto yy522;
	} else {
		if (yych <= ' ') goto yy532;
		if (yych == '>') goto yy530;
		goto yy522;
	}
yy534:
	yych = *++p;
	if (yybm[0+yych] & 8) {
		goto yy534;
	}
	if (yych <= ',') {
		if (yych <= '\r') {
			if (yych <= 0x08) goto yy522;
			goto yy540;
		} else {
			if (yych == ' ') goto yy540;
			goto yy522;
		}
	} else {
		if (yych <= '<') {
			if (yych <= '/') goto yy529;
			goto yy522;
		} else {
			if (yych <= '=') goto yy542;
			if (yych <= '>') goto yy530;
			goto yy522;
		}
	}
yy536:
	yyaccept = 1;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 4) {
		goto yy530;
	}
	if (yych <= 0x08) goto yy538;
	if (yych <= '\n') goto yy536;
	if (yych <= '\v') goto yy538;
	if (yych <= '\r') goto yy539;
yy538:
	{ return 7; }
yy539:
	++p;
	goto yy538;
yy540:
	yych = *++p;
	if (yych <= '<') {
		if (yych <= ' ') {
			if (yych <= 0x08) goto yy522;
			if (yych <= '\r') goto yy540;
			if (yych <= 0x1F) goto yy522;
			goto yy540;
		} else {
			if (yych <= '/') {
				if (yych <= '.') goto yy522;
				goto yy529;
			} else {
				if (yych == ':') goto yy534;
				goto yy522;
			}
		}
	} else {
		if (yych <= 'Z') {
			if (yych <= '=') goto yy542;
			if (yych <= '>') goto yy530;
			if (yych <= '@') goto yy522;
			goto yy534;
		} else {
			if (yych <= '_') {
				if (yych <= '^') goto yy522;
				goto yy534;
			} else {
				if (yych <= '`') goto yy522;
				if (yych <= 'z') goto yy534;
				goto yy522;
			}
		}
	}
yy542:
	yych = *++p;
	if (yybm[0+yych] & 32) {
		goto yy544;
	}
	if (yych <= 0xE0) {
		if (yych <= '"') {
			if (yych <= 0x00) goto yy522;
			if (yych <= ' ') goto yy542;
			goto yy546;
		} else {
			if (yych <= '\'') goto yy548;
			if (yych <= 0xC1) goto yy522;
			if (yych <= 0xDF) goto yy550;
			goto yy551;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy553;
			goto yy552;
		} else {
			if (yych <= 0xF0) goto yy554;
			if (yych <= 0xF3) goto yy555;
			if (yych <= 0xF4) goto yy556;
			goto yy522;
		}
	}
yy544:
	yych = *++p;
	if (yybm[0+yych] & 32) {
		goto yy544;
	}
	if (yych <= 0xE0) {
		if (yych <= '=') {
			if (yych <= 0x00) goto yy522;
			if (yych <= ' ') goto yy527;
			goto yy522;
		} else {
			if (yych <= '>') goto yy530;
			if (yych <= 0xC1) goto yy522;
			if (yych <= 0xDF) goto yy550;
			goto yy551;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy553;
			goto yy552;
		} else {
			if (yych <= 0xF0) goto yy554;
			if (yych <= 0xF3) goto yy555;
			if (yych <= 0xF4) goto yy556;
			goto yy522;
		}
	}
yy546:
	yych = *++p;
	if (yybm[0+yych] & 64) {
		goto yy546;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy522;
			if (yych <= '"') goto yy557;
			goto yy522;
		} else {
			if (yych <= 0xDF) goto yy558;
			if (yych <= 0xE0) goto yy559;
			goto yy560;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy561;
			if (yych <= 0xEF) goto yy560;
			goto yy562;
		} else {
			if (yych <= 0xF3) goto yy563;
			if (yych <= 0xF4) goto yy564;
			goto yy522;
		}
	}
yy548:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy548;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy522;
			if (yych <= '\'') goto yy557;
			goto yy522;
		} else {
			if (yych <= 0xDF) goto yy565;
			if (yych <= 0xE0) goto yy566;
			goto yy567;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy568;
			if (yych <= 0xEF) goto yy567;
			goto yy569;
		} else {
			if (yych <= 0xF3) goto yy570;
			if (yych <= 0xF4) goto yy571;
			goto yy522;
		}
	}
yy550:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0xBF) goto yy544;
	goto yy522;
yy551:
	yych = *++p;
	if (yych <= 0x9F) goto yy522;
	if (yych <= 0xBF) goto yy550;
	goto yy522;
yy552:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0xBF) goto yy550;
	goto yy522;
yy553:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0x9F) goto yy550;
	goto yy522;
yy554:
	yych = *++p;
	if (yych <= 0x8F) goto yy522;
	if (yych <= 0xBF) goto yy552;
	goto yy522;
yy555:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0xBF) goto yy552;
	goto yy522;
yy556:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0x8F) goto yy552;
	goto yy522;
yy557:
	yych = *++p;
	if (yybm[0+yych] & 2) {
		goto yy527;
	}
	if (yych == '/') goto yy529;
	if (yych == '>') goto yy530;
	goto yy522;
yy558:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0xBF) goto yy546;
	goto yy522;
yy559:
	yych = *++p;
	if (yych <= 0x9F) goto yy522;
	if (yych <= 0xBF) goto yy558;
	goto yy522;
yy560:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0xBF) goto yy558;
	goto yy522;
yy561:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0x9F) goto yy558;
	goto yy522;
yy562:
	yych = *++p;
	if (yych <= 0x8F) goto yy522;
	if (yych <= 0xBF) goto yy560;
	goto yy522;
yy563:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0xBF) goto yy560;
	goto yy522;
yy564:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0x8F) goto yy560;
	goto yy522;
yy565:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0xBF) goto yy548;
	goto yy522;
yy566:
	yych = *++p;
	if (yych <= 0x9F) goto yy522;
	if (yych <= 0xBF) goto yy565;
	goto yy522;
yy567:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0xBF) goto yy565;
	goto yy522;
yy568:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0x9F) goto yy565;
	goto yy522;
yy569:
	yych = *++p;
	if (yych <= 0x8F) goto yy522;
	if (yych <= 0xBF) goto yy567;
	goto yy522;
yy570:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0xBF) goto yy567;
	goto yy522;
yy571:
	yych = *++p;
	if (yych <= 0x7F) goto yy522;
	if (yych <= 0x8F) goto yy567;
	goto yy522;
}

}

// Try to match an HTML block end line of type 1
bufsize_t _scan_html_block_end_1(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[] = {
		  0,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,   0,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64, 128,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= 0xDF) {
		if (yych <= ';') {
			if (yych <= 0x00) goto yy574;
			if (yych != '\n') goto yy576;
		} else {
			if (yych <= '<') goto yy577;
			if (yych <= 0x7F) goto yy576;
			if (yych >= 0xC2) goto yy578;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) goto yy579;
			if (yych == 0xED) goto yy581;
			goto yy580;
		} else {
			if (yych <= 0xF0) goto yy582;
			if (yych <= 0xF3) goto yy583;
			if (yych <= 0xF4) goto yy584;
		}
	}
yy574:
	++p;
yy575:
	{ return 0; }
yy576:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= '\n') {
		if (yych <= 0x00) goto yy575;
		if (yych <= '\t') goto yy586;
		goto yy575;
	} else {
		if (yych <= 0x7F) goto yy586;
		if (yych <= 0xC1) goto yy575;
		if (yych <= 0xF4) goto yy586;
		goto yy575;
	}
yy577:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= '.') {
		if (yych <= 0x00) goto yy575;
		if (yych == '\n') goto yy575;
		goto yy586;
	} else {
		if (yych <= 0x7F) {
			if (yych <= '/') goto yy597;
			goto yy586;
		} else {
			if (yych <= 0xC1) goto yy575;
			if (yych <= 0xF4) goto yy586;
			goto yy575;
		}
	}
yy578:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy575;
	if (yych <= 0xBF) goto yy585;
	goto yy575;
yy579:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x9F) goto yy575;
	if (yych <= 0xBF) goto yy590;
	goto yy575;
yy580:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy575;
	if (yych <= 0xBF) goto yy590;
	goto yy575;
yy581:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy575;
	if (yych <= 0x9F) goto yy590;
	goto yy575;
yy582:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x8F) goto yy575;
	if (yych <= 0xBF) goto yy592;
	goto yy575;
yy583:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy575;
	if (yych <= 0xBF) goto yy592;
	goto yy575;
yy584:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy575;
	if (yych <= 0x8F) goto yy592;
	goto yy575;
yy585:
	yych = *++p;
yy586:
	if (yybm[0+yych] & 64) {
		goto yy585;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy587;
			if (yych <= '<') goto yy588;
		} else {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			goto yy592;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy593;
			if (yych <= 0xEF) goto yy592;
			goto yy594;
		} else {
			if (yych <= 0xF3) goto yy595;
			if (yych <= 0xF4) goto yy596;
		}
	}
yy587:
	p = marker;
	if (yyaccept == 0) {
		goto yy575;
	} else {
		goto yy607;
	}
yy588:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xDF) {
		if (yych <= '.') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= '/') goto yy597;
			if (yych <= 0x7F) goto yy585;
			if (yych <= 0xC1) goto yy587;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) goto yy591;
			if (yych == 0xED) goto yy593;
			goto yy592;
		} else {
			if (yych <= 0xF0) goto yy594;
			if (yych <= 0xF3) goto yy595;
			if (yych <= 0xF4) goto yy596;
			goto yy587;
		}
	}
yy590:
	yych = *++p;
	if (yych <= 0x7F) goto yy587;
	if (yych <= 0xBF) goto yy585;
	goto yy587;
yy591:
	yych = *++p;
	if (yych <= 0x9F) goto yy587;
	if (yych <= 0xBF) goto yy590;
	goto yy587;
yy592:
	yych = *++p;
	if (yych <= 0x7F) goto yy587;
	if (yych <= 0xBF) goto yy590;
	goto yy587;
yy593:
	yych = *++p;
	if (yych <= 0x7F) goto yy587;
	if (yych <= 0x9F) goto yy590;
	goto yy587;
yy594:
	yych = *++p;
	if (yych <= 0x8F) goto yy587;
	if (yych <= 0xBF) goto yy592;
	goto yy587;
yy595:
	yych = *++p;
	if (yych <= 0x7F) goto yy587;
	if (yych <= 0xBF) goto yy592;
	goto yy587;
yy596:
	yych = *++p;
	if (yych <= 0x7F) goto yy587;
	if (yych <= 0x8F) goto yy592;
	goto yy587;
yy597:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 's') {
		if (yych <= 'P') {
			if (yych <= '\t') {
				if (yych <= 0x00) goto yy587;
				goto yy585;
			} else {
				if (yych <= '\n') goto yy587;
				if (yych <= 'O') goto yy585;
			}
		} else {
			if (yych <= 'o') {
				if (yych == 'S') goto yy599;
				goto yy585;
			} else {
				if (yych <= 'p') goto yy598;
				if (yych <= 'r') goto yy585;
				goto yy599;
			}
		}
	} else {
		if (yych <= 0xEC) {
			if (yych <= 0xC1) {
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			} else {
				if (yych <= 0xDF) goto yy590;
				if (yych <= 0xE0) goto yy591;
				goto yy592;
			}
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xED) goto yy593;
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
yy598:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xC1) {
		if (yych <= 'Q') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= 'q') {
				if (yych <= 'R') goto yy600;
				goto yy585;
			} else {
				if (yych <= 'r') goto yy600;
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			}
		}
	} else {
		if (yych <= 0xED) {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			if (yych <= 0xEC) goto yy592;
			goto yy593;
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
yy599:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 't') {
		if (yych <= 'C') {
			if (yych <= '\t') {
				if (yych <= 0x00) goto yy587;
				goto yy585;
			} else {
				if (yych <= '\n') goto yy587;
				if (yych <= 'B') goto yy585;
				goto yy601;
			}
		} else {
			if (yych <= 'b') {
				if (yych == 'T') goto yy602;
				goto yy585;
			} else {
				if (yych <= 'c') goto yy601;
				if (yych <= 's') goto yy585;
				goto yy602;
			}
		}
	} else {
		if (yych <= 0xEC) {
			if (yych <= 0xC1) {
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			} else {
				if (yych <= 0xDF) goto yy590;
				if (yych <= 0xE0) goto yy591;
				goto yy592;
			}
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xED) goto yy593;
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
yy600:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xC1) {
		if (yych <= 'D') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= 'd') {
				if (yych <= 'E') goto yy603;
				goto yy585;
			} else {
				if (yych <= 'e') goto yy603;
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			}
		}
	} else {
		if (yych <= 0xED) {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			if (yych <= 0xEC) goto yy592;
			goto yy593;
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
yy601:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xC1) {
		if (yych <= 'Q') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= 'q') {
				if (yych <= 'R') goto yy604;
				goto yy585;
			} else {
				if (yych <= 'r') goto yy604;
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			}
		}
	} else {
		if (yych <= 0xED) {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			if (yych <= 0xEC) goto yy592;
			goto yy593;
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
yy602:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xC1) {
		if (yych <= 'X') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= 'x') {
				if (yych <= 'Y') goto yy605;
				goto yy585;
			} else {
				if (yych <= 'y') goto yy605;
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			}
		}
	} else {
		if (yych <= 0xED) {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			if (yych <= 0xEC) goto yy592;
			goto yy593;
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
yy603:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xDF) {
		if (yych <= '=') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= '>') goto yy606;
			if (yych <= 0x7F) goto yy585;
			if (yych <= 0xC1) goto yy587;
			goto yy590;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) goto yy591;
			if (yych == 0xED) goto yy593;
			goto yy592;
		} else {
			if (yych <= 0xF0) goto yy594;
			if (yych <= 0xF3) goto yy595;
			if (yych <= 0xF4) goto yy596;
			goto yy587;
		}
	}
yy604:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xC1) {
		if (yych <= 'H') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= 'h') {
				if (yych <= 'I') goto yy608;
				goto yy585;
			} else {
				if (yych <= 'i') goto yy608;
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			}
		}
	} else {
		if (yych <= 0xED) {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			if (yych <= 0xEC) goto yy592;
			goto yy593;
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
yy605:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xC1) {
		if (yych <= 'K') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= 'k') {
				if (yych <= 'L') goto yy600;
				goto yy585;
			} else {
				if (yych <= 'l') goto yy600;
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			}
		}
	} else {
		if (yych <= 0xED) {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			if (yych <= 0xEC) goto yy592;
			goto yy593;
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
yy606:
	yyaccept = 1;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 64) {
		goto yy585;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy607;
			if (yych <= '<') goto yy588;
		} else {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			goto yy592;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy593;
			if (yych <= 0xEF) goto yy592;
			goto yy594;
		} else {
			if (yych <= 0xF3) goto yy595;
			if (yych <= 0xF4) goto yy596;
		}
	}
yy607:
	{ return (bufsize_t)(p - start); }
yy608:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xC1) {
		if (yych <= 'O') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= 'o') {
				if (yych >= 'Q') goto yy585;
			} else {
				if (yych <= 'p') goto yy609;
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			}
		}
	} else {
		if (yych <= 0xED) {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			if (yych <= 0xEC) goto yy592;
			goto yy593;
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
yy609:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy588;
	}
	if (yych <= 0xC1) {
		if (yych <= 'S') {
			if (yych <= 0x00) goto yy587;
			if (yych == '\n') goto yy587;
			goto yy585;
		} else {
			if (yych <= 's') {
				if (yych <= 'T') goto yy603;
				goto yy585;
			} else {
				if (yych <= 't') goto yy603;
				if (yych <= 0x7F) goto yy585;
				goto yy587;
			}
		}
	} else {
		if (yych <= 0xED) {
			if (yych <= 0xDF) goto yy590;
			if (yych <= 0xE0) goto yy591;
			if (yych <= 0xEC) goto yy592;
			goto yy593;
		} else {
			if (yych <= 0xF0) {
				if (yych <= 0xEF) goto yy592;
				goto yy594;
			} else {
				if (yych <= 0xF3) goto yy595;
				if (yych <= 0xF4) goto yy596;
				goto yy587;
			}
		}
	}
}

}

// Try to match an HTML block end line of type 2
bufsize_t _scan_html_block_end_2(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[] = {
		  0,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,   0,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64, 128,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= 0xDF) {
		if (yych <= ',') {
			if (yych <= 0x00) goto yy612;
			if (yych != '\n') goto yy614;
		} else {
			if (yych <= '-') goto yy615;
			if (yych <= 0x7F) goto yy614;
			if (yych >= 0xC2) goto yy616;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) goto yy617;
			if (yych == 0xED) goto yy619;
			goto yy618;
		} else {
			if (yych <= 0xF0) goto yy620;
			if (yych <= 0xF3) goto yy621;
			if (yych <= 0xF4) goto yy622;
		}
	}
yy612:
	++p;
yy613:
	{ return 0; }
yy614:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= '\n') {
		if (yych <= 0x00) goto yy613;
		if (yych <= '\t') goto yy624;
		goto yy613;
	} else {
		if (yych <= 0x7F) goto yy624;
		if (yych <= 0xC1) goto yy613;
		if (yych <= 0xF4) goto yy624;
		goto yy613;
	}
yy615:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 128) {
		goto yy634;
	}
	if (yych <= '\n') {
		if (yych <= 0x00) goto yy613;
		if (yych <= '\t') goto yy624;
		goto yy613;
	} else {
		if (yych <= 0x7F) goto yy624;
		if (yych <= 0xC1) goto yy613;
		if (yych <= 0xF4) goto yy624;
		goto yy613;
	}
yy616:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy613;
	if (yych <= 0xBF) goto yy623;
	goto yy613;
yy617:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x9F) goto yy613;
	if (yych <= 0xBF) goto yy627;
	goto yy613;
yy618:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy613;
	if (yych <= 0xBF) goto yy627;
	goto yy613;
yy619:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy613;
	if (yych <= 0x9F) goto yy627;
	goto yy613;
yy620:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x8F) goto yy613;
	if (yych <= 0xBF) goto yy629;
	goto yy613;
yy621:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy613;
	if (yych <= 0xBF) goto yy629;
	goto yy613;
yy622:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy613;
	if (yych <= 0x8F) goto yy629;
	goto yy613;
yy623:
	yych = *++p;
yy624:
	if (yybm[0+yych] & 64) {
		goto yy623;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy625;
			if (yych <= '-') goto yy626;
		} else {
			if (yych <= 0xDF) goto yy627;
			if (yych <= 0xE0) goto yy628;
			goto yy629;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy630;
			if (yych <= 0xEF) goto yy629;
			goto yy631;
		} else {
			if (yych <= 0xF3) goto yy632;
			if (yych <= 0xF4) goto yy633;
		}
	}
yy625:
	p = marker;
	if (yyaccept == 0) {
		goto yy613;
	} else {
		goto yy637;
	}
yy626:
	yych = *++p;
	if (yybm[0+yych] & 64) {
		goto yy623;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy625;
			if (yych <= '-') goto yy634;
			goto yy625;
		} else {
			if (yych <= 0xDF) goto yy627;
			if (yych <= 0xE0) goto yy628;
			goto yy629;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy630;
			if (yych <= 0xEF) goto yy629;
			goto yy631;
		} else {
			if (yych <= 0xF3) goto yy632;
			if (yych <= 0xF4) goto yy633;
			goto yy625;
		}
	}
yy627:
	yych = *++p;
	if (yych <= 0x7F) goto yy625;
	if (yych <= 0xBF) goto yy623;
	goto yy625;
yy628:
	yych = *++p;
	if (yych <= 0x9F) goto yy625;
	if (yych <= 0xBF) goto yy627;
	goto yy625;
yy629:
	yych = *++p;
	if (yych <= 0x7F) goto yy625;
	if (yych <= 0xBF) goto yy627;
	goto yy625;
yy630:
	yych = *++p;
	if (yych <= 0x7F) goto yy625;
	if (yych <= 0x9F) goto yy627;
	goto yy625;
yy631:
	yych = *++p;
	if (yych <= 0x8F) goto yy625;
	if (yych <= 0xBF) goto yy629;
	goto yy625;
yy632:
	yych = *++p;
	if (yych <= 0x7F) goto yy625;
	if (yych <= 0xBF) goto yy629;
	goto yy625;
yy633:
	yych = *++p;
	if (yych <= 0x7F) goto yy625;
	if (yych <= 0x8F) goto yy629;
	goto yy625;
yy634:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy634;
	}
	if (yych <= 0xDF) {
		if (yych <= '=') {
			if (yych <= 0x00) goto yy625;
			if (yych == '\n') goto yy625;
			goto yy623;
		} else {
			if (yych <= '>') goto yy636;
			if (yych <= 0x7F) goto yy623;
			if (yych <= 0xC1) goto yy625;
			goto yy627;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) goto yy628;
			if (yych == 0xED) goto yy630;
			goto yy629;
		} else {
			if (yych <= 0xF0) goto yy631;
			if (yych <= 0xF3) goto yy632;
			if (yych <= 0xF4) goto yy633;
			goto yy625;
		}
	}
yy636:
	yyaccept = 1;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 64) {
		goto yy623;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy637;
			if (yych <= '-') goto yy626;
		} else {
			if (yych <= 0xDF) goto yy627;
			if (yych <= 0xE0) goto yy628;
			goto yy629;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy630;
			if (yych <= 0xEF) goto yy629;
			goto yy631;
		} else {
			if (yych <= 0xF3) goto yy632;
			if (yych <= 0xF4) goto yy633;
		}
	}
yy637:
	{ return (bufsize_t)(p - start); }
}

}

// Try to match an HTML block end line of type 3
bufsize_t _scan_html_block_end_3(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[] = {
		  0,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,   0,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64, 128, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= 0xDF) {
		if (yych <= '>') {
			if (yych <= 0x00) goto yy640;
			if (yych != '\n') goto yy642;
		} else {
			if (yych <= '?') goto yy643;
			if (yych <= 0x7F) goto yy642;
			if (yych >= 0xC2) goto yy644;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) goto yy645;
			if (yych == 0xED) goto yy647;
			goto yy646;
		} else {
			if (yych <= 0xF0) goto yy648;
			if (yych <= 0xF3) goto yy649;
			if (yych <= 0xF4) goto yy650;
		}
	}
yy640:
	++p;
yy641:
	{ return 0; }
yy642:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= '\n') {
		if (yych <= 0x00) goto yy641;
		if (yych <= '\t') goto yy652;
		goto yy641;
	} else {
		if (yych <= 0x7F) goto yy652;
		if (yych <= 0xC1) goto yy641;
		if (yych <= 0xF4) goto yy652;
		goto yy641;
	}
yy643:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= '=') {
		if (yych <= 0x00) goto yy641;
		if (yych == '\n') goto yy641;
		goto yy652;
	} else {
		if (yych <= 0x7F) {
			if (yych <= '>') goto yy663;
			goto yy652;
		} else {
			if (yych <= 0xC1) goto yy641;
			if (yych <= 0xF4) goto yy652;
			goto yy641;
		}
	}
yy644:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy641;
	if (yych <= 0xBF) goto yy651;
	goto yy641;
yy645:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x9F) goto yy641;
	if (yych <= 0xBF) goto yy656;
	goto yy641;
yy646:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy641;
	if (yych <= 0xBF) goto yy656;
	goto yy641;
yy647:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy641;
	if (yych <= 0x9F) goto yy656;
	goto yy641;
yy648:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x8F) goto yy641;
	if (yych <= 0xBF) goto yy658;
	goto yy641;
yy649:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy641;
	if (yych <= 0xBF) goto yy658;
	goto yy641;
yy650:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy641;
	if (yych <= 0x8F) goto yy658;
	goto yy641;
yy651:
	yych = *++p;
yy652:
	if (yybm[0+yych] & 64) {
		goto yy651;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy653;
			if (yych <= '?') goto yy654;
		} else {
			if (yych <= 0xDF) goto yy656;
			if (yych <= 0xE0) goto yy657;
			goto yy658;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy659;
			if (yych <= 0xEF) goto yy658;
			goto yy660;
		} else {
			if (yych <= 0xF3) goto yy661;
			if (yych <= 0xF4) goto yy662;
		}
	}
yy653:
	p = marker;
	if (yyaccept == 0) {
		goto yy641;
	} else {
		goto yy664;
	}
yy654:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy654;
	}
	if (yych <= 0xDF) {
		if (yych <= '=') {
			if (yych <= 0x00) goto yy653;
			if (yych == '\n') goto yy653;
			goto yy651;
		} else {
			if (yych <= '>') goto yy663;
			if (yych <= 0x7F) goto yy651;
			if (yych <= 0xC1) goto yy653;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) goto yy657;
			if (yych == 0xED) goto yy659;
			goto yy658;
		} else {
			if (yych <= 0xF0) goto yy660;
			if (yych <= 0xF3) goto yy661;
			if (yych <= 0xF4) goto yy662;
			goto yy653;
		}
	}
yy656:
	yych = *++p;
	if (yych <= 0x7F) goto yy653;
	if (yych <= 0xBF) goto yy651;
	goto yy653;
yy657:
	yych = *++p;
	if (yych <= 0x9F) goto yy653;
	if (yych <= 0xBF) goto yy656;
	goto yy653;
yy658:
	yych = *++p;
	if (yych <= 0x7F) goto yy653;
	if (yych <= 0xBF) goto yy656;
	goto yy653;
yy659:
	yych = *++p;
	if (yych <= 0x7F) goto yy653;
	if (yych <= 0x9F) goto yy656;
	goto yy653;
yy660:
	yych = *++p;
	if (yych <= 0x8F) goto yy653;
	if (yych <= 0xBF) goto yy658;
	goto yy653;
yy661:
	yych = *++p;
	if (yych <= 0x7F) goto yy653;
	if (yych <= 0xBF) goto yy658;
	goto yy653;
yy662:
	yych = *++p;
	if (yych <= 0x7F) goto yy653;
	if (yych <= 0x8F) goto yy658;
	goto yy653;
yy663:
	yyaccept = 1;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 64) {
		goto yy651;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy664;
			if (yych <= '?') goto yy654;
		} else {
			if (yych <= 0xDF) goto yy656;
			if (yych <= 0xE0) goto yy657;
			goto yy658;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy659;
			if (yych <= 0xEF) goto yy658;
			goto yy660;
		} else {
			if (yych <= 0xF3) goto yy661;
			if (yych <= 0xF4) goto yy662;
		}
	}
yy664:
	{ return (bufsize_t)(p - start); }
}

}

// Try to match an HTML block end line of type 4
bufsize_t _scan_html_block_end_4(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[] = {
		  0, 128, 128, 128, 128, 128, 128, 128, 
		128, 128,   0, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128,  64, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		128, 128, 128, 128, 128, 128, 128, 128, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yybm[0+yych] & 64) {
		goto yy670;
	}
	if (yych <= 0xE0) {
		if (yych <= '\n') {
			if (yych <= 0x00) goto yy667;
			if (yych <= '\t') goto yy669;
		} else {
			if (yych <= 0x7F) goto yy669;
			if (yych <= 0xC1) goto yy667;
			if (yych <= 0xDF) goto yy673;
			goto yy674;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy676;
			goto yy675;
		} else {
			if (yych <= 0xF0) goto yy677;
			if (yych <= 0xF3) goto yy678;
			if (yych <= 0xF4) goto yy679;
		}
	}
yy667:
	++p;
yy668:
	{ return 0; }
yy669:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= '\n') {
		if (yych <= 0x00) goto yy668;
		if (yych <= '\t') goto yy681;
		goto yy668;
	} else {
		if (yych <= 0x7F) goto yy681;
		if (yych <= 0xC1) goto yy668;
		if (yych <= 0xF4) goto yy681;
		goto yy668;
	}
yy670:
	yyaccept = 1;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 128) {
		goto yy680;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy672;
			if (yych <= '>') goto yy670;
		} else {
			if (yych <= 0xDF) goto yy683;
			if (yych <= 0xE0) goto yy684;
			goto yy685;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy686;
			if (yych <= 0xEF) goto yy685;
			goto yy687;
		} else {
			if (yych <= 0xF3) goto yy688;
			if (yych <= 0xF4) goto yy689;
		}
	}
yy672:
	{ return (bufsize_t)(p - start); }
yy673:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy668;
	if (yych <= 0xBF) goto yy680;
	goto yy668;
yy674:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x9F) goto yy668;
	if (yych <= 0xBF) goto yy683;
	goto yy668;
yy675:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy668;
	if (yych <= 0xBF) goto yy683;
	goto yy668;
yy676:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy668;
	if (yych <= 0x9F) goto yy683;
	goto yy668;
yy677:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x8F) goto yy668;
	if (yych <= 0xBF) goto yy685;
	goto yy668;
yy678:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy668;
	if (yych <= 0xBF) goto yy685;
	goto yy668;
yy679:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy668;
	if (yych <= 0x8F) goto yy685;
	goto yy668;
yy680:
	yych = *++p;
yy681:
	if (yybm[0+yych] & 128) {
		goto yy680;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy682;
			if (yych <= '>') goto yy670;
		} else {
			if (yych <= 0xDF) goto yy683;
			if (yych <= 0xE0) goto yy684;
			goto yy685;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy686;
			if (yych <= 0xEF) goto yy685;
			goto yy687;
		} else {
			if (yych <= 0xF3) goto yy688;
			if (yych <= 0xF4) goto yy689;
		}
	}
yy682:
	p = marker;
	if (yyaccept == 0) {
		goto yy668;
	} else {
		goto yy672;
	}
yy683:
	yych = *++p;
	if (yych <= 0x7F) goto yy682;
	if (yych <= 0xBF) goto yy680;
	goto yy682;
yy684:
	yych = *++p;
	if (yych <= 0x9F) goto yy682;
	if (yych <= 0xBF) goto yy683;
	goto yy682;
yy685:
	yych = *++p;
	if (yych <= 0x7F) goto yy682;
	if (yych <= 0xBF) goto yy683;
	goto yy682;
yy686:
	yych = *++p;
	if (yych <= 0x7F) goto yy682;
	if (yych <= 0x9F) goto yy683;
	goto yy682;
yy687:
	yych = *++p;
	if (yych <= 0x8F) goto yy682;
	if (yych <= 0xBF) goto yy685;
	goto yy682;
yy688:
	yych = *++p;
	if (yych <= 0x7F) goto yy682;
	if (yych <= 0xBF) goto yy685;
	goto yy682;
yy689:
	yych = *++p;
	if (yych <= 0x7F) goto yy682;
	if (yych <= 0x8F) goto yy685;
	goto yy682;
}

}

// Try to match an HTML block end line of type 5
bufsize_t _scan_html_block_end_5(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[] = {
		  0,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,   0,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64, 128,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= 0xDF) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy692;
			if (yych != '\n') goto yy694;
		} else {
			if (yych <= ']') goto yy695;
			if (yych <= 0x7F) goto yy694;
			if (yych >= 0xC2) goto yy696;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) goto yy697;
			if (yych == 0xED) goto yy699;
			goto yy698;
		} else {
			if (yych <= 0xF0) goto yy700;
			if (yych <= 0xF3) goto yy701;
			if (yych <= 0xF4) goto yy702;
		}
	}
yy692:
	++p;
yy693:
	{ return 0; }
yy694:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= '\n') {
		if (yych <= 0x00) goto yy693;
		if (yych <= '\t') goto yy704;
		goto yy693;
	} else {
		if (yych <= 0x7F) goto yy704;
		if (yych <= 0xC1) goto yy693;
		if (yych <= 0xF4) goto yy704;
		goto yy693;
	}
yy695:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 128) {
		goto yy714;
	}
	if (yych <= '\n') {
		if (yych <= 0x00) goto yy693;
		if (yych <= '\t') goto yy704;
		goto yy693;
	} else {
		if (yych <= 0x7F) goto yy704;
		if (yych <= 0xC1) goto yy693;
		if (yych <= 0xF4) goto yy704;
		goto yy693;
	}
yy696:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy693;
	if (yych <= 0xBF) goto yy703;
	goto yy693;
yy697:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x9F) goto yy693;
	if (yych <= 0xBF) goto yy707;
	goto yy693;
yy698:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy693;
	if (yych <= 0xBF) goto yy707;
	goto yy693;
yy699:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy693;
	if (yych <= 0x9F) goto yy707;
	goto yy693;
yy700:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x8F) goto yy693;
	if (yych <= 0xBF) goto yy709;
	goto yy693;
yy701:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy693;
	if (yych <= 0xBF) goto yy709;
	goto yy693;
yy702:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x7F) goto yy693;
	if (yych <= 0x8F) goto yy709;
	goto yy693;
yy703:
	yych = *++p;
yy704:
	if (yybm[0+yych] & 64) {
		goto yy703;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy705;
			if (yych <= ']') goto yy706;
		} else {
			if (yych <= 0xDF) goto yy707;
			if (yych <= 0xE0) goto yy708;
			goto yy709;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy710;
			if (yych <= 0xEF) goto yy709;
			goto yy711;
		} else {
			if (yych <= 0xF3) goto yy712;
			if (yych <= 0xF4) goto yy713;
		}
	}
yy705:
	p = marker;
	if (yyaccept == 0) {
		goto yy693;
	} else {
		goto yy717;
	}
yy706:
	yych = *++p;
	if (yybm[0+yych] & 64) {
		goto yy703;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy705;
			if (yych <= ']') goto yy714;
			goto yy705;
		} else {
			if (yych <= 0xDF) goto yy707;
			if (yych <= 0xE0) goto yy708;
			goto yy709;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy710;
			if (yych <= 0xEF) goto yy709;
			goto yy711;
		} else {
			if (yych <= 0xF3) goto yy712;
			if (yych <= 0xF4) goto yy713;
			goto yy705;
		}
	}
yy707:
	yych = *++p;
	if (yych <= 0x7F) goto yy705;
	if (yych <= 0xBF) goto yy703;
	goto yy705;
yy708:
	yych = *++p;
	if (yych <= 0x9F) goto yy705;
	if (yych <= 0xBF) goto yy707;
	goto yy705;
yy709:
	yych = *++p;
	if (yych <= 0x7F) goto yy705;
	if (yych <= 0xBF) goto yy707;
	goto yy705;
yy710:
	yych = *++p;
	if (yych <= 0x7F) goto yy705;
	if (yych <= 0x9F) goto yy707;
	goto yy705;
yy711:
	yych = *++p;
	if (yych <= 0x8F) goto yy705;
	if (yych <= 0xBF) goto yy709;
	goto yy705;
yy712:
	yych = *++p;
	if (yych <= 0x7F) goto yy705;
	if (yych <= 0xBF) goto yy709;
	goto yy705;
yy713:
	yych = *++p;
	if (yych <= 0x7F) goto yy705;
	if (yych <= 0x8F) goto yy709;
	goto yy705;
yy714:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy714;
	}
	if (yych <= 0xDF) {
		if (yych <= '=') {
			if (yych <= 0x00) goto yy705;
			if (yych == '\n') goto yy705;
			goto yy703;
		} else {
			if (yych <= '>') goto yy716;
			if (yych <= 0x7F) goto yy703;
			if (yych <= 0xC1) goto yy705;
			goto yy707;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) goto yy708;
			if (yych == 0xED) goto yy710;
			goto yy709;
		} else {
			if (yych <= 0xF0) goto yy711;
			if (yych <= 0xF3) goto yy712;
			if (yych <= 0xF4) goto yy713;
			goto yy705;
		}
	}
yy716:
	yyaccept = 1;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 64) {
		goto yy703;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= '\n') goto yy717;
			if (yych <= ']') goto yy706;
		} else {
			if (yych <= 0xDF) goto yy707;
			if (yych <= 0xE0) goto yy708;
			goto yy709;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy710;
			if (yych <= 0xEF) goto yy709;
			goto yy711;
		} else {
			if (yych <= 0xF3) goto yy712;
			if (yych <= 0xF4) goto yy713;
		}
	}
yy717:
	{ return (bufsize_t)(p - start); }
}

}

// Try to match a link title (in single quotes, in double quotes, or
// in parentheses), returning number of chars matched.  Allow one
// level of internal nesting (quotes within quotes).
bufsize_t _scan_link_title(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	unsigned int yyaccept = 0;
	static const unsigned char yybm[] = {
		  0, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 192, 208, 208, 208, 208, 144, 
		208,  80, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208,  32, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		208, 208, 208, 208, 208, 208, 208, 208, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= '&') {
		if (yych == '"') goto yy722;
	} else {
		if (yych <= '\'') goto yy723;
		if (yych <= '(') goto yy724;
	}
	++p;
yy721:
	{ return 0; }
yy722:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x00) goto yy721;
	if (yych <= 0x7F) goto yy726;
	if (yych <= 0xC1) goto yy721;
	if (yych <= 0xF4) goto yy726;
	goto yy721;
yy723:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x00) goto yy721;
	if (yych <= 0x7F) goto yy740;
	if (yych <= 0xC1) goto yy721;
	if (yych <= 0xF4) goto yy740;
	goto yy721;
yy724:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych <= 0x00) goto yy721;
	if (yych <= 0x7F) goto yy753;
	if (yych <= 0xC1) goto yy721;
	if (yych <= 0xF4) goto yy753;
	goto yy721;
yy725:
	yych = *++p;
yy726:
	if (yybm[0+yych] & 16) {
		goto yy725;
	}
	if (yych <= 0xE0) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy727;
			if (yych <= '"') goto yy728;
			goto yy730;
		} else {
			if (yych <= 0xC1) goto yy727;
			if (yych <= 0xDF) goto yy732;
			goto yy733;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy735;
			goto yy734;
		} else {
			if (yych <= 0xF0) goto yy736;
			if (yych <= 0xF3) goto yy737;
			if (yych <= 0xF4) goto yy738;
		}
	}
yy727:
	p = marker;
	if (yyaccept <= 1) {
		if (yyaccept == 0) {
			goto yy721;
		} else {
			goto yy729;
		}
	} else {
		if (yyaccept == 2) {
			goto yy742;
		} else {
			goto yy755;
		}
	}
yy728:
	++p;
yy729:
	{ return (bufsize_t)(p - start); }
yy730:
	yych = *++p;
	if (yybm[0+yych] & 16) {
		goto yy725;
	}
	if (yych <= 0xE0) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy727;
			if (yych <= '"') goto yy765;
			goto yy730;
		} else {
			if (yych <= 0xC1) goto yy727;
			if (yych >= 0xE0) goto yy733;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy735;
			goto yy734;
		} else {
			if (yych <= 0xF0) goto yy736;
			if (yych <= 0xF3) goto yy737;
			if (yych <= 0xF4) goto yy738;
			goto yy727;
		}
	}
yy732:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0xBF) goto yy725;
	goto yy727;
yy733:
	yych = *++p;
	if (yych <= 0x9F) goto yy727;
	if (yych <= 0xBF) goto yy732;
	goto yy727;
yy734:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0xBF) goto yy732;
	goto yy727;
yy735:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0x9F) goto yy732;
	goto yy727;
yy736:
	yych = *++p;
	if (yych <= 0x8F) goto yy727;
	if (yych <= 0xBF) goto yy734;
	goto yy727;
yy737:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0xBF) goto yy734;
	goto yy727;
yy738:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0x8F) goto yy734;
	goto yy727;
yy739:
	yych = *++p;
yy740:
	if (yybm[0+yych] & 64) {
		goto yy739;
	}
	if (yych <= 0xE0) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy727;
			if (yych >= '(') goto yy743;
		} else {
			if (yych <= 0xC1) goto yy727;
			if (yych <= 0xDF) goto yy745;
			goto yy746;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy748;
			goto yy747;
		} else {
			if (yych <= 0xF0) goto yy749;
			if (yych <= 0xF3) goto yy750;
			if (yych <= 0xF4) goto yy751;
			goto yy727;
		}
	}
yy741:
	++p;
yy742:
	{ return (bufsize_t)(p - start); }
yy743:
	yych = *++p;
	if (yybm[0+yych] & 64) {
		goto yy739;
	}
	if (yych <= 0xE0) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy727;
			if (yych <= '\'') goto yy766;
			goto yy743;
		} else {
			if (yych <= 0xC1) goto yy727;
			if (yych >= 0xE0) goto yy746;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy748;
			goto yy747;
		} else {
			if (yych <= 0xF0) goto yy749;
			if (yych <= 0xF3) goto yy750;
			if (yych <= 0xF4) goto yy751;
			goto yy727;
		}
	}
yy745:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0xBF) goto yy739;
	goto yy727;
yy746:
	yych = *++p;
	if (yych <= 0x9F) goto yy727;
	if (yych <= 0xBF) goto yy745;
	goto yy727;
yy747:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0xBF) goto yy745;
	goto yy727;
yy748:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0x9F) goto yy745;
	goto yy727;
yy749:
	yych = *++p;
	if (yych <= 0x8F) goto yy727;
	if (yych <= 0xBF) goto yy747;
	goto yy727;
yy750:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0xBF) goto yy747;
	goto yy727;
yy751:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0x8F) goto yy747;
	goto yy727;
yy752:
	yych = *++p;
yy753:
	if (yybm[0+yych] & 128) {
		goto yy752;
	}
	if (yych <= 0xE0) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy727;
			if (yych >= '*') goto yy756;
		} else {
			if (yych <= 0xC1) goto yy727;
			if (yych <= 0xDF) goto yy758;
			goto yy759;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy761;
			goto yy760;
		} else {
			if (yych <= 0xF0) goto yy762;
			if (yych <= 0xF3) goto yy763;
			if (yych <= 0xF4) goto yy764;
			goto yy727;
		}
	}
yy754:
	++p;
yy755:
	{ return (bufsize_t)(p - start); }
yy756:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy752;
	}
	if (yych <= 0xE0) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy727;
			if (yych <= ')') goto yy767;
			goto yy756;
		} else {
			if (yych <= 0xC1) goto yy727;
			if (yych >= 0xE0) goto yy759;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy761;
			goto yy760;
		} else {
			if (yych <= 0xF0) goto yy762;
			if (yych <= 0xF3) goto yy763;
			if (yych <= 0xF4) goto yy764;
			goto yy727;
		}
	}
yy758:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0xBF) goto yy752;
	goto yy727;
yy759:
	yych = *++p;
	if (yych <= 0x9F) goto yy727;
	if (yych <= 0xBF) goto yy758;
	goto yy727;
yy760:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0xBF) goto yy758;
	goto yy727;
yy761:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0x9F) goto yy758;
	goto yy727;
yy762:
	yych = *++p;
	if (yych <= 0x8F) goto yy727;
	if (yych <= 0xBF) goto yy760;
	goto yy727;
yy763:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0xBF) goto yy760;
	goto yy727;
yy764:
	yych = *++p;
	if (yych <= 0x7F) goto yy727;
	if (yych <= 0x8F) goto yy760;
	goto yy727;
yy765:
	yyaccept = 1;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 16) {
		goto yy725;
	}
	if (yych <= 0xE0) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy729;
			if (yych <= '"') goto yy728;
			goto yy730;
		} else {
			if (yych <= 0xC1) goto yy729;
			if (yych <= 0xDF) goto yy732;
			goto yy733;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy735;
			goto yy734;
		} else {
			if (yych <= 0xF0) goto yy736;
			if (yych <= 0xF3) goto yy737;
			if (yych <= 0xF4) goto yy738;
			goto yy729;
		}
	}
yy766:
	yyaccept = 2;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 64) {
		goto yy739;
	}
	if (yych <= 0xE0) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy742;
			if (yych <= '\'') goto yy741;
			goto yy743;
		} else {
			if (yych <= 0xC1) goto yy742;
			if (yych <= 0xDF) goto yy745;
			goto yy746;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy748;
			goto yy747;
		} else {
			if (yych <= 0xF0) goto yy749;
			if (yych <= 0xF3) goto yy750;
			if (yych <= 0xF4) goto yy751;
			goto yy742;
		}
	}
yy767:
	yyaccept = 3;
	yych = *(marker = ++p);
	if (yybm[0+yych] & 128) {
		goto yy752;
	}
	if (yych <= 0xE0) {
		if (yych <= '\\') {
			if (yych <= 0x00) goto yy755;
			if (yych <= ')') goto yy754;
			goto yy756;
		} else {
			if (yych <= 0xC1) goto yy755;
			if (yych <= 0xDF) goto yy758;
			goto yy759;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych == 0xED) goto yy761;
			goto yy760;
		} else {
			if (yych <= 0xF0) goto yy762;
			if (yych <= 0xF3) goto yy763;
			if (yych <= 0xF4) goto yy764;
			goto yy755;
		}
	}
}

}

// Match space characters, including newlines.
bufsize_t _scan_spacechars(const unsigned char *p)
{
  const unsigned char *start = p; \

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0, 128, 128, 128, 128, 128,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		128,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yybm[0+yych] & 128) {
		goto yy772;
	}
	++p;
	{ return 0; }
yy772:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy772;
	}
	{ return (bufsize_t)(p - start); }
}

}

// Match ATX heading start.
bufsize_t _scan_atx_heading_start(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0, 128,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		128,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych == '#') goto yy779;
	++p;
yy778:
	{ return 0; }
yy779:
	yych = *(marker = ++p);
	if (yybm[0+yych] & 128) {
		goto yy780;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy778;
		if (yych <= '\n') goto yy783;
		goto yy778;
	} else {
		if (yych <= '\r') goto yy783;
		if (yych == '#') goto yy784;
		goto yy778;
	}
yy780:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy780;
	}
yy782:
	{ return (bufsize_t)(p - start); }
yy783:
	++p;
	goto yy782;
yy784:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy780;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy785;
		if (yych <= '\n') goto yy783;
	} else {
		if (yych <= '\r') goto yy783;
		if (yych == '#') goto yy786;
	}
yy785:
	p = marker;
	goto yy778;
yy786:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy780;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy785;
		if (yych <= '\n') goto yy783;
		goto yy785;
	} else {
		if (yych <= '\r') goto yy783;
		if (yych != '#') goto yy785;
	}
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy780;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy785;
		if (yych <= '\n') goto yy783;
		goto yy785;
	} else {
		if (yych <= '\r') goto yy783;
		if (yych != '#') goto yy785;
	}
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy780;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy785;
		if (yych <= '\n') goto yy783;
		goto yy785;
	} else {
		if (yych <= '\r') goto yy783;
		if (yych != '#') goto yy785;
	}
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy780;
	}
	if (yych <= 0x08) goto yy785;
	if (yych <= '\n') goto yy783;
	if (yych == '\r') goto yy783;
	goto yy785;
}

}

// Match setext heading line.  Return 1 for level-1 heading,
// 2 for level-2, 0 for no match.
bufsize_t _scan_setext_heading_line(const unsigned char *p)
{
  const unsigned char *marker = NULL;

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,  32,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		 32,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,  64,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0, 128,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych == '-') goto yy794;
	if (yych == '=') goto yy795;
	++p;
yy793:
	{ return 0; }
yy794:
	yych = *(marker = ++p);
	if (yybm[0+yych] & 64) {
		goto yy801;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy793;
		if (yych <= '\n') goto yy797;
		goto yy793;
	} else {
		if (yych <= '\r') goto yy797;
		if (yych == ' ') goto yy797;
		goto yy793;
	}
yy795:
	yych = *(marker = ++p);
	if (yybm[0+yych] & 128) {
		goto yy807;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy793;
		if (yych <= '\n') goto yy804;
		goto yy793;
	} else {
		if (yych <= '\r') goto yy804;
		if (yych == ' ') goto yy804;
		goto yy793;
	}
yy796:
	yych = *++p;
yy797:
	if (yybm[0+yych] & 32) {
		goto yy796;
	}
	if (yych <= 0x08) goto yy798;
	if (yych <= '\n') goto yy799;
	if (yych == '\r') goto yy799;
yy798:
	p = marker;
	goto yy793;
yy799:
	++p;
	{ return 2; }
yy801:
	yych = *++p;
	if (yybm[0+yych] & 32) {
		goto yy796;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy798;
		if (yych <= '\n') goto yy799;
		goto yy798;
	} else {
		if (yych <= '\r') goto yy799;
		if (yych == '-') goto yy801;
		goto yy798;
	}
yy803:
	yych = *++p;
yy804:
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy798;
		if (yych <= '\t') goto yy803;
		if (yych >= '\v') goto yy798;
	} else {
		if (yych <= '\r') goto yy805;
		if (yych == ' ') goto yy803;
		goto yy798;
	}
yy805:
	++p;
	{ return 1; }
yy807:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy807;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy798;
		if (yych <= '\t') goto yy803;
		if (yych <= '\n') goto yy805;
		goto yy798;
	} else {
		if (yych <= '\r') goto yy805;
		if (yych == ' ') goto yy803;
		goto yy798;
	}
}

}

// Scan a thematic break line: "...three or more hyphens, asterisks,
// or underscores on a line by themselves. If you wish, you may use
// spaces between the hyphens or asterisks."
bufsize_t _scan_thematic_break(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0, 240,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		240,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,  32,   0,   0,  64,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0, 128, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych <= ',') {
		if (yych == '*') goto yy813;
	} else {
		if (yych <= '-') goto yy814;
		if (yych == '_') goto yy815;
	}
	++p;
yy812:
	{ return 0; }
yy813:
	yych = *(marker = ++p);
	if (yybm[0+yych] & 16) {
		goto yy816;
	}
	if (yych == '*') goto yy819;
	goto yy812;
yy814:
	yych = *(marker = ++p);
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy821;
		goto yy812;
	} else {
		if (yych <= ' ') goto yy821;
		if (yych == '-') goto yy823;
		goto yy812;
	}
yy815:
	yych = *(marker = ++p);
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy825;
		goto yy812;
	} else {
		if (yych <= ' ') goto yy825;
		if (yych == '_') goto yy827;
		goto yy812;
	}
yy816:
	yych = *++p;
	if (yybm[0+yych] & 16) {
		goto yy816;
	}
	if (yych == '*') goto yy819;
yy818:
	p = marker;
	goto yy812;
yy819:
	yych = *++p;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy819;
		goto yy818;
	} else {
		if (yych <= ' ') goto yy819;
		if (yych == '*') goto yy829;
		goto yy818;
	}
yy821:
	yych = *++p;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy821;
		goto yy818;
	} else {
		if (yych <= ' ') goto yy821;
		if (yych != '-') goto yy818;
	}
yy823:
	yych = *++p;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy823;
		goto yy818;
	} else {
		if (yych <= ' ') goto yy823;
		if (yych == '-') goto yy831;
		goto yy818;
	}
yy825:
	yych = *++p;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy825;
		goto yy818;
	} else {
		if (yych <= ' ') goto yy825;
		if (yych != '_') goto yy818;
	}
yy827:
	yych = *++p;
	if (yych <= 0x1F) {
		if (yych == '\t') goto yy827;
		goto yy818;
	} else {
		if (yych <= ' ') goto yy827;
		if (yych == '_') goto yy833;
		goto yy818;
	}
yy829:
	yych = *++p;
	if (yybm[0+yych] & 32) {
		goto yy829;
	}
	if (yych <= 0x08) goto yy818;
	if (yych <= '\n') goto yy835;
	if (yych == '\r') goto yy835;
	goto yy818;
yy831:
	yych = *++p;
	if (yybm[0+yych] & 64) {
		goto yy831;
	}
	if (yych <= 0x08) goto yy818;
	if (yych <= '\n') goto yy837;
	if (yych == '\r') goto yy837;
	goto yy818;
yy833:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy833;
	}
	if (yych <= 0x08) goto yy818;
	if (yych <= '\n') goto yy839;
	if (yych == '\r') goto yy839;
	goto yy818;
yy835:
	++p;
	{ return (bufsize_t)(p - start); }
yy837:
	++p;
	{ return (bufsize_t)(p - start); }
yy839:
	++p;
	{ return (bufsize_t)(p - start); }
}

}

// Scan an opening code fence.
bufsize_t _scan_open_code_fence(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0, 192, 192, 192, 192, 192, 192, 192, 
		192, 192,   0, 192, 192,   0, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		144, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192, 192, 192, 
		192, 192, 192, 192, 192, 192,  96, 192, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych == '`') goto yy845;
	if (yych == '~') goto yy846;
	++p;
yy844:
	{ return 0; }
yy845:
	yych = *(marker = ++p);
	if (yych == '`') goto yy847;
	goto yy844;
yy846:
	yych = *(marker = ++p);
	if (yych == '~') goto yy849;
	goto yy844;
yy847:
	yych = *++p;
	if (yybm[0+yych] & 16) {
		goto yy850;
	}
yy848:
	p = marker;
	goto yy844;
yy849:
	yych = *++p;
	if (yybm[0+yych] & 32) {
		goto yy852;
	}
	goto yy848;
yy850:
	yych = *++p;
	if (yybm[0+yych] & 16) {
		goto yy850;
	}
	if (yych <= 0xDF) {
		if (yych <= '\f') {
			if (yych <= 0x00) goto yy848;
			if (yych == '\n') {
				marker = p;
				goto yy856;
			}
			marker = p;
			goto yy854;
		} else {
			if (yych <= '\r') {
				marker = p;
				goto yy856;
			}
			if (yych <= 0x7F) {
				marker = p;
				goto yy854;
			}
			if (yych <= 0xC1) goto yy848;
			marker = p;
			goto yy858;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) {
				marker = p;
				goto yy859;
			}
			if (yych == 0xED) {
				marker = p;
				goto yy861;
			}
			marker = p;
			goto yy860;
		} else {
			if (yych <= 0xF0) {
				marker = p;
				goto yy862;
			}
			if (yych <= 0xF3) {
				marker = p;
				goto yy863;
			}
			if (yych <= 0xF4) {
				marker = p;
				goto yy864;
			}
			goto yy848;
		}
	}
yy852:
	yych = *++p;
	if (yybm[0+yych] & 32) {
		goto yy852;
	}
	if (yych <= 0xDF) {
		if (yych <= '\f') {
			if (yych <= 0x00) goto yy848;
			if (yych == '\n') {
				marker = p;
				goto yy867;
			}
			marker = p;
			goto yy865;
		} else {
			if (yych <= '\r') {
				marker = p;
				goto yy867;
			}
			if (yych <= 0x7F) {
				marker = p;
				goto yy865;
			}
			if (yych <= 0xC1) goto yy848;
			marker = p;
			goto yy869;
		}
	} else {
		if (yych <= 0xEF) {
			if (yych <= 0xE0) {
				marker = p;
				goto yy870;
			}
			if (yych == 0xED) {
				marker = p;
				goto yy872;
			}
			marker = p;
			goto yy871;
		} else {
			if (yych <= 0xF0) {
				marker = p;
				goto yy873;
			}
			if (yych <= 0xF3) {
				marker = p;
				goto yy874;
			}
			if (yych <= 0xF4) {
				marker = p;
				goto yy875;
			}
			goto yy848;
		}
	}
yy854:
	yych = *++p;
	if (yybm[0+yych] & 64) {
		goto yy854;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy848;
			if (yych >= 0x0E) goto yy848;
		} else {
			if (yych <= 0xDF) goto yy858;
			if (yych <= 0xE0) goto yy859;
			goto yy860;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy861;
			if (yych <= 0xEF) goto yy860;
			goto yy862;
		} else {
			if (yych <= 0xF3) goto yy863;
			if (yych <= 0xF4) goto yy864;
			goto yy848;
		}
	}
yy856:
	++p;
	p = marker;
	{ return (bufsize_t)(p - start); }
yy858:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0xBF) goto yy854;
	goto yy848;
yy859:
	yych = *++p;
	if (yych <= 0x9F) goto yy848;
	if (yych <= 0xBF) goto yy858;
	goto yy848;
yy860:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0xBF) goto yy858;
	goto yy848;
yy861:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0x9F) goto yy858;
	goto yy848;
yy862:
	yych = *++p;
	if (yych <= 0x8F) goto yy848;
	if (yych <= 0xBF) goto yy860;
	goto yy848;
yy863:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0xBF) goto yy860;
	goto yy848;
yy864:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0x8F) goto yy860;
	goto yy848;
yy865:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy865;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= 0x00) goto yy848;
			if (yych >= 0x0E) goto yy848;
		} else {
			if (yych <= 0xDF) goto yy869;
			if (yych <= 0xE0) goto yy870;
			goto yy871;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy872;
			if (yych <= 0xEF) goto yy871;
			goto yy873;
		} else {
			if (yych <= 0xF3) goto yy874;
			if (yych <= 0xF4) goto yy875;
			goto yy848;
		}
	}
yy867:
	++p;
	p = marker;
	{ return (bufsize_t)(p - start); }
yy869:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0xBF) goto yy865;
	goto yy848;
yy870:
	yych = *++p;
	if (yych <= 0x9F) goto yy848;
	if (yych <= 0xBF) goto yy869;
	goto yy848;
yy871:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0xBF) goto yy869;
	goto yy848;
yy872:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0x9F) goto yy869;
	goto yy848;
yy873:
	yych = *++p;
	if (yych <= 0x8F) goto yy848;
	if (yych <= 0xBF) goto yy871;
	goto yy848;
yy874:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0xBF) goto yy871;
	goto yy848;
yy875:
	yych = *++p;
	if (yych <= 0x7F) goto yy848;
	if (yych <= 0x8F) goto yy871;
	goto yy848;
}

}

// Scan a closing code fence with length at least len.
bufsize_t _scan_close_code_fence(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0, 128,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		128,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		 32,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,  64,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych == '`') goto yy880;
	if (yych == '~') goto yy881;
	++p;
yy879:
	{ return 0; }
yy880:
	yych = *(marker = ++p);
	if (yych == '`') goto yy882;
	goto yy879;
yy881:
	yych = *(marker = ++p);
	if (yych == '~') goto yy884;
	goto yy879;
yy882:
	yych = *++p;
	if (yybm[0+yych] & 32) {
		goto yy885;
	}
yy883:
	p = marker;
	goto yy879;
yy884:
	yych = *++p;
	if (yybm[0+yych] & 64) {
		goto yy887;
	}
	goto yy883;
yy885:
	yych = *++p;
	if (yybm[0+yych] & 32) {
		goto yy885;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy883;
		if (yych <= '\t') {
			marker = p;
			goto yy889;
		}
		if (yych <= '\n') {
			marker = p;
			goto yy891;
		}
		goto yy883;
	} else {
		if (yych <= '\r') {
			marker = p;
			goto yy891;
		}
		if (yych == ' ') {
			marker = p;
			goto yy889;
		}
		goto yy883;
	}
yy887:
	yych = *++p;
	if (yybm[0+yych] & 64) {
		goto yy887;
	}
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy883;
		if (yych <= '\t') {
			marker = p;
			goto yy893;
		}
		if (yych <= '\n') {
			marker = p;
			goto yy895;
		}
		goto yy883;
	} else {
		if (yych <= '\r') {
			marker = p;
			goto yy895;
		}
		if (yych == ' ') {
			marker = p;
			goto yy893;
		}
		goto yy883;
	}
yy889:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy889;
	}
	if (yych <= 0x08) goto yy883;
	if (yych <= '\n') goto yy891;
	if (yych != '\r') goto yy883;
yy891:
	++p;
	p = marker;
	{ return (bufsize_t)(p - start); }
yy893:
	yych = *++p;
	if (yych <= '\f') {
		if (yych <= 0x08) goto yy883;
		if (yych <= '\t') goto yy893;
		if (yych >= '\v') goto yy883;
	} else {
		if (yych <= '\r') goto yy895;
		if (yych == ' ') goto yy893;
		goto yy883;
	}
yy895:
	++p;
	p = marker;
	{ return (bufsize_t)(p - start); }
}

}

// Scans an entity.
// Returns number of chars matched.
bufsize_t _scan_entity(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	yych = *p;
	if (yych == '&') goto yy901;
	++p;
yy900:
	{ return 0; }
yy901:
	yych = *(marker = ++p);
	if (yych <= '@') {
		if (yych != '#') goto yy900;
	} else {
		if (yych <= 'Z') goto yy904;
		if (yych <= '`') goto yy900;
		if (yych <= 'z') goto yy904;
		goto yy900;
	}
	yych = *++p;
	if (yych <= 'W') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy905;
	} else {
		if (yych <= 'X') goto yy906;
		if (yych == 'x') goto yy906;
	}
yy903:
	p = marker;
	goto yy900;
yy904:
	yych = *++p;
	if (yych <= '@') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy907;
		goto yy903;
	} else {
		if (yych <= 'Z') goto yy907;
		if (yych <= '`') goto yy903;
		if (yych <= 'z') goto yy907;
		goto yy903;
	}
yy905:
	yych = *++p;
	if (yych <= '/') goto yy903;
	if (yych <= '9') goto yy908;
	if (yych == ';') goto yy909;
	goto yy903;
yy906:
	yych = *++p;
	if (yych <= '@') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy911;
		goto yy903;
	} else {
		if (yych <= 'F') goto yy911;
		if (yych <= '`') goto yy903;
		if (yych <= 'f') goto yy911;
		goto yy903;
	}
yy907:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy912;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
			goto yy912;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'z') goto yy912;
			goto yy903;
		}
	}
yy908:
	yych = *++p;
	if (yych <= '/') goto yy903;
	if (yych <= '9') goto yy913;
	if (yych != ';') goto yy903;
yy909:
	++p;
	{ return (bufsize_t)(p - start); }
yy911:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy914;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'F') {
			if (yych <= '@') goto yy903;
			goto yy914;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'f') goto yy914;
			goto yy903;
		}
	}
yy912:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy915;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
			goto yy915;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'z') goto yy915;
			goto yy903;
		}
	}
yy913:
	yych = *++p;
	if (yych <= '/') goto yy903;
	if (yych <= '9') goto yy916;
	if (yych == ';') goto yy909;
	goto yy903;
yy914:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy917;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'F') {
			if (yych <= '@') goto yy903;
			goto yy917;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'f') goto yy917;
			goto yy903;
		}
	}
yy915:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy918;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
			goto yy918;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'z') goto yy918;
			goto yy903;
		}
	}
yy916:
	yych = *++p;
	if (yych <= '/') goto yy903;
	if (yych <= '9') goto yy919;
	if (yych == ';') goto yy909;
	goto yy903;
yy917:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy920;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'F') {
			if (yych <= '@') goto yy903;
			goto yy920;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'f') goto yy920;
			goto yy903;
		}
	}
yy918:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy921;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
			goto yy921;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'z') goto yy921;
			goto yy903;
		}
	}
yy919:
	yych = *++p;
	if (yych <= '/') goto yy903;
	if (yych <= '9') goto yy922;
	if (yych == ';') goto yy909;
	goto yy903;
yy920:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy923;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'F') {
			if (yych <= '@') goto yy903;
			goto yy923;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'f') goto yy923;
			goto yy903;
		}
	}
yy921:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy924;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
			goto yy924;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'z') goto yy924;
			goto yy903;
		}
	}
yy922:
	yych = *++p;
	if (yych <= '/') goto yy903;
	if (yych <= '9') goto yy925;
	if (yych == ';') goto yy909;
	goto yy903;
yy923:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy925;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'F') {
			if (yych <= '@') goto yy903;
			goto yy925;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'f') goto yy925;
			goto yy903;
		}
	}
yy924:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy926;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
			goto yy926;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'z') goto yy926;
			goto yy903;
		}
	}
yy925:
	yych = *++p;
	if (yych == ';') goto yy909;
	goto yy903;
yy926:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy927;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy927:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy928;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy928:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy929;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy929:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy930;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy930:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy931;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy931:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy932;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy932:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy933;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy933:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy934;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy934:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy935;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy935:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy936;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy936:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy937;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy937:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy938;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy938:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy939;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy939:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy940;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy940:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy941;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy941:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy942;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy942:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy943;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy943:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy944;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy944:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy945;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy945:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy946;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy946:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy947;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy947:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy948;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy948:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy949;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
		} else {
			if (yych <= '`') goto yy903;
			if (yych >= '{') goto yy903;
		}
	}
yy949:
	yych = *++p;
	if (yych <= ';') {
		if (yych <= '/') goto yy903;
		if (yych <= '9') goto yy925;
		if (yych <= ':') goto yy903;
		goto yy909;
	} else {
		if (yych <= 'Z') {
			if (yych <= '@') goto yy903;
			goto yy925;
		} else {
			if (yych <= '`') goto yy903;
			if (yych <= 'z') goto yy925;
			goto yy903;
		}
	}
}

}

// Returns positive value if a URL begins in a way that is potentially
// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0.
bufsize_t _scan_dangerous_url(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	unsigned int yyaccept = 0;
	yych = *p;
	if (yych <= 'V') {
		if (yych <= 'F') {
			if (yych == 'D') goto yy954;
			if (yych >= 'F') goto yy955;
		} else {
			if (yych == 'J') goto yy956;
			if (yych >= 'V') goto yy957;
		}
	} else {
		if (yych <= 'f') {
			if (yych == 'd') goto yy954;
			if (yych >= 'f') goto yy955;
		} else {
			if (yych <= 'j') {
				if (yych >= 'j') goto yy956;
			} else {
				if (yych == 'v') goto yy957;
			}
		}
	}
	++p;
yy953:
	{ return 0; }
yy954:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych == 'A') goto yy958;
	if (yych == 'a') goto yy958;
	goto yy953;
yy955:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych == 'I') goto yy960;
	if (yych == 'i') goto yy960;
	goto yy953;
yy956:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych == 'A') goto yy961;
	if (yych == 'a') goto yy961;
	goto yy953;
yy957:
	yyaccept = 0;
	yych = *(marker = ++p);
	if (yych == 'B') goto yy962;
	if (yych == 'b') goto yy962;
	goto yy953;
yy958:
	yych = *++p;
	if (yych == 'T') goto yy963;
	if (yych == 't') goto yy963;
yy959:
	p = marker;
	if (yyaccept == 0) {
		goto yy953;
	} else {
		goto yy971;
	}
yy960:
	yych = *++p;
	if (yych == 'L') goto yy964;
	if (yych == 'l') goto yy964;
	goto yy959;
yy961:
	yych = *++p;
	if (yych == 'V') goto yy965;
	if (yych == 'v') goto yy965;
	goto yy959;
yy962:
	yych = *++p;
	if (yych == 'S') goto yy966;
	if (yych == 's') goto yy966;
	goto yy959;
yy963:
	yych = *++p;
	if (yych == 'A') goto yy967;
	if (yych == 'a') goto yy967;
	goto yy959;
yy964:
	yych = *++p;
	if (yych == 'E') goto yy968;
	if (yych == 'e') goto yy968;
	goto yy959;
yy965:
	yych = *++p;
	if (yych == 'A') goto yy962;
	if (yych == 'a') goto yy962;
	goto yy959;
yy966:
	yych = *++p;
	if (yych == 'C') goto yy969;
	if (yych == 'c') goto yy969;
	goto yy959;
yy967:
	yych = *++p;
	if (yych == ':') goto yy970;
	goto yy959;
yy968:
	yych = *++p;
	if (yych == ':') goto yy972;
	goto yy959;
yy969:
	yych = *++p;
	if (yych == 'R') goto yy973;
	if (yych == 'r') goto yy973;
	goto yy959;
yy970:
	yyaccept = 1;
	yych = *(marker = ++p);
	if (yych == 'I') goto yy974;
	if (yych == 'i') goto yy974;
yy971:
	{ return (bufsize_t)(p - start); }
yy972:
	++p;
	goto yy971;
yy973:
	yych = *++p;
	if (yych == 'I') goto yy975;
	if (yych == 'i') goto yy975;
	goto yy959;
yy974:
	yych = *++p;
	if (yych == 'M') goto yy976;
	if (yych == 'm') goto yy976;
	goto yy959;
yy975:
	yych = *++p;
	if (yych == 'P') goto yy977;
	if (yych == 'p') goto yy977;
	goto yy959;
yy976:
	yych = *++p;
	if (yych == 'A') goto yy978;
	if (yych == 'a') goto yy978;
	goto yy959;
yy977:
	yych = *++p;
	if (yych == 'T') goto yy968;
	if (yych == 't') goto yy968;
	goto yy959;
yy978:
	yych = *++p;
	if (yych == 'G') goto yy979;
	if (yych != 'g') goto yy959;
yy979:
	yych = *++p;
	if (yych == 'E') goto yy980;
	if (yych != 'e') goto yy959;
yy980:
	yych = *++p;
	if (yych != '/') goto yy959;
	yych = *++p;
	if (yych <= 'W') {
		if (yych <= 'J') {
			if (yych == 'G') goto yy982;
			if (yych <= 'I') goto yy959;
			goto yy983;
		} else {
			if (yych == 'P') goto yy984;
			if (yych <= 'V') goto yy959;
			goto yy985;
		}
	} else {
		if (yych <= 'j') {
			if (yych == 'g') goto yy982;
			if (yych <= 'i') goto yy959;
			goto yy983;
		} else {
			if (yych <= 'p') {
				if (yych <= 'o') goto yy959;
				goto yy984;
			} else {
				if (yych == 'w') goto yy985;
				goto yy959;
			}
		}
	}
yy982:
	yych = *++p;
	if (yych == 'I') goto yy986;
	if (yych == 'i') goto yy986;
	goto yy959;
yy983:
	yych = *++p;
	if (yych == 'P') goto yy987;
	if (yych == 'p') goto yy987;
	goto yy959;
yy984:
	yych = *++p;
	if (yych == 'N') goto yy988;
	if (yych == 'n') goto yy988;
	goto yy959;
yy985:
	yych = *++p;
	if (yych == 'E') goto yy989;
	if (yych == 'e') goto yy989;
	goto yy959;
yy986:
	yych = *++p;
	if (yych == 'F') goto yy990;
	if (yych == 'f') goto yy990;
	goto yy959;
yy987:
	yych = *++p;
	if (yych == 'E') goto yy988;
	if (yych != 'e') goto yy959;
yy988:
	yych = *++p;
	if (yych == 'G') goto yy990;
	if (yych == 'g') goto yy990;
	goto yy959;
yy989:
	yych = *++p;
	if (yych == 'B') goto yy992;
	if (yych == 'b') goto yy992;
	goto yy959;
yy990:
	++p;
	{ return 0; }
yy992:
	yych = *++p;
	if (yych == 'P') goto yy990;
	if (yych == 'p') goto yy990;
	goto yy959;
}

}

// Scans a footnote definition opening.
bufsize_t _scan_footnote_definition(const unsigned char *p)
{
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

{
	unsigned char yych;
	static const unsigned char yybm[] = {
		  0,  64,  64,  64,  64,  64,  64,  64, 
		 64, 128,   0,  64,  64,   0,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		128,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,   0,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		 64,  64,  64,  64,  64,  64,  64,  64, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
		  0,   0,   0,   0,   0,   0,   0,   0, 
	};
	yych = *p;
	if (yych == '[') goto yy997;
	++p;
yy996:
	{ return 0; }
yy997:
	yych = *(marker = ++p);
	if (yych != '^') goto yy996;
	yych = *++p;
	if (yych != ']') goto yy1001;
yy999:
	p = marker;
	goto yy996;
yy1000:
	yych = *++p;
yy1001:
	if (yybm[0+yych] & 64) {
		goto yy1000;
	}
	if (yych <= 0xEC) {
		if (yych <= 0xC1) {
			if (yych <= ' ') goto yy999;
			if (yych <= ']') goto yy1009;
			goto yy999;
		} else {
			if (yych <= 0xDF) goto yy1002;
			if (yych <= 0xE0) goto yy1003;
			goto yy1004;
		}
	} else {
		if (yych <= 0xF0) {
			if (yych <= 0xED) goto yy1005;
			if (yych <= 0xEF) goto yy1004;
			goto yy1006;
		} else {
			if (yych <= 0xF3) goto yy1007;
			if (yych <= 0xF4) goto yy1008;
			goto yy999;
		}
	}
yy1002:
	yych = *++p;
	if (yych <= 0x7F) goto yy999;
	if (yych <= 0xBF) goto yy1000;
	goto yy999;
yy1003:
	yych = *++p;
	if (yych <= 0x9F) goto yy999;
	if (yych <= 0xBF) goto yy1002;
	goto yy999;
yy1004:
	yych = *++p;
	if (yych <= 0x7F) goto yy999;
	if (yych <= 0xBF) goto yy1002;
	goto yy999;
yy1005:
	yych = *++p;
	if (yych <= 0x7F) goto yy999;
	if (yych <= 0x9F) goto yy1002;
	goto yy999;
yy1006:
	yych = *++p;
	if (yych <= 0x8F) goto yy999;
	if (yych <= 0xBF) goto yy1004;
	goto yy999;
yy1007:
	yych = *++p;
	if (yych <= 0x7F) goto yy999;
	if (yych <= 0xBF) goto yy1004;
	goto yy999;
yy1008:
	yych = *++p;
	if (yych <= 0x7F) goto yy999;
	if (yych <= 0x8F) goto yy1004;
	goto yy999;
yy1009:
	yych = *++p;
	if (yych != ':') goto yy999;
yy1010:
	yych = *++p;
	if (yybm[0+yych] & 128) {
		goto yy1010;
	}
	{ return (bufsize_t)(p - start); }
}

}
