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

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

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

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

  return res;
}

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

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

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

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

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

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

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

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

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

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

// 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 yy504;
    ++p;
  yy503 : { return 0; }
  yy504:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= '@') {
      if (yych != '/')
        goto yy503;
    } else {
      if (yych <= 'Z')
        goto yy507;
      if (yych <= '`')
        goto yy503;
      if (yych <= 'z')
        goto yy507;
      goto yy503;
    }
    yych = *++p;
    if (yych <= '@')
      goto yy506;
    if (yych <= 'Z')
      goto yy509;
    if (yych <= '`')
      goto yy506;
    if (yych <= 'z')
      goto yy509;
  yy506:
    p = marker;
    if (yyaccept == 0) {
      goto yy503;
    } else {
      goto yy522;
    }
  yy507:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 2) {
      goto yy511;
    }
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych == '-')
          goto yy507;
        goto yy506;
      } else {
        if (yych <= '/')
          goto yy513;
        if (yych <= '9')
          goto yy507;
        goto yy506;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy514;
        if (yych <= '@')
          goto yy506;
        goto yy507;
      } else {
        if (yych <= '`')
          goto yy506;
        if (yych <= 'z')
          goto yy507;
        goto yy506;
      }
    }
  yy509:
    ++p;
    yych = *p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy506;
        if (yych <= '\r')
          goto yy516;
        goto yy506;
      } else {
        if (yych <= ' ')
          goto yy516;
        if (yych == '-')
          goto yy509;
        goto yy506;
      }
    } else {
      if (yych <= '@') {
        if (yych <= '9')
          goto yy509;
        if (yych == '>')
          goto yy514;
        goto yy506;
      } else {
        if (yych <= 'Z')
          goto yy509;
        if (yych <= '`')
          goto yy506;
        if (yych <= 'z')
          goto yy509;
        goto yy506;
      }
    }
  yy511:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 2) {
      goto yy511;
    }
    if (yych <= '>') {
      if (yych <= '9') {
        if (yych != '/')
          goto yy506;
      } else {
        if (yych <= ':')
          goto yy518;
        if (yych <= '=')
          goto yy506;
        goto yy514;
      }
    } else {
      if (yych <= '^') {
        if (yych <= '@')
          goto yy506;
        if (yych <= 'Z')
          goto yy518;
        goto yy506;
      } else {
        if (yych == '`')
          goto yy506;
        if (yych <= 'z')
          goto yy518;
        goto yy506;
      }
    }
  yy513:
    yych = *++p;
    if (yych != '>')
      goto yy506;
  yy514:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 4) {
      goto yy514;
    }
    if (yych <= 0x08)
      goto yy506;
    if (yych <= '\n')
      goto yy520;
    if (yych <= '\v')
      goto yy506;
    if (yych <= '\r')
      goto yy523;
    goto yy506;
  yy516:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych <= 0x08)
        goto yy506;
      if (yych <= '\r')
        goto yy516;
      goto yy506;
    } else {
      if (yych <= ' ')
        goto yy516;
      if (yych == '>')
        goto yy514;
      goto yy506;
    }
  yy518:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 8) {
      goto yy518;
    }
    if (yych <= ',') {
      if (yych <= '\r') {
        if (yych <= 0x08)
          goto yy506;
        goto yy524;
      } else {
        if (yych == ' ')
          goto yy524;
        goto yy506;
      }
    } else {
      if (yych <= '<') {
        if (yych <= '/')
          goto yy513;
        goto yy506;
      } else {
        if (yych <= '=')
          goto yy526;
        if (yych <= '>')
          goto yy514;
        goto yy506;
      }
    }
  yy520:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 4) {
      goto yy514;
    }
    if (yych <= 0x08)
      goto yy522;
    if (yych <= '\n')
      goto yy520;
    if (yych <= '\v')
      goto yy522;
    if (yych <= '\r')
      goto yy523;
  yy522 : { return 7; }
  yy523:
    yych = *++p;
    goto yy522;
  yy524:
    ++p;
    yych = *p;
    if (yych <= '<') {
      if (yych <= ' ') {
        if (yych <= 0x08)
          goto yy506;
        if (yych <= '\r')
          goto yy524;
        if (yych <= 0x1F)
          goto yy506;
        goto yy524;
      } else {
        if (yych <= '/') {
          if (yych <= '.')
            goto yy506;
          goto yy513;
        } else {
          if (yych == ':')
            goto yy518;
          goto yy506;
        }
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '=')
          goto yy526;
        if (yych <= '>')
          goto yy514;
        if (yych <= '@')
          goto yy506;
        goto yy518;
      } else {
        if (yych <= '_') {
          if (yych <= '^')
            goto yy506;
          goto yy518;
        } else {
          if (yych <= '`')
            goto yy506;
          if (yych <= 'z')
            goto yy518;
          goto yy506;
        }
      }
    }
  yy526:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy527;
    }
    if (yych <= 0xE0) {
      if (yych <= '"') {
        if (yych <= 0x00)
          goto yy506;
        if (yych <= ' ')
          goto yy529;
        goto yy530;
      } else {
        if (yych <= '\'')
          goto yy532;
        if (yych <= 0xC1)
          goto yy506;
        if (yych <= 0xDF)
          goto yy534;
        goto yy535;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy537;
        goto yy536;
      } else {
        if (yych <= 0xF0)
          goto yy538;
        if (yych <= 0xF3)
          goto yy539;
        if (yych <= 0xF4)
          goto yy540;
        goto yy506;
      }
    }
  yy527:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy527;
    }
    if (yych <= 0xE0) {
      if (yych <= '=') {
        if (yych <= 0x00)
          goto yy506;
        if (yych <= ' ')
          goto yy541;
        goto yy506;
      } else {
        if (yych <= '>')
          goto yy514;
        if (yych <= 0xC1)
          goto yy506;
        if (yych <= 0xDF)
          goto yy534;
        goto yy535;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy537;
        goto yy536;
      } else {
        if (yych <= 0xF0)
          goto yy538;
        if (yych <= 0xF3)
          goto yy539;
        if (yych <= 0xF4)
          goto yy540;
        goto yy506;
      }
    }
  yy529:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy527;
    }
    if (yych <= 0xDF) {
      if (yych <= '\'') {
        if (yych <= 0x00)
          goto yy506;
        if (yych <= ' ')
          goto yy543;
        if (yych >= '#')
          goto yy532;
      } else {
        if (yych == '>')
          goto yy514;
        if (yych <= 0xC1)
          goto yy506;
        goto yy534;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy535;
        if (yych == 0xED)
          goto yy537;
        goto yy536;
      } else {
        if (yych <= 0xF0)
          goto yy538;
        if (yych <= 0xF3)
          goto yy539;
        if (yych <= 0xF4)
          goto yy540;
        goto yy506;
      }
    }
  yy530:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy530;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy506;
        if (yych <= '"')
          goto yy545;
        goto yy506;
      } else {
        if (yych <= 0xDF)
          goto yy546;
        if (yych <= 0xE0)
          goto yy547;
        goto yy548;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy549;
        if (yych <= 0xEF)
          goto yy548;
        goto yy550;
      } else {
        if (yych <= 0xF3)
          goto yy551;
        if (yych <= 0xF4)
          goto yy552;
        goto yy506;
      }
    }
  yy532:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy532;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy506;
        if (yych <= '\'')
          goto yy545;
        goto yy506;
      } else {
        if (yych <= 0xDF)
          goto yy553;
        if (yych <= 0xE0)
          goto yy554;
        goto yy555;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy556;
        if (yych <= 0xEF)
          goto yy555;
        goto yy557;
      } else {
        if (yych <= 0xF3)
          goto yy558;
        if (yych <= 0xF4)
          goto yy559;
        goto yy506;
      }
    }
  yy534:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy527;
    goto yy506;
  yy535:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy534;
    goto yy506;
  yy536:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy534;
    goto yy506;
  yy537:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0x9F)
      goto yy534;
    goto yy506;
  yy538:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy536;
    goto yy506;
  yy539:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy536;
    goto yy506;
  yy540:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0x8F)
      goto yy536;
    goto yy506;
  yy541:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '"') {
        if (yych <= '\r') {
          if (yych <= 0x00)
            goto yy506;
          if (yych <= 0x08)
            goto yy527;
          goto yy541;
        } else {
          if (yych == ' ')
            goto yy541;
          if (yych <= '!')
            goto yy527;
          goto yy506;
        }
      } else {
        if (yych <= ':') {
          if (yych == '\'')
            goto yy506;
          if (yych <= '9')
            goto yy527;
          goto yy560;
        } else {
          if (yych <= ';')
            goto yy527;
          if (yych <= '=')
            goto yy506;
          if (yych <= '>')
            goto yy514;
          goto yy527;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= '`') {
          if (yych <= 'Z')
            goto yy560;
          if (yych <= '^')
            goto yy527;
          if (yych <= '_')
            goto yy560;
          goto yy506;
        } else {
          if (yych <= 'z')
            goto yy560;
          if (yych <= 0x7F)
            goto yy527;
          if (yych <= 0xC1)
            goto yy506;
          goto yy534;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy535;
          if (yych == 0xED)
            goto yy537;
          goto yy536;
        } else {
          if (yych <= 0xF0)
            goto yy538;
          if (yych <= 0xF3)
            goto yy539;
          if (yych <= 0xF4)
            goto yy540;
          goto yy506;
        }
      }
    }
  yy543:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '"') {
        if (yych <= '\r') {
          if (yych <= 0x00)
            goto yy506;
          if (yych <= 0x08)
            goto yy527;
          goto yy543;
        } else {
          if (yych == ' ')
            goto yy543;
          if (yych <= '!')
            goto yy527;
          goto yy530;
        }
      } else {
        if (yych <= ':') {
          if (yych == '\'')
            goto yy532;
          if (yych <= '9')
            goto yy527;
          goto yy560;
        } else {
          if (yych <= ';')
            goto yy527;
          if (yych <= '=')
            goto yy506;
          if (yych <= '>')
            goto yy514;
          goto yy527;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= '`') {
          if (yych <= 'Z')
            goto yy560;
          if (yych <= '^')
            goto yy527;
          if (yych <= '_')
            goto yy560;
          goto yy506;
        } else {
          if (yych <= 'z')
            goto yy560;
          if (yych <= 0x7F)
            goto yy527;
          if (yych <= 0xC1)
            goto yy506;
          goto yy534;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy535;
          if (yych == 0xED)
            goto yy537;
          goto yy536;
        } else {
          if (yych <= 0xF0)
            goto yy538;
          if (yych <= 0xF3)
            goto yy539;
          if (yych <= 0xF4)
            goto yy540;
          goto yy506;
        }
      }
    }
  yy545:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 2) {
      goto yy511;
    }
    if (yych == '/')
      goto yy513;
    if (yych == '>')
      goto yy514;
    goto yy506;
  yy546:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy530;
    goto yy506;
  yy547:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy546;
    goto yy506;
  yy548:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy546;
    goto yy506;
  yy549:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0x9F)
      goto yy546;
    goto yy506;
  yy550:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy548;
    goto yy506;
  yy551:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy548;
    goto yy506;
  yy552:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0x8F)
      goto yy548;
    goto yy506;
  yy553:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy532;
    goto yy506;
  yy554:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy553;
    goto yy506;
  yy555:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy553;
    goto yy506;
  yy556:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0x9F)
      goto yy553;
    goto yy506;
  yy557:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy555;
    goto yy506;
  yy558:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0xBF)
      goto yy555;
    goto yy506;
  yy559:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy506;
    if (yych <= 0x8F)
      goto yy555;
    goto yy506;
  yy560:
    ++p;
    yych = *p;
    if (yych <= '>') {
      if (yych <= '&') {
        if (yych <= 0x1F) {
          if (yych <= 0x00)
            goto yy506;
          if (yych <= 0x08)
            goto yy527;
          if (yych >= 0x0E)
            goto yy527;
        } else {
          if (yych <= ' ')
            goto yy562;
          if (yych == '"')
            goto yy506;
          goto yy527;
        }
      } else {
        if (yych <= '/') {
          if (yych <= '\'')
            goto yy506;
          if (yych <= ',')
            goto yy527;
          if (yych <= '.')
            goto yy560;
          goto yy527;
        } else {
          if (yych <= ';') {
            if (yych <= ':')
              goto yy560;
            goto yy527;
          } else {
            if (yych <= '<')
              goto yy506;
            if (yych <= '=')
              goto yy526;
            goto yy514;
          }
        }
      }
    } else {
      if (yych <= 0xC1) {
        if (yych <= '_') {
          if (yych <= '@')
            goto yy527;
          if (yych <= 'Z')
            goto yy560;
          if (yych <= '^')
            goto yy527;
          goto yy560;
        } else {
          if (yych <= '`')
            goto yy506;
          if (yych <= 'z')
            goto yy560;
          if (yych <= 0x7F)
            goto yy527;
          goto yy506;
        }
      } else {
        if (yych <= 0xED) {
          if (yych <= 0xDF)
            goto yy534;
          if (yych <= 0xE0)
            goto yy535;
          if (yych <= 0xEC)
            goto yy536;
          goto yy537;
        } else {
          if (yych <= 0xF0) {
            if (yych <= 0xEF)
              goto yy536;
            goto yy538;
          } else {
            if (yych <= 0xF3)
              goto yy539;
            if (yych <= 0xF4)
              goto yy540;
            goto yy506;
          }
        }
      }
    }
  yy562:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '&') {
        if (yych <= 0x1F) {
          if (yych <= 0x00)
            goto yy506;
          if (yych <= 0x08)
            goto yy527;
          if (yych <= '\r')
            goto yy562;
          goto yy527;
        } else {
          if (yych <= ' ')
            goto yy562;
          if (yych == '"')
            goto yy506;
          goto yy527;
        }
      } else {
        if (yych <= ';') {
          if (yych <= '\'')
            goto yy506;
          if (yych == ':')
            goto yy560;
          goto yy527;
        } else {
          if (yych <= '<')
            goto yy506;
          if (yych <= '=')
            goto yy526;
          if (yych <= '>')
            goto yy514;
          goto yy527;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= '`') {
          if (yych <= 'Z')
            goto yy560;
          if (yych <= '^')
            goto yy527;
          if (yych <= '_')
            goto yy560;
          goto yy506;
        } else {
          if (yych <= 'z')
            goto yy560;
          if (yych <= 0x7F)
            goto yy527;
          if (yych <= 0xC1)
            goto yy506;
          goto yy534;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy535;
          if (yych == 0xED)
            goto yy537;
          goto yy536;
        } else {
          if (yych <= 0xF0)
            goto yy538;
          if (yych <= 0xF3)
            goto yy539;
          if (yych <= 0xF4)
            goto yy540;
          goto yy506;
        }
      }
    }
  }
}

// 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[] = {
        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, 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 == '\n')
          goto yy568;
      } else {
        if (yych <= '<')
          goto yy569;
        if (yych <= 0x7F)
          goto yy566;
        if (yych <= 0xC1)
          goto yy568;
        goto yy570;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy571;
        if (yych == 0xED)
          goto yy573;
        goto yy572;
      } else {
        if (yych <= 0xF0)
          goto yy574;
        if (yych <= 0xF3)
          goto yy575;
        if (yych <= 0xF4)
          goto yy576;
        goto yy568;
      }
    }
  yy566:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych != '\n')
        goto yy578;
    } else {
      if (yych <= 0xC1)
        goto yy567;
      if (yych <= 0xF4)
        goto yy578;
    }
  yy567 : { return 0; }
  yy568:
    yych = *++p;
    goto yy567;
  yy569:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= '/') {
      if (yych == '\n')
        goto yy567;
      if (yych <= '.')
        goto yy578;
      goto yy589;
    } else {
      if (yych <= 0x7F)
        goto yy578;
      if (yych <= 0xC1)
        goto yy567;
      if (yych <= 0xF4)
        goto yy578;
      goto yy567;
    }
  yy570:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy567;
    if (yych <= 0xBF)
      goto yy577;
    goto yy567;
  yy571:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x9F)
      goto yy567;
    if (yych <= 0xBF)
      goto yy582;
    goto yy567;
  yy572:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy567;
    if (yych <= 0xBF)
      goto yy582;
    goto yy567;
  yy573:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy567;
    if (yych <= 0x9F)
      goto yy582;
    goto yy567;
  yy574:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x8F)
      goto yy567;
    if (yych <= 0xBF)
      goto yy584;
    goto yy567;
  yy575:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy567;
    if (yych <= 0xBF)
      goto yy584;
    goto yy567;
  yy576:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy567;
    if (yych <= 0x8F)
      goto yy584;
    goto yy567;
  yy577:
    ++p;
    yych = *p;
  yy578:
    if (yybm[0 + yych] & 64) {
      goto yy577;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy579;
        if (yych <= '<')
          goto yy580;
      } else {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        goto yy584;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy585;
        if (yych <= 0xEF)
          goto yy584;
        goto yy586;
      } else {
        if (yych <= 0xF3)
          goto yy587;
        if (yych <= 0xF4)
          goto yy588;
      }
    }
  yy579:
    p = marker;
    if (yyaccept == 0) {
      goto yy567;
    } else {
      goto yy599;
    }
  yy580:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xDF) {
      if (yych <= '.') {
        if (yych == '\n')
          goto yy579;
        goto yy577;
      } else {
        if (yych <= '/')
          goto yy589;
        if (yych <= 0x7F)
          goto yy577;
        if (yych <= 0xC1)
          goto yy579;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy583;
        if (yych == 0xED)
          goto yy585;
        goto yy584;
      } else {
        if (yych <= 0xF0)
          goto yy586;
        if (yych <= 0xF3)
          goto yy587;
        if (yych <= 0xF4)
          goto yy588;
        goto yy579;
      }
    }
  yy582:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy579;
    if (yych <= 0xBF)
      goto yy577;
    goto yy579;
  yy583:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy579;
    if (yych <= 0xBF)
      goto yy582;
    goto yy579;
  yy584:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy579;
    if (yych <= 0xBF)
      goto yy582;
    goto yy579;
  yy585:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy579;
    if (yych <= 0x9F)
      goto yy582;
    goto yy579;
  yy586:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy579;
    if (yych <= 0xBF)
      goto yy584;
    goto yy579;
  yy587:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy579;
    if (yych <= 0xBF)
      goto yy584;
    goto yy579;
  yy588:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy579;
    if (yych <= 0x8F)
      goto yy584;
    goto yy579;
  yy589:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 's') {
      if (yych <= 'R') {
        if (yych <= '\n') {
          if (yych <= '\t')
            goto yy577;
          goto yy579;
        } else {
          if (yych != 'P')
            goto yy577;
        }
      } else {
        if (yych <= 'o') {
          if (yych <= 'S')
            goto yy591;
          goto yy577;
        } else {
          if (yych <= 'p')
            goto yy590;
          if (yych <= 'r')
            goto yy577;
          goto yy591;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= 0x7F)
            goto yy577;
          goto yy579;
        } else {
          if (yych <= 0xDF)
            goto yy582;
          if (yych <= 0xE0)
            goto yy583;
          goto yy584;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy585;
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  yy590:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xC1) {
      if (yych <= 'R') {
        if (yych == '\n')
          goto yy579;
        if (yych <= 'Q')
          goto yy577;
        goto yy592;
      } else {
        if (yych == 'r')
          goto yy592;
        if (yych <= 0x7F)
          goto yy577;
        goto yy579;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        if (yych <= 0xEC)
          goto yy584;
        goto yy585;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  yy591:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 't') {
      if (yych <= 'S') {
        if (yych <= '\n') {
          if (yych <= '\t')
            goto yy577;
          goto yy579;
        } else {
          if (yych == 'C')
            goto yy593;
          goto yy577;
        }
      } else {
        if (yych <= 'b') {
          if (yych <= 'T')
            goto yy594;
          goto yy577;
        } else {
          if (yych <= 'c')
            goto yy593;
          if (yych <= 's')
            goto yy577;
          goto yy594;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= 0x7F)
            goto yy577;
          goto yy579;
        } else {
          if (yych <= 0xDF)
            goto yy582;
          if (yych <= 0xE0)
            goto yy583;
          goto yy584;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy585;
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  yy592:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xC1) {
      if (yych <= 'E') {
        if (yych == '\n')
          goto yy579;
        if (yych <= 'D')
          goto yy577;
        goto yy595;
      } else {
        if (yych == 'e')
          goto yy595;
        if (yych <= 0x7F)
          goto yy577;
        goto yy579;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        if (yych <= 0xEC)
          goto yy584;
        goto yy585;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  yy593:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xC1) {
      if (yych <= 'R') {
        if (yych == '\n')
          goto yy579;
        if (yych <= 'Q')
          goto yy577;
        goto yy596;
      } else {
        if (yych == 'r')
          goto yy596;
        if (yych <= 0x7F)
          goto yy577;
        goto yy579;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        if (yych <= 0xEC)
          goto yy584;
        goto yy585;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  yy594:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xC1) {
      if (yych <= 'Y') {
        if (yych == '\n')
          goto yy579;
        if (yych <= 'X')
          goto yy577;
        goto yy597;
      } else {
        if (yych == 'y')
          goto yy597;
        if (yych <= 0x7F)
          goto yy577;
        goto yy579;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        if (yych <= 0xEC)
          goto yy584;
        goto yy585;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  yy595:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xDF) {
      if (yych <= '=') {
        if (yych == '\n')
          goto yy579;
        goto yy577;
      } else {
        if (yych <= '>')
          goto yy598;
        if (yych <= 0x7F)
          goto yy577;
        if (yych <= 0xC1)
          goto yy579;
        goto yy582;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy583;
        if (yych == 0xED)
          goto yy585;
        goto yy584;
      } else {
        if (yych <= 0xF0)
          goto yy586;
        if (yych <= 0xF3)
          goto yy587;
        if (yych <= 0xF4)
          goto yy588;
        goto yy579;
      }
    }
  yy596:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xC1) {
      if (yych <= 'I') {
        if (yych == '\n')
          goto yy579;
        if (yych <= 'H')
          goto yy577;
        goto yy600;
      } else {
        if (yych == 'i')
          goto yy600;
        if (yych <= 0x7F)
          goto yy577;
        goto yy579;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        if (yych <= 0xEC)
          goto yy584;
        goto yy585;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  yy597:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xC1) {
      if (yych <= 'L') {
        if (yych == '\n')
          goto yy579;
        if (yych <= 'K')
          goto yy577;
        goto yy592;
      } else {
        if (yych == 'l')
          goto yy592;
        if (yych <= 0x7F)
          goto yy577;
        goto yy579;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        if (yych <= 0xEC)
          goto yy584;
        goto yy585;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  yy598:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy577;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy599;
        if (yych <= '<')
          goto yy580;
      } else {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        goto yy584;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy585;
        if (yych <= 0xEF)
          goto yy584;
        goto yy586;
      } else {
        if (yych <= 0xF3)
          goto yy587;
        if (yych <= 0xF4)
          goto yy588;
      }
    }
  yy599 : { return (bufsize_t)(p - start); }
  yy600:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xC1) {
      if (yych <= 'P') {
        if (yych == '\n')
          goto yy579;
        if (yych <= 'O')
          goto yy577;
      } else {
        if (yych == 'p')
          goto yy601;
        if (yych <= 0x7F)
          goto yy577;
        goto yy579;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        if (yych <= 0xEC)
          goto yy584;
        goto yy585;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  yy601:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy580;
    }
    if (yych <= 0xC1) {
      if (yych <= 'T') {
        if (yych == '\n')
          goto yy579;
        if (yych <= 'S')
          goto yy577;
        goto yy595;
      } else {
        if (yych == 't')
          goto yy595;
        if (yych <= 0x7F)
          goto yy577;
        goto yy579;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy582;
        if (yych <= 0xE0)
          goto yy583;
        if (yych <= 0xEC)
          goto yy584;
        goto yy585;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy584;
          goto yy586;
        } else {
          if (yych <= 0xF3)
            goto yy587;
          if (yych <= 0xF4)
            goto yy588;
          goto yy579;
        }
      }
    }
  }
}

// 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[] = {
        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, 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 == '\n')
          goto yy606;
      } else {
        if (yych <= '-')
          goto yy607;
        if (yych <= 0x7F)
          goto yy604;
        if (yych <= 0xC1)
          goto yy606;
        goto yy608;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy609;
        if (yych == 0xED)
          goto yy611;
        goto yy610;
      } else {
        if (yych <= 0xF0)
          goto yy612;
        if (yych <= 0xF3)
          goto yy613;
        if (yych <= 0xF4)
          goto yy614;
        goto yy606;
      }
    }
  yy604:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych != '\n')
        goto yy616;
    } else {
      if (yych <= 0xC1)
        goto yy605;
      if (yych <= 0xF4)
        goto yy616;
    }
  yy605 : { return 0; }
  yy606:
    yych = *++p;
    goto yy605;
  yy607:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 128) {
      goto yy626;
    }
    if (yych <= 0x7F) {
      if (yych == '\n')
        goto yy605;
      goto yy616;
    } else {
      if (yych <= 0xC1)
        goto yy605;
      if (yych <= 0xF4)
        goto yy616;
      goto yy605;
    }
  yy608:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy605;
    if (yych <= 0xBF)
      goto yy615;
    goto yy605;
  yy609:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x9F)
      goto yy605;
    if (yych <= 0xBF)
      goto yy619;
    goto yy605;
  yy610:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy605;
    if (yych <= 0xBF)
      goto yy619;
    goto yy605;
  yy611:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy605;
    if (yych <= 0x9F)
      goto yy619;
    goto yy605;
  yy612:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x8F)
      goto yy605;
    if (yych <= 0xBF)
      goto yy621;
    goto yy605;
  yy613:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy605;
    if (yych <= 0xBF)
      goto yy621;
    goto yy605;
  yy614:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy605;
    if (yych <= 0x8F)
      goto yy621;
    goto yy605;
  yy615:
    ++p;
    yych = *p;
  yy616:
    if (yybm[0 + yych] & 64) {
      goto yy615;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy617;
        if (yych <= '-')
          goto yy618;
      } else {
        if (yych <= 0xDF)
          goto yy619;
        if (yych <= 0xE0)
          goto yy620;
        goto yy621;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy622;
        if (yych <= 0xEF)
          goto yy621;
        goto yy623;
      } else {
        if (yych <= 0xF3)
          goto yy624;
        if (yych <= 0xF4)
          goto yy625;
      }
    }
  yy617:
    p = marker;
    if (yyaccept == 0) {
      goto yy605;
    } else {
      goto yy629;
    }
  yy618:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy615;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy617;
        if (yych <= '-')
          goto yy626;
        goto yy617;
      } else {
        if (yych <= 0xDF)
          goto yy619;
        if (yych <= 0xE0)
          goto yy620;
        goto yy621;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy622;
        if (yych <= 0xEF)
          goto yy621;
        goto yy623;
      } else {
        if (yych <= 0xF3)
          goto yy624;
        if (yych <= 0xF4)
          goto yy625;
        goto yy617;
      }
    }
  yy619:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy617;
    if (yych <= 0xBF)
      goto yy615;
    goto yy617;
  yy620:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy617;
    if (yych <= 0xBF)
      goto yy619;
    goto yy617;
  yy621:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy617;
    if (yych <= 0xBF)
      goto yy619;
    goto yy617;
  yy622:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy617;
    if (yych <= 0x9F)
      goto yy619;
    goto yy617;
  yy623:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy617;
    if (yych <= 0xBF)
      goto yy621;
    goto yy617;
  yy624:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy617;
    if (yych <= 0xBF)
      goto yy621;
    goto yy617;
  yy625:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy617;
    if (yych <= 0x8F)
      goto yy621;
    goto yy617;
  yy626:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy626;
    }
    if (yych <= 0xDF) {
      if (yych <= '=') {
        if (yych == '\n')
          goto yy617;
        goto yy615;
      } else {
        if (yych <= '>')
          goto yy628;
        if (yych <= 0x7F)
          goto yy615;
        if (yych <= 0xC1)
          goto yy617;
        goto yy619;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy620;
        if (yych == 0xED)
          goto yy622;
        goto yy621;
      } else {
        if (yych <= 0xF0)
          goto yy623;
        if (yych <= 0xF3)
          goto yy624;
        if (yych <= 0xF4)
          goto yy625;
        goto yy617;
      }
    }
  yy628:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy615;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy629;
        if (yych <= '-')
          goto yy618;
      } else {
        if (yych <= 0xDF)
          goto yy619;
        if (yych <= 0xE0)
          goto yy620;
        goto yy621;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy622;
        if (yych <= 0xEF)
          goto yy621;
        goto yy623;
      } else {
        if (yych <= 0xF3)
          goto yy624;
        if (yych <= 0xF4)
          goto yy625;
      }
    }
  yy629 : { 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[] = {
        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, 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 == '\n')
          goto yy634;
      } else {
        if (yych <= '?')
          goto yy635;
        if (yych <= 0x7F)
          goto yy632;
        if (yych <= 0xC1)
          goto yy634;
        goto yy636;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy637;
        if (yych == 0xED)
          goto yy639;
        goto yy638;
      } else {
        if (yych <= 0xF0)
          goto yy640;
        if (yych <= 0xF3)
          goto yy641;
        if (yych <= 0xF4)
          goto yy642;
        goto yy634;
      }
    }
  yy632:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych != '\n')
        goto yy644;
    } else {
      if (yych <= 0xC1)
        goto yy633;
      if (yych <= 0xF4)
        goto yy644;
    }
  yy633 : { return 0; }
  yy634:
    yych = *++p;
    goto yy633;
  yy635:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= '>') {
      if (yych == '\n')
        goto yy633;
      if (yych <= '=')
        goto yy644;
      goto yy655;
    } else {
      if (yych <= 0x7F)
        goto yy644;
      if (yych <= 0xC1)
        goto yy633;
      if (yych <= 0xF4)
        goto yy644;
      goto yy633;
    }
  yy636:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy633;
    if (yych <= 0xBF)
      goto yy643;
    goto yy633;
  yy637:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x9F)
      goto yy633;
    if (yych <= 0xBF)
      goto yy648;
    goto yy633;
  yy638:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy633;
    if (yych <= 0xBF)
      goto yy648;
    goto yy633;
  yy639:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy633;
    if (yych <= 0x9F)
      goto yy648;
    goto yy633;
  yy640:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x8F)
      goto yy633;
    if (yych <= 0xBF)
      goto yy650;
    goto yy633;
  yy641:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy633;
    if (yych <= 0xBF)
      goto yy650;
    goto yy633;
  yy642:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy633;
    if (yych <= 0x8F)
      goto yy650;
    goto yy633;
  yy643:
    ++p;
    yych = *p;
  yy644:
    if (yybm[0 + yych] & 64) {
      goto yy643;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy645;
        if (yych <= '?')
          goto yy646;
      } else {
        if (yych <= 0xDF)
          goto yy648;
        if (yych <= 0xE0)
          goto yy649;
        goto yy650;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy651;
        if (yych <= 0xEF)
          goto yy650;
        goto yy652;
      } else {
        if (yych <= 0xF3)
          goto yy653;
        if (yych <= 0xF4)
          goto yy654;
      }
    }
  yy645:
    p = marker;
    if (yyaccept == 0) {
      goto yy633;
    } else {
      goto yy656;
    }
  yy646:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy646;
    }
    if (yych <= 0xDF) {
      if (yych <= '=') {
        if (yych == '\n')
          goto yy645;
        goto yy643;
      } else {
        if (yych <= '>')
          goto yy655;
        if (yych <= 0x7F)
          goto yy643;
        if (yych <= 0xC1)
          goto yy645;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy649;
        if (yych == 0xED)
          goto yy651;
        goto yy650;
      } else {
        if (yych <= 0xF0)
          goto yy652;
        if (yych <= 0xF3)
          goto yy653;
        if (yych <= 0xF4)
          goto yy654;
        goto yy645;
      }
    }
  yy648:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy645;
    if (yych <= 0xBF)
      goto yy643;
    goto yy645;
  yy649:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy645;
    if (yych <= 0xBF)
      goto yy648;
    goto yy645;
  yy650:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy645;
    if (yych <= 0xBF)
      goto yy648;
    goto yy645;
  yy651:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy645;
    if (yych <= 0x9F)
      goto yy648;
    goto yy645;
  yy652:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy645;
    if (yych <= 0xBF)
      goto yy650;
    goto yy645;
  yy653:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy645;
    if (yych <= 0xBF)
      goto yy650;
    goto yy645;
  yy654:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy645;
    if (yych <= 0x8F)
      goto yy650;
    goto yy645;
  yy655:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy643;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy656;
        if (yych <= '?')
          goto yy646;
      } else {
        if (yych <= 0xDF)
          goto yy648;
        if (yych <= 0xE0)
          goto yy649;
        goto yy650;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy651;
        if (yych <= 0xEF)
          goto yy650;
        goto yy652;
      } else {
        if (yych <= 0xF3)
          goto yy653;
        if (yych <= 0xF4)
          goto yy654;
      }
    }
  yy656 : { 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[] = {
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy662;
    }
    if (yych <= 0xE0) {
      if (yych <= 0x7F) {
        if (yych == '\n')
          goto yy661;
      } else {
        if (yych <= 0xC1)
          goto yy661;
        if (yych <= 0xDF)
          goto yy665;
        goto yy666;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy668;
        goto yy667;
      } else {
        if (yych <= 0xF0)
          goto yy669;
        if (yych <= 0xF3)
          goto yy670;
        if (yych <= 0xF4)
          goto yy671;
        goto yy661;
      }
    }
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych != '\n')
        goto yy673;
    } else {
      if (yych <= 0xC1)
        goto yy660;
      if (yych <= 0xF4)
        goto yy673;
    }
  yy660 : { return 0; }
  yy661:
    yych = *++p;
    goto yy660;
  yy662:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy672;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy664;
        if (yych <= '>')
          goto yy662;
      } else {
        if (yych <= 0xDF)
          goto yy675;
        if (yych <= 0xE0)
          goto yy676;
        goto yy677;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy678;
        if (yych <= 0xEF)
          goto yy677;
        goto yy679;
      } else {
        if (yych <= 0xF3)
          goto yy680;
        if (yych <= 0xF4)
          goto yy681;
      }
    }
  yy664 : { return (bufsize_t)(p - start); }
  yy665:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy660;
    if (yych <= 0xBF)
      goto yy672;
    goto yy660;
  yy666:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x9F)
      goto yy660;
    if (yych <= 0xBF)
      goto yy675;
    goto yy660;
  yy667:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy660;
    if (yych <= 0xBF)
      goto yy675;
    goto yy660;
  yy668:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy660;
    if (yych <= 0x9F)
      goto yy675;
    goto yy660;
  yy669:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x8F)
      goto yy660;
    if (yych <= 0xBF)
      goto yy677;
    goto yy660;
  yy670:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy660;
    if (yych <= 0xBF)
      goto yy677;
    goto yy660;
  yy671:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy660;
    if (yych <= 0x8F)
      goto yy677;
    goto yy660;
  yy672:
    ++p;
    yych = *p;
  yy673:
    if (yybm[0 + yych] & 128) {
      goto yy672;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy674;
        if (yych <= '>')
          goto yy662;
      } else {
        if (yych <= 0xDF)
          goto yy675;
        if (yych <= 0xE0)
          goto yy676;
        goto yy677;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy678;
        if (yych <= 0xEF)
          goto yy677;
        goto yy679;
      } else {
        if (yych <= 0xF3)
          goto yy680;
        if (yych <= 0xF4)
          goto yy681;
      }
    }
  yy674:
    p = marker;
    if (yyaccept == 0) {
      goto yy660;
    } else {
      goto yy664;
    }
  yy675:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy674;
    if (yych <= 0xBF)
      goto yy672;
    goto yy674;
  yy676:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy674;
    if (yych <= 0xBF)
      goto yy675;
    goto yy674;
  yy677:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy674;
    if (yych <= 0xBF)
      goto yy675;
    goto yy674;
  yy678:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy674;
    if (yych <= 0x9F)
      goto yy675;
    goto yy674;
  yy679:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy674;
    if (yych <= 0xBF)
      goto yy677;
    goto yy674;
  yy680:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy674;
    if (yych <= 0xBF)
      goto yy677;
    goto yy674;
  yy681:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy674;
    if (yych <= 0x8F)
      goto yy677;
    goto yy674;
  }
}

// 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[] = {
        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, 64, 64, 64, 64, 64, 64, 64, 64, 64,
        64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 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 == '\n')
          goto yy686;
      } else {
        if (yych <= ']')
          goto yy687;
        if (yych <= 0x7F)
          goto yy684;
        if (yych <= 0xC1)
          goto yy686;
        goto yy688;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy689;
        if (yych == 0xED)
          goto yy691;
        goto yy690;
      } else {
        if (yych <= 0xF0)
          goto yy692;
        if (yych <= 0xF3)
          goto yy693;
        if (yych <= 0xF4)
          goto yy694;
        goto yy686;
      }
    }
  yy684:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych != '\n')
        goto yy696;
    } else {
      if (yych <= 0xC1)
        goto yy685;
      if (yych <= 0xF4)
        goto yy696;
    }
  yy685 : { return 0; }
  yy686:
    yych = *++p;
    goto yy685;
  yy687:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 128) {
      goto yy706;
    }
    if (yych <= 0x7F) {
      if (yych == '\n')
        goto yy685;
      goto yy696;
    } else {
      if (yych <= 0xC1)
        goto yy685;
      if (yych <= 0xF4)
        goto yy696;
      goto yy685;
    }
  yy688:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy685;
    if (yych <= 0xBF)
      goto yy695;
    goto yy685;
  yy689:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x9F)
      goto yy685;
    if (yych <= 0xBF)
      goto yy699;
    goto yy685;
  yy690:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy685;
    if (yych <= 0xBF)
      goto yy699;
    goto yy685;
  yy691:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy685;
    if (yych <= 0x9F)
      goto yy699;
    goto yy685;
  yy692:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x8F)
      goto yy685;
    if (yych <= 0xBF)
      goto yy701;
    goto yy685;
  yy693:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy685;
    if (yych <= 0xBF)
      goto yy701;
    goto yy685;
  yy694:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F)
      goto yy685;
    if (yych <= 0x8F)
      goto yy701;
    goto yy685;
  yy695:
    ++p;
    yych = *p;
  yy696:
    if (yybm[0 + yych] & 64) {
      goto yy695;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy697;
        if (yych <= ']')
          goto yy698;
      } else {
        if (yych <= 0xDF)
          goto yy699;
        if (yych <= 0xE0)
          goto yy700;
        goto yy701;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy702;
        if (yych <= 0xEF)
          goto yy701;
        goto yy703;
      } else {
        if (yych <= 0xF3)
          goto yy704;
        if (yych <= 0xF4)
          goto yy705;
      }
    }
  yy697:
    p = marker;
    if (yyaccept == 0) {
      goto yy685;
    } else {
      goto yy709;
    }
  yy698:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy695;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy697;
        if (yych <= ']')
          goto yy706;
        goto yy697;
      } else {
        if (yych <= 0xDF)
          goto yy699;
        if (yych <= 0xE0)
          goto yy700;
        goto yy701;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy702;
        if (yych <= 0xEF)
          goto yy701;
        goto yy703;
      } else {
        if (yych <= 0xF3)
          goto yy704;
        if (yych <= 0xF4)
          goto yy705;
        goto yy697;
      }
    }
  yy699:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy697;
    if (yych <= 0xBF)
      goto yy695;
    goto yy697;
  yy700:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy697;
    if (yych <= 0xBF)
      goto yy699;
    goto yy697;
  yy701:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy697;
    if (yych <= 0xBF)
      goto yy699;
    goto yy697;
  yy702:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy697;
    if (yych <= 0x9F)
      goto yy699;
    goto yy697;
  yy703:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy697;
    if (yych <= 0xBF)
      goto yy701;
    goto yy697;
  yy704:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy697;
    if (yych <= 0xBF)
      goto yy701;
    goto yy697;
  yy705:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy697;
    if (yych <= 0x8F)
      goto yy701;
    goto yy697;
  yy706:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy706;
    }
    if (yych <= 0xDF) {
      if (yych <= '=') {
        if (yych == '\n')
          goto yy697;
        goto yy695;
      } else {
        if (yych <= '>')
          goto yy708;
        if (yych <= 0x7F)
          goto yy695;
        if (yych <= 0xC1)
          goto yy697;
        goto yy699;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy700;
        if (yych == 0xED)
          goto yy702;
        goto yy701;
      } else {
        if (yych <= 0xF0)
          goto yy703;
        if (yych <= 0xF3)
          goto yy704;
        if (yych <= 0xF4)
          goto yy705;
        goto yy697;
      }
    }
  yy708:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy695;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy709;
        if (yych <= ']')
          goto yy698;
      } else {
        if (yych <= 0xDF)
          goto yy699;
        if (yych <= 0xE0)
          goto yy700;
        goto yy701;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy702;
        if (yych <= 0xEF)
          goto yy701;
        goto yy703;
      } else {
        if (yych <= 0xF3)
          goto yy704;
        if (yych <= 0xF4)
          goto yy705;
      }
    }
  yy709 : { 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 yy714;
    } else {
      if (yych <= '\'')
        goto yy715;
      if (yych <= '(')
        goto yy716;
    }
    ++p;
  yy713 : { return 0; }
  yy714:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x00)
      goto yy713;
    if (yych <= 0x7F)
      goto yy718;
    if (yych <= 0xC1)
      goto yy713;
    if (yych <= 0xF4)
      goto yy718;
    goto yy713;
  yy715:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x00)
      goto yy713;
    if (yych <= 0x7F)
      goto yy732;
    if (yych <= 0xC1)
      goto yy713;
    if (yych <= 0xF4)
      goto yy732;
    goto yy713;
  yy716:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x00)
      goto yy713;
    if (yych <= 0x7F)
      goto yy745;
    if (yych <= 0xC1)
      goto yy713;
    if (yych <= 0xF4)
      goto yy745;
    goto yy713;
  yy717:
    ++p;
    yych = *p;
  yy718:
    if (yybm[0 + yych] & 16) {
      goto yy717;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy719;
        if (yych <= '"')
          goto yy720;
        goto yy722;
      } else {
        if (yych <= 0xC1)
          goto yy719;
        if (yych <= 0xDF)
          goto yy724;
        goto yy725;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy727;
        goto yy726;
      } else {
        if (yych <= 0xF0)
          goto yy728;
        if (yych <= 0xF3)
          goto yy729;
        if (yych <= 0xF4)
          goto yy730;
      }
    }
  yy719:
    p = marker;
    if (yyaccept <= 1) {
      if (yyaccept == 0) {
        goto yy713;
      } else {
        goto yy721;
      }
    } else {
      if (yyaccept == 2) {
        goto yy734;
      } else {
        goto yy747;
      }
    }
  yy720:
    ++p;
  yy721 : { return (bufsize_t)(p - start); }
  yy722:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy717;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy719;
        if (yych <= '"')
          goto yy757;
        goto yy722;
      } else {
        if (yych <= 0xC1)
          goto yy719;
        if (yych >= 0xE0)
          goto yy725;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy727;
        goto yy726;
      } else {
        if (yych <= 0xF0)
          goto yy728;
        if (yych <= 0xF3)
          goto yy729;
        if (yych <= 0xF4)
          goto yy730;
        goto yy719;
      }
    }
  yy724:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy717;
    goto yy719;
  yy725:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy724;
    goto yy719;
  yy726:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy724;
    goto yy719;
  yy727:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0x9F)
      goto yy724;
    goto yy719;
  yy728:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy726;
    goto yy719;
  yy729:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy726;
    goto yy719;
  yy730:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0x8F)
      goto yy726;
    goto yy719;
  yy731:
    ++p;
    yych = *p;
  yy732:
    if (yybm[0 + yych] & 64) {
      goto yy731;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy719;
        if (yych >= '(')
          goto yy735;
      } else {
        if (yych <= 0xC1)
          goto yy719;
        if (yych <= 0xDF)
          goto yy737;
        goto yy738;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy740;
        goto yy739;
      } else {
        if (yych <= 0xF0)
          goto yy741;
        if (yych <= 0xF3)
          goto yy742;
        if (yych <= 0xF4)
          goto yy743;
        goto yy719;
      }
    }
  yy733:
    ++p;
  yy734 : { return (bufsize_t)(p - start); }
  yy735:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy731;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy719;
        if (yych <= '\'')
          goto yy758;
        goto yy735;
      } else {
        if (yych <= 0xC1)
          goto yy719;
        if (yych >= 0xE0)
          goto yy738;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy740;
        goto yy739;
      } else {
        if (yych <= 0xF0)
          goto yy741;
        if (yych <= 0xF3)
          goto yy742;
        if (yych <= 0xF4)
          goto yy743;
        goto yy719;
      }
    }
  yy737:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy731;
    goto yy719;
  yy738:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy737;
    goto yy719;
  yy739:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy737;
    goto yy719;
  yy740:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0x9F)
      goto yy737;
    goto yy719;
  yy741:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy739;
    goto yy719;
  yy742:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy739;
    goto yy719;
  yy743:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0x8F)
      goto yy739;
    goto yy719;
  yy744:
    ++p;
    yych = *p;
  yy745:
    if (yybm[0 + yych] & 128) {
      goto yy744;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy719;
        if (yych >= '*')
          goto yy748;
      } else {
        if (yych <= 0xC1)
          goto yy719;
        if (yych <= 0xDF)
          goto yy750;
        goto yy751;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy753;
        goto yy752;
      } else {
        if (yych <= 0xF0)
          goto yy754;
        if (yych <= 0xF3)
          goto yy755;
        if (yych <= 0xF4)
          goto yy756;
        goto yy719;
      }
    }
  yy746:
    ++p;
  yy747 : { return (bufsize_t)(p - start); }
  yy748:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy744;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy719;
        if (yych <= ')')
          goto yy759;
        goto yy748;
      } else {
        if (yych <= 0xC1)
          goto yy719;
        if (yych >= 0xE0)
          goto yy751;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy753;
        goto yy752;
      } else {
        if (yych <= 0xF0)
          goto yy754;
        if (yych <= 0xF3)
          goto yy755;
        if (yych <= 0xF4)
          goto yy756;
        goto yy719;
      }
    }
  yy750:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy744;
    goto yy719;
  yy751:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy750;
    goto yy719;
  yy752:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy750;
    goto yy719;
  yy753:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0x9F)
      goto yy750;
    goto yy719;
  yy754:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy752;
    goto yy719;
  yy755:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0xBF)
      goto yy752;
    goto yy719;
  yy756:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy719;
    if (yych <= 0x8F)
      goto yy752;
    goto yy719;
  yy757:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy717;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy721;
        if (yych <= '"')
          goto yy720;
        goto yy722;
      } else {
        if (yych <= 0xC1)
          goto yy721;
        if (yych <= 0xDF)
          goto yy724;
        goto yy725;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy727;
        goto yy726;
      } else {
        if (yych <= 0xF0)
          goto yy728;
        if (yych <= 0xF3)
          goto yy729;
        if (yych <= 0xF4)
          goto yy730;
        goto yy721;
      }
    }
  yy758:
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy731;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy734;
        if (yych <= '\'')
          goto yy733;
        goto yy735;
      } else {
        if (yych <= 0xC1)
          goto yy734;
        if (yych <= 0xDF)
          goto yy737;
        goto yy738;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy740;
        goto yy739;
      } else {
        if (yych <= 0xF0)
          goto yy741;
        if (yych <= 0xF3)
          goto yy742;
        if (yych <= 0xF4)
          goto yy743;
        goto yy734;
      }
    }
  yy759:
    yyaccept = 3;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy744;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy747;
        if (yych <= ')')
          goto yy746;
        goto yy748;
      } else {
        if (yych <= 0xC1)
          goto yy747;
        if (yych <= 0xDF)
          goto yy750;
        goto yy751;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy753;
        goto yy752;
      } else {
        if (yych <= 0xF0)
          goto yy754;
        if (yych <= 0xF3)
          goto yy755;
        if (yych <= 0xF4)
          goto yy756;
        goto yy747;
      }
    }
  }
}

// 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 yy764;
    }
    ++p;
    { return 0; }
  yy764:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy764;
    }
    { 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 yy771;
    ++p;
  yy770 : { return 0; }
  yy771:
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 128) {
      goto yy772;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy770;
      if (yych <= '\n')
        goto yy775;
      goto yy770;
    } else {
      if (yych <= '\r')
        goto yy775;
      if (yych == '#')
        goto yy776;
      goto yy770;
    }
  yy772:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy772;
    }
  yy774 : { return (bufsize_t)(p - start); }
  yy775:
    yych = *++p;
    goto yy774;
  yy776:
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy772;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy777;
      if (yych <= '\n')
        goto yy775;
    } else {
      if (yych <= '\r')
        goto yy775;
      if (yych == '#')
        goto yy778;
    }
  yy777:
    p = marker;
    goto yy770;
  yy778:
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy772;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy777;
      if (yych <= '\n')
        goto yy775;
      goto yy777;
    } else {
      if (yych <= '\r')
        goto yy775;
      if (yych != '#')
        goto yy777;
    }
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy772;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy777;
      if (yych <= '\n')
        goto yy775;
      goto yy777;
    } else {
      if (yych <= '\r')
        goto yy775;
      if (yych != '#')
        goto yy777;
    }
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy772;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy777;
      if (yych <= '\n')
        goto yy775;
      goto yy777;
    } else {
      if (yych <= '\r')
        goto yy775;
      if (yych != '#')
        goto yy777;
    }
    ++p;
    if (yybm[0 + (yych = *p)] & 128) {
      goto yy772;
    }
    if (yych <= 0x08)
      goto yy777;
    if (yych <= '\n')
      goto yy775;
    if (yych == '\r')
      goto yy775;
    goto yy777;
  }
}

// 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 yy786;
    if (yych == '=')
      goto yy787;
    ++p;
  yy785 : { return 0; }
  yy786:
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 64) {
      goto yy793;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy785;
      if (yych <= '\n')
        goto yy789;
      goto yy785;
    } else {
      if (yych <= '\r')
        goto yy789;
      if (yych == ' ')
        goto yy789;
      goto yy785;
    }
  yy787:
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 128) {
      goto yy799;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy785;
      if (yych <= '\n')
        goto yy796;
      goto yy785;
    } else {
      if (yych <= '\r')
        goto yy796;
      if (yych == ' ')
        goto yy796;
      goto yy785;
    }
  yy788:
    ++p;
    yych = *p;
  yy789:
    if (yybm[0 + yych] & 32) {
      goto yy788;
    }
    if (yych <= 0x08)
      goto yy790;
    if (yych <= '\n')
      goto yy791;
    if (yych == '\r')
      goto yy791;
  yy790:
    p = marker;
    goto yy785;
  yy791:
    ++p;
    { return 2; }
  yy793:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy788;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy790;
      if (yych <= '\n')
        goto yy791;
      goto yy790;
    } else {
      if (yych <= '\r')
        goto yy791;
      if (yych == '-')
        goto yy793;
      goto yy790;
    }
  yy795:
    ++p;
    yych = *p;
  yy796:
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy790;
      if (yych <= '\t')
        goto yy795;
      if (yych >= '\v')
        goto yy790;
    } else {
      if (yych <= '\r')
        goto yy797;
      if (yych == ' ')
        goto yy795;
      goto yy790;
    }
  yy797:
    ++p;
    { return 1; }
  yy799:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy799;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy790;
      if (yych <= '\t')
        goto yy795;
      if (yych <= '\n')
        goto yy797;
      goto yy790;
    } else {
      if (yych <= '\r')
        goto yy797;
      if (yych == ' ')
        goto yy795;
      goto yy790;
    }
  }
}

// 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 yy805;
    } else {
      if (yych <= '-')
        goto yy806;
      if (yych == '_')
        goto yy807;
    }
    ++p;
  yy804 : { return 0; }
  yy805:
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 16) {
      goto yy808;
    }
    if (yych == '*')
      goto yy811;
    goto yy804;
  yy806:
    yych = *(marker = ++p);
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy813;
      goto yy804;
    } else {
      if (yych <= ' ')
        goto yy813;
      if (yych == '-')
        goto yy815;
      goto yy804;
    }
  yy807:
    yych = *(marker = ++p);
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy817;
      goto yy804;
    } else {
      if (yych <= ' ')
        goto yy817;
      if (yych == '_')
        goto yy819;
      goto yy804;
    }
  yy808:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy808;
    }
    if (yych == '*')
      goto yy811;
  yy810:
    p = marker;
    goto yy804;
  yy811:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy811;
      goto yy810;
    } else {
      if (yych <= ' ')
        goto yy811;
      if (yych == '*')
        goto yy821;
      goto yy810;
    }
  yy813:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy813;
      goto yy810;
    } else {
      if (yych <= ' ')
        goto yy813;
      if (yych != '-')
        goto yy810;
    }
  yy815:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy815;
      goto yy810;
    } else {
      if (yych <= ' ')
        goto yy815;
      if (yych == '-')
        goto yy823;
      goto yy810;
    }
  yy817:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy817;
      goto yy810;
    } else {
      if (yych <= ' ')
        goto yy817;
      if (yych != '_')
        goto yy810;
    }
  yy819:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy819;
      goto yy810;
    } else {
      if (yych <= ' ')
        goto yy819;
      if (yych == '_')
        goto yy825;
      goto yy810;
    }
  yy821:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy821;
    }
    if (yych <= 0x08)
      goto yy810;
    if (yych <= '\n')
      goto yy827;
    if (yych == '\r')
      goto yy827;
    goto yy810;
  yy823:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy823;
    }
    if (yych <= 0x08)
      goto yy810;
    if (yych <= '\n')
      goto yy829;
    if (yych == '\r')
      goto yy829;
    goto yy810;
  yy825:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy825;
    }
    if (yych <= 0x08)
      goto yy810;
    if (yych <= '\n')
      goto yy831;
    if (yych == '\r')
      goto yy831;
    goto yy810;
  yy827:
    ++p;
    { return (bufsize_t)(p - start); }
  yy829:
    ++p;
    { return (bufsize_t)(p - start); }
  yy831:
    ++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 yy837;
    if (yych == '~')
      goto yy838;
    ++p;
  yy836 : { return 0; }
  yy837:
    yych = *(marker = ++p);
    if (yych == '`')
      goto yy839;
    goto yy836;
  yy838:
    yych = *(marker = ++p);
    if (yych == '~')
      goto yy841;
    goto yy836;
  yy839:
    yych = *++p;
    if (yybm[0 + yych] & 16) {
      goto yy842;
    }
  yy840:
    p = marker;
    goto yy836;
  yy841:
    yych = *++p;
    if (yybm[0 + yych] & 32) {
      goto yy844;
    }
    goto yy840;
  yy842:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 64) {
      goto yy846;
    }
    if (yych <= 0xE0) {
      if (yych <= '`') {
        if (yych <= 0x00)
          goto yy840;
        if (yych <= '\r')
          goto yy848;
        goto yy842;
      } else {
        if (yych <= 0xC1)
          goto yy840;
        if (yych <= 0xDF)
          goto yy850;
        goto yy851;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy853;
        goto yy852;
      } else {
        if (yych <= 0xF0)
          goto yy854;
        if (yych <= 0xF3)
          goto yy855;
        if (yych <= 0xF4)
          goto yy856;
        goto yy840;
      }
    }
  yy844:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 128) {
      goto yy857;
    }
    if (yych <= 0xE0) {
      if (yych <= '~') {
        if (yych <= 0x00)
          goto yy840;
        if (yych <= '\r')
          goto yy859;
        goto yy844;
      } else {
        if (yych <= 0xC1)
          goto yy840;
        if (yych <= 0xDF)
          goto yy861;
        goto yy862;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy864;
        goto yy863;
      } else {
        if (yych <= 0xF0)
          goto yy865;
        if (yych <= 0xF3)
          goto yy866;
        if (yych <= 0xF4)
          goto yy867;
        goto yy840;
      }
    }
  yy846:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy846;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy840;
        if (yych >= 0x0E)
          goto yy840;
      } else {
        if (yych <= 0xDF)
          goto yy850;
        if (yych <= 0xE0)
          goto yy851;
        goto yy852;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy853;
        if (yych <= 0xEF)
          goto yy852;
        goto yy854;
      } else {
        if (yych <= 0xF3)
          goto yy855;
        if (yych <= 0xF4)
          goto yy856;
        goto yy840;
      }
    }
  yy848:
    ++p;
    p = marker;
    { return (bufsize_t)(p - start); }
  yy850:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy846;
    goto yy840;
  yy851:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy850;
    goto yy840;
  yy852:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy850;
    goto yy840;
  yy853:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0x9F)
      goto yy850;
    goto yy840;
  yy854:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy852;
    goto yy840;
  yy855:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy852;
    goto yy840;
  yy856:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0x8F)
      goto yy852;
    goto yy840;
  yy857:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy857;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy840;
        if (yych >= 0x0E)
          goto yy840;
      } else {
        if (yych <= 0xDF)
          goto yy861;
        if (yych <= 0xE0)
          goto yy862;
        goto yy863;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy864;
        if (yych <= 0xEF)
          goto yy863;
        goto yy865;
      } else {
        if (yych <= 0xF3)
          goto yy866;
        if (yych <= 0xF4)
          goto yy867;
        goto yy840;
      }
    }
  yy859:
    ++p;
    p = marker;
    { return (bufsize_t)(p - start); }
  yy861:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy857;
    goto yy840;
  yy862:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy861;
    goto yy840;
  yy863:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy861;
    goto yy840;
  yy864:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0x9F)
      goto yy861;
    goto yy840;
  yy865:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy863;
    goto yy840;
  yy866:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0xBF)
      goto yy863;
    goto yy840;
  yy867:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy840;
    if (yych <= 0x8F)
      goto yy863;
    goto yy840;
  }
}

// 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 yy872;
    if (yych == '~')
      goto yy873;
    ++p;
  yy871 : { return 0; }
  yy872:
    yych = *(marker = ++p);
    if (yych == '`')
      goto yy874;
    goto yy871;
  yy873:
    yych = *(marker = ++p);
    if (yych == '~')
      goto yy876;
    goto yy871;
  yy874:
    yych = *++p;
    if (yybm[0 + yych] & 32) {
      goto yy877;
    }
  yy875:
    p = marker;
    goto yy871;
  yy876:
    yych = *++p;
    if (yybm[0 + yych] & 64) {
      goto yy879;
    }
    goto yy875;
  yy877:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 128) {
      goto yy881;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy875;
      if (yych <= '\n')
        goto yy883;
      goto yy875;
    } else {
      if (yych <= '\r')
        goto yy883;
      if (yych == '`')
        goto yy877;
      goto yy875;
    }
  yy879:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 64) {
      goto yy879;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy875;
      if (yych <= '\t')
        goto yy885;
      if (yych <= '\n')
        goto yy887;
      goto yy875;
    } else {
      if (yych <= '\r')
        goto yy887;
      if (yych == ' ')
        goto yy885;
      goto yy875;
    }
  yy881:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy881;
    }
    if (yych <= 0x08)
      goto yy875;
    if (yych <= '\n')
      goto yy883;
    if (yych != '\r')
      goto yy875;
  yy883:
    ++p;
    p = marker;
    { return (bufsize_t)(p - start); }
  yy885:
    ++p;
    yych = *p;
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy875;
      if (yych <= '\t')
        goto yy885;
      if (yych >= '\v')
        goto yy875;
    } else {
      if (yych <= '\r')
        goto yy887;
      if (yych == ' ')
        goto yy885;
      goto yy875;
    }
  yy887:
    ++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 yy893;
    ++p;
  yy892 : { return 0; }
  yy893:
    yych = *(marker = ++p);
    if (yych <= '@') {
      if (yych != '#')
        goto yy892;
    } else {
      if (yych <= 'Z')
        goto yy896;
      if (yych <= '`')
        goto yy892;
      if (yych <= 'z')
        goto yy896;
      goto yy892;
    }
    yych = *++p;
    if (yych <= 'W') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy897;
    } else {
      if (yych <= 'X')
        goto yy898;
      if (yych == 'x')
        goto yy898;
    }
  yy895:
    p = marker;
    goto yy892;
  yy896:
    yych = *++p;
    if (yych <= '@') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy899;
      goto yy895;
    } else {
      if (yych <= 'Z')
        goto yy899;
      if (yych <= '`')
        goto yy895;
      if (yych <= 'z')
        goto yy899;
      goto yy895;
    }
  yy897:
    yych = *++p;
    if (yych <= '/')
      goto yy895;
    if (yych <= '9')
      goto yy900;
    if (yych == ';')
      goto yy901;
    goto yy895;
  yy898:
    yych = *++p;
    if (yych <= '@') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy903;
      goto yy895;
    } else {
      if (yych <= 'F')
        goto yy903;
      if (yych <= '`')
        goto yy895;
      if (yych <= 'f')
        goto yy903;
      goto yy895;
    }
  yy899:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy904;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
        goto yy904;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'z')
          goto yy904;
        goto yy895;
      }
    }
  yy900:
    yych = *++p;
    if (yych <= '/')
      goto yy895;
    if (yych <= '9')
      goto yy905;
    if (yych != ';')
      goto yy895;
  yy901:
    ++p;
    { return (bufsize_t)(p - start); }
  yy903:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy906;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy895;
        goto yy906;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'f')
          goto yy906;
        goto yy895;
      }
    }
  yy904:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy907;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
        goto yy907;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'z')
          goto yy907;
        goto yy895;
      }
    }
  yy905:
    yych = *++p;
    if (yych <= '/')
      goto yy895;
    if (yych <= '9')
      goto yy908;
    if (yych == ';')
      goto yy901;
    goto yy895;
  yy906:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy909;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy895;
        goto yy909;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'f')
          goto yy909;
        goto yy895;
      }
    }
  yy907:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy910;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
        goto yy910;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'z')
          goto yy910;
        goto yy895;
      }
    }
  yy908:
    yych = *++p;
    if (yych <= '/')
      goto yy895;
    if (yych <= '9')
      goto yy911;
    if (yych == ';')
      goto yy901;
    goto yy895;
  yy909:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy912;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy895;
        goto yy912;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'f')
          goto yy912;
        goto yy895;
      }
    }
  yy910:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy913;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
        goto yy913;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'z')
          goto yy913;
        goto yy895;
      }
    }
  yy911:
    yych = *++p;
    if (yych <= '/')
      goto yy895;
    if (yych <= '9')
      goto yy914;
    if (yych == ';')
      goto yy901;
    goto yy895;
  yy912:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy915;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy895;
        goto yy915;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'f')
          goto yy915;
        goto yy895;
      }
    }
  yy913:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy916;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
        goto yy916;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'z')
          goto yy916;
        goto yy895;
      }
    }
  yy914:
    yych = *++p;
    if (yych <= '/')
      goto yy895;
    if (yych <= '9')
      goto yy917;
    if (yych == ';')
      goto yy901;
    goto yy895;
  yy915:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy918;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy895;
        goto yy918;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'f')
          goto yy918;
        goto yy895;
      }
    }
  yy916:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy919;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
        goto yy919;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'z')
          goto yy919;
        goto yy895;
      }
    }
  yy917:
    yych = *++p;
    if (yych <= '/')
      goto yy895;
    if (yych <= '9')
      goto yy920;
    if (yych == ';')
      goto yy901;
    goto yy895;
  yy918:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy921;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy895;
        goto yy921;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'f')
          goto yy921;
        goto yy895;
      }
    }
  yy919:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy922;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
        goto yy922;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'z')
          goto yy922;
        goto yy895;
      }
    }
  yy920:
    yych = *++p;
    if (yych == ';')
      goto yy901;
    goto yy895;
  yy921:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy920;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy895;
        goto yy920;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'f')
          goto yy920;
        goto yy895;
      }
    }
  yy922:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy923;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy923:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy924;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy924:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy925;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy925:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy926;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy926:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy927;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy927:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy928;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy928:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy929;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy929:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy930;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy930:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy931;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy931:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy932;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy932:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy933;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy933:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy934;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy934:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy935;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy935:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy936;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy936:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy937;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy937:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy938;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy938:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy939;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy939:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy940;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy940:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy941;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy941:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy942;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy942:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy943;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy943:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy944;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych >= '{')
          goto yy895;
      }
    }
  yy944:
    ++p;
    if ((yych = *p) <= ';') {
      if (yych <= '/')
        goto yy895;
      if (yych <= '9')
        goto yy920;
      if (yych <= ':')
        goto yy895;
      goto yy901;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy895;
        goto yy920;
      } else {
        if (yych <= '`')
          goto yy895;
        if (yych <= 'z')
          goto yy920;
        goto yy895;
      }
    }
  }
}

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