From d22758227d7cbd859459d15f8b056e7e5352ca10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ken-H=C3=A5vard=20Lieng?= Date: Mon, 17 Jul 2017 23:11:36 +0200 Subject: [PATCH] Add link metadata fetching package --- links/links.go | 132 + .../golang-commonmark/markdown/LICENSE | 10 + .../markdown/byteutil/byteutil.go | 160 + .../markdown/linkify/charset.go | 50 + .../markdown/linkify/email.go | 93 + .../markdown/linkify/generated.go | 18175 ++++++++++++++++ .../markdown/linkify/linkify.go | 463 + .../golang-commonmark/markdown/linkify/url.go | 412 + vendor/golang.org/x/net/html/atom/atom.go | 78 + vendor/golang.org/x/net/html/atom/gen.go | 648 + vendor/golang.org/x/net/html/atom/table.go | 713 + vendor/golang.org/x/net/html/const.go | 102 + vendor/golang.org/x/net/html/doc.go | 106 + vendor/golang.org/x/net/html/doctype.go | 156 + vendor/golang.org/x/net/html/entity.go | 2253 ++ vendor/golang.org/x/net/html/escape.go | 258 + vendor/golang.org/x/net/html/foreign.go | 226 + vendor/golang.org/x/net/html/node.go | 193 + vendor/golang.org/x/net/html/parse.go | 2094 ++ vendor/golang.org/x/net/html/render.go | 271 + vendor/golang.org/x/net/html/token.go | 1219 ++ vendor/vendor.json | 24 + 22 files changed, 27836 insertions(+) create mode 100644 links/links.go create mode 100644 vendor/github.com/golang-commonmark/markdown/LICENSE create mode 100644 vendor/github.com/golang-commonmark/markdown/byteutil/byteutil.go create mode 100644 vendor/github.com/golang-commonmark/markdown/linkify/charset.go create mode 100644 vendor/github.com/golang-commonmark/markdown/linkify/email.go create mode 100644 vendor/github.com/golang-commonmark/markdown/linkify/generated.go create mode 100644 vendor/github.com/golang-commonmark/markdown/linkify/linkify.go create mode 100644 vendor/github.com/golang-commonmark/markdown/linkify/url.go create mode 100644 vendor/golang.org/x/net/html/atom/atom.go create mode 100644 vendor/golang.org/x/net/html/atom/gen.go create mode 100644 vendor/golang.org/x/net/html/atom/table.go create mode 100644 vendor/golang.org/x/net/html/const.go create mode 100644 vendor/golang.org/x/net/html/doc.go create mode 100644 vendor/golang.org/x/net/html/doctype.go create mode 100644 vendor/golang.org/x/net/html/entity.go create mode 100644 vendor/golang.org/x/net/html/escape.go create mode 100644 vendor/golang.org/x/net/html/foreign.go create mode 100644 vendor/golang.org/x/net/html/node.go create mode 100644 vendor/golang.org/x/net/html/parse.go create mode 100644 vendor/golang.org/x/net/html/render.go create mode 100644 vendor/golang.org/x/net/html/token.go diff --git a/links/links.go b/links/links.go new file mode 100644 index 00000000..52e48f09 --- /dev/null +++ b/links/links.go @@ -0,0 +1,132 @@ +package links + +import ( + "errors" + "io" + "net/http" + "strings" + "time" + + "golang.org/x/net/html" + "golang.org/x/net/html/atom" +) + +var ( + Client = &http.Client{ + Timeout: 15 * time.Second, + } + + ErrContentType = errors.New("Unsupported Content-Type") +) + +type Meta struct { + URL string `json:"URL"` + SiteName string `json:"siteName,omitempty"` + Color string `json:"color,omitempty"` + Title string `json:"title"` + Description string `json:"description"` + ImageURL string `json:"imageURL,omitempty"` + VideoURL string `json:"videoURL,omitempty"` +} + +func Fetch(url string) (*Meta, error) { + resp, err := http.Get(url) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + // TODO: Image links + if !strings.HasPrefix(resp.Header.Get("Content-Type"), "text/html") { + return nil, ErrContentType + } + + return ExtractMeta(resp.Body, url) +} + +func ExtractMeta(body io.Reader, url string) (*Meta, error) { + meta := Meta{URL: url} + var currentNode atom.Atom + + z := html.NewTokenizer(body) + for { + tt := z.Next() + switch tt { + case html.ErrorToken: + if z.Err() == io.EOF { + return &meta, nil + } + return nil, z.Err() + + case html.TextToken: + if currentNode == atom.Title && meta.Title == "" { + meta.Title = string(z.Text()) + } + + case html.StartTagToken, html.SelfClosingTagToken, html.EndTagToken: + name, hasAttr := z.TagName() + node := atom.Lookup(name) + + if node == atom.Meta && hasAttr { + var key, val []byte + var name, content string + for hasAttr { + key, val, hasAttr = z.TagAttr() + switch atom.String(key) { + case "name": + name = string(val) + + case "property": + name = string(val) + + case "content": + content = string(val) + } + } + + if content != "" { + switch name { + case "og:site_name": + meta.SiteName = content + + case "theme-color", "msapplication-TileColor": + meta.Color = content + + case "og:title", "twitter:title", "title": + meta.Title = content + + case "og:description", "twitter:description": + meta.Description = content + + case "description": + if meta.Description == "" { + meta.Description = content + } + + case "og:image", "og:image:secure_url", "twitter:image": + if !strings.HasPrefix(meta.ImageURL, "https:") { + meta.ImageURL = content + } + + case "og:video:url", "og:video:secure_url", "twitter:player": + if !strings.HasPrefix(meta.VideoURL, "https:") { + meta.VideoURL = content + } + } + } + + continue + } + + if tt == html.StartTagToken { + currentNode = node + } else { + currentNode = 0 + } + + if (node == atom.Head && tt == html.EndTagToken) || node == atom.Body { + return &meta, nil + } + } + } +} diff --git a/vendor/github.com/golang-commonmark/markdown/LICENSE b/vendor/github.com/golang-commonmark/markdown/LICENSE new file mode 100644 index 00000000..9cdcd201 --- /dev/null +++ b/vendor/github.com/golang-commonmark/markdown/LICENSE @@ -0,0 +1,10 @@ +Copyright (c) 2015, The Authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/golang-commonmark/markdown/byteutil/byteutil.go b/vendor/github.com/golang-commonmark/markdown/byteutil/byteutil.go new file mode 100644 index 00000000..114f72bf --- /dev/null +++ b/vendor/github.com/golang-commonmark/markdown/byteutil/byteutil.go @@ -0,0 +1,160 @@ +// Copyright 2015 The Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package byteutil provides various operations on bytes and byte strings. +package byteutil + +var ( + digit [256]bool + hexdigit [256]bool + letter [256]bool + uppercase [256]bool + lowercase [256]bool + alphanum [256]bool + tolower [256]byte + toupper [256]byte +) + +func init() { + for _, b := range "0123456789" { + digit[b] = true + } + for _, b := range "0123456789abcdefABCDEF" { + hexdigit[b] = true + } + for _, b := range "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" { + letter[b] = true + } + for _, b := range "abcdefghijklmnopqrstuvwxyz" { + lowercase[b] = true + } + for _, b := range "ABCDEFGHIJKLMNOPQRSTUVWXYZ" { + uppercase[b] = true + } + for _, b := range "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" { + alphanum[b] = true + } + for i := 0; i < 256; i++ { + tolower[i] = byte(i) + toupper[i] = byte(i) + } + for _, b := range "ABCDEFGHIJKLMNOPQRSTUVWXYZ" { + tolower[b] = byte(b) - 'A' + 'a' + } + for _, b := range "abcdefghijklmnopqrstuvwxyz" { + toupper[b] = byte(b) - 'a' + 'A' + } +} + +func IsDigit(b byte) bool { + return digit[b] +} + +func IsHexDigit(b byte) bool { + return hexdigit[b] +} + +func IsLetter(b byte) bool { + return letter[b] +} + +func IsLowercaseLetter(b byte) bool { + return lowercase[b] +} + +func IsUppercaseLetter(b byte) bool { + return uppercase[b] +} + +func IsAlphaNum(b byte) bool { + return alphanum[b] +} + +func ToLower(s string) string { + if s == "" { + return "" + } + + hasUpper := false + for i := 0; i < len(s); i++ { + if uppercase[s[i]] { + hasUpper = true + break + } + } + if !hasUpper { + return s + } + + buf := make([]byte, len(s)) + for i := 0; i < len(s); i++ { + buf[i] = tolower[s[i]] + } + return string(buf) +} + +func ToUpper(s string) string { + if s == "" { + return "" + } + + hasLower := false + for i := 0; i < len(s); i++ { + if lowercase[s[i]] { + hasLower = true + break + } + } + if !hasLower { + return s + } + + buf := make([]byte, len(s)) + for i := 0; i < len(s); i++ { + buf[i] = toupper[s[i]] + } + return string(buf) +} + +func ByteToLower(b byte) byte { + return tolower[b] +} + +func ByteToUpper(b byte) byte { + return toupper[b] +} + +func IndexAny(s, chars string) int { + var t [256]bool + for i := 0; i < len(chars); i++ { + t[chars[i]] = true + } + for i := 0; i < len(s); i++ { + if t[s[i]] { + return i + } + } + return -1 +} + +func IndexAnyTable(s string, t *[256]bool) int { + for i := 0; i < len(s); i++ { + if t[s[i]] { + return i + } + } + return -1 +} + +func Unhex(d byte) byte { + switch { + case digit[d]: + return d - '0' + case uppercase[d]: + return d - 'A' + 10 + case lowercase[d]: + return d - 'a' + 10 + } + panic("unhex: not hex digit") +} diff --git a/vendor/github.com/golang-commonmark/markdown/linkify/charset.go b/vendor/github.com/golang-commonmark/markdown/linkify/charset.go new file mode 100644 index 00000000..82a7c915 --- /dev/null +++ b/vendor/github.com/golang-commonmark/markdown/linkify/charset.go @@ -0,0 +1,50 @@ +// Copyright 2015 The Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package linkify + +import "unicode" + +var ( + trigger [256]bool + unreserved [256]bool + subdelims [256]bool + emailcs [256]bool + basicPunct [256]bool +) + +func init() { + for _, b := range "-._~" { + unreserved[b] = true + } + for _, b := range "!$&'()*+,;=" { + subdelims[b] = true + } + for _, b := range "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+/=?^_`{|}~-" { + emailcs[b] = true + } + for _, b := range ".,?!;:" { + basicPunct[b] = true + } +} + +func isAllowedInEmail(r rune) bool { + return r < 0x7f && emailcs[r] +} + +func isLetterOrDigit(r rune) bool { + return unicode.In(r, unicode.Letter, unicode.Digit) +} + +func isPunctOrSpaceOrControl(r rune) bool { + return r == '<' || r == '>' || unicode.In(r, unicode.Punct, unicode.Space, unicode.Cc) +} + +func isUnreserved(r rune) bool { + return (r < 0x7f && unreserved[r]) || isLetterOrDigit(r) +} + +func isSubDelimiter(r rune) bool { + return r < 0x7f && subdelims[r] +} diff --git a/vendor/github.com/golang-commonmark/markdown/linkify/email.go b/vendor/github.com/golang-commonmark/markdown/linkify/email.go new file mode 100644 index 00000000..35bfb679 --- /dev/null +++ b/vendor/github.com/golang-commonmark/markdown/linkify/email.go @@ -0,0 +1,93 @@ +// Copyright 2015 The Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package linkify + +import ( + "unicode" + "unicode/utf8" +) + +func findEmailStart(s string, start int) (_ int, _ bool) { + end := start + allowDot := false + for end >= 0 { + b := s[end] + switch { + case emailcs[b]: + allowDot = true + case b == '.': + if !allowDot { + return + } + allowDot = false + default: + if end == start { + return + } + if s[end+1] == '.' { + return + } + r, _ := utf8.DecodeLastRuneInString(s[:end+1]) + if r == utf8.RuneError { + return + } + if !unicode.IsSpace(r) { + return + } + return end + 1, true + } + end-- + } + if end < start && s[end+1] == '.' { + return + } + return end + 1, true +} + +func findEmailEnd(s string, start int) (_ int, _ bool) { + end := start + allowDot := false +loop: + for end < len(s) { + b := s[end] + switch { + case emailcs[b]: + allowDot = true + case b == '.': + if !allowDot { + return + } + allowDot = false + case b == '@': + break loop + default: + return + } + end++ + } + if end >= len(s)-5 { + return + } + if end > start && s[end-1] == '.' { + return + } + + var dot int + var ok bool + end, dot, ok = findHostnameEnd(s, end+1) + if !ok || dot == -1 { + return + } + + if dot+5 <= len(s) && s[dot+1:dot+5] == "xn--" { + return end, true + } + + if length := match(s[dot+1:]); dot+length+1 != end { + return + } + + return end, true +} diff --git a/vendor/github.com/golang-commonmark/markdown/linkify/generated.go b/vendor/github.com/golang-commonmark/markdown/linkify/generated.go new file mode 100644 index 00000000..4a4bfc9e --- /dev/null +++ b/vendor/github.com/golang-commonmark/markdown/linkify/generated.go @@ -0,0 +1,18175 @@ +package linkify + +import "github.com/golang-commonmark/markdown/byteutil" + +func match(s string) int { + st := 0 + length := -1 + + for i := 0; i < len(s); i++ { + b := s[i] + + switch st { + case 0: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1 + case 'b': + st = 148 + case 'c': + st = 303 + case 'd': + st = 571 + case 'e': + st = 686 + case 'f': + st = 797 + case 'g': + st = 916 + case 'h': + st = 1014 + case 'i': + st = 1099 + case 'j': + st = 1180 + case 'k': + st = 1210 + case 'l': + st = 1253 + case 'm': + st = 1349 + case 'n': + st = 1478 + case 'o': + st = 1536 + case 'p': + st = 1577 + case 'q': + st = 1699 + case 'r': + st = 1709 + case 's': + st = 1797 + case 't': + st = 2010 + case 'u': + st = 2128 + case 'v': + st = 2147 + case 'w': + st = 2220 + case 'x': + st = 2283 + case 'y': + st = 2297 + case 'z': + st = 2330 + case '0': + st = 2348 + case '1': + st = 2350 + case '2': + st = 2352 + case '3': + st = 2354 + case '4': + st = 2356 + case '5': + st = 2358 + case '6': + st = 2360 + case '7': + st = 2362 + case '8': + st = 2364 + case '9': + st = 2366 + default: + return length + } + + case 1: + switch byteutil.ByteToLower(b) { + case 'b': + st = 2 + case 'c': + length = i + 1 + st = 12 + case 'd': + length = i + 1 + st = 39 + case 'e': + length = i + 1 + st = 44 + case 'f': + length = i + 1 + st = 47 + case 'g': + length = i + 1 + st = 49 + case 'i': + length = i + 1 + st = 54 + case 'l': + length = i + 1 + st = 62 + case 'm': + length = i + 1 + st = 74 + case 'n': + length = i + 1 + st = 82 + case 'o': + length = i + 1 + st = 88 + case 'p': + st = 89 + case 'q': + length = i + 1 + st = 98 + case 'r': + length = i + 1 + st = 106 + case 's': + length = i + 1 + st = 114 + case 't': + length = i + 1 + st = 125 + case 'u': + length = i + 1 + st = 132 + case 'w': + length = i + 1 + st = 144 + case 'x': + length = i + 1 + st = 145 + case 'z': + length = i + 1 + st = 147 + default: + return length + } + + case 2: + switch byteutil.ByteToLower(b) { + case 'b': + length = i + 1 + st = 3 + case 'o': + st = 7 + default: + return length + } + + case 3: + switch byteutil.ByteToLower(b) { + case 'o': + st = 4 + default: + return length + } + + case 4: + switch byteutil.ByteToLower(b) { + case 't': + st = 5 + default: + return length + } + + case 5: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 6 + default: + return length + } + + case 7: + switch byteutil.ByteToLower(b) { + case 'g': + st = 8 + default: + return length + } + + case 8: + switch byteutil.ByteToLower(b) { + case 'a': + st = 9 + default: + return length + } + + case 9: + switch byteutil.ByteToLower(b) { + case 'd': + st = 10 + default: + return length + } + + case 10: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 11 + default: + return length + } + + case 12: + switch byteutil.ByteToLower(b) { + case 'a': + st = 13 + case 'c': + st = 18 + case 't': + st = 33 + default: + return length + } + + case 13: + switch byteutil.ByteToLower(b) { + case 'd': + st = 14 + default: + return length + } + + case 14: + switch byteutil.ByteToLower(b) { + case 'e': + st = 15 + default: + return length + } + + case 15: + switch byteutil.ByteToLower(b) { + case 'm': + st = 16 + default: + return length + } + + case 16: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 17 + default: + return length + } + + case 18: + switch byteutil.ByteToLower(b) { + case 'e': + st = 19 + case 'o': + st = 25 + default: + return length + } + + case 19: + switch byteutil.ByteToLower(b) { + case 'n': + st = 20 + default: + return length + } + + case 20: + switch byteutil.ByteToLower(b) { + case 't': + st = 21 + default: + return length + } + + case 21: + switch byteutil.ByteToLower(b) { + case 'u': + st = 22 + default: + return length + } + + case 22: + switch byteutil.ByteToLower(b) { + case 'r': + st = 23 + default: + return length + } + + case 23: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 24 + default: + return length + } + + case 25: + switch byteutil.ByteToLower(b) { + case 'u': + st = 26 + default: + return length + } + + case 26: + switch byteutil.ByteToLower(b) { + case 'n': + st = 27 + default: + return length + } + + case 27: + switch byteutil.ByteToLower(b) { + case 't': + st = 28 + default: + return length + } + + case 28: + switch byteutil.ByteToLower(b) { + case 'a': + st = 29 + default: + return length + } + + case 29: + switch byteutil.ByteToLower(b) { + case 'n': + st = 30 + default: + return length + } + + case 30: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 31 + default: + return length + } + + case 31: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 32 + default: + return length + } + + case 33: + switch byteutil.ByteToLower(b) { + case 'i': + st = 34 + case 'o': + st = 37 + default: + return length + } + + case 34: + switch byteutil.ByteToLower(b) { + case 'v': + st = 35 + default: + return length + } + + case 35: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 36 + default: + return length + } + + case 37: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 38 + default: + return length + } + + case 39: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 40 + case 'u': + st = 41 + default: + return length + } + + case 41: + switch byteutil.ByteToLower(b) { + case 'l': + st = 42 + default: + return length + } + + case 42: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 43 + default: + return length + } + + case 44: + switch byteutil.ByteToLower(b) { + case 'r': + st = 45 + default: + return length + } + + case 45: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 46 + default: + return length + } + + case 47: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 48 + default: + return length + } + + case 49: + switch byteutil.ByteToLower(b) { + case 'e': + st = 50 + default: + return length + } + + case 50: + switch byteutil.ByteToLower(b) { + case 'n': + st = 51 + default: + return length + } + + case 51: + switch byteutil.ByteToLower(b) { + case 'c': + st = 52 + default: + return length + } + + case 52: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 53 + default: + return length + } + + case 54: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 55 + case 'r': + st = 56 + default: + return length + } + + case 56: + switch byteutil.ByteToLower(b) { + case 'f': + st = 57 + default: + return length + } + + case 57: + switch byteutil.ByteToLower(b) { + case 'o': + st = 58 + default: + return length + } + + case 58: + switch byteutil.ByteToLower(b) { + case 'r': + st = 59 + default: + return length + } + + case 59: + switch byteutil.ByteToLower(b) { + case 'c': + st = 60 + default: + return length + } + + case 60: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 61 + default: + return length + } + + case 62: + switch byteutil.ByteToLower(b) { + case 'l': + st = 63 + case 's': + st = 70 + default: + return length + } + + case 63: + switch byteutil.ByteToLower(b) { + case 'f': + st = 64 + default: + return length + } + + case 64: + switch byteutil.ByteToLower(b) { + case 'i': + st = 65 + default: + return length + } + + case 65: + switch byteutil.ByteToLower(b) { + case 'n': + st = 66 + default: + return length + } + + case 66: + switch byteutil.ByteToLower(b) { + case 'a': + st = 67 + default: + return length + } + + case 67: + switch byteutil.ByteToLower(b) { + case 'n': + st = 68 + default: + return length + } + + case 68: + switch byteutil.ByteToLower(b) { + case 'z': + length = i + 1 + st = 69 + default: + return length + } + + case 70: + switch byteutil.ByteToLower(b) { + case 'a': + st = 71 + default: + return length + } + + case 71: + switch byteutil.ByteToLower(b) { + case 'c': + st = 72 + default: + return length + } + + case 72: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 73 + default: + return length + } + + case 74: + switch byteutil.ByteToLower(b) { + case 's': + st = 75 + default: + return length + } + + case 75: + switch byteutil.ByteToLower(b) { + case 't': + st = 76 + default: + return length + } + + case 76: + switch byteutil.ByteToLower(b) { + case 'e': + st = 77 + default: + return length + } + + case 77: + switch byteutil.ByteToLower(b) { + case 'r': + st = 78 + default: + return length + } + + case 78: + switch byteutil.ByteToLower(b) { + case 'd': + st = 79 + default: + return length + } + + case 79: + switch byteutil.ByteToLower(b) { + case 'a': + st = 80 + default: + return length + } + + case 80: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 81 + default: + return length + } + + case 82: + switch byteutil.ByteToLower(b) { + case 'd': + st = 83 + default: + return length + } + + case 83: + switch byteutil.ByteToLower(b) { + case 'r': + st = 84 + default: + return length + } + + case 84: + switch byteutil.ByteToLower(b) { + case 'o': + st = 85 + default: + return length + } + + case 85: + switch byteutil.ByteToLower(b) { + case 'i': + st = 86 + default: + return length + } + + case 86: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 87 + default: + return length + } + + case 89: + switch byteutil.ByteToLower(b) { + case 'a': + st = 90 + default: + return length + } + + case 90: + switch byteutil.ByteToLower(b) { + case 'r': + st = 91 + default: + return length + } + + case 91: + switch byteutil.ByteToLower(b) { + case 't': + st = 92 + default: + return length + } + + case 92: + switch byteutil.ByteToLower(b) { + case 'm': + st = 93 + default: + return length + } + + case 93: + switch byteutil.ByteToLower(b) { + case 'e': + st = 94 + default: + return length + } + + case 94: + switch byteutil.ByteToLower(b) { + case 'n': + st = 95 + default: + return length + } + + case 95: + switch byteutil.ByteToLower(b) { + case 't': + st = 96 + default: + return length + } + + case 96: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 97 + default: + return length + } + + case 98: + switch byteutil.ByteToLower(b) { + case 'u': + st = 99 + default: + return length + } + + case 99: + switch byteutil.ByteToLower(b) { + case 'a': + st = 100 + default: + return length + } + + case 100: + switch byteutil.ByteToLower(b) { + case 'r': + st = 101 + default: + return length + } + + case 101: + switch byteutil.ByteToLower(b) { + case 'e': + st = 102 + default: + return length + } + + case 102: + switch byteutil.ByteToLower(b) { + case 'l': + st = 103 + default: + return length + } + + case 103: + switch byteutil.ByteToLower(b) { + case 'l': + st = 104 + default: + return length + } + + case 104: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 105 + default: + return length + } + + case 106: + switch byteutil.ByteToLower(b) { + case 'c': + st = 107 + case 'm': + st = 110 + case 'p': + st = 112 + default: + return length + } + + case 107: + switch byteutil.ByteToLower(b) { + case 'h': + st = 108 + default: + return length + } + + case 108: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 109 + default: + return length + } + + case 110: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 111 + default: + return length + } + + case 112: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 113 + default: + return length + } + + case 114: + switch byteutil.ByteToLower(b) { + case 'i': + st = 115 + case 's': + st = 117 + default: + return length + } + + case 115: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 116 + default: + return length + } + + case 117: + switch byteutil.ByteToLower(b) { + case 'o': + st = 118 + default: + return length + } + + case 118: + switch byteutil.ByteToLower(b) { + case 'c': + st = 119 + default: + return length + } + + case 119: + switch byteutil.ByteToLower(b) { + case 'i': + st = 120 + default: + return length + } + + case 120: + switch byteutil.ByteToLower(b) { + case 'a': + st = 121 + default: + return length + } + + case 121: + switch byteutil.ByteToLower(b) { + case 't': + st = 122 + default: + return length + } + + case 122: + switch byteutil.ByteToLower(b) { + case 'e': + st = 123 + default: + return length + } + + case 123: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 124 + default: + return length + } + + case 125: + switch byteutil.ByteToLower(b) { + case 't': + st = 126 + default: + return length + } + + case 126: + switch byteutil.ByteToLower(b) { + case 'o': + st = 127 + default: + return length + } + + case 127: + switch byteutil.ByteToLower(b) { + case 'r': + st = 128 + default: + return length + } + + case 128: + switch byteutil.ByteToLower(b) { + case 'n': + st = 129 + default: + return length + } + + case 129: + switch byteutil.ByteToLower(b) { + case 'e': + st = 130 + default: + return length + } + + case 130: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 131 + default: + return length + } + + case 132: + switch byteutil.ByteToLower(b) { + case 'c': + st = 133 + case 'd': + st = 138 + case 't': + st = 141 + default: + return length + } + + case 133: + switch byteutil.ByteToLower(b) { + case 't': + st = 134 + default: + return length + } + + case 134: + switch byteutil.ByteToLower(b) { + case 'i': + st = 135 + default: + return length + } + + case 135: + switch byteutil.ByteToLower(b) { + case 'o': + st = 136 + default: + return length + } + + case 136: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 137 + default: + return length + } + + case 138: + switch byteutil.ByteToLower(b) { + case 'i': + st = 139 + default: + return length + } + + case 139: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 140 + default: + return length + } + + case 141: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 142 + default: + return length + } + + case 142: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 143 + default: + return length + } + + case 145: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 146 + default: + return length + } + + case 148: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 149 + case 'b': + length = i + 1 + st = 177 + case 'd': + length = i + 1 + st = 181 + case 'e': + length = i + 1 + st = 182 + case 'f': + length = i + 1 + st = 191 + case 'g': + length = i + 1 + st = 192 + case 'h': + length = i + 1 + st = 193 + case 'i': + length = i + 1 + st = 194 + case 'j': + length = i + 1 + st = 207 + case 'l': + st = 208 + case 'm': + length = i + 1 + st = 227 + case 'n': + length = i + 1 + st = 229 + case 'o': + length = i + 1 + st = 238 + case 'r': + length = i + 1 + st = 251 + case 's': + length = i + 1 + st = 275 + case 't': + length = i + 1 + st = 276 + case 'u': + st = 277 + case 'v': + length = i + 1 + st = 298 + case 'w': + length = i + 1 + st = 299 + case 'y': + length = i + 1 + st = 300 + case 'z': + length = i + 1 + st = 301 + default: + return length + } + + case 149: + switch byteutil.ByteToLower(b) { + case 'n': + st = 150 + case 'r': + length = i + 1 + st = 153 + case 'u': + st = 168 + case 'y': + st = 173 + default: + return length + } + + case 150: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 151 + case 'k': + length = i + 1 + st = 152 + default: + return length + } + + case 153: + switch byteutil.ByteToLower(b) { + case 'c': + st = 154 + case 'g': + st = 163 + default: + return length + } + + case 154: + switch byteutil.ByteToLower(b) { + case 'l': + st = 155 + default: + return length + } + + case 155: + switch byteutil.ByteToLower(b) { + case 'a': + st = 156 + default: + return length + } + + case 156: + switch byteutil.ByteToLower(b) { + case 'y': + st = 157 + default: + return length + } + + case 157: + switch byteutil.ByteToLower(b) { + case 'c': + st = 158 + case 's': + length = i + 1 + st = 162 + default: + return length + } + + case 158: + switch byteutil.ByteToLower(b) { + case 'a': + st = 159 + default: + return length + } + + case 159: + switch byteutil.ByteToLower(b) { + case 'r': + st = 160 + default: + return length + } + + case 160: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 161 + default: + return length + } + + case 163: + switch byteutil.ByteToLower(b) { + case 'a': + st = 164 + default: + return length + } + + case 164: + switch byteutil.ByteToLower(b) { + case 'i': + st = 165 + default: + return length + } + + case 165: + switch byteutil.ByteToLower(b) { + case 'n': + st = 166 + default: + return length + } + + case 166: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 167 + default: + return length + } + + case 168: + switch byteutil.ByteToLower(b) { + case 'h': + st = 169 + default: + return length + } + + case 169: + switch byteutil.ByteToLower(b) { + case 'a': + st = 170 + default: + return length + } + + case 170: + switch byteutil.ByteToLower(b) { + case 'u': + st = 171 + default: + return length + } + + case 171: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 172 + default: + return length + } + + case 173: + switch byteutil.ByteToLower(b) { + case 'e': + st = 174 + default: + return length + } + + case 174: + switch byteutil.ByteToLower(b) { + case 'r': + st = 175 + default: + return length + } + + case 175: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 176 + default: + return length + } + + case 177: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 178 + case 'v': + st = 179 + default: + return length + } + + case 179: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 180 + default: + return length + } + + case 182: + switch byteutil.ByteToLower(b) { + case 'e': + st = 183 + case 'r': + st = 185 + case 's': + st = 189 + default: + return length + } + + case 183: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 184 + default: + return length + } + + case 185: + switch byteutil.ByteToLower(b) { + case 'l': + st = 186 + default: + return length + } + + case 186: + switch byteutil.ByteToLower(b) { + case 'i': + st = 187 + default: + return length + } + + case 187: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 188 + default: + return length + } + + case 189: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 190 + default: + return length + } + + case 194: + switch byteutil.ByteToLower(b) { + case 'b': + st = 195 + case 'd': + length = i + 1 + st = 198 + case 'k': + st = 199 + case 'n': + st = 201 + case 'o': + length = i + 1 + st = 204 + case 't': + length = i + 1 + st = 205 + case 'z': + length = i + 1 + st = 206 + default: + return length + } + + case 195: + switch byteutil.ByteToLower(b) { + case 'l': + st = 196 + default: + return length + } + + case 196: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 197 + default: + return length + } + + case 199: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 200 + default: + return length + } + + case 201: + switch byteutil.ByteToLower(b) { + case 'g': + st = 202 + default: + return length + } + + case 202: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 203 + default: + return length + } + + case 208: + switch byteutil.ByteToLower(b) { + case 'a': + st = 209 + case 'o': + st = 218 + case 'u': + st = 225 + default: + return length + } + + case 209: + switch byteutil.ByteToLower(b) { + case 'c': + st = 210 + default: + return length + } + + case 210: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 211 + default: + return length + } + + case 211: + switch byteutil.ByteToLower(b) { + case 'f': + st = 212 + default: + return length + } + + case 212: + switch byteutil.ByteToLower(b) { + case 'r': + st = 213 + default: + return length + } + + case 213: + switch byteutil.ByteToLower(b) { + case 'i': + st = 214 + default: + return length + } + + case 214: + switch byteutil.ByteToLower(b) { + case 'd': + st = 215 + default: + return length + } + + case 215: + switch byteutil.ByteToLower(b) { + case 'a': + st = 216 + default: + return length + } + + case 216: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 217 + default: + return length + } + + case 218: + switch byteutil.ByteToLower(b) { + case 'o': + st = 219 + default: + return length + } + + case 219: + switch byteutil.ByteToLower(b) { + case 'm': + st = 220 + default: + return length + } + + case 220: + switch byteutil.ByteToLower(b) { + case 'b': + st = 221 + default: + return length + } + + case 221: + switch byteutil.ByteToLower(b) { + case 'e': + st = 222 + default: + return length + } + + case 222: + switch byteutil.ByteToLower(b) { + case 'r': + st = 223 + default: + return length + } + + case 223: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 224 + default: + return length + } + + case 225: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 226 + default: + return length + } + + case 227: + switch byteutil.ByteToLower(b) { + case 'w': + length = i + 1 + st = 228 + default: + return length + } + + case 229: + switch byteutil.ByteToLower(b) { + case 'p': + st = 230 + default: + return length + } + + case 230: + switch byteutil.ByteToLower(b) { + case 'p': + st = 231 + default: + return length + } + + case 231: + switch byteutil.ByteToLower(b) { + case 'a': + st = 232 + default: + return length + } + + case 232: + switch byteutil.ByteToLower(b) { + case 'r': + st = 233 + default: + return length + } + + case 233: + switch byteutil.ByteToLower(b) { + case 'i': + st = 234 + default: + return length + } + + case 234: + switch byteutil.ByteToLower(b) { + case 'b': + st = 235 + default: + return length + } + + case 235: + switch byteutil.ByteToLower(b) { + case 'a': + st = 236 + default: + return length + } + + case 236: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 237 + default: + return length + } + + case 238: + switch byteutil.ByteToLower(b) { + case 'a': + st = 239 + case 'n': + st = 242 + case 'o': + length = i + 1 + st = 244 + case 'u': + st = 245 + default: + return length + } + + case 239: + switch byteutil.ByteToLower(b) { + case 't': + st = 240 + default: + return length + } + + case 240: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 241 + default: + return length + } + + case 242: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 243 + default: + return length + } + + case 245: + switch byteutil.ByteToLower(b) { + case 't': + st = 246 + default: + return length + } + + case 246: + switch byteutil.ByteToLower(b) { + case 'i': + st = 247 + default: + return length + } + + case 247: + switch byteutil.ByteToLower(b) { + case 'q': + st = 248 + default: + return length + } + + case 248: + switch byteutil.ByteToLower(b) { + case 'u': + st = 249 + default: + return length + } + + case 249: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 250 + default: + return length + } + + case 251: + switch byteutil.ByteToLower(b) { + case 'i': + st = 252 + case 'o': + st = 261 + case 'u': + st = 269 + default: + return length + } + + case 252: + switch byteutil.ByteToLower(b) { + case 'd': + st = 253 + default: + return length + } + + case 253: + switch byteutil.ByteToLower(b) { + case 'g': + st = 254 + default: + return length + } + + case 254: + switch byteutil.ByteToLower(b) { + case 'e': + st = 255 + default: + return length + } + + case 255: + switch byteutil.ByteToLower(b) { + case 's': + st = 256 + default: + return length + } + + case 256: + switch byteutil.ByteToLower(b) { + case 't': + st = 257 + default: + return length + } + + case 257: + switch byteutil.ByteToLower(b) { + case 'o': + st = 258 + default: + return length + } + + case 258: + switch byteutil.ByteToLower(b) { + case 'n': + st = 259 + default: + return length + } + + case 259: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 260 + default: + return length + } + + case 261: + switch byteutil.ByteToLower(b) { + case 'k': + st = 262 + case 't': + st = 265 + default: + return length + } + + case 262: + switch byteutil.ByteToLower(b) { + case 'e': + st = 263 + default: + return length + } + + case 263: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 264 + default: + return length + } + + case 265: + switch byteutil.ByteToLower(b) { + case 'h': + st = 266 + default: + return length + } + + case 266: + switch byteutil.ByteToLower(b) { + case 'e': + st = 267 + default: + return length + } + + case 267: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 268 + default: + return length + } + + case 269: + switch byteutil.ByteToLower(b) { + case 's': + st = 270 + default: + return length + } + + case 270: + switch byteutil.ByteToLower(b) { + case 's': + st = 271 + default: + return length + } + + case 271: + switch byteutil.ByteToLower(b) { + case 'e': + st = 272 + default: + return length + } + + case 272: + switch byteutil.ByteToLower(b) { + case 'l': + st = 273 + default: + return length + } + + case 273: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 274 + default: + return length + } + + case 277: + switch byteutil.ByteToLower(b) { + case 'd': + st = 278 + case 'i': + st = 284 + case 's': + st = 290 + case 'z': + st = 296 + default: + return length + } + + case 278: + switch byteutil.ByteToLower(b) { + case 'a': + st = 279 + default: + return length + } + + case 279: + switch byteutil.ByteToLower(b) { + case 'p': + st = 280 + default: + return length + } + + case 280: + switch byteutil.ByteToLower(b) { + case 'e': + st = 281 + default: + return length + } + + case 281: + switch byteutil.ByteToLower(b) { + case 's': + st = 282 + default: + return length + } + + case 282: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 283 + default: + return length + } + + case 284: + switch byteutil.ByteToLower(b) { + case 'l': + st = 285 + default: + return length + } + + case 285: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 286 + default: + return length + } + + case 286: + switch byteutil.ByteToLower(b) { + case 'e': + st = 287 + default: + return length + } + + case 287: + switch byteutil.ByteToLower(b) { + case 'r': + st = 288 + default: + return length + } + + case 288: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 289 + default: + return length + } + + case 290: + switch byteutil.ByteToLower(b) { + case 'i': + st = 291 + default: + return length + } + + case 291: + switch byteutil.ByteToLower(b) { + case 'n': + st = 292 + default: + return length + } + + case 292: + switch byteutil.ByteToLower(b) { + case 'e': + st = 293 + default: + return length + } + + case 293: + switch byteutil.ByteToLower(b) { + case 's': + st = 294 + default: + return length + } + + case 294: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 295 + default: + return length + } + + case 296: + switch byteutil.ByteToLower(b) { + case 'z': + length = i + 1 + st = 297 + default: + return length + } + + case 301: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 302 + default: + return length + } + + case 303: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 304 + case 'b': + st = 366 + case 'c': + length = i + 1 + st = 368 + case 'd': + length = i + 1 + st = 369 + case 'e': + st = 370 + case 'f': + length = i + 1 + st = 378 + case 'g': + length = i + 1 + st = 381 + case 'h': + length = i + 1 + st = 382 + case 'i': + length = i + 1 + st = 409 + case 'k': + length = i + 1 + st = 417 + case 'l': + length = i + 1 + st = 418 + case 'm': + length = i + 1 + st = 443 + case 'n': + length = i + 1 + st = 444 + case 'o': + length = i + 1 + st = 445 + case 'r': + length = i + 1 + st = 532 + case 'u': + length = i + 1 + st = 552 + case 'v': + length = i + 1 + st = 561 + case 'w': + length = i + 1 + st = 562 + case 'x': + length = i + 1 + st = 563 + case 'y': + length = i + 1 + st = 564 + case 'z': + length = i + 1 + st = 570 + default: + return length + } + + case 304: + switch byteutil.ByteToLower(b) { + case 'b': + length = i + 1 + st = 305 + case 'f': + st = 306 + case 'l': + length = i + 1 + st = 308 + case 'm': + st = 309 + case 'n': + st = 314 + case 'p': + st = 328 + case 'r': + st = 338 + case 's': + st = 354 + case 't': + length = i + 1 + st = 360 + default: + return length + } + + case 306: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 307 + default: + return length + } + + case 309: + switch byteutil.ByteToLower(b) { + case 'e': + st = 310 + case 'p': + length = i + 1 + st = 313 + default: + return length + } + + case 310: + switch byteutil.ByteToLower(b) { + case 'r': + st = 311 + default: + return length + } + + case 311: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 312 + default: + return length + } + + case 314: + switch byteutil.ByteToLower(b) { + case 'c': + st = 315 + case 'o': + st = 326 + default: + return length + } + + case 315: + switch byteutil.ByteToLower(b) { + case 'e': + st = 316 + default: + return length + } + + case 316: + switch byteutil.ByteToLower(b) { + case 'r': + st = 317 + default: + return length + } + + case 317: + switch byteutil.ByteToLower(b) { + case 'r': + st = 318 + default: + return length + } + + case 318: + switch byteutil.ByteToLower(b) { + case 'e': + st = 319 + default: + return length + } + + case 319: + switch byteutil.ByteToLower(b) { + case 's': + st = 320 + default: + return length + } + + case 320: + switch byteutil.ByteToLower(b) { + case 'e': + st = 321 + default: + return length + } + + case 321: + switch byteutil.ByteToLower(b) { + case 'a': + st = 322 + default: + return length + } + + case 322: + switch byteutil.ByteToLower(b) { + case 'r': + st = 323 + default: + return length + } + + case 323: + switch byteutil.ByteToLower(b) { + case 'c': + st = 324 + default: + return length + } + + case 324: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 325 + default: + return length + } + + case 326: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 327 + default: + return length + } + + case 328: + switch byteutil.ByteToLower(b) { + case 'e': + st = 329 + case 'i': + st = 334 + default: + return length + } + + case 329: + switch byteutil.ByteToLower(b) { + case 't': + st = 330 + default: + return length + } + + case 330: + switch byteutil.ByteToLower(b) { + case 'o': + st = 331 + default: + return length + } + + case 331: + switch byteutil.ByteToLower(b) { + case 'w': + st = 332 + default: + return length + } + + case 332: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 333 + default: + return length + } + + case 334: + switch byteutil.ByteToLower(b) { + case 't': + st = 335 + default: + return length + } + + case 335: + switch byteutil.ByteToLower(b) { + case 'a': + st = 336 + default: + return length + } + + case 336: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 337 + default: + return length + } + + case 338: + switch byteutil.ByteToLower(b) { + case 'a': + st = 339 + case 'd': + st = 343 + case 'e': + length = i + 1 + st = 345 + case 's': + length = i + 1 + st = 349 + case 't': + st = 350 + default: + return length + } + + case 339: + switch byteutil.ByteToLower(b) { + case 'v': + st = 340 + default: + return length + } + + case 340: + switch byteutil.ByteToLower(b) { + case 'a': + st = 341 + default: + return length + } + + case 341: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 342 + default: + return length + } + + case 343: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 344 + default: + return length + } + + case 345: + switch byteutil.ByteToLower(b) { + case 'e': + st = 346 + default: + return length + } + + case 346: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 347 + default: + return length + } + + case 347: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 348 + default: + return length + } + + case 350: + switch byteutil.ByteToLower(b) { + case 'i': + st = 351 + default: + return length + } + + case 351: + switch byteutil.ByteToLower(b) { + case 'e': + st = 352 + default: + return length + } + + case 352: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 353 + default: + return length + } + + case 354: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 355 + case 'h': + length = i + 1 + st = 356 + case 'i': + st = 357 + default: + return length + } + + case 357: + switch byteutil.ByteToLower(b) { + case 'n': + st = 358 + default: + return length + } + + case 358: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 359 + default: + return length + } + + case 360: + switch byteutil.ByteToLower(b) { + case 'e': + st = 361 + default: + return length + } + + case 361: + switch byteutil.ByteToLower(b) { + case 'r': + st = 362 + default: + return length + } + + case 362: + switch byteutil.ByteToLower(b) { + case 'i': + st = 363 + default: + return length + } + + case 363: + switch byteutil.ByteToLower(b) { + case 'n': + st = 364 + default: + return length + } + + case 364: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 365 + default: + return length + } + + case 366: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 367 + default: + return length + } + + case 370: + switch byteutil.ByteToLower(b) { + case 'n': + st = 371 + case 'o': + length = i + 1 + st = 375 + case 'r': + st = 376 + default: + return length + } + + case 371: + switch byteutil.ByteToLower(b) { + case 't': + st = 372 + default: + return length + } + + case 372: + switch byteutil.ByteToLower(b) { + case 'e': + st = 373 + default: + return length + } + + case 373: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 374 + default: + return length + } + + case 376: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 377 + default: + return length + } + + case 378: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 379 + case 'd': + length = i + 1 + st = 380 + default: + return length + } + + case 382: + switch byteutil.ByteToLower(b) { + case 'a': + st = 383 + case 'e': + st = 389 + case 'l': + st = 392 + case 'r': + st = 395 + case 'u': + st = 405 + default: + return length + } + + case 383: + switch byteutil.ByteToLower(b) { + case 'n': + st = 384 + case 't': + length = i + 1 + st = 388 + default: + return length + } + + case 384: + switch byteutil.ByteToLower(b) { + case 'n': + st = 385 + default: + return length + } + + case 385: + switch byteutil.ByteToLower(b) { + case 'e': + st = 386 + default: + return length + } + + case 386: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 387 + default: + return length + } + + case 389: + switch byteutil.ByteToLower(b) { + case 'a': + st = 390 + default: + return length + } + + case 390: + switch byteutil.ByteToLower(b) { + case 'p': + length = i + 1 + st = 391 + default: + return length + } + + case 392: + switch byteutil.ByteToLower(b) { + case 'o': + st = 393 + default: + return length + } + + case 393: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 394 + default: + return length + } + + case 395: + switch byteutil.ByteToLower(b) { + case 'i': + st = 396 + case 'o': + st = 402 + default: + return length + } + + case 396: + switch byteutil.ByteToLower(b) { + case 's': + st = 397 + default: + return length + } + + case 397: + switch byteutil.ByteToLower(b) { + case 't': + st = 398 + default: + return length + } + + case 398: + switch byteutil.ByteToLower(b) { + case 'm': + st = 399 + default: + return length + } + + case 399: + switch byteutil.ByteToLower(b) { + case 'a': + st = 400 + default: + return length + } + + case 400: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 401 + default: + return length + } + + case 402: + switch byteutil.ByteToLower(b) { + case 'm': + st = 403 + default: + return length + } + + case 403: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 404 + default: + return length + } + + case 405: + switch byteutil.ByteToLower(b) { + case 'r': + st = 406 + default: + return length + } + + case 406: + switch byteutil.ByteToLower(b) { + case 'c': + st = 407 + default: + return length + } + + case 407: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 408 + default: + return length + } + + case 409: + switch byteutil.ByteToLower(b) { + case 's': + st = 410 + case 't': + st = 413 + default: + return length + } + + case 410: + switch byteutil.ByteToLower(b) { + case 'c': + st = 411 + default: + return length + } + + case 411: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 412 + default: + return length + } + + case 413: + switch byteutil.ByteToLower(b) { + case 'i': + st = 414 + case 'y': + length = i + 1 + st = 416 + default: + return length + } + + case 414: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 415 + default: + return length + } + + case 418: + switch byteutil.ByteToLower(b) { + case 'a': + st = 419 + case 'e': + st = 423 + case 'i': + st = 429 + case 'o': + st = 435 + case 'u': + st = 441 + default: + return length + } + + case 419: + switch byteutil.ByteToLower(b) { + case 'i': + st = 420 + default: + return length + } + + case 420: + switch byteutil.ByteToLower(b) { + case 'm': + st = 421 + default: + return length + } + + case 421: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 422 + default: + return length + } + + case 423: + switch byteutil.ByteToLower(b) { + case 'a': + st = 424 + default: + return length + } + + case 424: + switch byteutil.ByteToLower(b) { + case 'n': + st = 425 + default: + return length + } + + case 425: + switch byteutil.ByteToLower(b) { + case 'i': + st = 426 + default: + return length + } + + case 426: + switch byteutil.ByteToLower(b) { + case 'n': + st = 427 + default: + return length + } + + case 427: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 428 + default: + return length + } + + case 429: + switch byteutil.ByteToLower(b) { + case 'c': + st = 430 + case 'n': + st = 432 + default: + return length + } + + case 430: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 431 + default: + return length + } + + case 432: + switch byteutil.ByteToLower(b) { + case 'i': + st = 433 + default: + return length + } + + case 433: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 434 + default: + return length + } + + case 435: + switch byteutil.ByteToLower(b) { + case 't': + st = 436 + default: + return length + } + + case 436: + switch byteutil.ByteToLower(b) { + case 'h': + st = 437 + default: + return length + } + + case 437: + switch byteutil.ByteToLower(b) { + case 'i': + st = 438 + default: + return length + } + + case 438: + switch byteutil.ByteToLower(b) { + case 'n': + st = 439 + default: + return length + } + + case 439: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 440 + default: + return length + } + + case 441: + switch byteutil.ByteToLower(b) { + case 'b': + length = i + 1 + st = 442 + default: + return length + } + + case 445: + switch byteutil.ByteToLower(b) { + case 'a': + st = 446 + case 'd': + st = 449 + case 'f': + st = 452 + case 'l': + st = 456 + case 'm': + length = i + 1 + st = 465 + case 'n': + st = 480 + case 'o': + st = 507 + case 'r': + st = 514 + case 'u': + st = 519 + default: + return length + } + + case 446: + switch byteutil.ByteToLower(b) { + case 'c': + st = 447 + default: + return length + } + + case 447: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 448 + default: + return length + } + + case 449: + switch byteutil.ByteToLower(b) { + case 'e': + st = 450 + default: + return length + } + + case 450: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 451 + default: + return length + } + + case 452: + switch byteutil.ByteToLower(b) { + case 'f': + st = 453 + default: + return length + } + + case 453: + switch byteutil.ByteToLower(b) { + case 'e': + st = 454 + default: + return length + } + + case 454: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 455 + default: + return length + } + + case 456: + switch byteutil.ByteToLower(b) { + case 'l': + st = 457 + case 'o': + st = 461 + default: + return length + } + + case 457: + switch byteutil.ByteToLower(b) { + case 'e': + st = 458 + default: + return length + } + + case 458: + switch byteutil.ByteToLower(b) { + case 'g': + st = 459 + default: + return length + } + + case 459: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 460 + default: + return length + } + + case 461: + switch byteutil.ByteToLower(b) { + case 'g': + st = 462 + default: + return length + } + + case 462: + switch byteutil.ByteToLower(b) { + case 'n': + st = 463 + default: + return length + } + + case 463: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 464 + default: + return length + } + + case 465: + switch byteutil.ByteToLower(b) { + case 'm': + st = 466 + case 'p': + st = 472 + default: + return length + } + + case 466: + switch byteutil.ByteToLower(b) { + case 'u': + st = 467 + default: + return length + } + + case 467: + switch byteutil.ByteToLower(b) { + case 'n': + st = 468 + default: + return length + } + + case 468: + switch byteutil.ByteToLower(b) { + case 'i': + st = 469 + default: + return length + } + + case 469: + switch byteutil.ByteToLower(b) { + case 't': + st = 470 + default: + return length + } + + case 470: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 471 + default: + return length + } + + case 472: + switch byteutil.ByteToLower(b) { + case 'a': + st = 473 + case 'u': + st = 476 + default: + return length + } + + case 473: + switch byteutil.ByteToLower(b) { + case 'n': + st = 474 + default: + return length + } + + case 474: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 475 + default: + return length + } + + case 476: + switch byteutil.ByteToLower(b) { + case 't': + st = 477 + default: + return length + } + + case 477: + switch byteutil.ByteToLower(b) { + case 'e': + st = 478 + default: + return length + } + + case 478: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 479 + default: + return length + } + + case 480: + switch byteutil.ByteToLower(b) { + case 'd': + st = 481 + case 's': + st = 484 + case 't': + st = 499 + default: + return length + } + + case 481: + switch byteutil.ByteToLower(b) { + case 'o': + st = 482 + default: + return length + } + + case 482: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 483 + default: + return length + } + + case 484: + switch byteutil.ByteToLower(b) { + case 't': + st = 485 + case 'u': + st = 493 + default: + return length + } + + case 485: + switch byteutil.ByteToLower(b) { + case 'r': + st = 486 + default: + return length + } + + case 486: + switch byteutil.ByteToLower(b) { + case 'u': + st = 487 + default: + return length + } + + case 487: + switch byteutil.ByteToLower(b) { + case 'c': + st = 488 + default: + return length + } + + case 488: + switch byteutil.ByteToLower(b) { + case 't': + st = 489 + default: + return length + } + + case 489: + switch byteutil.ByteToLower(b) { + case 'i': + st = 490 + default: + return length + } + + case 490: + switch byteutil.ByteToLower(b) { + case 'o': + st = 491 + default: + return length + } + + case 491: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 492 + default: + return length + } + + case 493: + switch byteutil.ByteToLower(b) { + case 'l': + st = 494 + default: + return length + } + + case 494: + switch byteutil.ByteToLower(b) { + case 't': + st = 495 + default: + return length + } + + case 495: + switch byteutil.ByteToLower(b) { + case 'i': + st = 496 + default: + return length + } + + case 496: + switch byteutil.ByteToLower(b) { + case 'n': + st = 497 + default: + return length + } + + case 497: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 498 + default: + return length + } + + case 499: + switch byteutil.ByteToLower(b) { + case 'r': + st = 500 + default: + return length + } + + case 500: + switch byteutil.ByteToLower(b) { + case 'a': + st = 501 + default: + return length + } + + case 501: + switch byteutil.ByteToLower(b) { + case 'c': + st = 502 + default: + return length + } + + case 502: + switch byteutil.ByteToLower(b) { + case 't': + st = 503 + default: + return length + } + + case 503: + switch byteutil.ByteToLower(b) { + case 'o': + st = 504 + default: + return length + } + + case 504: + switch byteutil.ByteToLower(b) { + case 'r': + st = 505 + default: + return length + } + + case 505: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 506 + default: + return length + } + + case 507: + switch byteutil.ByteToLower(b) { + case 'k': + st = 508 + case 'l': + length = i + 1 + st = 512 + case 'p': + length = i + 1 + st = 513 + default: + return length + } + + case 508: + switch byteutil.ByteToLower(b) { + case 'i': + st = 509 + default: + return length + } + + case 509: + switch byteutil.ByteToLower(b) { + case 'n': + st = 510 + default: + return length + } + + case 510: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 511 + default: + return length + } + + case 514: + switch byteutil.ByteToLower(b) { + case 's': + st = 515 + default: + return length + } + + case 515: + switch byteutil.ByteToLower(b) { + case 'i': + st = 516 + default: + return length + } + + case 516: + switch byteutil.ByteToLower(b) { + case 'c': + st = 517 + default: + return length + } + + case 517: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 518 + default: + return length + } + + case 519: + switch byteutil.ByteToLower(b) { + case 'n': + st = 520 + case 'p': + st = 524 + case 'r': + st = 528 + default: + return length + } + + case 520: + switch byteutil.ByteToLower(b) { + case 't': + st = 521 + default: + return length + } + + case 521: + switch byteutil.ByteToLower(b) { + case 'r': + st = 522 + default: + return length + } + + case 522: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 523 + default: + return length + } + + case 524: + switch byteutil.ByteToLower(b) { + case 'o': + st = 525 + default: + return length + } + + case 525: + switch byteutil.ByteToLower(b) { + case 'n': + st = 526 + default: + return length + } + + case 526: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 527 + default: + return length + } + + case 528: + switch byteutil.ByteToLower(b) { + case 's': + st = 529 + default: + return length + } + + case 529: + switch byteutil.ByteToLower(b) { + case 'e': + st = 530 + default: + return length + } + + case 530: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 531 + default: + return length + } + + case 532: + switch byteutil.ByteToLower(b) { + case 'e': + st = 533 + case 'i': + st = 541 + case 's': + length = i + 1 + st = 546 + case 'u': + st = 547 + default: + return length + } + + case 533: + switch byteutil.ByteToLower(b) { + case 'd': + st = 534 + default: + return length + } + + case 534: + switch byteutil.ByteToLower(b) { + case 'i': + st = 535 + default: + return length + } + + case 535: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 536 + default: + return length + } + + case 536: + switch byteutil.ByteToLower(b) { + case 'c': + st = 537 + default: + return length + } + + case 537: + switch byteutil.ByteToLower(b) { + case 'a': + st = 538 + default: + return length + } + + case 538: + switch byteutil.ByteToLower(b) { + case 'r': + st = 539 + default: + return length + } + + case 539: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 540 + default: + return length + } + + case 541: + switch byteutil.ByteToLower(b) { + case 'c': + st = 542 + default: + return length + } + + case 542: + switch byteutil.ByteToLower(b) { + case 'k': + st = 543 + default: + return length + } + + case 543: + switch byteutil.ByteToLower(b) { + case 'e': + st = 544 + default: + return length + } + + case 544: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 545 + default: + return length + } + + case 547: + switch byteutil.ByteToLower(b) { + case 'i': + st = 548 + default: + return length + } + + case 548: + switch byteutil.ByteToLower(b) { + case 's': + st = 549 + default: + return length + } + + case 549: + switch byteutil.ByteToLower(b) { + case 'e': + st = 550 + default: + return length + } + + case 550: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 551 + default: + return length + } + + case 552: + switch byteutil.ByteToLower(b) { + case 'i': + st = 553 + default: + return length + } + + case 553: + switch byteutil.ByteToLower(b) { + case 's': + st = 554 + default: + return length + } + + case 554: + switch byteutil.ByteToLower(b) { + case 'i': + st = 555 + default: + return length + } + + case 555: + switch byteutil.ByteToLower(b) { + case 'n': + st = 556 + default: + return length + } + + case 556: + switch byteutil.ByteToLower(b) { + case 'e': + st = 557 + default: + return length + } + + case 557: + switch byteutil.ByteToLower(b) { + case 'l': + st = 558 + default: + return length + } + + case 558: + switch byteutil.ByteToLower(b) { + case 'l': + st = 559 + default: + return length + } + + case 559: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 560 + default: + return length + } + + case 564: + switch byteutil.ByteToLower(b) { + case 'm': + st = 565 + case 'o': + st = 568 + default: + return length + } + + case 565: + switch byteutil.ByteToLower(b) { + case 'r': + st = 566 + default: + return length + } + + case 566: + switch byteutil.ByteToLower(b) { + case 'u': + length = i + 1 + st = 567 + default: + return length + } + + case 568: + switch byteutil.ByteToLower(b) { + case 'u': + length = i + 1 + st = 569 + default: + return length + } + + case 571: + switch byteutil.ByteToLower(b) { + case 'a': + st = 572 + case 'c': + st = 589 + case 'e': + length = i + 1 + st = 592 + case 'i': + st = 624 + case 'j': + length = i + 1 + st = 651 + case 'k': + length = i + 1 + st = 652 + case 'm': + length = i + 1 + st = 653 + case 'n': + st = 654 + case 'o': + length = i + 1 + st = 656 + case 'u': + st = 677 + case 'v': + st = 682 + case 'z': + length = i + 1 + st = 685 + default: + return length + } + + case 572: + switch byteutil.ByteToLower(b) { + case 'b': + st = 573 + case 'd': + length = i + 1 + st = 576 + case 'n': + st = 577 + case 't': + st = 580 + case 'y': + length = i + 1 + st = 588 + default: + return length + } + + case 573: + switch byteutil.ByteToLower(b) { + case 'u': + st = 574 + default: + return length + } + + case 574: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 575 + default: + return length + } + + case 577: + switch byteutil.ByteToLower(b) { + case 'c': + st = 578 + default: + return length + } + + case 578: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 579 + default: + return length + } + + case 580: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 581 + case 'i': + st = 582 + case 's': + st = 585 + default: + return length + } + + case 582: + switch byteutil.ByteToLower(b) { + case 'n': + st = 583 + default: + return length + } + + case 583: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 584 + default: + return length + } + + case 585: + switch byteutil.ByteToLower(b) { + case 'u': + st = 586 + default: + return length + } + + case 586: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 587 + default: + return length + } + + case 589: + switch byteutil.ByteToLower(b) { + case 'l': + st = 590 + default: + return length + } + + case 590: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 591 + default: + return length + } + + case 592: + switch byteutil.ByteToLower(b) { + case 'a': + st = 593 + case 'g': + st = 596 + case 'l': + st = 600 + case 'm': + st = 606 + case 'n': + st = 612 + case 's': + st = 619 + case 'v': + length = i + 1 + st = 623 + default: + return length + } + + case 593: + switch byteutil.ByteToLower(b) { + case 'l': + st = 594 + default: + return length + } + + case 594: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 595 + default: + return length + } + + case 596: + switch byteutil.ByteToLower(b) { + case 'r': + st = 597 + default: + return length + } + + case 597: + switch byteutil.ByteToLower(b) { + case 'e': + st = 598 + default: + return length + } + + case 598: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 599 + default: + return length + } + + case 600: + switch byteutil.ByteToLower(b) { + case 'i': + st = 601 + default: + return length + } + + case 601: + switch byteutil.ByteToLower(b) { + case 'v': + st = 602 + default: + return length + } + + case 602: + switch byteutil.ByteToLower(b) { + case 'e': + st = 603 + default: + return length + } + + case 603: + switch byteutil.ByteToLower(b) { + case 'r': + st = 604 + default: + return length + } + + case 604: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 605 + default: + return length + } + + case 606: + switch byteutil.ByteToLower(b) { + case 'o': + st = 607 + default: + return length + } + + case 607: + switch byteutil.ByteToLower(b) { + case 'c': + st = 608 + default: + return length + } + + case 608: + switch byteutil.ByteToLower(b) { + case 'r': + st = 609 + default: + return length + } + + case 609: + switch byteutil.ByteToLower(b) { + case 'a': + st = 610 + default: + return length + } + + case 610: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 611 + default: + return length + } + + case 612: + switch byteutil.ByteToLower(b) { + case 't': + st = 613 + default: + return length + } + + case 613: + switch byteutil.ByteToLower(b) { + case 'a': + st = 614 + case 'i': + st = 616 + default: + return length + } + + case 614: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 615 + default: + return length + } + + case 616: + switch byteutil.ByteToLower(b) { + case 's': + st = 617 + default: + return length + } + + case 617: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 618 + default: + return length + } + + case 619: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 620 + default: + return length + } + + case 620: + switch byteutil.ByteToLower(b) { + case 'g': + st = 621 + default: + return length + } + + case 621: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 622 + default: + return length + } + + case 624: + switch byteutil.ByteToLower(b) { + case 'a': + st = 625 + case 'e': + st = 631 + case 'g': + st = 633 + case 'r': + st = 638 + case 's': + st = 645 + default: + return length + } + + case 625: + switch byteutil.ByteToLower(b) { + case 'm': + st = 626 + default: + return length + } + + case 626: + switch byteutil.ByteToLower(b) { + case 'o': + st = 627 + default: + return length + } + + case 627: + switch byteutil.ByteToLower(b) { + case 'n': + st = 628 + default: + return length + } + + case 628: + switch byteutil.ByteToLower(b) { + case 'd': + st = 629 + default: + return length + } + + case 629: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 630 + default: + return length + } + + case 631: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 632 + default: + return length + } + + case 633: + switch byteutil.ByteToLower(b) { + case 'i': + st = 634 + default: + return length + } + + case 634: + switch byteutil.ByteToLower(b) { + case 't': + st = 635 + default: + return length + } + + case 635: + switch byteutil.ByteToLower(b) { + case 'a': + st = 636 + default: + return length + } + + case 636: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 637 + default: + return length + } + + case 638: + switch byteutil.ByteToLower(b) { + case 'e': + st = 639 + default: + return length + } + + case 639: + switch byteutil.ByteToLower(b) { + case 'c': + st = 640 + default: + return length + } + + case 640: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 641 + default: + return length + } + + case 641: + switch byteutil.ByteToLower(b) { + case 'o': + st = 642 + default: + return length + } + + case 642: + switch byteutil.ByteToLower(b) { + case 'r': + st = 643 + default: + return length + } + + case 643: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 644 + default: + return length + } + + case 645: + switch byteutil.ByteToLower(b) { + case 'c': + st = 646 + default: + return length + } + + case 646: + switch byteutil.ByteToLower(b) { + case 'o': + st = 647 + default: + return length + } + + case 647: + switch byteutil.ByteToLower(b) { + case 'u': + st = 648 + default: + return length + } + + case 648: + switch byteutil.ByteToLower(b) { + case 'n': + st = 649 + default: + return length + } + + case 649: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 650 + default: + return length + } + + case 654: + switch byteutil.ByteToLower(b) { + case 'p': + length = i + 1 + st = 655 + default: + return length + } + + case 656: + switch byteutil.ByteToLower(b) { + case 'c': + st = 657 + case 'g': + length = i + 1 + st = 659 + case 'h': + st = 660 + case 'm': + st = 662 + case 'o': + st = 667 + case 'w': + st = 671 + default: + return length + } + + case 657: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 658 + default: + return length + } + + case 660: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 661 + default: + return length + } + + case 662: + switch byteutil.ByteToLower(b) { + case 'a': + st = 663 + default: + return length + } + + case 663: + switch byteutil.ByteToLower(b) { + case 'i': + st = 664 + default: + return length + } + + case 664: + switch byteutil.ByteToLower(b) { + case 'n': + st = 665 + default: + return length + } + + case 665: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 666 + default: + return length + } + + case 667: + switch byteutil.ByteToLower(b) { + case 's': + st = 668 + default: + return length + } + + case 668: + switch byteutil.ByteToLower(b) { + case 'a': + st = 669 + default: + return length + } + + case 669: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 670 + default: + return length + } + + case 671: + switch byteutil.ByteToLower(b) { + case 'n': + st = 672 + default: + return length + } + + case 672: + switch byteutil.ByteToLower(b) { + case 'l': + st = 673 + default: + return length + } + + case 673: + switch byteutil.ByteToLower(b) { + case 'o': + st = 674 + default: + return length + } + + case 674: + switch byteutil.ByteToLower(b) { + case 'a': + st = 675 + default: + return length + } + + case 675: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 676 + default: + return length + } + + case 677: + switch byteutil.ByteToLower(b) { + case 'r': + st = 678 + default: + return length + } + + case 678: + switch byteutil.ByteToLower(b) { + case 'b': + st = 679 + default: + return length + } + + case 679: + switch byteutil.ByteToLower(b) { + case 'a': + st = 680 + default: + return length + } + + case 680: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 681 + default: + return length + } + + case 682: + switch byteutil.ByteToLower(b) { + case 'a': + st = 683 + default: + return length + } + + case 683: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 684 + default: + return length + } + + case 686: + switch byteutil.ByteToLower(b) { + case 'a': + st = 687 + case 'c': + length = i + 1 + st = 692 + case 'd': + st = 693 + case 'e': + length = i + 1 + st = 701 + case 'g': + length = i + 1 + st = 702 + case 'm': + st = 703 + case 'n': + st = 711 + case 'p': + st = 734 + case 'q': + st = 738 + case 'r': + length = i + 1 + st = 746 + case 's': + length = i + 1 + st = 749 + case 't': + length = i + 1 + st = 755 + case 'u': + length = i + 1 + st = 756 + case 'v': + st = 766 + case 'x': + st = 776 + default: + return length + } + + case 687: + switch byteutil.ByteToLower(b) { + case 'r': + st = 688 + case 't': + length = i + 1 + st = 691 + default: + return length + } + + case 688: + switch byteutil.ByteToLower(b) { + case 't': + st = 689 + default: + return length + } + + case 689: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 690 + default: + return length + } + + case 693: + switch byteutil.ByteToLower(b) { + case 'u': + length = i + 1 + st = 694 + default: + return length + } + + case 694: + switch byteutil.ByteToLower(b) { + case 'c': + st = 695 + default: + return length + } + + case 695: + switch byteutil.ByteToLower(b) { + case 'a': + st = 696 + default: + return length + } + + case 696: + switch byteutil.ByteToLower(b) { + case 't': + st = 697 + default: + return length + } + + case 697: + switch byteutil.ByteToLower(b) { + case 'i': + st = 698 + default: + return length + } + + case 698: + switch byteutil.ByteToLower(b) { + case 'o': + st = 699 + default: + return length + } + + case 699: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 700 + default: + return length + } + + case 703: + switch byteutil.ByteToLower(b) { + case 'a': + st = 704 + case 'e': + st = 707 + default: + return length + } + + case 704: + switch byteutil.ByteToLower(b) { + case 'i': + st = 705 + default: + return length + } + + case 705: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 706 + default: + return length + } + + case 707: + switch byteutil.ByteToLower(b) { + case 'r': + st = 708 + default: + return length + } + + case 708: + switch byteutil.ByteToLower(b) { + case 'c': + st = 709 + default: + return length + } + + case 709: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 710 + default: + return length + } + + case 711: + switch byteutil.ByteToLower(b) { + case 'e': + st = 712 + case 'g': + st = 716 + case 't': + st = 725 + default: + return length + } + + case 712: + switch byteutil.ByteToLower(b) { + case 'r': + st = 713 + default: + return length + } + + case 713: + switch byteutil.ByteToLower(b) { + case 'g': + st = 714 + default: + return length + } + + case 714: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 715 + default: + return length + } + + case 716: + switch byteutil.ByteToLower(b) { + case 'i': + st = 717 + default: + return length + } + + case 717: + switch byteutil.ByteToLower(b) { + case 'n': + st = 718 + default: + return length + } + + case 718: + switch byteutil.ByteToLower(b) { + case 'e': + st = 719 + default: + return length + } + + case 719: + switch byteutil.ByteToLower(b) { + case 'e': + st = 720 + default: + return length + } + + case 720: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 721 + default: + return length + } + + case 721: + switch byteutil.ByteToLower(b) { + case 'i': + st = 722 + default: + return length + } + + case 722: + switch byteutil.ByteToLower(b) { + case 'n': + st = 723 + default: + return length + } + + case 723: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 724 + default: + return length + } + + case 725: + switch byteutil.ByteToLower(b) { + case 'e': + st = 726 + default: + return length + } + + case 726: + switch byteutil.ByteToLower(b) { + case 'r': + st = 727 + default: + return length + } + + case 727: + switch byteutil.ByteToLower(b) { + case 'p': + st = 728 + default: + return length + } + + case 728: + switch byteutil.ByteToLower(b) { + case 'r': + st = 729 + default: + return length + } + + case 729: + switch byteutil.ByteToLower(b) { + case 'i': + st = 730 + default: + return length + } + + case 730: + switch byteutil.ByteToLower(b) { + case 's': + st = 731 + default: + return length + } + + case 731: + switch byteutil.ByteToLower(b) { + case 'e': + st = 732 + default: + return length + } + + case 732: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 733 + default: + return length + } + + case 734: + switch byteutil.ByteToLower(b) { + case 's': + st = 735 + default: + return length + } + + case 735: + switch byteutil.ByteToLower(b) { + case 'o': + st = 736 + default: + return length + } + + case 736: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 737 + default: + return length + } + + case 738: + switch byteutil.ByteToLower(b) { + case 'u': + st = 739 + default: + return length + } + + case 739: + switch byteutil.ByteToLower(b) { + case 'i': + st = 740 + default: + return length + } + + case 740: + switch byteutil.ByteToLower(b) { + case 'p': + st = 741 + default: + return length + } + + case 741: + switch byteutil.ByteToLower(b) { + case 'm': + st = 742 + default: + return length + } + + case 742: + switch byteutil.ByteToLower(b) { + case 'e': + st = 743 + default: + return length + } + + case 743: + switch byteutil.ByteToLower(b) { + case 'n': + st = 744 + default: + return length + } + + case 744: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 745 + default: + return length + } + + case 746: + switch byteutil.ByteToLower(b) { + case 'n': + st = 747 + default: + return length + } + + case 747: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 748 + default: + return length + } + + case 749: + switch byteutil.ByteToLower(b) { + case 'q': + length = i + 1 + st = 750 + case 't': + st = 751 + default: + return length + } + + case 751: + switch byteutil.ByteToLower(b) { + case 'a': + st = 752 + default: + return length + } + + case 752: + switch byteutil.ByteToLower(b) { + case 't': + st = 753 + default: + return length + } + + case 753: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 754 + default: + return length + } + + case 756: + switch byteutil.ByteToLower(b) { + case 'r': + st = 757 + case 's': + length = i + 1 + st = 765 + default: + return length + } + + case 757: + switch byteutil.ByteToLower(b) { + case 'o': + st = 758 + default: + return length + } + + case 758: + switch byteutil.ByteToLower(b) { + case 'v': + st = 759 + default: + return length + } + + case 759: + switch byteutil.ByteToLower(b) { + case 'i': + st = 760 + default: + return length + } + + case 760: + switch byteutil.ByteToLower(b) { + case 's': + st = 761 + default: + return length + } + + case 761: + switch byteutil.ByteToLower(b) { + case 'i': + st = 762 + default: + return length + } + + case 762: + switch byteutil.ByteToLower(b) { + case 'o': + st = 763 + default: + return length + } + + case 763: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 764 + default: + return length + } + + case 766: + switch byteutil.ByteToLower(b) { + case 'e': + st = 767 + default: + return length + } + + case 767: + switch byteutil.ByteToLower(b) { + case 'n': + st = 768 + case 'r': + st = 771 + default: + return length + } + + case 768: + switch byteutil.ByteToLower(b) { + case 't': + st = 769 + default: + return length + } + + case 769: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 770 + default: + return length + } + + case 771: + switch byteutil.ByteToLower(b) { + case 'b': + st = 772 + default: + return length + } + + case 772: + switch byteutil.ByteToLower(b) { + case 'a': + st = 773 + default: + return length + } + + case 773: + switch byteutil.ByteToLower(b) { + case 'n': + st = 774 + default: + return length + } + + case 774: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 775 + default: + return length + } + + case 776: + switch byteutil.ByteToLower(b) { + case 'c': + st = 777 + case 'i': + st = 783 + case 'p': + st = 785 + default: + return length + } + + case 777: + switch byteutil.ByteToLower(b) { + case 'h': + st = 778 + default: + return length + } + + case 778: + switch byteutil.ByteToLower(b) { + case 'a': + st = 779 + default: + return length + } + + case 779: + switch byteutil.ByteToLower(b) { + case 'n': + st = 780 + default: + return length + } + + case 780: + switch byteutil.ByteToLower(b) { + case 'g': + st = 781 + default: + return length + } + + case 781: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 782 + default: + return length + } + + case 783: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 784 + default: + return length + } + + case 785: + switch byteutil.ByteToLower(b) { + case 'e': + st = 786 + case 'o': + st = 789 + case 'r': + st = 793 + default: + return length + } + + case 786: + switch byteutil.ByteToLower(b) { + case 'r': + st = 787 + default: + return length + } + + case 787: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 788 + default: + return length + } + + case 789: + switch byteutil.ByteToLower(b) { + case 's': + st = 790 + default: + return length + } + + case 790: + switch byteutil.ByteToLower(b) { + case 'e': + st = 791 + default: + return length + } + + case 791: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 792 + default: + return length + } + + case 793: + switch byteutil.ByteToLower(b) { + case 'e': + st = 794 + default: + return length + } + + case 794: + switch byteutil.ByteToLower(b) { + case 's': + st = 795 + default: + return length + } + + case 795: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 796 + default: + return length + } + + case 797: + switch byteutil.ByteToLower(b) { + case 'a': + st = 798 + case 'e': + st = 812 + case 'i': + length = i + 1 + st = 819 + case 'j': + length = i + 1 + st = 846 + case 'k': + length = i + 1 + st = 847 + case 'l': + st = 848 + case 'm': + length = i + 1 + st = 870 + case 'o': + length = i + 1 + st = 871 + case 'r': + length = i + 1 + st = 893 + case 'u': + st = 900 + case 'y': + st = 914 + default: + return length + } + + case 798: + switch byteutil.ByteToLower(b) { + case 'i': + st = 799 + case 'n': + length = i + 1 + st = 803 + case 'r': + st = 805 + case 's': + st = 807 + default: + return length + } + + case 799: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 800 + case 't': + st = 801 + default: + return length + } + + case 801: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 802 + default: + return length + } + + case 803: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 804 + default: + return length + } + + case 805: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 806 + default: + return length + } + + case 807: + switch byteutil.ByteToLower(b) { + case 'h': + st = 808 + default: + return length + } + + case 808: + switch byteutil.ByteToLower(b) { + case 'i': + st = 809 + default: + return length + } + + case 809: + switch byteutil.ByteToLower(b) { + case 'o': + st = 810 + default: + return length + } + + case 810: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 811 + default: + return length + } + + case 812: + switch byteutil.ByteToLower(b) { + case 'e': + st = 813 + default: + return length + } + + case 813: + switch byteutil.ByteToLower(b) { + case 'd': + st = 814 + default: + return length + } + + case 814: + switch byteutil.ByteToLower(b) { + case 'b': + st = 815 + default: + return length + } + + case 815: + switch byteutil.ByteToLower(b) { + case 'a': + st = 816 + default: + return length + } + + case 816: + switch byteutil.ByteToLower(b) { + case 'c': + st = 817 + default: + return length + } + + case 817: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 818 + default: + return length + } + + case 819: + switch byteutil.ByteToLower(b) { + case 'l': + st = 820 + case 'n': + st = 822 + case 'r': + st = 830 + case 's': + st = 836 + case 't': + length = i + 1 + st = 841 + default: + return length + } + + case 820: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 821 + default: + return length + } + + case 822: + switch byteutil.ByteToLower(b) { + case 'a': + st = 823 + default: + return length + } + + case 823: + switch byteutil.ByteToLower(b) { + case 'n': + st = 824 + default: + return length + } + + case 824: + switch byteutil.ByteToLower(b) { + case 'c': + st = 825 + default: + return length + } + + case 825: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 826 + case 'i': + st = 827 + default: + return length + } + + case 827: + switch byteutil.ByteToLower(b) { + case 'a': + st = 828 + default: + return length + } + + case 828: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 829 + default: + return length + } + + case 830: + switch byteutil.ByteToLower(b) { + case 'm': + st = 831 + default: + return length + } + + case 831: + switch byteutil.ByteToLower(b) { + case 'd': + st = 832 + default: + return length + } + + case 832: + switch byteutil.ByteToLower(b) { + case 'a': + st = 833 + default: + return length + } + + case 833: + switch byteutil.ByteToLower(b) { + case 'l': + st = 834 + default: + return length + } + + case 834: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 835 + default: + return length + } + + case 836: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 837 + default: + return length + } + + case 837: + switch byteutil.ByteToLower(b) { + case 'i': + st = 838 + default: + return length + } + + case 838: + switch byteutil.ByteToLower(b) { + case 'n': + st = 839 + default: + return length + } + + case 839: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 840 + default: + return length + } + + case 841: + switch byteutil.ByteToLower(b) { + case 'n': + st = 842 + default: + return length + } + + case 842: + switch byteutil.ByteToLower(b) { + case 'e': + st = 843 + default: + return length + } + + case 843: + switch byteutil.ByteToLower(b) { + case 's': + st = 844 + default: + return length + } + + case 844: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 845 + default: + return length + } + + case 848: + switch byteutil.ByteToLower(b) { + case 'i': + st = 849 + case 'o': + st = 854 + case 's': + st = 863 + case 'y': + length = i + 1 + st = 869 + default: + return length + } + + case 849: + switch byteutil.ByteToLower(b) { + case 'g': + st = 850 + default: + return length + } + + case 850: + switch byteutil.ByteToLower(b) { + case 'h': + st = 851 + default: + return length + } + + case 851: + switch byteutil.ByteToLower(b) { + case 't': + st = 852 + default: + return length + } + + case 852: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 853 + default: + return length + } + + case 854: + switch byteutil.ByteToLower(b) { + case 'r': + st = 855 + case 'w': + st = 859 + default: + return length + } + + case 855: + switch byteutil.ByteToLower(b) { + case 'i': + st = 856 + default: + return length + } + + case 856: + switch byteutil.ByteToLower(b) { + case 's': + st = 857 + default: + return length + } + + case 857: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 858 + default: + return length + } + + case 859: + switch byteutil.ByteToLower(b) { + case 'e': + st = 860 + default: + return length + } + + case 860: + switch byteutil.ByteToLower(b) { + case 'r': + st = 861 + default: + return length + } + + case 861: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 862 + default: + return length + } + + case 863: + switch byteutil.ByteToLower(b) { + case 'm': + st = 864 + default: + return length + } + + case 864: + switch byteutil.ByteToLower(b) { + case 'i': + st = 865 + default: + return length + } + + case 865: + switch byteutil.ByteToLower(b) { + case 'd': + st = 866 + default: + return length + } + + case 866: + switch byteutil.ByteToLower(b) { + case 't': + st = 867 + default: + return length + } + + case 867: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 868 + default: + return length + } + + case 871: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 872 + case 'r': + st = 878 + case 'u': + st = 885 + default: + return length + } + + case 872: + switch byteutil.ByteToLower(b) { + case 't': + st = 873 + default: + return length + } + + case 873: + switch byteutil.ByteToLower(b) { + case 'b': + st = 874 + default: + return length + } + + case 874: + switch byteutil.ByteToLower(b) { + case 'a': + st = 875 + default: + return length + } + + case 875: + switch byteutil.ByteToLower(b) { + case 'l': + st = 876 + default: + return length + } + + case 876: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 877 + default: + return length + } + + case 878: + switch byteutil.ByteToLower(b) { + case 'e': + st = 879 + case 's': + st = 881 + default: + return length + } + + case 879: + switch byteutil.ByteToLower(b) { + case 'x': + length = i + 1 + st = 880 + default: + return length + } + + case 881: + switch byteutil.ByteToLower(b) { + case 'a': + st = 882 + default: + return length + } + + case 882: + switch byteutil.ByteToLower(b) { + case 'l': + st = 883 + default: + return length + } + + case 883: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 884 + default: + return length + } + + case 885: + switch byteutil.ByteToLower(b) { + case 'n': + st = 886 + default: + return length + } + + case 886: + switch byteutil.ByteToLower(b) { + case 'd': + st = 887 + default: + return length + } + + case 887: + switch byteutil.ByteToLower(b) { + case 'a': + st = 888 + default: + return length + } + + case 888: + switch byteutil.ByteToLower(b) { + case 't': + st = 889 + default: + return length + } + + case 889: + switch byteutil.ByteToLower(b) { + case 'i': + st = 890 + default: + return length + } + + case 890: + switch byteutil.ByteToLower(b) { + case 'o': + st = 891 + default: + return length + } + + case 891: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 892 + default: + return length + } + + case 893: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 894 + case 'o': + st = 895 + default: + return length + } + + case 895: + switch byteutil.ByteToLower(b) { + case 'g': + st = 896 + default: + return length + } + + case 896: + switch byteutil.ByteToLower(b) { + case 'a': + st = 897 + default: + return length + } + + case 897: + switch byteutil.ByteToLower(b) { + case 'n': + st = 898 + default: + return length + } + + case 898: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 899 + default: + return length + } + + case 900: + switch byteutil.ByteToLower(b) { + case 'n': + st = 901 + case 'r': + st = 903 + case 't': + st = 910 + default: + return length + } + + case 901: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 902 + default: + return length + } + + case 903: + switch byteutil.ByteToLower(b) { + case 'n': + st = 904 + default: + return length + } + + case 904: + switch byteutil.ByteToLower(b) { + case 'i': + st = 905 + default: + return length + } + + case 905: + switch byteutil.ByteToLower(b) { + case 't': + st = 906 + default: + return length + } + + case 906: + switch byteutil.ByteToLower(b) { + case 'u': + st = 907 + default: + return length + } + + case 907: + switch byteutil.ByteToLower(b) { + case 'r': + st = 908 + default: + return length + } + + case 908: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 909 + default: + return length + } + + case 910: + switch byteutil.ByteToLower(b) { + case 'b': + st = 911 + default: + return length + } + + case 911: + switch byteutil.ByteToLower(b) { + case 'o': + st = 912 + default: + return length + } + + case 912: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 913 + default: + return length + } + + case 914: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 915 + default: + return length + } + + case 916: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 917 + case 'b': + length = i + 1 + st = 927 + case 'd': + length = i + 1 + st = 930 + case 'e': + length = i + 1 + st = 932 + case 'f': + length = i + 1 + st = 935 + case 'g': + length = i + 1 + st = 936 + case 'h': + length = i + 1 + st = 939 + case 'i': + length = i + 1 + st = 940 + case 'l': + length = i + 1 + st = 947 + case 'm': + length = i + 1 + st = 957 + case 'n': + length = i + 1 + st = 963 + case 'o': + st = 965 + case 'p': + length = i + 1 + st = 980 + case 'q': + length = i + 1 + st = 981 + case 'r': + length = i + 1 + st = 982 + case 's': + length = i + 1 + st = 998 + case 't': + length = i + 1 + st = 999 + case 'u': + length = i + 1 + st = 1000 + case 'w': + length = i + 1 + st = 1012 + case 'y': + length = i + 1 + st = 1013 + default: + return length + } + + case 917: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 918 + case 'r': + st = 923 + default: + return length + } + + case 918: + switch byteutil.ByteToLower(b) { + case 'l': + st = 919 + default: + return length + } + + case 919: + switch byteutil.ByteToLower(b) { + case 'e': + st = 920 + default: + return length + } + + case 920: + switch byteutil.ByteToLower(b) { + case 'r': + st = 921 + default: + return length + } + + case 921: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 922 + default: + return length + } + + case 923: + switch byteutil.ByteToLower(b) { + case 'd': + st = 924 + default: + return length + } + + case 924: + switch byteutil.ByteToLower(b) { + case 'e': + st = 925 + default: + return length + } + + case 925: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 926 + default: + return length + } + + case 927: + switch byteutil.ByteToLower(b) { + case 'i': + st = 928 + default: + return length + } + + case 928: + switch byteutil.ByteToLower(b) { + case 'z': + length = i + 1 + st = 929 + default: + return length + } + + case 930: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 931 + default: + return length + } + + case 932: + switch byteutil.ByteToLower(b) { + case 'n': + st = 933 + default: + return length + } + + case 933: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 934 + default: + return length + } + + case 936: + switch byteutil.ByteToLower(b) { + case 'e': + st = 937 + default: + return length + } + + case 937: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 938 + default: + return length + } + + case 940: + switch byteutil.ByteToLower(b) { + case 'f': + st = 941 + case 'v': + st = 944 + default: + return length + } + + case 941: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 942 + default: + return length + } + + case 942: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 943 + default: + return length + } + + case 944: + switch byteutil.ByteToLower(b) { + case 'e': + st = 945 + default: + return length + } + + case 945: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 946 + default: + return length + } + + case 947: + switch byteutil.ByteToLower(b) { + case 'a': + st = 948 + case 'e': + length = i + 1 + st = 951 + case 'o': + st = 952 + default: + return length + } + + case 948: + switch byteutil.ByteToLower(b) { + case 's': + st = 949 + default: + return length + } + + case 949: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 950 + default: + return length + } + + case 952: + switch byteutil.ByteToLower(b) { + case 'b': + st = 953 + default: + return length + } + + case 953: + switch byteutil.ByteToLower(b) { + case 'a': + st = 954 + case 'o': + length = i + 1 + st = 956 + default: + return length + } + + case 954: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 955 + default: + return length + } + + case 957: + switch byteutil.ByteToLower(b) { + case 'a': + st = 958 + case 'o': + length = i + 1 + st = 961 + case 'x': + length = i + 1 + st = 962 + default: + return length + } + + case 958: + switch byteutil.ByteToLower(b) { + case 'i': + st = 959 + default: + return length + } + + case 959: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 960 + default: + return length + } + + case 963: + switch byteutil.ByteToLower(b) { + case 'u': + length = i + 1 + st = 964 + default: + return length + } + + case 965: + switch byteutil.ByteToLower(b) { + case 'l': + st = 966 + case 'o': + length = i + 1 + st = 974 + case 'p': + length = i + 1 + st = 978 + case 'v': + length = i + 1 + st = 979 + default: + return length + } + + case 966: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 967 + case 'f': + length = i + 1 + st = 973 + default: + return length + } + + case 967: + switch byteutil.ByteToLower(b) { + case 'p': + st = 968 + default: + return length + } + + case 968: + switch byteutil.ByteToLower(b) { + case 'o': + st = 969 + default: + return length + } + + case 969: + switch byteutil.ByteToLower(b) { + case 'i': + st = 970 + default: + return length + } + + case 970: + switch byteutil.ByteToLower(b) { + case 'n': + st = 971 + default: + return length + } + + case 971: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 972 + default: + return length + } + + case 974: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 975 + default: + return length + } + + case 975: + switch byteutil.ByteToLower(b) { + case 'l': + st = 976 + default: + return length + } + + case 976: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 977 + default: + return length + } + + case 982: + switch byteutil.ByteToLower(b) { + case 'a': + st = 983 + case 'e': + st = 992 + case 'i': + st = 995 + default: + return length + } + + case 983: + switch byteutil.ByteToLower(b) { + case 'p': + st = 984 + case 't': + st = 989 + default: + return length + } + + case 984: + switch byteutil.ByteToLower(b) { + case 'h': + st = 985 + default: + return length + } + + case 985: + switch byteutil.ByteToLower(b) { + case 'i': + st = 986 + default: + return length + } + + case 986: + switch byteutil.ByteToLower(b) { + case 'c': + st = 987 + default: + return length + } + + case 987: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 988 + default: + return length + } + + case 989: + switch byteutil.ByteToLower(b) { + case 'i': + st = 990 + default: + return length + } + + case 990: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 991 + default: + return length + } + + case 992: + switch byteutil.ByteToLower(b) { + case 'e': + st = 993 + default: + return length + } + + case 993: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 994 + default: + return length + } + + case 995: + switch byteutil.ByteToLower(b) { + case 'p': + st = 996 + default: + return length + } + + case 996: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 997 + default: + return length + } + + case 1000: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1001 + case 'i': + st = 1003 + case 'r': + st = 1010 + default: + return length + } + + case 1001: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1002 + default: + return length + } + + case 1003: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1004 + case 't': + st = 1006 + default: + return length + } + + case 1004: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1005 + default: + return length + } + + case 1006: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1007 + default: + return length + } + + case 1007: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1008 + default: + return length + } + + case 1008: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1009 + default: + return length + } + + case 1010: + switch byteutil.ByteToLower(b) { + case 'u': + length = i + 1 + st = 1011 + default: + return length + } + + case 1014: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1015 + case 'e': + st = 1028 + case 'i': + st = 1044 + case 'k': + length = i + 1 + st = 1055 + case 'm': + length = i + 1 + st = 1056 + case 'n': + length = i + 1 + st = 1057 + case 'o': + st = 1058 + case 'r': + length = i + 1 + st = 1096 + case 't': + length = i + 1 + st = 1097 + case 'u': + length = i + 1 + st = 1098 + default: + return length + } + + case 1015: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1016 + case 'n': + st = 1021 + case 'u': + st = 1026 + default: + return length + } + + case 1016: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1017 + default: + return length + } + + case 1017: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1018 + default: + return length + } + + case 1018: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1019 + default: + return length + } + + case 1019: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 1020 + default: + return length + } + + case 1021: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1022 + default: + return length + } + + case 1022: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1023 + default: + return length + } + + case 1023: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1024 + default: + return length + } + + case 1024: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1025 + default: + return length + } + + case 1026: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1027 + default: + return length + } + + case 1028: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1029 + case 'l': + st = 1037 + case 'r': + st = 1039 + default: + return length + } + + case 1029: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1030 + default: + return length + } + + case 1030: + switch byteutil.ByteToLower(b) { + case 't': + st = 1031 + default: + return length + } + + case 1031: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1032 + default: + return length + } + + case 1032: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1033 + default: + return length + } + + case 1033: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1034 + default: + return length + } + + case 1034: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1035 + default: + return length + } + + case 1035: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1036 + default: + return length + } + + case 1037: + switch byteutil.ByteToLower(b) { + case 'p': + length = i + 1 + st = 1038 + default: + return length + } + + case 1039: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1040 + case 'm': + st = 1041 + default: + return length + } + + case 1041: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1042 + default: + return length + } + + case 1042: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1043 + default: + return length + } + + case 1044: + switch byteutil.ByteToLower(b) { + case 'p': + st = 1045 + case 't': + st = 1049 + case 'v': + length = i + 1 + st = 1054 + default: + return length + } + + case 1045: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1046 + default: + return length + } + + case 1046: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1047 + default: + return length + } + + case 1047: + switch byteutil.ByteToLower(b) { + case 'p': + length = i + 1 + st = 1048 + default: + return length + } + + case 1049: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1050 + default: + return length + } + + case 1050: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1051 + default: + return length + } + + case 1051: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1052 + default: + return length + } + + case 1052: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1053 + default: + return length + } + + case 1058: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1059 + case 'l': + st = 1063 + case 'm': + st = 1073 + case 'n': + st = 1081 + case 'r': + st = 1084 + case 's': + st = 1087 + case 'u': + st = 1092 + case 'w': + length = i + 1 + st = 1095 + default: + return length + } + + case 1059: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1060 + default: + return length + } + + case 1060: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1061 + default: + return length + } + + case 1061: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1062 + default: + return length + } + + case 1063: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1064 + case 'i': + st = 1069 + default: + return length + } + + case 1064: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1065 + default: + return length + } + + case 1065: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1066 + default: + return length + } + + case 1066: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1067 + default: + return length + } + + case 1067: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1068 + default: + return length + } + + case 1069: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1070 + default: + return length + } + + case 1070: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1071 + default: + return length + } + + case 1071: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1072 + default: + return length + } + + case 1073: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1074 + default: + return length + } + + case 1074: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1075 + case 's': + length = i + 1 + st = 1080 + default: + return length + } + + case 1075: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1076 + default: + return length + } + + case 1076: + switch byteutil.ByteToLower(b) { + case 'p': + st = 1077 + default: + return length + } + + case 1077: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1078 + default: + return length + } + + case 1078: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1079 + default: + return length + } + + case 1081: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1082 + default: + return length + } + + case 1082: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1083 + default: + return length + } + + case 1084: + switch byteutil.ByteToLower(b) { + case 's': + st = 1085 + default: + return length + } + + case 1085: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1086 + default: + return length + } + + case 1087: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1088 + default: + return length + } + + case 1088: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1089 + default: + return length + } + + case 1089: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1090 + default: + return length + } + + case 1090: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 1091 + default: + return length + } + + case 1092: + switch byteutil.ByteToLower(b) { + case 's': + st = 1093 + default: + return length + } + + case 1093: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1094 + default: + return length + } + + case 1099: + switch byteutil.ByteToLower(b) { + case '2': + st = 1100 + case 'b': + st = 1102 + case 'c': + st = 1104 + case 'd': + length = i + 1 + st = 1108 + case 'e': + length = i + 1 + st = 1109 + case 'f': + st = 1110 + case 'l': + length = i + 1 + st = 1112 + case 'm': + length = i + 1 + st = 1113 + case 'n': + length = i + 1 + st = 1122 + case 'o': + length = i + 1 + st = 1170 + case 'q': + length = i + 1 + st = 1171 + case 'r': + length = i + 1 + st = 1172 + case 's': + length = i + 1 + st = 1176 + case 't': + length = i + 1 + st = 1177 + case 'w': + st = 1178 + default: + return length + } + + case 1100: + switch byteutil.ByteToLower(b) { + case 'p': + length = i + 1 + st = 1101 + default: + return length + } + + case 1102: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 1103 + default: + return length + } + + case 1104: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1105 + case 'u': + length = i + 1 + st = 1107 + default: + return length + } + + case 1105: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 1106 + default: + return length + } + + case 1110: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 1111 + default: + return length + } + + case 1113: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1114 + default: + return length + } + + case 1114: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1115 + default: + return length + } + + case 1115: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1116 + default: + return length + } + + case 1116: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1117 + default: + return length + } + + case 1117: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1118 + default: + return length + } + + case 1118: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1119 + default: + return length + } + + case 1119: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1120 + default: + return length + } + + case 1120: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1121 + default: + return length + } + + case 1122: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1123 + case 'f': + st = 1131 + case 'g': + length = i + 1 + st = 1138 + case 'k': + length = i + 1 + st = 1139 + case 's': + st = 1140 + case 't': + length = i + 1 + st = 1150 + case 'v': + st = 1161 + default: + return length + } + + case 1123: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1124 + default: + return length + } + + case 1124: + switch byteutil.ByteToLower(b) { + case 's': + st = 1125 + default: + return length + } + + case 1125: + switch byteutil.ByteToLower(b) { + case 't': + st = 1126 + default: + return length + } + + case 1126: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1127 + default: + return length + } + + case 1127: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1128 + default: + return length + } + + case 1128: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1129 + default: + return length + } + + case 1129: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1130 + default: + return length + } + + case 1131: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1132 + case 'o': + length = i + 1 + st = 1137 + default: + return length + } + + case 1132: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1133 + default: + return length + } + + case 1133: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1134 + default: + return length + } + + case 1134: + switch byteutil.ByteToLower(b) { + case 't': + st = 1135 + default: + return length + } + + case 1135: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1136 + default: + return length + } + + case 1140: + switch byteutil.ByteToLower(b) { + case 't': + st = 1141 + case 'u': + st = 1147 + default: + return length + } + + case 1141: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1142 + default: + return length + } + + case 1142: + switch byteutil.ByteToLower(b) { + case 't': + st = 1143 + default: + return length + } + + case 1143: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1144 + default: + return length + } + + case 1144: + switch byteutil.ByteToLower(b) { + case 't': + st = 1145 + default: + return length + } + + case 1145: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1146 + default: + return length + } + + case 1147: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1148 + default: + return length + } + + case 1148: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1149 + default: + return length + } + + case 1150: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1151 + default: + return length + } + + case 1151: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1152 + default: + return length + } + + case 1152: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1153 + default: + return length + } + + case 1153: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1154 + default: + return length + } + + case 1154: + switch byteutil.ByteToLower(b) { + case 't': + st = 1155 + default: + return length + } + + case 1155: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1156 + default: + return length + } + + case 1156: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1157 + default: + return length + } + + case 1157: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1158 + default: + return length + } + + case 1158: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1159 + default: + return length + } + + case 1159: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1160 + default: + return length + } + + case 1161: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1162 + default: + return length + } + + case 1162: + switch byteutil.ByteToLower(b) { + case 's': + st = 1163 + default: + return length + } + + case 1163: + switch byteutil.ByteToLower(b) { + case 't': + st = 1164 + default: + return length + } + + case 1164: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1165 + default: + return length + } + + case 1165: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1166 + default: + return length + } + + case 1166: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1167 + default: + return length + } + + case 1167: + switch byteutil.ByteToLower(b) { + case 't': + st = 1168 + default: + return length + } + + case 1168: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1169 + default: + return length + } + + case 1172: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1173 + default: + return length + } + + case 1173: + switch byteutil.ByteToLower(b) { + case 's': + st = 1174 + default: + return length + } + + case 1174: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 1175 + default: + return length + } + + case 1178: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 1179 + default: + return length + } + + case 1180: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1181 + case 'c': + st = 1184 + case 'e': + length = i + 1 + st = 1186 + case 'l': + st = 1195 + case 'm': + length = i + 1 + st = 1197 + case 'o': + length = i + 1 + st = 1198 + case 'p': + length = i + 1 + st = 1204 + case 'u': + st = 1205 + default: + return length + } + + case 1181: + switch byteutil.ByteToLower(b) { + case 'v': + st = 1182 + default: + return length + } + + case 1182: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1183 + default: + return length + } + + case 1184: + switch byteutil.ByteToLower(b) { + case 'b': + length = i + 1 + st = 1185 + default: + return length + } + + case 1186: + switch byteutil.ByteToLower(b) { + case 't': + st = 1187 + case 'w': + st = 1190 + default: + return length + } + + case 1187: + switch byteutil.ByteToLower(b) { + case 'z': + st = 1188 + default: + return length + } + + case 1188: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1189 + default: + return length + } + + case 1190: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1191 + default: + return length + } + + case 1191: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1192 + default: + return length + } + + case 1192: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1193 + default: + return length + } + + case 1193: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1194 + default: + return length + } + + case 1195: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1196 + default: + return length + } + + case 1198: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1199 + default: + return length + } + + case 1199: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1200 + case 'u': + st = 1201 + default: + return length + } + + case 1201: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1202 + default: + return length + } + + case 1202: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 1203 + default: + return length + } + + case 1205: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1206 + default: + return length + } + + case 1206: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1207 + default: + return length + } + + case 1207: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1208 + default: + return length + } + + case 1208: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1209 + default: + return length + } + + case 1210: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1211 + case 'd': + st = 1216 + case 'e': + length = i + 1 + st = 1219 + case 'g': + length = i + 1 + st = 1220 + case 'h': + length = i + 1 + st = 1221 + case 'i': + length = i + 1 + st = 1222 + case 'm': + length = i + 1 + st = 1231 + case 'n': + length = i + 1 + st = 1232 + case 'o': + st = 1233 + case 'p': + length = i + 1 + st = 1242 + case 'r': + length = i + 1 + st = 1243 + case 'w': + length = i + 1 + st = 1247 + case 'y': + length = i + 1 + st = 1248 + case 'z': + length = i + 1 + st = 1252 + default: + return length + } + + case 1211: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1212 + default: + return length + } + + case 1212: + switch byteutil.ByteToLower(b) { + case 'f': + st = 1213 + default: + return length + } + + case 1213: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1214 + default: + return length + } + + case 1214: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1215 + default: + return length + } + + case 1216: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1217 + default: + return length + } + + case 1217: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1218 + default: + return length + } + + case 1222: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 1223 + case 't': + st = 1224 + case 'w': + st = 1229 + default: + return length + } + + case 1224: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1225 + default: + return length + } + + case 1225: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1226 + default: + return length + } + + case 1226: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1227 + default: + return length + } + + case 1227: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1228 + default: + return length + } + + case 1229: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1230 + default: + return length + } + + case 1233: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1234 + case 'm': + st = 1237 + default: + return length + } + + case 1234: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1235 + default: + return length + } + + case 1235: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1236 + default: + return length + } + + case 1237: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1238 + default: + return length + } + + case 1238: + switch byteutil.ByteToLower(b) { + case 't': + st = 1239 + default: + return length + } + + case 1239: + switch byteutil.ByteToLower(b) { + case 's': + st = 1240 + default: + return length + } + + case 1240: + switch byteutil.ByteToLower(b) { + case 'u': + length = i + 1 + st = 1241 + default: + return length + } + + case 1243: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 1244 + case 'e': + st = 1245 + default: + return length + } + + case 1245: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 1246 + default: + return length + } + + case 1248: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1249 + default: + return length + } + + case 1249: + switch byteutil.ByteToLower(b) { + case 't': + st = 1250 + default: + return length + } + + case 1250: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1251 + default: + return length + } + + case 1253: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1254 + case 'b': + length = i + 1 + st = 1271 + case 'c': + length = i + 1 + st = 1272 + case 'd': + st = 1273 + case 'e': + st = 1275 + case 'g': + st = 1287 + case 'i': + length = i + 1 + st = 1290 + case 'k': + length = i + 1 + st = 1314 + case 'o': + st = 1315 + case 'r': + length = i + 1 + st = 1333 + case 's': + length = i + 1 + st = 1334 + case 't': + length = i + 1 + st = 1335 + case 'u': + length = i + 1 + st = 1338 + case 'v': + length = i + 1 + st = 1347 + case 'y': + length = i + 1 + st = 1348 + default: + return length + } + + case 1254: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1255 + case 'n': + st = 1260 + case 't': + length = i + 1 + st = 1262 + case 'w': + st = 1267 + default: + return length + } + + case 1255: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1256 + default: + return length + } + + case 1256: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1257 + default: + return length + } + + case 1257: + switch byteutil.ByteToLower(b) { + case 'x': + st = 1258 + default: + return length + } + + case 1258: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1259 + default: + return length + } + + case 1260: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 1261 + default: + return length + } + + case 1262: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1263 + default: + return length + } + + case 1263: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1264 + default: + return length + } + + case 1264: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1265 + default: + return length + } + + case 1265: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1266 + default: + return length + } + + case 1267: + switch byteutil.ByteToLower(b) { + case 'y': + st = 1268 + default: + return length + } + + case 1268: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1269 + default: + return length + } + + case 1269: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 1270 + default: + return length + } + + case 1273: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1274 + default: + return length + } + + case 1275: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1276 + case 'c': + st = 1279 + case 'g': + st = 1284 + default: + return length + } + + case 1276: + switch byteutil.ByteToLower(b) { + case 's': + st = 1277 + default: + return length + } + + case 1277: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1278 + default: + return length + } + + case 1279: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1280 + default: + return length + } + + case 1280: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1281 + default: + return length + } + + case 1281: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1282 + default: + return length + } + + case 1282: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 1283 + default: + return length + } + + case 1284: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1285 + default: + return length + } + + case 1285: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1286 + default: + return length + } + + case 1287: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1288 + default: + return length + } + + case 1288: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1289 + default: + return length + } + + case 1290: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1291 + case 'd': + st = 1296 + case 'f': + st = 1298 + case 'g': + st = 1300 + case 'm': + st = 1306 + case 'n': + st = 1312 + default: + return length + } + + case 1291: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1292 + default: + return length + } + + case 1292: + switch byteutil.ByteToLower(b) { + case 's': + st = 1293 + default: + return length + } + + case 1293: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1294 + default: + return length + } + + case 1294: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1295 + default: + return length + } + + case 1296: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1297 + default: + return length + } + + case 1298: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1299 + default: + return length + } + + case 1300: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1301 + default: + return length + } + + case 1301: + switch byteutil.ByteToLower(b) { + case 't': + st = 1302 + default: + return length + } + + case 1302: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1303 + default: + return length + } + + case 1303: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1304 + default: + return length + } + + case 1304: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 1305 + default: + return length + } + + case 1306: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1307 + case 'o': + length = i + 1 + st = 1311 + default: + return length + } + + case 1307: + switch byteutil.ByteToLower(b) { + case 't': + st = 1308 + default: + return length + } + + case 1308: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1309 + default: + return length + } + + case 1309: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 1310 + default: + return length + } + + case 1312: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 1313 + default: + return length + } + + case 1315: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1316 + case 'c': + st = 1319 + case 'l': + length = i + 1 + st = 1322 + case 'n': + st = 1323 + case 't': + st = 1327 + case 'v': + st = 1331 + default: + return length + } + + case 1316: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1317 + default: + return length + } + + case 1317: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1318 + default: + return length + } + + case 1319: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1320 + default: + return length + } + + case 1320: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1321 + default: + return length + } + + case 1323: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1324 + default: + return length + } + + case 1324: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1325 + default: + return length + } + + case 1325: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1326 + default: + return length + } + + case 1327: + switch byteutil.ByteToLower(b) { + case 't': + st = 1328 + default: + return length + } + + case 1328: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1329 + case 'o': + length = i + 1 + st = 1330 + default: + return length + } + + case 1331: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1332 + default: + return length + } + + case 1335: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1336 + default: + return length + } + + case 1336: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1337 + default: + return length + } + + case 1338: + switch byteutil.ByteToLower(b) { + case 'p': + st = 1339 + case 'x': + st = 1342 + default: + return length + } + + case 1339: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1340 + default: + return length + } + + case 1340: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1341 + default: + return length + } + + case 1342: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1343 + case 'u': + st = 1344 + default: + return length + } + + case 1344: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1345 + default: + return length + } + + case 1345: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1346 + default: + return length + } + + case 1349: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1350 + case 'b': + st = 1383 + case 'c': + length = i + 1 + st = 1385 + case 'd': + length = i + 1 + st = 1386 + case 'e': + length = i + 1 + st = 1387 + case 'g': + length = i + 1 + st = 1409 + case 'h': + length = i + 1 + st = 1410 + case 'i': + st = 1411 + case 'k': + length = i + 1 + st = 1418 + case 'l': + length = i + 1 + st = 1419 + case 'm': + length = i + 1 + st = 1420 + case 'n': + length = i + 1 + st = 1422 + case 'o': + length = i + 1 + st = 1423 + case 'p': + length = i + 1 + st = 1460 + case 'q': + length = i + 1 + st = 1461 + case 'r': + length = i + 1 + st = 1462 + case 's': + length = i + 1 + st = 1463 + case 't': + length = i + 1 + st = 1464 + case 'u': + length = i + 1 + st = 1468 + case 'v': + length = i + 1 + st = 1473 + case 'w': + length = i + 1 + st = 1474 + case 'x': + length = i + 1 + st = 1475 + case 'y': + length = i + 1 + st = 1476 + case 'z': + length = i + 1 + st = 1477 + default: + return length + } + + case 1350: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1351 + case 'i': + st = 1355 + case 'n': + st = 1360 + case 'r': + st = 1370 + default: + return length + } + + case 1351: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1352 + default: + return length + } + + case 1352: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1353 + default: + return length + } + + case 1353: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 1354 + default: + return length + } + + case 1355: + switch byteutil.ByteToLower(b) { + case 'f': + length = i + 1 + st = 1356 + case 's': + st = 1357 + default: + return length + } + + case 1357: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1358 + default: + return length + } + + case 1358: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1359 + default: + return length + } + + case 1360: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1361 + case 'g': + st = 1368 + default: + return length + } + + case 1361: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1362 + default: + return length + } + + case 1362: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1363 + default: + return length + } + + case 1363: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1364 + default: + return length + } + + case 1364: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1365 + default: + return length + } + + case 1365: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1366 + default: + return length + } + + case 1366: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1367 + default: + return length + } + + case 1368: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1369 + default: + return length + } + + case 1370: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1371 + case 'r': + st = 1378 + default: + return length + } + + case 1371: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1372 + default: + return length + } + + case 1372: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1373 + default: + return length + } + + case 1373: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1374 + case 's': + length = i + 1 + st = 1377 + default: + return length + } + + case 1374: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1375 + default: + return length + } + + case 1375: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 1376 + default: + return length + } + + case 1378: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1379 + default: + return length + } + + case 1379: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1380 + default: + return length + } + + case 1380: + switch byteutil.ByteToLower(b) { + case 't': + st = 1381 + default: + return length + } + + case 1381: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1382 + default: + return length + } + + case 1383: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1384 + default: + return length + } + + case 1387: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1388 + case 'e': + st = 1391 + case 'l': + st = 1393 + case 'm': + st = 1400 + case 'n': + length = i + 1 + st = 1407 + default: + return length + } + + case 1388: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1389 + default: + return length + } + + case 1389: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1390 + default: + return length + } + + case 1391: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1392 + default: + return length + } + + case 1393: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1394 + default: + return length + } + + case 1394: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1395 + default: + return length + } + + case 1395: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1396 + default: + return length + } + + case 1396: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1397 + default: + return length + } + + case 1397: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1398 + default: + return length + } + + case 1398: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1399 + default: + return length + } + + case 1400: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1401 + case 'o': + st = 1402 + default: + return length + } + + case 1402: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1403 + default: + return length + } + + case 1403: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1404 + default: + return length + } + + case 1404: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1405 + default: + return length + } + + case 1405: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1406 + default: + return length + } + + case 1407: + switch byteutil.ByteToLower(b) { + case 'u': + length = i + 1 + st = 1408 + default: + return length + } + + case 1411: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1412 + case 'l': + length = i + 1 + st = 1415 + case 'n': + st = 1416 + default: + return length + } + + case 1412: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1413 + default: + return length + } + + case 1413: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1414 + default: + return length + } + + case 1416: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1417 + default: + return length + } + + case 1420: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1421 + default: + return length + } + + case 1423: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1424 + case 'd': + st = 1426 + case 'e': + length = i + 1 + st = 1428 + case 'n': + st = 1429 + case 'r': + st = 1435 + case 's': + st = 1444 + case 't': + st = 1448 + case 'v': + length = i + 1 + st = 1457 + default: + return length + } + + case 1424: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1425 + default: + return length + } + + case 1426: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1427 + default: + return length + } + + case 1429: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1430 + case 'e': + st = 1433 + default: + return length + } + + case 1430: + switch byteutil.ByteToLower(b) { + case 's': + st = 1431 + default: + return length + } + + case 1431: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 1432 + default: + return length + } + + case 1433: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1434 + default: + return length + } + + case 1435: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1436 + case 't': + st = 1439 + default: + return length + } + + case 1436: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1437 + default: + return length + } + + case 1437: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1438 + default: + return length + } + + case 1439: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1440 + default: + return length + } + + case 1440: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1441 + default: + return length + } + + case 1441: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1442 + default: + return length + } + + case 1442: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1443 + default: + return length + } + + case 1444: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1445 + default: + return length + } + + case 1445: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1446 + default: + return length + } + + case 1446: + switch byteutil.ByteToLower(b) { + case 'w': + length = i + 1 + st = 1447 + default: + return length + } + + case 1448: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1449 + default: + return length + } + + case 1449: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1450 + default: + return length + } + + case 1450: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1451 + default: + return length + } + + case 1451: + switch byteutil.ByteToLower(b) { + case 'y': + st = 1452 + default: + return length + } + + case 1452: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1453 + default: + return length + } + + case 1453: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1454 + default: + return length + } + + case 1454: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1455 + default: + return length + } + + case 1455: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1456 + default: + return length + } + + case 1457: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1458 + default: + return length + } + + case 1458: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1459 + default: + return length + } + + case 1464: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1465 + case 'p': + st = 1466 + default: + return length + } + + case 1466: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 1467 + default: + return length + } + + case 1468: + switch byteutil.ByteToLower(b) { + case 's': + st = 1469 + default: + return length + } + + case 1469: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1470 + default: + return length + } + + case 1470: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1471 + default: + return length + } + + case 1471: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 1472 + default: + return length + } + + case 1478: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1479 + case 'c': + length = i + 1 + st = 1491 + case 'e': + length = i + 1 + st = 1492 + case 'f': + length = i + 1 + st = 1509 + case 'g': + length = i + 1 + st = 1510 + case 'h': + st = 1512 + case 'i': + length = i + 1 + st = 1514 + case 'l': + length = i + 1 + st = 1524 + case 'o': + length = i + 1 + st = 1525 + case 'p': + length = i + 1 + st = 1526 + case 'r': + length = i + 1 + st = 1527 + case 't': + st = 1530 + case 'u': + length = i + 1 + st = 1532 + case 'y': + st = 1533 + case 'z': + length = i + 1 + st = 1535 + default: + return length + } + + case 1479: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1480 + case 'g': + st = 1483 + case 'm': + st = 1487 + case 'v': + st = 1489 + default: + return length + } + + case 1480: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1481 + default: + return length + } + + case 1481: + switch byteutil.ByteToLower(b) { + case 'x': + length = i + 1 + st = 1482 + default: + return length + } + + case 1483: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1484 + default: + return length + } + + case 1484: + switch byteutil.ByteToLower(b) { + case 'y': + st = 1485 + default: + return length + } + + case 1485: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1486 + default: + return length + } + + case 1487: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1488 + default: + return length + } + + case 1489: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1490 + default: + return length + } + + case 1492: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 1493 + case 't': + length = i + 1 + st = 1494 + case 'u': + st = 1499 + case 'w': + length = i + 1 + st = 1504 + case 'x': + st = 1506 + default: + return length + } + + case 1494: + switch byteutil.ByteToLower(b) { + case 'w': + st = 1495 + default: + return length + } + + case 1495: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1496 + default: + return length + } + + case 1496: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1497 + default: + return length + } + + case 1497: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 1498 + default: + return length + } + + case 1499: + switch byteutil.ByteToLower(b) { + case 's': + st = 1500 + default: + return length + } + + case 1500: + switch byteutil.ByteToLower(b) { + case 't': + st = 1501 + default: + return length + } + + case 1501: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1502 + default: + return length + } + + case 1502: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 1503 + default: + return length + } + + case 1504: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1505 + default: + return length + } + + case 1506: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1507 + default: + return length + } + + case 1507: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1508 + default: + return length + } + + case 1510: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1511 + default: + return length + } + + case 1512: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 1513 + default: + return length + } + + case 1514: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1515 + case 'n': + st = 1517 + case 's': + st = 1520 + default: + return length + } + + case 1515: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1516 + default: + return length + } + + case 1517: + switch byteutil.ByteToLower(b) { + case 'j': + st = 1518 + default: + return length + } + + case 1518: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1519 + default: + return length + } + + case 1520: + switch byteutil.ByteToLower(b) { + case 's': + st = 1521 + default: + return length + } + + case 1521: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1522 + default: + return length + } + + case 1522: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1523 + default: + return length + } + + case 1527: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1528 + case 'w': + length = i + 1 + st = 1529 + default: + return length + } + + case 1530: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1531 + default: + return length + } + + case 1533: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 1534 + default: + return length + } + + case 1536: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1537 + case 'm': + length = i + 1 + st = 1543 + case 'n': + st = 1544 + case 'o': + st = 1554 + case 'r': + st = 1556 + case 's': + st = 1566 + case 't': + st = 1570 + case 'v': + st = 1575 + default: + return length + } + + case 1537: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1538 + default: + return length + } + + case 1538: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1539 + default: + return length + } + + case 1539: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1540 + default: + return length + } + + case 1540: + switch byteutil.ByteToLower(b) { + case 'w': + st = 1541 + default: + return length + } + + case 1541: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1542 + default: + return length + } + + case 1544: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1545 + case 'g': + length = i + 1 + st = 1546 + case 'i': + st = 1547 + case 'l': + length = i + 1 + st = 1550 + default: + return length + } + + case 1547: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1548 + default: + return length + } + + case 1548: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1549 + default: + return length + } + + case 1550: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1551 + default: + return length + } + + case 1551: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1552 + default: + return length + } + + case 1552: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1553 + default: + return length + } + + case 1554: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1555 + default: + return length + } + + case 1556: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1557 + case 'g': + length = i + 1 + st = 1561 + default: + return length + } + + case 1557: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1558 + default: + return length + } + + case 1558: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1559 + default: + return length + } + + case 1559: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1560 + default: + return length + } + + case 1561: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1562 + default: + return length + } + + case 1562: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1563 + default: + return length + } + + case 1563: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1564 + default: + return length + } + + case 1564: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 1565 + default: + return length + } + + case 1566: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1567 + default: + return length + } + + case 1567: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1568 + default: + return length + } + + case 1568: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1569 + default: + return length + } + + case 1570: + switch byteutil.ByteToLower(b) { + case 's': + st = 1571 + default: + return length + } + + case 1571: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1572 + default: + return length + } + + case 1572: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1573 + default: + return length + } + + case 1573: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1574 + default: + return length + } + + case 1575: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 1576 + default: + return length + } + + case 1577: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1578 + case 'e': + length = i + 1 + st = 1596 + case 'f': + length = i + 1 + st = 1597 + case 'g': + length = i + 1 + st = 1598 + case 'h': + length = i + 1 + st = 1599 + case 'i': + st = 1625 + case 'k': + length = i + 1 + st = 1644 + case 'l': + length = i + 1 + st = 1645 + case 'm': + length = i + 1 + st = 1656 + case 'n': + length = i + 1 + st = 1657 + case 'o': + st = 1658 + case 'r': + length = i + 1 + st = 1668 + case 's': + length = i + 1 + st = 1693 + case 't': + length = i + 1 + st = 1694 + case 'u': + st = 1695 + case 'w': + length = i + 1 + st = 1697 + case 'y': + length = i + 1 + st = 1698 + default: + return length + } + + case 1578: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1579 + case 'n': + st = 1581 + case 'r': + st = 1586 + default: + return length + } + + case 1579: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1580 + default: + return length + } + + case 1581: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1582 + default: + return length + } + + case 1582: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1583 + default: + return length + } + + case 1583: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1584 + default: + return length + } + + case 1584: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1585 + default: + return length + } + + case 1586: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1587 + case 't': + st = 1589 + default: + return length + } + + case 1587: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1588 + default: + return length + } + + case 1589: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1590 + case 's': + length = i + 1 + st = 1594 + case 'y': + length = i + 1 + st = 1595 + default: + return length + } + + case 1590: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1591 + default: + return length + } + + case 1591: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1592 + default: + return length + } + + case 1592: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1593 + default: + return length + } + + case 1599: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1600 + case 'i': + st = 1606 + case 'o': + st = 1611 + case 'y': + st = 1621 + default: + return length + } + + case 1600: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1601 + default: + return length + } + + case 1601: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1602 + default: + return length + } + + case 1602: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1603 + default: + return length + } + + case 1603: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1604 + default: + return length + } + + case 1604: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1605 + default: + return length + } + + case 1606: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1607 + default: + return length + } + + case 1607: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1608 + default: + return length + } + + case 1608: + switch byteutil.ByteToLower(b) { + case 'p': + st = 1609 + default: + return length + } + + case 1609: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1610 + default: + return length + } + + case 1611: + switch byteutil.ByteToLower(b) { + case 't': + st = 1612 + default: + return length + } + + case 1612: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1613 + default: + return length + } + + case 1613: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1614 + case 's': + length = i + 1 + st = 1620 + default: + return length + } + + case 1614: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1615 + default: + return length + } + + case 1615: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1616 + default: + return length + } + + case 1616: + switch byteutil.ByteToLower(b) { + case 'p': + st = 1617 + default: + return length + } + + case 1617: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1618 + default: + return length + } + + case 1618: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1619 + default: + return length + } + + case 1621: + switch byteutil.ByteToLower(b) { + case 's': + st = 1622 + default: + return length + } + + case 1622: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1623 + default: + return length + } + + case 1623: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1624 + default: + return length + } + + case 1625: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1626 + case 'c': + st = 1630 + case 'n': + st = 1639 + case 'z': + st = 1641 + default: + return length + } + + case 1626: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1627 + default: + return length + } + + case 1627: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1628 + default: + return length + } + + case 1628: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1629 + default: + return length + } + + case 1630: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1631 + case 't': + st = 1632 + default: + return length + } + + case 1632: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1633 + case 'u': + st = 1635 + default: + return length + } + + case 1633: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1634 + default: + return length + } + + case 1635: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1636 + default: + return length + } + + case 1636: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1637 + default: + return length + } + + case 1637: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1638 + default: + return length + } + + case 1639: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 1640 + default: + return length + } + + case 1641: + switch byteutil.ByteToLower(b) { + case 'z': + st = 1642 + default: + return length + } + + case 1642: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1643 + default: + return length + } + + case 1645: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1646 + case 'u': + st = 1649 + default: + return length + } + + case 1646: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1647 + default: + return length + } + + case 1647: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1648 + default: + return length + } + + case 1649: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1650 + case 's': + length = i + 1 + st = 1655 + default: + return length + } + + case 1650: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1651 + default: + return length + } + + case 1651: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1652 + default: + return length + } + + case 1652: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1653 + default: + return length + } + + case 1653: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 1654 + default: + return length + } + + case 1658: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1659 + case 'k': + st = 1661 + case 'r': + st = 1664 + case 's': + st = 1666 + default: + return length + } + + case 1659: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1660 + default: + return length + } + + case 1661: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1662 + default: + return length + } + + case 1662: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 1663 + default: + return length + } + + case 1664: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1665 + default: + return length + } + + case 1666: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1667 + default: + return length + } + + case 1668: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1669 + case 'e': + st = 1672 + case 'o': + length = i + 1 + st = 1675 + default: + return length + } + + case 1669: + switch byteutil.ByteToLower(b) { + case 'x': + st = 1670 + default: + return length + } + + case 1670: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1671 + default: + return length + } + + case 1672: + switch byteutil.ByteToLower(b) { + case 's': + st = 1673 + default: + return length + } + + case 1673: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1674 + default: + return length + } + + case 1675: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 1676 + case 'f': + length = i + 1 + st = 1684 + case 'p': + st = 1685 + default: + return length + } + + case 1676: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1677 + default: + return length + } + + case 1677: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1678 + default: + return length + } + + case 1678: + switch byteutil.ByteToLower(b) { + case 't': + st = 1679 + default: + return length + } + + case 1679: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1680 + default: + return length + } + + case 1680: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1681 + default: + return length + } + + case 1681: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1682 + default: + return length + } + + case 1682: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1683 + default: + return length + } + + case 1685: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1686 + default: + return length + } + + case 1686: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1687 + default: + return length + } + + case 1687: + switch byteutil.ByteToLower(b) { + case 't': + st = 1688 + default: + return length + } + + case 1688: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1689 + case 'y': + length = i + 1 + st = 1692 + default: + return length + } + + case 1689: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1690 + default: + return length + } + + case 1690: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1691 + default: + return length + } + + case 1695: + switch byteutil.ByteToLower(b) { + case 'b': + length = i + 1 + st = 1696 + default: + return length + } + + case 1699: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1700 + case 'p': + st = 1701 + case 'u': + st = 1704 + default: + return length + } + + case 1701: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1702 + default: + return length + } + + case 1702: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1703 + default: + return length + } + + case 1704: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1705 + default: + return length + } + + case 1705: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1706 + default: + return length + } + + case 1706: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1707 + default: + return length + } + + case 1707: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 1708 + default: + return length + } + + case 1709: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1710 + case 'e': + length = i + 1 + st = 1715 + case 'i': + st = 1772 + case 'o': + length = i + 1 + st = 1777 + case 's': + length = i + 1 + st = 1784 + case 'u': + length = i + 1 + st = 1787 + case 'w': + length = i + 1 + st = 1791 + case 'y': + st = 1792 + default: + return length + } + + case 1710: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1711 + default: + return length + } + + case 1711: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1712 + default: + return length + } + + case 1712: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1713 + default: + return length + } + + case 1713: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 1714 + default: + return length + } + + case 1715: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1716 + case 'c': + st = 1721 + case 'd': + length = i + 1 + st = 1726 + case 'h': + st = 1732 + case 'i': + st = 1735 + case 'n': + length = i + 1 + st = 1740 + case 'p': + st = 1745 + case 's': + st = 1759 + case 'v': + st = 1767 + default: + return length + } + + case 1716: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1717 + default: + return length + } + + case 1717: + switch byteutil.ByteToLower(b) { + case 't': + st = 1718 + default: + return length + } + + case 1718: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1719 + default: + return length + } + + case 1719: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 1720 + default: + return length + } + + case 1721: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1722 + default: + return length + } + + case 1722: + switch byteutil.ByteToLower(b) { + case 'p': + st = 1723 + default: + return length + } + + case 1723: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1724 + default: + return length + } + + case 1724: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1725 + default: + return length + } + + case 1726: + switch byteutil.ByteToLower(b) { + case 's': + st = 1727 + default: + return length + } + + case 1727: + switch byteutil.ByteToLower(b) { + case 't': + st = 1728 + default: + return length + } + + case 1728: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1729 + default: + return length + } + + case 1729: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1730 + default: + return length + } + + case 1730: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1731 + default: + return length + } + + case 1732: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1733 + default: + return length + } + + case 1733: + switch byteutil.ByteToLower(b) { + case 'b': + length = i + 1 + st = 1734 + default: + return length + } + + case 1735: + switch byteutil.ByteToLower(b) { + case 's': + st = 1736 + case 't': + length = i + 1 + st = 1739 + default: + return length + } + + case 1736: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1737 + default: + return length + } + + case 1737: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1738 + default: + return length + } + + case 1740: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1741 + default: + return length + } + + case 1741: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1742 + default: + return length + } + + case 1742: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1743 + default: + return length + } + + case 1743: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1744 + default: + return length + } + + case 1745: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1746 + case 'o': + st = 1749 + case 'u': + st = 1752 + default: + return length + } + + case 1746: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1747 + default: + return length + } + + case 1747: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 1748 + default: + return length + } + + case 1749: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1750 + default: + return length + } + + case 1750: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1751 + default: + return length + } + + case 1752: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1753 + default: + return length + } + + case 1753: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1754 + default: + return length + } + + case 1754: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1755 + default: + return length + } + + case 1755: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1756 + default: + return length + } + + case 1756: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1757 + default: + return length + } + + case 1757: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 1758 + default: + return length + } + + case 1759: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1760 + default: + return length + } + + case 1760: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1761 + default: + return length + } + + case 1761: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1762 + default: + return length + } + + case 1762: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1763 + default: + return length + } + + case 1763: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1764 + default: + return length + } + + case 1764: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1765 + default: + return length + } + + case 1765: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1766 + default: + return length + } + + case 1767: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1768 + default: + return length + } + + case 1768: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1769 + default: + return length + } + + case 1769: + switch byteutil.ByteToLower(b) { + case 'w': + length = i + 1 + st = 1770 + default: + return length + } + + case 1770: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1771 + default: + return length + } + + case 1772: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1773 + case 'o': + length = i + 1 + st = 1775 + case 'p': + length = i + 1 + st = 1776 + default: + return length + } + + case 1773: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 1774 + default: + return length + } + + case 1777: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1778 + case 'd': + st = 1781 + default: + return length + } + + case 1778: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1779 + default: + return length + } + + case 1779: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1780 + default: + return length + } + + case 1781: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1782 + default: + return length + } + + case 1782: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1783 + default: + return length + } + + case 1784: + switch byteutil.ByteToLower(b) { + case 'v': + st = 1785 + default: + return length + } + + case 1785: + switch byteutil.ByteToLower(b) { + case 'p': + length = i + 1 + st = 1786 + default: + return length + } + + case 1787: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1788 + case 'n': + length = i + 1 + st = 1790 + default: + return length + } + + case 1788: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 1789 + default: + return length + } + + case 1792: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1793 + default: + return length + } + + case 1793: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1794 + default: + return length + } + + case 1794: + switch byteutil.ByteToLower(b) { + case 'y': + st = 1795 + default: + return length + } + + case 1795: + switch byteutil.ByteToLower(b) { + case 'u': + length = i + 1 + st = 1796 + default: + return length + } + + case 1797: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1798 + case 'b': + length = i + 1 + st = 1830 + case 'c': + length = i + 1 + st = 1831 + case 'd': + length = i + 1 + st = 1864 + case 'e': + length = i + 1 + st = 1865 + case 'g': + length = i + 1 + st = 1880 + case 'h': + length = i + 1 + st = 1881 + case 'i': + length = i + 1 + st = 1896 + case 'j': + length = i + 1 + st = 1904 + case 'k': + length = i + 1 + st = 1905 + case 'l': + length = i + 1 + st = 1908 + case 'm': + length = i + 1 + st = 1909 + case 'n': + length = i + 1 + st = 1910 + case 'o': + length = i + 1 + st = 1913 + case 'p': + st = 1941 + case 'r': + length = i + 1 + st = 1961 + case 't': + length = i + 1 + st = 1962 + case 'u': + length = i + 1 + st = 1969 + case 'v': + length = i + 1 + st = 1993 + case 'w': + st = 1994 + case 'x': + length = i + 1 + st = 1998 + case 'y': + length = i + 1 + st = 1999 + case 'z': + length = i + 1 + st = 2009 + default: + return length + } + + case 1798: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1799 + case 'l': + st = 1805 + case 'm': + st = 1807 + case 'n': + st = 1812 + case 'p': + length = i + 1 + st = 1825 + case 'r': + st = 1826 + case 'x': + st = 1828 + default: + return length + } + + case 1799: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1800 + default: + return length + } + + case 1800: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1801 + default: + return length + } + + case 1801: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1802 + default: + return length + } + + case 1802: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1803 + default: + return length + } + + case 1803: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 1804 + default: + return length + } + + case 1805: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1806 + default: + return length + } + + case 1807: + switch byteutil.ByteToLower(b) { + case 's': + st = 1808 + default: + return length + } + + case 1808: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1809 + default: + return length + } + + case 1809: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1810 + default: + return length + } + + case 1810: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 1811 + default: + return length + } + + case 1812: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1813 + default: + return length + } + + case 1813: + switch byteutil.ByteToLower(b) { + case 'v': + st = 1814 + default: + return length + } + + case 1814: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1815 + default: + return length + } + + case 1815: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 1816 + default: + return length + } + + case 1816: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1817 + default: + return length + } + + case 1817: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1818 + default: + return length + } + + case 1818: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1819 + default: + return length + } + + case 1819: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1820 + default: + return length + } + + case 1820: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1821 + default: + return length + } + + case 1821: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1822 + default: + return length + } + + case 1822: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1823 + default: + return length + } + + case 1823: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1824 + default: + return length + } + + case 1826: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1827 + default: + return length + } + + case 1828: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 1829 + default: + return length + } + + case 1831: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1832 + case 'b': + length = i + 1 + st = 1833 + case 'h': + st = 1834 + case 'i': + st = 1857 + case 'o': + st = 1862 + default: + return length + } + + case 1834: + switch byteutil.ByteToLower(b) { + case 'm': + st = 1835 + case 'o': + st = 1839 + case 'u': + st = 1850 + case 'w': + st = 1853 + default: + return length + } + + case 1835: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1836 + default: + return length + } + + case 1836: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1837 + default: + return length + } + + case 1837: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1838 + default: + return length + } + + case 1839: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1840 + case 'o': + st = 1848 + default: + return length + } + + case 1840: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1841 + default: + return length + } + + case 1841: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1842 + default: + return length + } + + case 1842: + switch byteutil.ByteToLower(b) { + case 's': + st = 1843 + default: + return length + } + + case 1843: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1844 + default: + return length + } + + case 1844: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1845 + default: + return length + } + + case 1845: + switch byteutil.ByteToLower(b) { + case 'p': + st = 1846 + default: + return length + } + + case 1846: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1847 + default: + return length + } + + case 1848: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1849 + default: + return length + } + + case 1850: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1851 + default: + return length + } + + case 1851: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1852 + default: + return length + } + + case 1853: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1854 + default: + return length + } + + case 1854: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1855 + default: + return length + } + + case 1855: + switch byteutil.ByteToLower(b) { + case 'z': + length = i + 1 + st = 1856 + default: + return length + } + + case 1857: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1858 + default: + return length + } + + case 1858: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1859 + default: + return length + } + + case 1859: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1860 + default: + return length + } + + case 1860: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1861 + default: + return length + } + + case 1862: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1863 + default: + return length + } + + case 1865: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1866 + case 'n': + st = 1868 + case 'r': + st = 1871 + case 'w': + length = i + 1 + st = 1877 + case 'x': + length = i + 1 + st = 1878 + default: + return length + } + + case 1866: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1867 + default: + return length + } + + case 1868: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1869 + default: + return length + } + + case 1869: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 1870 + default: + return length + } + + case 1871: + switch byteutil.ByteToLower(b) { + case 'v': + st = 1872 + default: + return length + } + + case 1872: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1873 + default: + return length + } + + case 1873: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1874 + default: + return length + } + + case 1874: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1875 + default: + return length + } + + case 1875: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1876 + default: + return length + } + + case 1878: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1879 + default: + return length + } + + case 1881: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1882 + case 'o': + st = 1887 + case 'r': + st = 1891 + default: + return length + } + + case 1882: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1883 + default: + return length + } + + case 1883: + switch byteutil.ByteToLower(b) { + case 's': + st = 1884 + default: + return length + } + + case 1884: + switch byteutil.ByteToLower(b) { + case 'h': + st = 1885 + default: + return length + } + + case 1885: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 1886 + default: + return length + } + + case 1887: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1888 + case 'w': + length = i + 1 + st = 1890 + default: + return length + } + + case 1888: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1889 + default: + return length + } + + case 1891: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1892 + default: + return length + } + + case 1892: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1893 + default: + return length + } + + case 1893: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1894 + default: + return length + } + + case 1894: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 1895 + default: + return length + } + + case 1896: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1897 + case 't': + st = 1902 + default: + return length + } + + case 1897: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1898 + default: + return length + } + + case 1898: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1899 + default: + return length + } + + case 1899: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1900 + default: + return length + } + + case 1900: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1901 + default: + return length + } + + case 1902: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1903 + default: + return length + } + + case 1905: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1906 + case 'y': + length = i + 1 + st = 1907 + default: + return length + } + + case 1910: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1911 + default: + return length + } + + case 1911: + switch byteutil.ByteToLower(b) { + case 'f': + length = i + 1 + st = 1912 + default: + return length + } + + case 1913: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1914 + case 'f': + st = 1921 + case 'h': + st = 1927 + case 'l': + st = 1929 + case 'n': + st = 1938 + case 'y': + length = i + 1 + st = 1940 + default: + return length + } + + case 1914: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1915 + case 'i': + st = 1918 + default: + return length + } + + case 1915: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1916 + default: + return length + } + + case 1916: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 1917 + default: + return length + } + + case 1918: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1919 + default: + return length + } + + case 1919: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1920 + default: + return length + } + + case 1921: + switch byteutil.ByteToLower(b) { + case 't': + st = 1922 + default: + return length + } + + case 1922: + switch byteutil.ByteToLower(b) { + case 'w': + st = 1923 + default: + return length + } + + case 1923: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1924 + default: + return length + } + + case 1924: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1925 + default: + return length + } + + case 1925: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1926 + default: + return length + } + + case 1927: + switch byteutil.ByteToLower(b) { + case 'u': + length = i + 1 + st = 1928 + default: + return length + } + + case 1929: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1930 + case 'u': + st = 1932 + default: + return length + } + + case 1930: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 1931 + default: + return length + } + + case 1932: + switch byteutil.ByteToLower(b) { + case 't': + st = 1933 + default: + return length + } + + case 1933: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1934 + default: + return length + } + + case 1934: + switch byteutil.ByteToLower(b) { + case 'o': + st = 1935 + default: + return length + } + + case 1935: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1936 + default: + return length + } + + case 1936: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1937 + default: + return length + } + + case 1938: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1939 + default: + return length + } + + case 1941: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1942 + case 'i': + st = 1945 + case 'r': + st = 1950 + default: + return length + } + + case 1942: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1943 + default: + return length + } + + case 1943: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1944 + default: + return length + } + + case 1945: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1946 + default: + return length + } + + case 1946: + switch byteutil.ByteToLower(b) { + case 'g': + st = 1947 + default: + return length + } + + case 1947: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1948 + default: + return length + } + + case 1948: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 1949 + default: + return length + } + + case 1950: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1951 + default: + return length + } + + case 1951: + switch byteutil.ByteToLower(b) { + case 'a': + st = 1952 + default: + return length + } + + case 1952: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1953 + default: + return length + } + + case 1953: + switch byteutil.ByteToLower(b) { + case 'b': + st = 1954 + default: + return length + } + + case 1954: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1955 + default: + return length + } + + case 1955: + switch byteutil.ByteToLower(b) { + case 't': + st = 1956 + default: + return length + } + + case 1956: + switch byteutil.ByteToLower(b) { + case 't': + st = 1957 + default: + return length + } + + case 1957: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1958 + default: + return length + } + + case 1958: + switch byteutil.ByteToLower(b) { + case 'n': + st = 1959 + default: + return length + } + + case 1959: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 1960 + default: + return length + } + + case 1962: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1963 + case 'y': + st = 1966 + default: + return length + } + + case 1963: + switch byteutil.ByteToLower(b) { + case 'd': + st = 1964 + default: + return length + } + + case 1964: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1965 + default: + return length + } + + case 1966: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1967 + default: + return length + } + + case 1967: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 1968 + default: + return length + } + + case 1969: + switch byteutil.ByteToLower(b) { + case 'c': + st = 1970 + case 'p': + st = 1973 + case 'r': + st = 1983 + case 'z': + st = 1989 + default: + return length + } + + case 1970: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1971 + default: + return length + } + + case 1971: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1972 + default: + return length + } + + case 1973: + switch byteutil.ByteToLower(b) { + case 'p': + st = 1974 + default: + return length + } + + case 1974: + switch byteutil.ByteToLower(b) { + case 'l': + st = 1975 + case 'o': + st = 1980 + default: + return length + } + + case 1975: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1976 + case 'y': + length = i + 1 + st = 1979 + default: + return length + } + + case 1976: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1977 + default: + return length + } + + case 1977: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1978 + default: + return length + } + + case 1980: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1981 + default: + return length + } + + case 1981: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 1982 + default: + return length + } + + case 1983: + switch byteutil.ByteToLower(b) { + case 'f': + length = i + 1 + st = 1984 + case 'g': + st = 1985 + default: + return length + } + + case 1985: + switch byteutil.ByteToLower(b) { + case 'e': + st = 1986 + default: + return length + } + + case 1986: + switch byteutil.ByteToLower(b) { + case 'r': + st = 1987 + default: + return length + } + + case 1987: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 1988 + default: + return length + } + + case 1989: + switch byteutil.ByteToLower(b) { + case 'u': + st = 1990 + default: + return length + } + + case 1990: + switch byteutil.ByteToLower(b) { + case 'k': + st = 1991 + default: + return length + } + + case 1991: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 1992 + default: + return length + } + + case 1994: + switch byteutil.ByteToLower(b) { + case 'i': + st = 1995 + default: + return length + } + + case 1995: + switch byteutil.ByteToLower(b) { + case 's': + st = 1996 + default: + return length + } + + case 1996: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 1997 + default: + return length + } + + case 1999: + switch byteutil.ByteToLower(b) { + case 'd': + st = 2000 + case 's': + st = 2004 + default: + return length + } + + case 2000: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2001 + default: + return length + } + + case 2001: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2002 + default: + return length + } + + case 2002: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 2003 + default: + return length + } + + case 2004: + switch byteutil.ByteToLower(b) { + case 't': + st = 2005 + default: + return length + } + + case 2005: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2006 + default: + return length + } + + case 2006: + switch byteutil.ByteToLower(b) { + case 'm': + st = 2007 + default: + return length + } + + case 2007: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2008 + default: + return length + } + + case 2010: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2011 + case 'c': + length = i + 1 + st = 2024 + case 'd': + length = i + 1 + st = 2025 + case 'e': + st = 2026 + case 'f': + length = i + 1 + st = 2047 + case 'g': + length = i + 1 + st = 2048 + case 'h': + length = i + 1 + st = 2049 + case 'i': + st = 2056 + case 'j': + length = i + 1 + st = 2073 + case 'k': + length = i + 1 + st = 2074 + case 'l': + length = i + 1 + st = 2075 + case 'm': + length = i + 1 + st = 2076 + case 'n': + length = i + 1 + st = 2077 + case 'o': + length = i + 1 + st = 2078 + case 'r': + length = i + 1 + st = 2104 + case 't': + length = i + 1 + st = 2122 + case 'u': + st = 2123 + case 'v': + length = i + 1 + st = 2125 + case 'w': + length = i + 1 + st = 2126 + case 'z': + length = i + 1 + st = 2127 + default: + return length + } + + case 2011: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2012 + case 't': + st = 2016 + case 'x': + length = i + 1 + st = 2022 + default: + return length + } + + case 2012: + switch byteutil.ByteToLower(b) { + case 'p': + st = 2013 + default: + return length + } + + case 2013: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2014 + default: + return length + } + + case 2014: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 2015 + default: + return length + } + + case 2016: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2017 + case 't': + st = 2019 + default: + return length + } + + case 2017: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 2018 + default: + return length + } + + case 2019: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2020 + default: + return length + } + + case 2020: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 2021 + default: + return length + } + + case 2022: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 2023 + default: + return length + } + + case 2026: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2027 + case 'c': + st = 2029 + case 'l': + length = i + 1 + st = 2037 + case 'm': + st = 2038 + case 'n': + st = 2043 + default: + return length + } + + case 2027: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 2028 + default: + return length + } + + case 2029: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 2030 + default: + return length + } + + case 2030: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2031 + default: + return length + } + + case 2031: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2032 + default: + return length + } + + case 2032: + switch byteutil.ByteToLower(b) { + case 'l': + st = 2033 + default: + return length + } + + case 2033: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2034 + default: + return length + } + + case 2034: + switch byteutil.ByteToLower(b) { + case 'g': + st = 2035 + default: + return length + } + + case 2035: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 2036 + default: + return length + } + + case 2038: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2039 + default: + return length + } + + case 2039: + switch byteutil.ByteToLower(b) { + case 's': + st = 2040 + default: + return length + } + + case 2040: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2041 + default: + return length + } + + case 2041: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 2042 + default: + return length + } + + case 2043: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2044 + default: + return length + } + + case 2044: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2045 + default: + return length + } + + case 2045: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2046 + default: + return length + } + + case 2049: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 2050 + case 'e': + st = 2051 + default: + return length + } + + case 2051: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2052 + default: + return length + } + + case 2052: + switch byteutil.ByteToLower(b) { + case 't': + st = 2053 + default: + return length + } + + case 2053: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2054 + default: + return length + } + + case 2054: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 2055 + default: + return length + } + + case 2056: + switch byteutil.ByteToLower(b) { + case 'c': + st = 2057 + case 'e': + st = 2062 + case 'p': + st = 2066 + case 'r': + st = 2068 + default: + return length + } + + case 2057: + switch byteutil.ByteToLower(b) { + case 'k': + st = 2058 + default: + return length + } + + case 2058: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2059 + default: + return length + } + + case 2059: + switch byteutil.ByteToLower(b) { + case 't': + st = 2060 + default: + return length + } + + case 2060: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2061 + default: + return length + } + + case 2062: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2063 + default: + return length + } + + case 2063: + switch byteutil.ByteToLower(b) { + case 'd': + st = 2064 + default: + return length + } + + case 2064: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 2065 + default: + return length + } + + case 2066: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2067 + default: + return length + } + + case 2068: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2069 + case 'o': + st = 2071 + default: + return length + } + + case 2069: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2070 + default: + return length + } + + case 2071: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 2072 + default: + return length + } + + case 2078: + switch byteutil.ByteToLower(b) { + case 'd': + st = 2079 + case 'k': + st = 2082 + case 'o': + st = 2085 + case 'p': + length = i + 1 + st = 2088 + case 'r': + st = 2089 + case 's': + st = 2092 + case 'u': + st = 2097 + case 'w': + st = 2100 + case 'y': + st = 2102 + default: + return length + } + + case 2079: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2080 + default: + return length + } + + case 2080: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 2081 + default: + return length + } + + case 2082: + switch byteutil.ByteToLower(b) { + case 'y': + st = 2083 + default: + return length + } + + case 2083: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 2084 + default: + return length + } + + case 2085: + switch byteutil.ByteToLower(b) { + case 'l': + st = 2086 + default: + return length + } + + case 2086: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2087 + default: + return length + } + + case 2089: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2090 + default: + return length + } + + case 2090: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 2091 + default: + return length + } + + case 2092: + switch byteutil.ByteToLower(b) { + case 'h': + st = 2093 + default: + return length + } + + case 2093: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2094 + default: + return length + } + + case 2094: + switch byteutil.ByteToLower(b) { + case 'b': + st = 2095 + default: + return length + } + + case 2095: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 2096 + default: + return length + } + + case 2097: + switch byteutil.ByteToLower(b) { + case 'r': + st = 2098 + default: + return length + } + + case 2098: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2099 + default: + return length + } + + case 2100: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 2101 + default: + return length + } + + case 2102: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2103 + default: + return length + } + + case 2104: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2105 + case 'u': + st = 2119 + default: + return length + } + + case 2105: + switch byteutil.ByteToLower(b) { + case 'd': + st = 2106 + case 'i': + st = 2111 + case 'v': + st = 2116 + default: + return length + } + + case 2106: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 2107 + case 'i': + st = 2108 + default: + return length + } + + case 2108: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2109 + default: + return length + } + + case 2109: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 2110 + default: + return length + } + + case 2111: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2112 + default: + return length + } + + case 2112: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2113 + default: + return length + } + + case 2113: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2114 + default: + return length + } + + case 2114: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 2115 + default: + return length + } + + case 2116: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2117 + default: + return length + } + + case 2117: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 2118 + default: + return length + } + + case 2119: + switch byteutil.ByteToLower(b) { + case 's': + st = 2120 + default: + return length + } + + case 2120: + switch byteutil.ByteToLower(b) { + case 't': + length = i + 1 + st = 2121 + default: + return length + } + + case 2123: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 2124 + default: + return length + } + + case 2128: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 2129 + case 'g': + length = i + 1 + st = 2130 + case 'k': + length = i + 1 + st = 2131 + case 'n': + st = 2132 + case 'o': + st = 2142 + case 's': + length = i + 1 + st = 2144 + case 'y': + length = i + 1 + st = 2145 + case 'z': + length = i + 1 + st = 2146 + default: + return length + } + + case 2132: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2133 + case 'o': + length = i + 1 + st = 2141 + default: + return length + } + + case 2133: + switch byteutil.ByteToLower(b) { + case 'v': + st = 2134 + default: + return length + } + + case 2134: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2135 + default: + return length + } + + case 2135: + switch byteutil.ByteToLower(b) { + case 'r': + st = 2136 + default: + return length + } + + case 2136: + switch byteutil.ByteToLower(b) { + case 's': + st = 2137 + default: + return length + } + + case 2137: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2138 + default: + return length + } + + case 2138: + switch byteutil.ByteToLower(b) { + case 't': + st = 2139 + default: + return length + } + + case 2139: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 2140 + default: + return length + } + + case 2142: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 2143 + default: + return length + } + + case 2147: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 2148 + case 'c': + length = i + 1 + st = 2156 + case 'e': + length = i + 1 + st = 2157 + case 'g': + length = i + 1 + st = 2178 + case 'i': + length = i + 1 + st = 2179 + case 'l': + st = 2195 + case 'n': + length = i + 1 + st = 2204 + case 'o': + st = 2205 + case 'u': + length = i + 1 + st = 2219 + default: + return length + } + + case 2148: + switch byteutil.ByteToLower(b) { + case 'c': + st = 2149 + default: + return length + } + + case 2149: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2150 + default: + return length + } + + case 2150: + switch byteutil.ByteToLower(b) { + case 't': + st = 2151 + default: + return length + } + + case 2151: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2152 + default: + return length + } + + case 2152: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2153 + default: + return length + } + + case 2153: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2154 + default: + return length + } + + case 2154: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2155 + default: + return length + } + + case 2157: + switch byteutil.ByteToLower(b) { + case 'g': + st = 2158 + case 'n': + st = 2161 + case 'r': + st = 2167 + case 't': + length = i + 1 + st = 2177 + default: + return length + } + + case 2158: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2159 + default: + return length + } + + case 2159: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2160 + default: + return length + } + + case 2161: + switch byteutil.ByteToLower(b) { + case 't': + st = 2162 + default: + return length + } + + case 2162: + switch byteutil.ByteToLower(b) { + case 'u': + st = 2163 + default: + return length + } + + case 2163: + switch byteutil.ByteToLower(b) { + case 'r': + st = 2164 + default: + return length + } + + case 2164: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2165 + default: + return length + } + + case 2165: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2166 + default: + return length + } + + case 2167: + switch byteutil.ByteToLower(b) { + case 's': + st = 2168 + default: + return length + } + + case 2168: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2169 + default: + return length + } + + case 2169: + switch byteutil.ByteToLower(b) { + case 'c': + st = 2170 + default: + return length + } + + case 2170: + switch byteutil.ByteToLower(b) { + case 'h': + st = 2171 + default: + return length + } + + case 2171: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2172 + default: + return length + } + + case 2172: + switch byteutil.ByteToLower(b) { + case 'r': + st = 2173 + default: + return length + } + + case 2173: + switch byteutil.ByteToLower(b) { + case 'u': + st = 2174 + default: + return length + } + + case 2174: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2175 + default: + return length + } + + case 2175: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 2176 + default: + return length + } + + case 2179: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2180 + case 'd': + st = 2184 + case 'l': + st = 2187 + case 's': + st = 2191 + default: + return length + } + + case 2180: + switch byteutil.ByteToLower(b) { + case 'j': + st = 2181 + default: + return length + } + + case 2181: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2182 + default: + return length + } + + case 2182: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2183 + default: + return length + } + + case 2184: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2185 + default: + return length + } + + case 2185: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 2186 + default: + return length + } + + case 2187: + switch byteutil.ByteToLower(b) { + case 'l': + st = 2188 + default: + return length + } + + case 2188: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2189 + default: + return length + } + + case 2189: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2190 + default: + return length + } + + case 2191: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2192 + default: + return length + } + + case 2192: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2193 + default: + return length + } + + case 2193: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 2194 + default: + return length + } + + case 2195: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2196 + default: + return length + } + + case 2196: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2197 + default: + return length + } + + case 2197: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2198 + default: + return length + } + + case 2198: + switch byteutil.ByteToLower(b) { + case 'd': + st = 2199 + default: + return length + } + + case 2199: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2200 + default: + return length + } + + case 2200: + switch byteutil.ByteToLower(b) { + case 'r': + st = 2201 + default: + return length + } + + case 2201: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2202 + default: + return length + } + + case 2202: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 2203 + default: + return length + } + + case 2205: + switch byteutil.ByteToLower(b) { + case 'd': + st = 2206 + case 't': + st = 2209 + case 'y': + st = 2215 + default: + return length + } + + case 2206: + switch byteutil.ByteToLower(b) { + case 'k': + st = 2207 + default: + return length + } + + case 2207: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 2208 + default: + return length + } + + case 2209: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 2210 + case 'i': + st = 2211 + case 'o': + length = i + 1 + st = 2214 + default: + return length + } + + case 2211: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2212 + default: + return length + } + + case 2212: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 2213 + default: + return length + } + + case 2215: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2216 + default: + return length + } + + case 2216: + switch byteutil.ByteToLower(b) { + case 'g': + st = 2217 + default: + return length + } + + case 2217: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 2218 + default: + return length + } + + case 2220: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2221 + case 'e': + st = 2233 + case 'f': + length = i + 1 + st = 2249 + case 'h': + st = 2250 + case 'i': + st = 2256 + case 'm': + st = 2271 + case 'o': + st = 2273 + case 's': + length = i + 1 + st = 2279 + case 't': + st = 2280 + default: + return length + } + + case 2221: + switch byteutil.ByteToLower(b) { + case 'l': + st = 2222 + case 'n': + st = 2228 + case 't': + st = 2230 + default: + return length + } + + case 2222: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2223 + case 't': + st = 2225 + default: + return length + } + + case 2223: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2224 + default: + return length + } + + case 2225: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2226 + default: + return length + } + + case 2226: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 2227 + default: + return length + } + + case 2228: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 2229 + default: + return length + } + + case 2230: + switch byteutil.ByteToLower(b) { + case 'c': + st = 2231 + default: + return length + } + + case 2231: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 2232 + default: + return length + } + + case 2233: + switch byteutil.ByteToLower(b) { + case 'b': + st = 2234 + case 'd': + length = i + 1 + st = 2242 + case 'i': + st = 2247 + default: + return length + } + + case 2234: + switch byteutil.ByteToLower(b) { + case 'c': + st = 2235 + case 's': + st = 2238 + default: + return length + } + + case 2235: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2236 + default: + return length + } + + case 2236: + switch byteutil.ByteToLower(b) { + case 'm': + length = i + 1 + st = 2237 + default: + return length + } + + case 2238: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2239 + default: + return length + } + + case 2239: + switch byteutil.ByteToLower(b) { + case 't': + st = 2240 + default: + return length + } + + case 2240: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 2241 + default: + return length + } + + case 2242: + switch byteutil.ByteToLower(b) { + case 'd': + st = 2243 + default: + return length + } + + case 2243: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2244 + default: + return length + } + + case 2244: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2245 + default: + return length + } + + case 2245: + switch byteutil.ByteToLower(b) { + case 'g': + length = i + 1 + st = 2246 + default: + return length + } + + case 2247: + switch byteutil.ByteToLower(b) { + case 'r': + length = i + 1 + st = 2248 + default: + return length + } + + case 2250: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2251 + default: + return length + } + + case 2251: + switch byteutil.ByteToLower(b) { + case 's': + st = 2252 + default: + return length + } + + case 2252: + switch byteutil.ByteToLower(b) { + case 'w': + st = 2253 + default: + return length + } + + case 2253: + switch byteutil.ByteToLower(b) { + case 'h': + st = 2254 + default: + return length + } + + case 2254: + switch byteutil.ByteToLower(b) { + case 'o': + length = i + 1 + st = 2255 + default: + return length + } + + case 2256: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2257 + case 'k': + st = 2259 + case 'l': + st = 2261 + case 'n': + length = i + 1 + st = 2270 + default: + return length + } + + case 2257: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 2258 + default: + return length + } + + case 2259: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 2260 + default: + return length + } + + case 2261: + switch byteutil.ByteToLower(b) { + case 'l': + st = 2262 + default: + return length + } + + case 2262: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2263 + default: + return length + } + + case 2263: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2264 + default: + return length + } + + case 2264: + switch byteutil.ByteToLower(b) { + case 'm': + st = 2265 + default: + return length + } + + case 2265: + switch byteutil.ByteToLower(b) { + case 'h': + st = 2266 + default: + return length + } + + case 2266: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2267 + default: + return length + } + + case 2267: + switch byteutil.ByteToLower(b) { + case 'l': + st = 2268 + default: + return length + } + + case 2268: + switch byteutil.ByteToLower(b) { + case 'l': + length = i + 1 + st = 2269 + default: + return length + } + + case 2271: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 2272 + default: + return length + } + + case 2273: + switch byteutil.ByteToLower(b) { + case 'r': + st = 2274 + default: + return length + } + + case 2274: + switch byteutil.ByteToLower(b) { + case 'k': + length = i + 1 + st = 2275 + case 'l': + st = 2277 + default: + return length + } + + case 2275: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2276 + default: + return length + } + + case 2277: + switch byteutil.ByteToLower(b) { + case 'd': + length = i + 1 + st = 2278 + default: + return length + } + + case 2280: + switch byteutil.ByteToLower(b) { + case 'c': + length = i + 1 + st = 2281 + case 'f': + length = i + 1 + st = 2282 + default: + return length + } + + case 2283: + switch byteutil.ByteToLower(b) { + case 'b': + st = 2284 + case 'e': + st = 2287 + case 'i': + st = 2291 + case 'x': + st = 2293 + case 'y': + st = 2295 + case 'n': + st = 2860 + default: + return length + } + + case 2284: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2285 + default: + return length + } + + case 2285: + switch byteutil.ByteToLower(b) { + case 'x': + length = i + 1 + st = 2286 + default: + return length + } + + case 2287: + switch byteutil.ByteToLower(b) { + case 'r': + st = 2288 + default: + return length + } + + case 2288: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2289 + default: + return length + } + + case 2289: + switch byteutil.ByteToLower(b) { + case 'x': + length = i + 1 + st = 2290 + default: + return length + } + + case 2291: + switch byteutil.ByteToLower(b) { + case 'n': + length = i + 1 + st = 2292 + default: + return length + } + + case 2293: + switch byteutil.ByteToLower(b) { + case 'x': + length = i + 1 + st = 2294 + default: + return length + } + + case 2295: + switch byteutil.ByteToLower(b) { + case 'z': + length = i + 1 + st = 2296 + default: + return length + } + + case 2297: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2298 + case 'e': + length = i + 1 + st = 2307 + case 'o': + st = 2308 + case 't': + length = i + 1 + st = 2329 + default: + return length + } + + case 2298: + switch byteutil.ByteToLower(b) { + case 'c': + st = 2299 + case 'n': + st = 2303 + default: + return length + } + + case 2299: + switch byteutil.ByteToLower(b) { + case 'h': + st = 2300 + default: + return length + } + + case 2300: + switch byteutil.ByteToLower(b) { + case 't': + st = 2301 + default: + return length + } + + case 2301: + switch byteutil.ByteToLower(b) { + case 's': + length = i + 1 + st = 2302 + default: + return length + } + + case 2303: + switch byteutil.ByteToLower(b) { + case 'd': + st = 2304 + default: + return length + } + + case 2304: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2305 + default: + return length + } + + case 2305: + switch byteutil.ByteToLower(b) { + case 'x': + length = i + 1 + st = 2306 + default: + return length + } + + case 2308: + switch byteutil.ByteToLower(b) { + case 'd': + st = 2309 + case 'g': + st = 2316 + case 'k': + st = 2318 + case 'u': + st = 2324 + default: + return length + } + + case 2309: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2310 + default: + return length + } + + case 2310: + switch byteutil.ByteToLower(b) { + case 'b': + st = 2311 + default: + return length + } + + case 2311: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2312 + default: + return length + } + + case 2312: + switch byteutil.ByteToLower(b) { + case 's': + st = 2313 + default: + return length + } + + case 2313: + switch byteutil.ByteToLower(b) { + case 'h': + st = 2314 + default: + return length + } + + case 2314: + switch byteutil.ByteToLower(b) { + case 'i': + length = i + 1 + st = 2315 + default: + return length + } + + case 2316: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 2317 + default: + return length + } + + case 2318: + switch byteutil.ByteToLower(b) { + case 'o': + st = 2319 + default: + return length + } + + case 2319: + switch byteutil.ByteToLower(b) { + case 'h': + st = 2320 + default: + return length + } + + case 2320: + switch byteutil.ByteToLower(b) { + case 'a': + st = 2321 + default: + return length + } + + case 2321: + switch byteutil.ByteToLower(b) { + case 'm': + st = 2322 + default: + return length + } + + case 2322: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 2323 + default: + return length + } + + case 2324: + switch byteutil.ByteToLower(b) { + case 't': + st = 2325 + default: + return length + } + + case 2325: + switch byteutil.ByteToLower(b) { + case 'u': + st = 2326 + default: + return length + } + + case 2326: + switch byteutil.ByteToLower(b) { + case 'b': + st = 2327 + default: + return length + } + + case 2327: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 2328 + default: + return length + } + + case 2330: + switch byteutil.ByteToLower(b) { + case 'a': + length = i + 1 + st = 2331 + case 'i': + st = 2332 + case 'k': + st = 2334 + case 'm': + length = i + 1 + st = 2337 + case 'o': + st = 2338 + case 'u': + st = 2341 + case 'w': + length = i + 1 + st = 2347 + default: + return length + } + + case 2332: + switch byteutil.ByteToLower(b) { + case 'p': + length = i + 1 + st = 2333 + default: + return length + } + + case 2334: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2335 + default: + return length + } + + case 2335: + switch byteutil.ByteToLower(b) { + case 'y': + length = i + 1 + st = 2336 + default: + return length + } + + case 2338: + switch byteutil.ByteToLower(b) { + case 'n': + st = 2339 + default: + return length + } + + case 2339: + switch byteutil.ByteToLower(b) { + case 'e': + length = i + 1 + st = 2340 + default: + return length + } + + case 2341: + switch byteutil.ByteToLower(b) { + case 'e': + st = 2342 + default: + return length + } + + case 2342: + switch byteutil.ByteToLower(b) { + case 'r': + st = 2343 + default: + return length + } + + case 2343: + switch byteutil.ByteToLower(b) { + case 'i': + st = 2344 + default: + return length + } + + case 2344: + switch byteutil.ByteToLower(b) { + case 'c': + st = 2345 + default: + return length + } + + case 2345: + switch byteutil.ByteToLower(b) { + case 'h': + length = i + 1 + st = 2346 + default: + return length + } + + case 2348: + switch b { + case '.': + length = i + 1 + st = 2349 + default: + return length + } + + case 2350: + switch b { + case '.': + length = i + 1 + st = 2351 + case '0': + st = 2368 + case '1': + st = 2370 + case '2': + st = 2372 + case '3': + st = 2374 + case '4': + st = 2376 + case '5': + st = 2378 + case '6': + st = 2380 + case '7': + st = 2382 + case '8': + st = 2384 + case '9': + st = 2386 + default: + return length + } + + case 2352: + switch b { + case '.': + length = i + 1 + st = 2353 + case '0': + st = 2388 + case '1': + st = 2390 + case '2': + st = 2392 + case '3': + st = 2394 + case '4': + st = 2396 + case '5': + st = 2398 + case '6': + st = 2400 + case '7': + st = 2402 + case '8': + st = 2404 + case '9': + st = 2406 + default: + return length + } + + case 2354: + switch b { + case '.': + length = i + 1 + st = 2355 + case '0': + st = 2408 + case '1': + st = 2410 + case '2': + st = 2412 + case '3': + st = 2414 + case '4': + st = 2416 + case '5': + st = 2418 + case '6': + st = 2420 + case '7': + st = 2422 + case '8': + st = 2424 + case '9': + st = 2426 + default: + return length + } + + case 2356: + switch b { + case '.': + length = i + 1 + st = 2357 + case '0': + st = 2428 + case '1': + st = 2430 + case '2': + st = 2432 + case '3': + st = 2434 + case '4': + st = 2436 + case '5': + st = 2438 + case '6': + st = 2440 + case '7': + st = 2442 + case '8': + st = 2444 + case '9': + st = 2446 + default: + return length + } + + case 2358: + switch b { + case '.': + length = i + 1 + st = 2359 + case '0': + st = 2448 + case '1': + st = 2450 + case '2': + st = 2452 + case '3': + st = 2454 + case '4': + st = 2456 + case '5': + st = 2458 + case '6': + st = 2460 + case '7': + st = 2462 + case '8': + st = 2464 + case '9': + st = 2466 + default: + return length + } + + case 2360: + switch b { + case '.': + length = i + 1 + st = 2361 + case '0': + st = 2468 + case '1': + st = 2470 + case '2': + st = 2472 + case '3': + st = 2474 + case '4': + st = 2476 + case '5': + st = 2478 + case '6': + st = 2480 + case '7': + st = 2482 + case '8': + st = 2484 + case '9': + st = 2486 + default: + return length + } + + case 2362: + switch b { + case '.': + length = i + 1 + st = 2363 + case '0': + st = 2488 + case '1': + st = 2490 + case '2': + st = 2492 + case '3': + st = 2494 + case '4': + st = 2496 + case '5': + st = 2498 + case '6': + st = 2500 + case '7': + st = 2502 + case '8': + st = 2504 + case '9': + st = 2506 + default: + return length + } + + case 2364: + switch b { + case '.': + length = i + 1 + st = 2365 + case '0': + st = 2508 + case '1': + st = 2510 + case '2': + st = 2512 + case '3': + st = 2514 + case '4': + st = 2516 + case '5': + st = 2518 + case '6': + st = 2520 + case '7': + st = 2522 + case '8': + st = 2524 + case '9': + st = 2526 + default: + return length + } + + case 2366: + switch b { + case '.': + length = i + 1 + st = 2367 + case '0': + st = 2528 + case '1': + st = 2530 + case '2': + st = 2532 + case '3': + st = 2534 + case '4': + st = 2536 + case '5': + st = 2538 + case '6': + st = 2540 + case '7': + st = 2542 + case '8': + st = 2544 + case '9': + st = 2546 + default: + return length + } + + case 2368: + switch b { + case '.': + length = i + 1 + st = 2369 + case '0': + st = 2548 + case '1': + st = 2550 + case '2': + st = 2552 + case '3': + st = 2554 + case '4': + st = 2556 + case '5': + st = 2558 + case '6': + st = 2560 + case '7': + st = 2562 + case '8': + st = 2564 + case '9': + st = 2566 + default: + return length + } + + case 2370: + switch b { + case '.': + length = i + 1 + st = 2371 + case '0': + st = 2568 + case '1': + st = 2570 + case '2': + st = 2572 + case '3': + st = 2574 + case '4': + st = 2576 + case '5': + st = 2578 + case '6': + st = 2580 + case '7': + st = 2582 + case '8': + st = 2584 + case '9': + st = 2586 + default: + return length + } + + case 2372: + switch b { + case '.': + length = i + 1 + st = 2373 + case '0': + st = 2588 + case '1': + st = 2590 + case '2': + st = 2592 + case '3': + st = 2594 + case '4': + st = 2596 + case '5': + st = 2598 + case '6': + st = 2600 + case '7': + st = 2602 + case '8': + st = 2604 + case '9': + st = 2606 + default: + return length + } + + case 2374: + switch b { + case '.': + length = i + 1 + st = 2375 + case '0': + st = 2608 + case '1': + st = 2610 + case '2': + st = 2612 + case '3': + st = 2614 + case '4': + st = 2616 + case '5': + st = 2618 + case '6': + st = 2620 + case '7': + st = 2622 + case '8': + st = 2624 + case '9': + st = 2626 + default: + return length + } + + case 2376: + switch b { + case '.': + length = i + 1 + st = 2377 + case '0': + st = 2628 + case '1': + st = 2630 + case '2': + st = 2632 + case '3': + st = 2634 + case '4': + st = 2636 + case '5': + st = 2638 + case '6': + st = 2640 + case '7': + st = 2642 + case '8': + st = 2644 + case '9': + st = 2646 + default: + return length + } + + case 2378: + switch b { + case '.': + length = i + 1 + st = 2379 + case '0': + st = 2648 + case '1': + st = 2650 + case '2': + st = 2652 + case '3': + st = 2654 + case '4': + st = 2656 + case '5': + st = 2658 + case '6': + st = 2660 + case '7': + st = 2662 + case '8': + st = 2664 + case '9': + st = 2666 + default: + return length + } + + case 2380: + switch b { + case '.': + length = i + 1 + st = 2381 + case '0': + st = 2668 + case '1': + st = 2670 + case '2': + st = 2672 + case '3': + st = 2674 + case '4': + st = 2676 + case '5': + st = 2678 + case '6': + st = 2680 + case '7': + st = 2682 + case '8': + st = 2684 + case '9': + st = 2686 + default: + return length + } + + case 2382: + switch b { + case '.': + length = i + 1 + st = 2383 + case '0': + st = 2688 + case '1': + st = 2690 + case '2': + st = 2692 + case '3': + st = 2694 + case '4': + st = 2696 + case '5': + st = 2698 + case '6': + st = 2700 + case '7': + st = 2702 + case '8': + st = 2704 + case '9': + st = 2706 + default: + return length + } + + case 2384: + switch b { + case '.': + length = i + 1 + st = 2385 + case '0': + st = 2708 + case '1': + st = 2710 + case '2': + st = 2712 + case '3': + st = 2714 + case '4': + st = 2716 + case '5': + st = 2718 + case '6': + st = 2720 + case '7': + st = 2722 + case '8': + st = 2724 + case '9': + st = 2726 + default: + return length + } + + case 2386: + switch b { + case '.': + length = i + 1 + st = 2387 + case '0': + st = 2728 + case '1': + st = 2730 + case '2': + st = 2732 + case '3': + st = 2734 + case '4': + st = 2736 + case '5': + st = 2738 + case '6': + st = 2740 + case '7': + st = 2742 + case '8': + st = 2744 + case '9': + st = 2746 + default: + return length + } + + case 2388: + switch b { + case '.': + length = i + 1 + st = 2389 + case '0': + st = 2748 + case '1': + st = 2750 + case '2': + st = 2752 + case '3': + st = 2754 + case '4': + st = 2756 + case '5': + st = 2758 + case '6': + st = 2760 + case '7': + st = 2762 + case '8': + st = 2764 + case '9': + st = 2766 + default: + return length + } + + case 2390: + switch b { + case '.': + length = i + 1 + st = 2391 + case '0': + st = 2768 + case '1': + st = 2770 + case '2': + st = 2772 + case '3': + st = 2774 + case '4': + st = 2776 + case '5': + st = 2778 + case '6': + st = 2780 + case '7': + st = 2782 + case '8': + st = 2784 + case '9': + st = 2786 + default: + return length + } + + case 2392: + switch b { + case '.': + length = i + 1 + st = 2393 + case '0': + st = 2788 + case '1': + st = 2790 + case '2': + st = 2792 + case '3': + st = 2794 + case '4': + st = 2796 + case '5': + st = 2798 + case '6': + st = 2800 + case '7': + st = 2802 + case '8': + st = 2804 + case '9': + st = 2806 + default: + return length + } + + case 2394: + switch b { + case '.': + length = i + 1 + st = 2395 + case '0': + st = 2808 + case '1': + st = 2810 + case '2': + st = 2812 + case '3': + st = 2814 + case '4': + st = 2816 + case '5': + st = 2818 + case '6': + st = 2820 + case '7': + st = 2822 + case '8': + st = 2824 + case '9': + st = 2826 + default: + return length + } + + case 2396: + switch b { + case '.': + length = i + 1 + st = 2397 + case '0': + st = 2828 + case '1': + st = 2830 + case '2': + st = 2832 + case '3': + st = 2834 + case '4': + st = 2836 + case '5': + st = 2838 + case '6': + st = 2840 + case '7': + st = 2842 + case '8': + st = 2844 + case '9': + st = 2846 + default: + return length + } + + case 2398: + switch b { + case '.': + length = i + 1 + st = 2399 + case '0': + st = 2848 + case '1': + st = 2850 + case '2': + st = 2852 + case '3': + st = 2854 + case '4': + st = 2856 + case '5': + st = 2858 + default: + return length + } + + case 2400: + switch b { + case '.': + length = i + 1 + st = 2401 + default: + return length + } + + case 2402: + switch b { + case '.': + length = i + 1 + st = 2403 + default: + return length + } + + case 2404: + switch b { + case '.': + length = i + 1 + st = 2405 + default: + return length + } + + case 2406: + switch b { + case '.': + length = i + 1 + st = 2407 + default: + return length + } + + case 2408: + switch b { + case '.': + length = i + 1 + st = 2409 + default: + return length + } + + case 2410: + switch b { + case '.': + length = i + 1 + st = 2411 + default: + return length + } + + case 2412: + switch b { + case '.': + length = i + 1 + st = 2413 + default: + return length + } + + case 2414: + switch b { + case '.': + length = i + 1 + st = 2415 + default: + return length + } + + case 2416: + switch b { + case '.': + length = i + 1 + st = 2417 + default: + return length + } + + case 2418: + switch b { + case '.': + length = i + 1 + st = 2419 + default: + return length + } + + case 2420: + switch b { + case '.': + length = i + 1 + st = 2421 + default: + return length + } + + case 2422: + switch b { + case '.': + length = i + 1 + st = 2423 + default: + return length + } + + case 2424: + switch b { + case '.': + length = i + 1 + st = 2425 + default: + return length + } + + case 2426: + switch b { + case '.': + length = i + 1 + st = 2427 + default: + return length + } + + case 2428: + switch b { + case '.': + length = i + 1 + st = 2429 + default: + return length + } + + case 2430: + switch b { + case '.': + length = i + 1 + st = 2431 + default: + return length + } + + case 2432: + switch b { + case '.': + length = i + 1 + st = 2433 + default: + return length + } + + case 2434: + switch b { + case '.': + length = i + 1 + st = 2435 + default: + return length + } + + case 2436: + switch b { + case '.': + length = i + 1 + st = 2437 + default: + return length + } + + case 2438: + switch b { + case '.': + length = i + 1 + st = 2439 + default: + return length + } + + case 2440: + switch b { + case '.': + length = i + 1 + st = 2441 + default: + return length + } + + case 2442: + switch b { + case '.': + length = i + 1 + st = 2443 + default: + return length + } + + case 2444: + switch b { + case '.': + length = i + 1 + st = 2445 + default: + return length + } + + case 2446: + switch b { + case '.': + length = i + 1 + st = 2447 + default: + return length + } + + case 2448: + switch b { + case '.': + length = i + 1 + st = 2449 + default: + return length + } + + case 2450: + switch b { + case '.': + length = i + 1 + st = 2451 + default: + return length + } + + case 2452: + switch b { + case '.': + length = i + 1 + st = 2453 + default: + return length + } + + case 2454: + switch b { + case '.': + length = i + 1 + st = 2455 + default: + return length + } + + case 2456: + switch b { + case '.': + length = i + 1 + st = 2457 + default: + return length + } + + case 2458: + switch b { + case '.': + length = i + 1 + st = 2459 + default: + return length + } + + case 2460: + switch b { + case '.': + length = i + 1 + st = 2461 + default: + return length + } + + case 2462: + switch b { + case '.': + length = i + 1 + st = 2463 + default: + return length + } + + case 2464: + switch b { + case '.': + length = i + 1 + st = 2465 + default: + return length + } + + case 2466: + switch b { + case '.': + length = i + 1 + st = 2467 + default: + return length + } + + case 2468: + switch b { + case '.': + length = i + 1 + st = 2469 + default: + return length + } + + case 2470: + switch b { + case '.': + length = i + 1 + st = 2471 + default: + return length + } + + case 2472: + switch b { + case '.': + length = i + 1 + st = 2473 + default: + return length + } + + case 2474: + switch b { + case '.': + length = i + 1 + st = 2475 + default: + return length + } + + case 2476: + switch b { + case '.': + length = i + 1 + st = 2477 + default: + return length + } + + case 2478: + switch b { + case '.': + length = i + 1 + st = 2479 + default: + return length + } + + case 2480: + switch b { + case '.': + length = i + 1 + st = 2481 + default: + return length + } + + case 2482: + switch b { + case '.': + length = i + 1 + st = 2483 + default: + return length + } + + case 2484: + switch b { + case '.': + length = i + 1 + st = 2485 + default: + return length + } + + case 2486: + switch b { + case '.': + length = i + 1 + st = 2487 + default: + return length + } + + case 2488: + switch b { + case '.': + length = i + 1 + st = 2489 + default: + return length + } + + case 2490: + switch b { + case '.': + length = i + 1 + st = 2491 + default: + return length + } + + case 2492: + switch b { + case '.': + length = i + 1 + st = 2493 + default: + return length + } + + case 2494: + switch b { + case '.': + length = i + 1 + st = 2495 + default: + return length + } + + case 2496: + switch b { + case '.': + length = i + 1 + st = 2497 + default: + return length + } + + case 2498: + switch b { + case '.': + length = i + 1 + st = 2499 + default: + return length + } + + case 2500: + switch b { + case '.': + length = i + 1 + st = 2501 + default: + return length + } + + case 2502: + switch b { + case '.': + length = i + 1 + st = 2503 + default: + return length + } + + case 2504: + switch b { + case '.': + length = i + 1 + st = 2505 + default: + return length + } + + case 2506: + switch b { + case '.': + length = i + 1 + st = 2507 + default: + return length + } + + case 2508: + switch b { + case '.': + length = i + 1 + st = 2509 + default: + return length + } + + case 2510: + switch b { + case '.': + length = i + 1 + st = 2511 + default: + return length + } + + case 2512: + switch b { + case '.': + length = i + 1 + st = 2513 + default: + return length + } + + case 2514: + switch b { + case '.': + length = i + 1 + st = 2515 + default: + return length + } + + case 2516: + switch b { + case '.': + length = i + 1 + st = 2517 + default: + return length + } + + case 2518: + switch b { + case '.': + length = i + 1 + st = 2519 + default: + return length + } + + case 2520: + switch b { + case '.': + length = i + 1 + st = 2521 + default: + return length + } + + case 2522: + switch b { + case '.': + length = i + 1 + st = 2523 + default: + return length + } + + case 2524: + switch b { + case '.': + length = i + 1 + st = 2525 + default: + return length + } + + case 2526: + switch b { + case '.': + length = i + 1 + st = 2527 + default: + return length + } + + case 2528: + switch b { + case '.': + length = i + 1 + st = 2529 + default: + return length + } + + case 2530: + switch b { + case '.': + length = i + 1 + st = 2531 + default: + return length + } + + case 2532: + switch b { + case '.': + length = i + 1 + st = 2533 + default: + return length + } + + case 2534: + switch b { + case '.': + length = i + 1 + st = 2535 + default: + return length + } + + case 2536: + switch b { + case '.': + length = i + 1 + st = 2537 + default: + return length + } + + case 2538: + switch b { + case '.': + length = i + 1 + st = 2539 + default: + return length + } + + case 2540: + switch b { + case '.': + length = i + 1 + st = 2541 + default: + return length + } + + case 2542: + switch b { + case '.': + length = i + 1 + st = 2543 + default: + return length + } + + case 2544: + switch b { + case '.': + length = i + 1 + st = 2545 + default: + return length + } + + case 2546: + switch b { + case '.': + length = i + 1 + st = 2547 + default: + return length + } + + case 2548: + switch b { + case '.': + length = i + 1 + st = 2549 + default: + return length + } + + case 2550: + switch b { + case '.': + length = i + 1 + st = 2551 + default: + return length + } + + case 2552: + switch b { + case '.': + length = i + 1 + st = 2553 + default: + return length + } + + case 2554: + switch b { + case '.': + length = i + 1 + st = 2555 + default: + return length + } + + case 2556: + switch b { + case '.': + length = i + 1 + st = 2557 + default: + return length + } + + case 2558: + switch b { + case '.': + length = i + 1 + st = 2559 + default: + return length + } + + case 2560: + switch b { + case '.': + length = i + 1 + st = 2561 + default: + return length + } + + case 2562: + switch b { + case '.': + length = i + 1 + st = 2563 + default: + return length + } + + case 2564: + switch b { + case '.': + length = i + 1 + st = 2565 + default: + return length + } + + case 2566: + switch b { + case '.': + length = i + 1 + st = 2567 + default: + return length + } + + case 2568: + switch b { + case '.': + length = i + 1 + st = 2569 + default: + return length + } + + case 2570: + switch b { + case '.': + length = i + 1 + st = 2571 + default: + return length + } + + case 2572: + switch b { + case '.': + length = i + 1 + st = 2573 + default: + return length + } + + case 2574: + switch b { + case '.': + length = i + 1 + st = 2575 + default: + return length + } + + case 2576: + switch b { + case '.': + length = i + 1 + st = 2577 + default: + return length + } + + case 2578: + switch b { + case '.': + length = i + 1 + st = 2579 + default: + return length + } + + case 2580: + switch b { + case '.': + length = i + 1 + st = 2581 + default: + return length + } + + case 2582: + switch b { + case '.': + length = i + 1 + st = 2583 + default: + return length + } + + case 2584: + switch b { + case '.': + length = i + 1 + st = 2585 + default: + return length + } + + case 2586: + switch b { + case '.': + length = i + 1 + st = 2587 + default: + return length + } + + case 2588: + switch b { + case '.': + length = i + 1 + st = 2589 + default: + return length + } + + case 2590: + switch b { + case '.': + length = i + 1 + st = 2591 + default: + return length + } + + case 2592: + switch b { + case '.': + length = i + 1 + st = 2593 + default: + return length + } + + case 2594: + switch b { + case '.': + length = i + 1 + st = 2595 + default: + return length + } + + case 2596: + switch b { + case '.': + length = i + 1 + st = 2597 + default: + return length + } + + case 2598: + switch b { + case '.': + length = i + 1 + st = 2599 + default: + return length + } + + case 2600: + switch b { + case '.': + length = i + 1 + st = 2601 + default: + return length + } + + case 2602: + switch b { + case '.': + length = i + 1 + st = 2603 + default: + return length + } + + case 2604: + switch b { + case '.': + length = i + 1 + st = 2605 + default: + return length + } + + case 2606: + switch b { + case '.': + length = i + 1 + st = 2607 + default: + return length + } + + case 2608: + switch b { + case '.': + length = i + 1 + st = 2609 + default: + return length + } + + case 2610: + switch b { + case '.': + length = i + 1 + st = 2611 + default: + return length + } + + case 2612: + switch b { + case '.': + length = i + 1 + st = 2613 + default: + return length + } + + case 2614: + switch b { + case '.': + length = i + 1 + st = 2615 + default: + return length + } + + case 2616: + switch b { + case '.': + length = i + 1 + st = 2617 + default: + return length + } + + case 2618: + switch b { + case '.': + length = i + 1 + st = 2619 + default: + return length + } + + case 2620: + switch b { + case '.': + length = i + 1 + st = 2621 + default: + return length + } + + case 2622: + switch b { + case '.': + length = i + 1 + st = 2623 + default: + return length + } + + case 2624: + switch b { + case '.': + length = i + 1 + st = 2625 + default: + return length + } + + case 2626: + switch b { + case '.': + length = i + 1 + st = 2627 + default: + return length + } + + case 2628: + switch b { + case '.': + length = i + 1 + st = 2629 + default: + return length + } + + case 2630: + switch b { + case '.': + length = i + 1 + st = 2631 + default: + return length + } + + case 2632: + switch b { + case '.': + length = i + 1 + st = 2633 + default: + return length + } + + case 2634: + switch b { + case '.': + length = i + 1 + st = 2635 + default: + return length + } + + case 2636: + switch b { + case '.': + length = i + 1 + st = 2637 + default: + return length + } + + case 2638: + switch b { + case '.': + length = i + 1 + st = 2639 + default: + return length + } + + case 2640: + switch b { + case '.': + length = i + 1 + st = 2641 + default: + return length + } + + case 2642: + switch b { + case '.': + length = i + 1 + st = 2643 + default: + return length + } + + case 2644: + switch b { + case '.': + length = i + 1 + st = 2645 + default: + return length + } + + case 2646: + switch b { + case '.': + length = i + 1 + st = 2647 + default: + return length + } + + case 2648: + switch b { + case '.': + length = i + 1 + st = 2649 + default: + return length + } + + case 2650: + switch b { + case '.': + length = i + 1 + st = 2651 + default: + return length + } + + case 2652: + switch b { + case '.': + length = i + 1 + st = 2653 + default: + return length + } + + case 2654: + switch b { + case '.': + length = i + 1 + st = 2655 + default: + return length + } + + case 2656: + switch b { + case '.': + length = i + 1 + st = 2657 + default: + return length + } + + case 2658: + switch b { + case '.': + length = i + 1 + st = 2659 + default: + return length + } + + case 2660: + switch b { + case '.': + length = i + 1 + st = 2661 + default: + return length + } + + case 2662: + switch b { + case '.': + length = i + 1 + st = 2663 + default: + return length + } + + case 2664: + switch b { + case '.': + length = i + 1 + st = 2665 + default: + return length + } + + case 2666: + switch b { + case '.': + length = i + 1 + st = 2667 + default: + return length + } + + case 2668: + switch b { + case '.': + length = i + 1 + st = 2669 + default: + return length + } + + case 2670: + switch b { + case '.': + length = i + 1 + st = 2671 + default: + return length + } + + case 2672: + switch b { + case '.': + length = i + 1 + st = 2673 + default: + return length + } + + case 2674: + switch b { + case '.': + length = i + 1 + st = 2675 + default: + return length + } + + case 2676: + switch b { + case '.': + length = i + 1 + st = 2677 + default: + return length + } + + case 2678: + switch b { + case '.': + length = i + 1 + st = 2679 + default: + return length + } + + case 2680: + switch b { + case '.': + length = i + 1 + st = 2681 + default: + return length + } + + case 2682: + switch b { + case '.': + length = i + 1 + st = 2683 + default: + return length + } + + case 2684: + switch b { + case '.': + length = i + 1 + st = 2685 + default: + return length + } + + case 2686: + switch b { + case '.': + length = i + 1 + st = 2687 + default: + return length + } + + case 2688: + switch b { + case '.': + length = i + 1 + st = 2689 + default: + return length + } + + case 2690: + switch b { + case '.': + length = i + 1 + st = 2691 + default: + return length + } + + case 2692: + switch b { + case '.': + length = i + 1 + st = 2693 + default: + return length + } + + case 2694: + switch b { + case '.': + length = i + 1 + st = 2695 + default: + return length + } + + case 2696: + switch b { + case '.': + length = i + 1 + st = 2697 + default: + return length + } + + case 2698: + switch b { + case '.': + length = i + 1 + st = 2699 + default: + return length + } + + case 2700: + switch b { + case '.': + length = i + 1 + st = 2701 + default: + return length + } + + case 2702: + switch b { + case '.': + length = i + 1 + st = 2703 + default: + return length + } + + case 2704: + switch b { + case '.': + length = i + 1 + st = 2705 + default: + return length + } + + case 2706: + switch b { + case '.': + length = i + 1 + st = 2707 + default: + return length + } + + case 2708: + switch b { + case '.': + length = i + 1 + st = 2709 + default: + return length + } + + case 2710: + switch b { + case '.': + length = i + 1 + st = 2711 + default: + return length + } + + case 2712: + switch b { + case '.': + length = i + 1 + st = 2713 + default: + return length + } + + case 2714: + switch b { + case '.': + length = i + 1 + st = 2715 + default: + return length + } + + case 2716: + switch b { + case '.': + length = i + 1 + st = 2717 + default: + return length + } + + case 2718: + switch b { + case '.': + length = i + 1 + st = 2719 + default: + return length + } + + case 2720: + switch b { + case '.': + length = i + 1 + st = 2721 + default: + return length + } + + case 2722: + switch b { + case '.': + length = i + 1 + st = 2723 + default: + return length + } + + case 2724: + switch b { + case '.': + length = i + 1 + st = 2725 + default: + return length + } + + case 2726: + switch b { + case '.': + length = i + 1 + st = 2727 + default: + return length + } + + case 2728: + switch b { + case '.': + length = i + 1 + st = 2729 + default: + return length + } + + case 2730: + switch b { + case '.': + length = i + 1 + st = 2731 + default: + return length + } + + case 2732: + switch b { + case '.': + length = i + 1 + st = 2733 + default: + return length + } + + case 2734: + switch b { + case '.': + length = i + 1 + st = 2735 + default: + return length + } + + case 2736: + switch b { + case '.': + length = i + 1 + st = 2737 + default: + return length + } + + case 2738: + switch b { + case '.': + length = i + 1 + st = 2739 + default: + return length + } + + case 2740: + switch b { + case '.': + length = i + 1 + st = 2741 + default: + return length + } + + case 2742: + switch b { + case '.': + length = i + 1 + st = 2743 + default: + return length + } + + case 2744: + switch b { + case '.': + length = i + 1 + st = 2745 + default: + return length + } + + case 2746: + switch b { + case '.': + length = i + 1 + st = 2747 + default: + return length + } + + case 2748: + switch b { + case '.': + length = i + 1 + st = 2749 + default: + return length + } + + case 2750: + switch b { + case '.': + length = i + 1 + st = 2751 + default: + return length + } + + case 2752: + switch b { + case '.': + length = i + 1 + st = 2753 + default: + return length + } + + case 2754: + switch b { + case '.': + length = i + 1 + st = 2755 + default: + return length + } + + case 2756: + switch b { + case '.': + length = i + 1 + st = 2757 + default: + return length + } + + case 2758: + switch b { + case '.': + length = i + 1 + st = 2759 + default: + return length + } + + case 2760: + switch b { + case '.': + length = i + 1 + st = 2761 + default: + return length + } + + case 2762: + switch b { + case '.': + length = i + 1 + st = 2763 + default: + return length + } + + case 2764: + switch b { + case '.': + length = i + 1 + st = 2765 + default: + return length + } + + case 2766: + switch b { + case '.': + length = i + 1 + st = 2767 + default: + return length + } + + case 2768: + switch b { + case '.': + length = i + 1 + st = 2769 + default: + return length + } + + case 2770: + switch b { + case '.': + length = i + 1 + st = 2771 + default: + return length + } + + case 2772: + switch b { + case '.': + length = i + 1 + st = 2773 + default: + return length + } + + case 2774: + switch b { + case '.': + length = i + 1 + st = 2775 + default: + return length + } + + case 2776: + switch b { + case '.': + length = i + 1 + st = 2777 + default: + return length + } + + case 2778: + switch b { + case '.': + length = i + 1 + st = 2779 + default: + return length + } + + case 2780: + switch b { + case '.': + length = i + 1 + st = 2781 + default: + return length + } + + case 2782: + switch b { + case '.': + length = i + 1 + st = 2783 + default: + return length + } + + case 2784: + switch b { + case '.': + length = i + 1 + st = 2785 + default: + return length + } + + case 2786: + switch b { + case '.': + length = i + 1 + st = 2787 + default: + return length + } + + case 2788: + switch b { + case '.': + length = i + 1 + st = 2789 + default: + return length + } + + case 2790: + switch b { + case '.': + length = i + 1 + st = 2791 + default: + return length + } + + case 2792: + switch b { + case '.': + length = i + 1 + st = 2793 + default: + return length + } + + case 2794: + switch b { + case '.': + length = i + 1 + st = 2795 + default: + return length + } + + case 2796: + switch b { + case '.': + length = i + 1 + st = 2797 + default: + return length + } + + case 2798: + switch b { + case '.': + length = i + 1 + st = 2799 + default: + return length + } + + case 2800: + switch b { + case '.': + length = i + 1 + st = 2801 + default: + return length + } + + case 2802: + switch b { + case '.': + length = i + 1 + st = 2803 + default: + return length + } + + case 2804: + switch b { + case '.': + length = i + 1 + st = 2805 + default: + return length + } + + case 2806: + switch b { + case '.': + length = i + 1 + st = 2807 + default: + return length + } + + case 2808: + switch b { + case '.': + length = i + 1 + st = 2809 + default: + return length + } + + case 2810: + switch b { + case '.': + length = i + 1 + st = 2811 + default: + return length + } + + case 2812: + switch b { + case '.': + length = i + 1 + st = 2813 + default: + return length + } + + case 2814: + switch b { + case '.': + length = i + 1 + st = 2815 + default: + return length + } + + case 2816: + switch b { + case '.': + length = i + 1 + st = 2817 + default: + return length + } + + case 2818: + switch b { + case '.': + length = i + 1 + st = 2819 + default: + return length + } + + case 2820: + switch b { + case '.': + length = i + 1 + st = 2821 + default: + return length + } + + case 2822: + switch b { + case '.': + length = i + 1 + st = 2823 + default: + return length + } + + case 2824: + switch b { + case '.': + length = i + 1 + st = 2825 + default: + return length + } + + case 2826: + switch b { + case '.': + length = i + 1 + st = 2827 + default: + return length + } + + case 2828: + switch b { + case '.': + length = i + 1 + st = 2829 + default: + return length + } + + case 2830: + switch b { + case '.': + length = i + 1 + st = 2831 + default: + return length + } + + case 2832: + switch b { + case '.': + length = i + 1 + st = 2833 + default: + return length + } + + case 2834: + switch b { + case '.': + length = i + 1 + st = 2835 + default: + return length + } + + case 2836: + switch b { + case '.': + length = i + 1 + st = 2837 + default: + return length + } + + case 2838: + switch b { + case '.': + length = i + 1 + st = 2839 + default: + return length + } + + case 2840: + switch b { + case '.': + length = i + 1 + st = 2841 + default: + return length + } + + case 2842: + switch b { + case '.': + length = i + 1 + st = 2843 + default: + return length + } + + case 2844: + switch b { + case '.': + length = i + 1 + st = 2845 + default: + return length + } + + case 2846: + switch b { + case '.': + length = i + 1 + st = 2847 + default: + return length + } + + case 2848: + switch b { + case '.': + length = i + 1 + st = 2849 + default: + return length + } + + case 2850: + switch b { + case '.': + length = i + 1 + st = 2851 + default: + return length + } + + case 2852: + switch b { + case '.': + length = i + 1 + st = 2853 + default: + return length + } + + case 2854: + switch b { + case '.': + length = i + 1 + st = 2855 + default: + return length + } + + case 2856: + switch b { + case '.': + length = i + 1 + st = 2857 + default: + return length + } + + case 2858: + switch b { + case '.': + length = i + 1 + st = 2859 + default: + return length + } + + case 2860: + switch b { + case '-': + st = 2861 + default: + return length + } + + case 2861: + switch b { + case '-': + length = i + 1 + st = 2862 + default: + return length + } + + } + } + + return length +} diff --git a/vendor/github.com/golang-commonmark/markdown/linkify/linkify.go b/vendor/github.com/golang-commonmark/markdown/linkify/linkify.go new file mode 100644 index 00000000..617f35a1 --- /dev/null +++ b/vendor/github.com/golang-commonmark/markdown/linkify/linkify.go @@ -0,0 +1,463 @@ +// Copyright 2015 The Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package linkify provides a way to find links in plain text. +package linkify + +import ( + "unicode/utf8" + + "github.com/golang-commonmark/markdown/byteutil" +) + +// Link represents a link found in a string with a schema and a position in the string. +type Link struct { + Scheme string + Start, End int +} + +func max(a, b int) int { + if a >= b { + return a + } + return b +} + +// Links returns links found in s. +func Links(s string) (links []Link) { + for i := 0; i < len(s)-2; i++ { + switch s[i] { + case '.': // IP address or domain name + if i == 0 { + continue // . at the start of a line + } + if length := match(s[i+1:]); length > 0 { + pos := i + 1 + length + switch s[pos-1] { + case '.': // IP address + if pos >= len(s) { + continue // . at the end of line + } + if !byteutil.IsDigit(s[i-1]) { + i = pos + continue // . should be preceded by a digit + } + if !byteutil.IsDigit(s[pos]) { + i = pos + continue // . should be followed by a digit + } + + // find the start of the IP address + j := i - 2 + m := max(0, j-3) + for j >= m && byteutil.IsDigit(s[j]) { + j-- + } + if i-2-j > 2 { + i = pos + 1 + continue // at most 3 digits + } + start := 0 + if j >= 0 { + r, rlen := utf8.DecodeLastRuneInString(s[:j+1]) + if !isPunctOrSpaceOrControl(r) { + i = pos + 1 + continue + } + switch r { + case '.', ':', '/', '\\', '-', '_': + i = pos + 1 + continue + } + start = j + 2 - rlen + } + + length, ok := skipIPv4(s[start:]) + if !ok { + i = pos + 1 + continue + } + end := start + length + if end == len(s) { + links = append(links, Link{ + Scheme: "", + Start: start, + End: end, + }) + return + } + + r, _ := utf8.DecodeRuneInString(s[end:]) + if !isPunctOrSpaceOrControl(r) { + continue + } + + end = skipPort(s, end) + end = skipPath(s, end) + end = skipQuery(s, end) + end = skipFragment(s, end) + end = unskipPunct(s, end) + + if end < len(s) { + r, _ = utf8.DecodeRuneInString(s[end:]) + if !isPunctOrSpaceOrControl(r) || r == '%' { + continue + } + } + + links = append(links, Link{ + Scheme: "", + Start: start, + End: end, + }) + i = end + + default: // domain name + r, _ := utf8.DecodeLastRuneInString(s[:i]) + if !isLetterOrDigit(r) { + continue // should be preceded by a letter or a digit + } + + if pos == len(s) { + start, ok := findHostnameStart(s, i) + if !ok { + continue + } + links = append(links, Link{ + Scheme: "", + Start: start, + End: pos, + }) + return + } + + if s[i+1:pos] != "xn--" { + r, _ = utf8.DecodeRuneInString(s[pos:]) + if isLetterOrDigit(r) { + continue // should not be followed by a letter or a digit + } + } + + end, dot, ok := findHostnameEnd(s, pos) + if !ok { + continue + } + dot = max(dot, i) + + if !(dot+5 <= len(s) && s[dot+1:dot+5] == "xn--") { + if length := match(s[dot+1:]); dot+length+1 != end { + continue + } + } + + start, ok := findHostnameStart(s, i) + if !ok { + continue + } + + end = skipPort(s, end) + end = skipPath(s, end) + end = skipQuery(s, end) + end = skipFragment(s, end) + end = unskipPunct(s, end) + + if end < len(s) { + r, _ = utf8.DecodeRuneInString(s[end:]) + if !isPunctOrSpaceOrControl(r) || r == '%' { + continue // should be followed by punctuation or space + } + } + + links = append(links, Link{ + Scheme: "", + Start: start, + End: end, + }) + i = end + } + } + + case '/': // schema-less link + if s[i+1] != '/' { + continue + } + + if i > 0 { + if s[i-1] == ':' { + i++ + continue // should not be preceded by a colon + } + r, _ := utf8.DecodeLastRuneInString(s[:i]) + if !isPunctOrSpaceOrControl(r) { + i++ + continue // should be preceded by punctuation or space + } + } + + r, _ := utf8.DecodeRuneInString(s[i+2:]) + if !isLetterOrDigit(r) { + i++ + continue // should be followed by a letter or a digit + } + + start := i + end, dot, ok := findHostnameEnd(s, i+2) + if !ok { + continue + } + if s[i+2:end] != "localhost" { + if dot == -1 { + continue // no dot + } + if length, ok := skipIPv4(s[i+2:]); !ok || i+2+length != end { + if length := match(s[dot+1:]); dot+length+1 != end { + continue + } + } + } + + end = skipPort(s, end) + end = skipPath(s, end) + end = skipQuery(s, end) + end = skipFragment(s, end) + end = unskipPunct(s, end) + + if end < len(s) { + r, _ = utf8.DecodeRuneInString(s[end:]) + if !isPunctOrSpaceOrControl(r) || r == '%' { + continue // should be followed by punctuation or space + } + } + + links = append(links, Link{ + Scheme: "//", + Start: start, + End: end, + }) + i = end + + case ':': // http, https, ftp, mailto or localhost + if i < 3 { // at least ftp: + continue + } + + if i >= 9 && s[i-1] == 't' && s[i-9:i] == "localhost" { + j := i - 9 + if !byteutil.IsDigit(s[j+10]) { + continue + } + if j > 0 { + r, _ := utf8.DecodeLastRuneInString(s[:j]) + if !isPunctOrSpaceOrControl(r) { + i++ + continue // should be preceded by punctuation or space + } + } + + start := j + pos := j + 9 + end := skipPort(s, pos) + if end == pos { + continue // invalid port + } + end = skipPath(s, end) + end = skipQuery(s, end) + end = skipFragment(s, end) + end = unskipPunct(s, end) + + if end < len(s) { + r, _ := utf8.DecodeRuneInString(s[end:]) + if !isPunctOrSpaceOrControl(r) || r == '%' { + i++ + continue // should be followed by punctuation or space + } + } + + links = append(links, Link{ + Scheme: "", + Start: start, + End: end, + }) + i = end + + break + } + + j := i - 1 + var start int + var schema string + + switch byteutil.ByteToLower(s[j]) { + case 'o': // mailto + if j < 5 { + continue // too short for mailto + } + if len(s)-j < 8 { + continue // insufficient length after + } + if byteutil.ToLower(s[j-5:j+2]) != "mailto:" { + continue + } + r, _ := utf8.DecodeLastRuneInString(s[:j-5]) + if isLetterOrDigit(r) { + continue // should not be preceded by a letter or a digit + } + r, _ = utf8.DecodeRuneInString(s[j+2:]) + if !isAllowedInEmail(r) { + continue // should be followed by a valid e-mail character + } + + start = j - 5 + end, ok := findEmailEnd(s, j+2) + if !ok { + continue + } + + links = append(links, Link{ + Scheme: "mailto:", + Start: start, + End: end, + }) + i = end + continue // continue processing + + case 'p': // http or ftp + if len(s)-j < 8 { + continue // insufficient length after + } + switch byteutil.ByteToLower(s[j-2]) { + case 'f': + if byteutil.ToLower(s[j-2:j+4]) != "ftp://" { + continue + } + start = j - 2 + schema = "ftp:" + case 't': + if j < 3 { + continue + } + if byteutil.ToLower(s[j-3:j+4]) != "http://" { + continue + } + start = j - 3 + schema = "http:" + default: + continue + } + + case 's': // https + if j < 4 { + continue // too short for https + } + if len(s)-j < 8 { + continue // insufficient length after + } + start = j - 4 + if byteutil.ToLower(s[start:j+4]) != "https://" { + continue + } + schema = "https:" + + default: + continue + } + + // http, https or ftp + + if start > 0 { + r, _ := utf8.DecodeLastRuneInString(s[:start]) + if !isPunctOrSpaceOrControl(r) { + continue // should be preceded by punctuation or space + } + } + + r, _ := utf8.DecodeRuneInString(s[j+4:]) + if !isLetterOrDigit(r) { + continue // should be followed by a letter or a digit + } + + end, dot, ok := findHostnameEnd(s, j+4) + if !ok { + continue + } + if s[j+4:end] != "localhost" { + if dot == -1 { + continue // no dot + } + if length, ok := skipIPv4(s[j+4:]); !ok || j+4+length != end { + if !(dot+5 <= len(s) && s[dot+1:dot+5] == "xn--") { + if length := match(s[dot+1:]); dot+length+1 != end { + continue + } + } + } + } + + end = skipPort(s, end) + end = skipPath(s, end) + end = skipQuery(s, end) + end = skipFragment(s, end) + end = unskipPunct(s, end) + + if end < len(s) { + r, _ = utf8.DecodeRuneInString(s[end:]) + if !isPunctOrSpaceOrControl(r) || r == '%' { + continue // should be followed by punctuation or space + } + } + + links = append(links, Link{ + Scheme: schema, + Start: start, + End: end, + }) + i = end + + case '@': // schema-less e-mail + if i == 0 { + continue // @ at the start of a line + } + + if len(s)-i < 5 { + continue // insufficient length after + } + + r, _ := utf8.DecodeLastRuneInString(s[:i]) + if !isAllowedInEmail(r) { + continue // should be preceded by a valid e-mail character + } + + r, _ = utf8.DecodeRuneInString(s[i+1:]) + if !isLetterOrDigit(r) { + continue // should be followed by a letter or a digit + } + + start, ok := findEmailStart(s, i-1) + if !ok { + continue + } + + end, dot, ok := findHostnameEnd(s, i+1) + if !ok { + continue + } + if dot == -1 { + continue // no dot + } + if !(dot+5 <= len(s) && s[dot+1:dot+5] == "xn--") { + if length := match(s[dot+1:]); dot+length+1 != end { + continue + } + } + + links = append(links, Link{ + Scheme: "mailto:", + Start: start, + End: end, + }) + i = end + } + } + return +} diff --git a/vendor/github.com/golang-commonmark/markdown/linkify/url.go b/vendor/github.com/golang-commonmark/markdown/linkify/url.go new file mode 100644 index 00000000..78acb506 --- /dev/null +++ b/vendor/github.com/golang-commonmark/markdown/linkify/url.go @@ -0,0 +1,412 @@ +// Copyright 2015 The Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package linkify + +import ( + "unicode/utf8" + + "github.com/golang-commonmark/markdown/byteutil" +) + +func atoi3(s string, start int) (int, bool) { + n := 0 + var i int + for i = start; i < len(s) && byteutil.IsDigit(s[i]); i++ { + n = n*10 + int(s[i]-'0') + if n > 255 { + return 0, false + } + } + if i == start { + return 0, false + } + return i, true +} + +func skipIPv4(s string) (_ int, _ bool) { + j := 0 + for i := 0; i < 4; i++ { + if j >= len(s) { + return + } + if i > 0 { + if s[j] != '.' { + return + } + j++ + } + if n, ok := atoi3(s, j); !ok { + return + } else { + j = n + } + } + return j, true +} + +func atoi5(s string, start int) (int, bool) { + n := 0 + var i int + for i = start; i < len(s) && byteutil.IsDigit(s[i]); i++ { + n = n*10 + int(s[i]-'0') + if n > 65535 { + return 0, false + } + } + if i == start || n == 0 { + return 0, false + } + return i, true +} + +func skipPort(s string, start int) int { + if start >= len(s) || s[start] != ':' { + return start + } + end, ok := atoi5(s, start+1) + if !ok { + return start + } + return end +} + +func skipPath(s string, start int) int { + if start >= len(s) || s[start] != '/' { + return start // skip empty path + } + var stack []rune + var notClosedIndex int + var nHyphen int + end := start + 1 +loop: + for end < len(s) { + r, rlen := utf8.DecodeRuneInString(s[end:]) + if r == utf8.RuneError { + nHyphen = 0 + break + } + + switch { + case isUnreserved(r): + if r == '-' { + nHyphen++ + if nHyphen > 1 { + break loop + } + } else { + nHyphen = 0 + } + case isSubDelimiter(r) || r == '[' || r == ']': + nHyphen = 0 + switch r { + case '[', '(': + if len(stack) == 0 { + notClosedIndex = end + } + stack = append(stack, r) + case ']', ')': + opening := '[' + if r == ')' { + opening = '(' + } + if len(stack) == 0 || stack[len(stack)-1] != opening { + break loop + } + stack = stack[:len(stack)-1] + } + case r == '/' || r == ':' || r == '@': + nHyphen = 0 + case r == '%': + nHyphen = 0 + if end+2 >= len(s) { + break loop + } + if !(byteutil.IsHexDigit(s[end+1]) && + byteutil.IsHexDigit(s[end+2])) { + break loop + } + end += 2 + default: + nHyphen = 0 + if r != ' ' || len(stack) == 0 { + break loop + } + } + end += rlen + } + if len(stack) > 0 { + return notClosedIndex + } + if nHyphen > 0 { + return end - nHyphen + 1 + } + return end +} + +func skipQuery(s string, start int) int { + if start >= len(s) || s[start] != '?' { + return start + } + var stack []rune + var notClosedIndex int + var nHyphen int + end := start + 1 +loop: + for end < len(s) { + r, rlen := utf8.DecodeRuneInString(s[end:]) + if r == utf8.RuneError { + nHyphen = 0 + break + } + + switch { + case isUnreserved(r): + if r == '-' { + nHyphen++ + if nHyphen > 1 { + break loop + } + } else { + nHyphen = 0 + } + case isSubDelimiter(r) || r == '[' || r == ']': + nHyphen = 0 + switch r { + case '[', '(': + if len(stack) == 0 { + notClosedIndex = end + } + stack = append(stack, r) + case ']', ')': + opening := '[' + if r == ')' { + opening = '(' + } + if len(stack) == 0 || stack[len(stack)-1] != opening { + break loop + } + stack = stack[:len(stack)-1] + } + case r == '?' || r == '/' || r == ':' || r == '@': + nHyphen = 0 + case r == '%': + nHyphen = 0 + if end+2 >= len(s) { + break loop + } + if !(byteutil.IsHexDigit(s[end+1]) && + byteutil.IsHexDigit(s[end+2])) { + break loop + } + end += 2 + default: + nHyphen = 0 + if r != ' ' || len(stack) == 0 { + break loop + } + } + end += rlen + } + if len(stack) > 0 { + return notClosedIndex + } + if nHyphen > 0 { + return end - nHyphen + 1 + } + return end +} + +func skipFragment(s string, start int) int { + if start >= len(s) || s[start] != '#' { + return start + } + var stack []rune + var notClosedIndex int + var nHyphen int + end := start + 1 +loop: + for end < len(s) { + r, rlen := utf8.DecodeRuneInString(s[end:]) + if r == utf8.RuneError { + nHyphen = 0 + break + } + + switch { + case isUnreserved(r): + if r == '-' { + nHyphen++ + if nHyphen > 1 { + break loop + } + } else { + nHyphen = 0 + } + case isSubDelimiter(r) || r == '[' || r == ']': + nHyphen = 0 + switch r { + case '[', '(': + if len(stack) == 0 { + notClosedIndex = end + } + stack = append(stack, r) + case ']', ')': + opening := '[' + if r == ')' { + opening = '(' + } + if len(stack) == 0 || stack[len(stack)-1] != opening { + break loop + } + stack = stack[:len(stack)-1] + } + case r == '?' || r == '/' || r == ':' || r == '@': + nHyphen = 0 + case r == '%': + nHyphen = 0 + if end+2 >= len(s) { + break loop + } + if !(byteutil.IsHexDigit(s[end+1]) && + byteutil.IsHexDigit(s[end+2])) { + break loop + } + end += 2 + default: + nHyphen = 0 + if r != ' ' || len(stack) == 0 { + break loop + } + } + end += rlen + } + if len(stack) > 0 { + return notClosedIndex + } + if nHyphen > 0 { + return end - nHyphen + 1 + } + return end +} + +func unskipPunct(s string, start int) int { + end := start - 1 + if end < 0 || end >= len(s) || !basicPunct[s[end]] { + return start + } + return end +} + +func findHostnameStart(s string, start int) (_ int, _ bool) { + end := start + lastDot := true + nHyphen := 0 +loop: + for end > 0 { + r, rlen := utf8.DecodeLastRuneInString(s[:end]) + if r == utf8.RuneError { + return + } + + switch { + case isLetterOrDigit(r): + lastDot = false + nHyphen = 0 + case r == '.': + if nHyphen > 0 { + return + } + lastDot = true + case r == '-': + if end == start { + return + } + if lastDot { + return + } + nHyphen++ + if nHyphen == 3 { + return + } + case r == ':' || r == '/' || r == '\\' || r == '_': + return + case isPunctOrSpaceOrControl(r): + break loop + default: + return + } + end -= rlen + } + if lastDot || nHyphen > 0 { + return + } + return end, true +} + +func findHostnameEnd(s string, start int) (_ int, _ int, _ bool) { + end := start + lastDot := false + lastDotPos := -1 + nHyphen := 0 +loop: + for end < len(s) { + r, rlen := utf8.DecodeRuneInString(s[end:]) + if r == utf8.RuneError { + return + } + + switch { + case isLetterOrDigit(r): + lastDot = false + nHyphen = 0 + case r == '.': + if nHyphen > 0 { + return + } + if lastDot { + break loop + } + lastDot = true + lastDotPos = end + nHyphen = 0 + case r == '-': + lastDot = false + if end == start { + return + } + if lastDot { + return + } + nHyphen++ + if nHyphen == 3 { + break loop + } + case r == '\\' || r == '_': + return + case isPunctOrSpaceOrControl(r): + break loop + default: + return + } + end += rlen + } + + if nHyphen > 0 { + end -= nHyphen + } else if lastDot { + if s[end-1] == '.' { + end-- + } + lastDotPos = end - 1 + for lastDotPos >= start && s[lastDotPos] != '.' { + lastDotPos-- + } + if lastDotPos < start { + lastDotPos = -1 + } + } + + return end, lastDotPos, true +} diff --git a/vendor/golang.org/x/net/html/atom/atom.go b/vendor/golang.org/x/net/html/atom/atom.go new file mode 100644 index 00000000..cd0a8ac1 --- /dev/null +++ b/vendor/golang.org/x/net/html/atom/atom.go @@ -0,0 +1,78 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package atom provides integer codes (also known as atoms) for a fixed set of +// frequently occurring HTML strings: tag names and attribute keys such as "p" +// and "id". +// +// Sharing an atom's name between all elements with the same tag can result in +// fewer string allocations when tokenizing and parsing HTML. Integer +// comparisons are also generally faster than string comparisons. +// +// The value of an atom's particular code is not guaranteed to stay the same +// between versions of this package. Neither is any ordering guaranteed: +// whether atom.H1 < atom.H2 may also change. The codes are not guaranteed to +// be dense. The only guarantees are that e.g. looking up "div" will yield +// atom.Div, calling atom.Div.String will return "div", and atom.Div != 0. +package atom // import "golang.org/x/net/html/atom" + +// Atom is an integer code for a string. The zero value maps to "". +type Atom uint32 + +// String returns the atom's name. +func (a Atom) String() string { + start := uint32(a >> 8) + n := uint32(a & 0xff) + if start+n > uint32(len(atomText)) { + return "" + } + return atomText[start : start+n] +} + +func (a Atom) string() string { + return atomText[a>>8 : a>>8+a&0xff] +} + +// fnv computes the FNV hash with an arbitrary starting value h. +func fnv(h uint32, s []byte) uint32 { + for i := range s { + h ^= uint32(s[i]) + h *= 16777619 + } + return h +} + +func match(s string, t []byte) bool { + for i, c := range t { + if s[i] != c { + return false + } + } + return true +} + +// Lookup returns the atom whose name is s. It returns zero if there is no +// such atom. The lookup is case sensitive. +func Lookup(s []byte) Atom { + if len(s) == 0 || len(s) > maxAtomLen { + return 0 + } + h := fnv(hash0, s) + if a := table[h&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) { + return a + } + if a := table[(h>>16)&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) { + return a + } + return 0 +} + +// String returns a string whose contents are equal to s. In that sense, it is +// equivalent to string(s) but may be more efficient. +func String(s []byte) string { + if a := Lookup(s); a != 0 { + return a.String() + } + return string(s) +} diff --git a/vendor/golang.org/x/net/html/atom/gen.go b/vendor/golang.org/x/net/html/atom/gen.go new file mode 100644 index 00000000..6bfa8660 --- /dev/null +++ b/vendor/golang.org/x/net/html/atom/gen.go @@ -0,0 +1,648 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +// This program generates table.go and table_test.go. +// Invoke as +// +// go run gen.go |gofmt >table.go +// go run gen.go -test |gofmt >table_test.go + +import ( + "flag" + "fmt" + "math/rand" + "os" + "sort" + "strings" +) + +// identifier converts s to a Go exported identifier. +// It converts "div" to "Div" and "accept-charset" to "AcceptCharset". +func identifier(s string) string { + b := make([]byte, 0, len(s)) + cap := true + for _, c := range s { + if c == '-' { + cap = true + continue + } + if cap && 'a' <= c && c <= 'z' { + c -= 'a' - 'A' + } + cap = false + b = append(b, byte(c)) + } + return string(b) +} + +var test = flag.Bool("test", false, "generate table_test.go") + +func main() { + flag.Parse() + + var all []string + all = append(all, elements...) + all = append(all, attributes...) + all = append(all, eventHandlers...) + all = append(all, extra...) + sort.Strings(all) + + if *test { + fmt.Printf("// generated by go run gen.go -test; DO NOT EDIT\n\n") + fmt.Printf("package atom\n\n") + fmt.Printf("var testAtomList = []string{\n") + for _, s := range all { + fmt.Printf("\t%q,\n", s) + } + fmt.Printf("}\n") + return + } + + // uniq - lists have dups + // compute max len too + maxLen := 0 + w := 0 + for _, s := range all { + if w == 0 || all[w-1] != s { + if maxLen < len(s) { + maxLen = len(s) + } + all[w] = s + w++ + } + } + all = all[:w] + + // Find hash that minimizes table size. + var best *table + for i := 0; i < 1000000; i++ { + if best != nil && 1<<(best.k-1) < len(all) { + break + } + h := rand.Uint32() + for k := uint(0); k <= 16; k++ { + if best != nil && k >= best.k { + break + } + var t table + if t.init(h, k, all) { + best = &t + break + } + } + } + if best == nil { + fmt.Fprintf(os.Stderr, "failed to construct string table\n") + os.Exit(1) + } + + // Lay out strings, using overlaps when possible. + layout := append([]string{}, all...) + + // Remove strings that are substrings of other strings + for changed := true; changed; { + changed = false + for i, s := range layout { + if s == "" { + continue + } + for j, t := range layout { + if i != j && t != "" && strings.Contains(s, t) { + changed = true + layout[j] = "" + } + } + } + } + + // Join strings where one suffix matches another prefix. + for { + // Find best i, j, k such that layout[i][len-k:] == layout[j][:k], + // maximizing overlap length k. + besti := -1 + bestj := -1 + bestk := 0 + for i, s := range layout { + if s == "" { + continue + } + for j, t := range layout { + if i == j { + continue + } + for k := bestk + 1; k <= len(s) && k <= len(t); k++ { + if s[len(s)-k:] == t[:k] { + besti = i + bestj = j + bestk = k + } + } + } + } + if bestk > 0 { + layout[besti] += layout[bestj][bestk:] + layout[bestj] = "" + continue + } + break + } + + text := strings.Join(layout, "") + + atom := map[string]uint32{} + for _, s := range all { + off := strings.Index(text, s) + if off < 0 { + panic("lost string " + s) + } + atom[s] = uint32(off<<8 | len(s)) + } + + // Generate the Go code. + fmt.Printf("// generated by go run gen.go; DO NOT EDIT\n\n") + fmt.Printf("package atom\n\nconst (\n") + for _, s := range all { + fmt.Printf("\t%s Atom = %#x\n", identifier(s), atom[s]) + } + fmt.Printf(")\n\n") + + fmt.Printf("const hash0 = %#x\n\n", best.h0) + fmt.Printf("const maxAtomLen = %d\n\n", maxLen) + + fmt.Printf("var table = [1<<%d]Atom{\n", best.k) + for i, s := range best.tab { + if s == "" { + continue + } + fmt.Printf("\t%#x: %#x, // %s\n", i, atom[s], s) + } + fmt.Printf("}\n") + datasize := (1 << best.k) * 4 + + fmt.Printf("const atomText =\n") + textsize := len(text) + for len(text) > 60 { + fmt.Printf("\t%q +\n", text[:60]) + text = text[60:] + } + fmt.Printf("\t%q\n\n", text) + + fmt.Fprintf(os.Stderr, "%d atoms; %d string bytes + %d tables = %d total data\n", len(all), textsize, datasize, textsize+datasize) +} + +type byLen []string + +func (x byLen) Less(i, j int) bool { return len(x[i]) > len(x[j]) } +func (x byLen) Swap(i, j int) { x[i], x[j] = x[j], x[i] } +func (x byLen) Len() int { return len(x) } + +// fnv computes the FNV hash with an arbitrary starting value h. +func fnv(h uint32, s string) uint32 { + for i := 0; i < len(s); i++ { + h ^= uint32(s[i]) + h *= 16777619 + } + return h +} + +// A table represents an attempt at constructing the lookup table. +// The lookup table uses cuckoo hashing, meaning that each string +// can be found in one of two positions. +type table struct { + h0 uint32 + k uint + mask uint32 + tab []string +} + +// hash returns the two hashes for s. +func (t *table) hash(s string) (h1, h2 uint32) { + h := fnv(t.h0, s) + h1 = h & t.mask + h2 = (h >> 16) & t.mask + return +} + +// init initializes the table with the given parameters. +// h0 is the initial hash value, +// k is the number of bits of hash value to use, and +// x is the list of strings to store in the table. +// init returns false if the table cannot be constructed. +func (t *table) init(h0 uint32, k uint, x []string) bool { + t.h0 = h0 + t.k = k + t.tab = make([]string, 1< len(t.tab) { + return false + } + s := t.tab[i] + h1, h2 := t.hash(s) + j := h1 + h2 - i + if t.tab[j] != "" && !t.push(j, depth+1) { + return false + } + t.tab[j] = s + return true +} + +// The lists of element names and attribute keys were taken from +// https://html.spec.whatwg.org/multipage/indices.html#index +// as of the "HTML Living Standard - Last Updated 21 February 2015" version. + +var elements = []string{ + "a", + "abbr", + "address", + "area", + "article", + "aside", + "audio", + "b", + "base", + "bdi", + "bdo", + "blockquote", + "body", + "br", + "button", + "canvas", + "caption", + "cite", + "code", + "col", + "colgroup", + "command", + "data", + "datalist", + "dd", + "del", + "details", + "dfn", + "dialog", + "div", + "dl", + "dt", + "em", + "embed", + "fieldset", + "figcaption", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "head", + "header", + "hgroup", + "hr", + "html", + "i", + "iframe", + "img", + "input", + "ins", + "kbd", + "keygen", + "label", + "legend", + "li", + "link", + "map", + "mark", + "menu", + "menuitem", + "meta", + "meter", + "nav", + "noscript", + "object", + "ol", + "optgroup", + "option", + "output", + "p", + "param", + "pre", + "progress", + "q", + "rp", + "rt", + "ruby", + "s", + "samp", + "script", + "section", + "select", + "small", + "source", + "span", + "strong", + "style", + "sub", + "summary", + "sup", + "table", + "tbody", + "td", + "template", + "textarea", + "tfoot", + "th", + "thead", + "time", + "title", + "tr", + "track", + "u", + "ul", + "var", + "video", + "wbr", +} + +// https://html.spec.whatwg.org/multipage/indices.html#attributes-3 + +var attributes = []string{ + "abbr", + "accept", + "accept-charset", + "accesskey", + "action", + "alt", + "async", + "autocomplete", + "autofocus", + "autoplay", + "challenge", + "charset", + "checked", + "cite", + "class", + "cols", + "colspan", + "command", + "content", + "contenteditable", + "contextmenu", + "controls", + "coords", + "crossorigin", + "data", + "datetime", + "default", + "defer", + "dir", + "dirname", + "disabled", + "download", + "draggable", + "dropzone", + "enctype", + "for", + "form", + "formaction", + "formenctype", + "formmethod", + "formnovalidate", + "formtarget", + "headers", + "height", + "hidden", + "high", + "href", + "hreflang", + "http-equiv", + "icon", + "id", + "inputmode", + "ismap", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "keytype", + "kind", + "label", + "lang", + "list", + "loop", + "low", + "manifest", + "max", + "maxlength", + "media", + "mediagroup", + "method", + "min", + "minlength", + "multiple", + "muted", + "name", + "novalidate", + "open", + "optimum", + "pattern", + "ping", + "placeholder", + "poster", + "preload", + "radiogroup", + "readonly", + "rel", + "required", + "reversed", + "rows", + "rowspan", + "sandbox", + "spellcheck", + "scope", + "scoped", + "seamless", + "selected", + "shape", + "size", + "sizes", + "sortable", + "sorted", + "span", + "src", + "srcdoc", + "srclang", + "start", + "step", + "style", + "tabindex", + "target", + "title", + "translate", + "type", + "typemustmatch", + "usemap", + "value", + "width", + "wrap", +} + +var eventHandlers = []string{ + "onabort", + "onautocomplete", + "onautocompleteerror", + "onafterprint", + "onbeforeprint", + "onbeforeunload", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "onhashchange", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onlanguagechange", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmessage", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onoffline", + "ononline", + "onpagehide", + "onpageshow", + "onpause", + "onplay", + "onplaying", + "onpopstate", + "onprogress", + "onratechange", + "onreset", + "onresize", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onsort", + "onstalled", + "onstorage", + "onsubmit", + "onsuspend", + "ontimeupdate", + "ontoggle", + "onunload", + "onvolumechange", + "onwaiting", +} + +// extra are ad-hoc values not covered by any of the lists above. +var extra = []string{ + "align", + "annotation", + "annotation-xml", + "applet", + "basefont", + "bgsound", + "big", + "blink", + "center", + "color", + "desc", + "face", + "font", + "foreignObject", // HTML is case-insensitive, but SVG-embedded-in-HTML is case-sensitive. + "foreignobject", + "frame", + "frameset", + "image", + "isindex", + "listing", + "malignmark", + "marquee", + "math", + "mglyph", + "mi", + "mn", + "mo", + "ms", + "mtext", + "nobr", + "noembed", + "noframes", + "plaintext", + "prompt", + "public", + "spacer", + "strike", + "svg", + "system", + "tt", + "xmp", +} diff --git a/vendor/golang.org/x/net/html/atom/table.go b/vendor/golang.org/x/net/html/atom/table.go new file mode 100644 index 00000000..2605ba31 --- /dev/null +++ b/vendor/golang.org/x/net/html/atom/table.go @@ -0,0 +1,713 @@ +// generated by go run gen.go; DO NOT EDIT + +package atom + +const ( + A Atom = 0x1 + Abbr Atom = 0x4 + Accept Atom = 0x2106 + AcceptCharset Atom = 0x210e + Accesskey Atom = 0x3309 + Action Atom = 0x1f606 + Address Atom = 0x4f307 + Align Atom = 0x1105 + Alt Atom = 0x4503 + Annotation Atom = 0x1670a + AnnotationXml Atom = 0x1670e + Applet Atom = 0x2b306 + Area Atom = 0x2fa04 + Article Atom = 0x38807 + Aside Atom = 0x8305 + Async Atom = 0x7b05 + Audio Atom = 0xa605 + Autocomplete Atom = 0x1fc0c + Autofocus Atom = 0xb309 + Autoplay Atom = 0xce08 + B Atom = 0x101 + Base Atom = 0xd604 + Basefont Atom = 0xd608 + Bdi Atom = 0x1a03 + Bdo Atom = 0xe703 + Bgsound Atom = 0x11807 + Big Atom = 0x12403 + Blink Atom = 0x12705 + Blockquote Atom = 0x12c0a + Body Atom = 0x2f04 + Br Atom = 0x202 + Button Atom = 0x13606 + Canvas Atom = 0x7f06 + Caption Atom = 0x1bb07 + Center Atom = 0x5b506 + Challenge Atom = 0x21f09 + Charset Atom = 0x2807 + Checked Atom = 0x32807 + Cite Atom = 0x3c804 + Class Atom = 0x4de05 + Code Atom = 0x14904 + Col Atom = 0x15003 + Colgroup Atom = 0x15008 + Color Atom = 0x15d05 + Cols Atom = 0x16204 + Colspan Atom = 0x16207 + Command Atom = 0x17507 + Content Atom = 0x42307 + Contenteditable Atom = 0x4230f + Contextmenu Atom = 0x3310b + Controls Atom = 0x18808 + Coords Atom = 0x19406 + Crossorigin Atom = 0x19f0b + Data Atom = 0x44a04 + Datalist Atom = 0x44a08 + Datetime Atom = 0x23c08 + Dd Atom = 0x26702 + Default Atom = 0x8607 + Defer Atom = 0x14b05 + Del Atom = 0x3ef03 + Desc Atom = 0x4db04 + Details Atom = 0x4807 + Dfn Atom = 0x6103 + Dialog Atom = 0x1b06 + Dir Atom = 0x6903 + Dirname Atom = 0x6907 + Disabled Atom = 0x10c08 + Div Atom = 0x11303 + Dl Atom = 0x11e02 + Download Atom = 0x40008 + Draggable Atom = 0x17b09 + Dropzone Atom = 0x39108 + Dt Atom = 0x50902 + Em Atom = 0x6502 + Embed Atom = 0x6505 + Enctype Atom = 0x21107 + Face Atom = 0x5b304 + Fieldset Atom = 0x1b008 + Figcaption Atom = 0x1b80a + Figure Atom = 0x1cc06 + Font Atom = 0xda04 + Footer Atom = 0x8d06 + For Atom = 0x1d803 + ForeignObject Atom = 0x1d80d + Foreignobject Atom = 0x1e50d + Form Atom = 0x1f204 + Formaction Atom = 0x1f20a + Formenctype Atom = 0x20d0b + Formmethod Atom = 0x2280a + Formnovalidate Atom = 0x2320e + Formtarget Atom = 0x2470a + Frame Atom = 0x9a05 + Frameset Atom = 0x9a08 + H1 Atom = 0x26e02 + H2 Atom = 0x29402 + H3 Atom = 0x2a702 + H4 Atom = 0x2e902 + H5 Atom = 0x2f302 + H6 Atom = 0x50b02 + Head Atom = 0x2d504 + Header Atom = 0x2d506 + Headers Atom = 0x2d507 + Height Atom = 0x25106 + Hgroup Atom = 0x25906 + Hidden Atom = 0x26506 + High Atom = 0x26b04 + Hr Atom = 0x27002 + Href Atom = 0x27004 + Hreflang Atom = 0x27008 + Html Atom = 0x25504 + HttpEquiv Atom = 0x2780a + I Atom = 0x601 + Icon Atom = 0x42204 + Id Atom = 0x8502 + Iframe Atom = 0x29606 + Image Atom = 0x29c05 + Img Atom = 0x2a103 + Input Atom = 0x3e805 + Inputmode Atom = 0x3e809 + Ins Atom = 0x1a803 + Isindex Atom = 0x2a907 + Ismap Atom = 0x2b005 + Itemid Atom = 0x33c06 + Itemprop Atom = 0x3c908 + Itemref Atom = 0x5ad07 + Itemscope Atom = 0x2b909 + Itemtype Atom = 0x2c308 + Kbd Atom = 0x1903 + Keygen Atom = 0x3906 + Keytype Atom = 0x53707 + Kind Atom = 0x10904 + Label Atom = 0xf005 + Lang Atom = 0x27404 + Legend Atom = 0x18206 + Li Atom = 0x1202 + Link Atom = 0x12804 + List Atom = 0x44e04 + Listing Atom = 0x44e07 + Loop Atom = 0xf404 + Low Atom = 0x11f03 + Malignmark Atom = 0x100a + Manifest Atom = 0x5f108 + Map Atom = 0x2b203 + Mark Atom = 0x1604 + Marquee Atom = 0x2cb07 + Math Atom = 0x2d204 + Max Atom = 0x2e103 + Maxlength Atom = 0x2e109 + Media Atom = 0x6e05 + Mediagroup Atom = 0x6e0a + Menu Atom = 0x33804 + Menuitem Atom = 0x33808 + Meta Atom = 0x45d04 + Meter Atom = 0x24205 + Method Atom = 0x22c06 + Mglyph Atom = 0x2a206 + Mi Atom = 0x2eb02 + Min Atom = 0x2eb03 + Minlength Atom = 0x2eb09 + Mn Atom = 0x23502 + Mo Atom = 0x3ed02 + Ms Atom = 0x2bc02 + Mtext Atom = 0x2f505 + Multiple Atom = 0x30308 + Muted Atom = 0x30b05 + Name Atom = 0x6c04 + Nav Atom = 0x3e03 + Nobr Atom = 0x5704 + Noembed Atom = 0x6307 + Noframes Atom = 0x9808 + Noscript Atom = 0x3d208 + Novalidate Atom = 0x2360a + Object Atom = 0x1ec06 + Ol Atom = 0xc902 + Onabort Atom = 0x13a07 + Onafterprint Atom = 0x1c00c + Onautocomplete Atom = 0x1fa0e + Onautocompleteerror Atom = 0x1fa13 + Onbeforeprint Atom = 0x6040d + Onbeforeunload Atom = 0x4e70e + Onblur Atom = 0xaa06 + Oncancel Atom = 0xe908 + Oncanplay Atom = 0x28509 + Oncanplaythrough Atom = 0x28510 + Onchange Atom = 0x3a708 + Onclick Atom = 0x31007 + Onclose Atom = 0x31707 + Oncontextmenu Atom = 0x32f0d + Oncuechange Atom = 0x3420b + Ondblclick Atom = 0x34d0a + Ondrag Atom = 0x35706 + Ondragend Atom = 0x35709 + Ondragenter Atom = 0x3600b + Ondragleave Atom = 0x36b0b + Ondragover Atom = 0x3760a + Ondragstart Atom = 0x3800b + Ondrop Atom = 0x38f06 + Ondurationchange Atom = 0x39f10 + Onemptied Atom = 0x39609 + Onended Atom = 0x3af07 + Onerror Atom = 0x3b607 + Onfocus Atom = 0x3bd07 + Onhashchange Atom = 0x3da0c + Oninput Atom = 0x3e607 + Oninvalid Atom = 0x3f209 + Onkeydown Atom = 0x3fb09 + Onkeypress Atom = 0x4080a + Onkeyup Atom = 0x41807 + Onlanguagechange Atom = 0x43210 + Onload Atom = 0x44206 + Onloadeddata Atom = 0x4420c + Onloadedmetadata Atom = 0x45510 + Onloadstart Atom = 0x46b0b + Onmessage Atom = 0x47609 + Onmousedown Atom = 0x47f0b + Onmousemove Atom = 0x48a0b + Onmouseout Atom = 0x4950a + Onmouseover Atom = 0x4a20b + Onmouseup Atom = 0x4ad09 + Onmousewheel Atom = 0x4b60c + Onoffline Atom = 0x4c209 + Ononline Atom = 0x4cb08 + Onpagehide Atom = 0x4d30a + Onpageshow Atom = 0x4fe0a + Onpause Atom = 0x50d07 + Onplay Atom = 0x51706 + Onplaying Atom = 0x51709 + Onpopstate Atom = 0x5200a + Onprogress Atom = 0x52a0a + Onratechange Atom = 0x53e0c + Onreset Atom = 0x54a07 + Onresize Atom = 0x55108 + Onscroll Atom = 0x55f08 + Onseeked Atom = 0x56708 + Onseeking Atom = 0x56f09 + Onselect Atom = 0x57808 + Onshow Atom = 0x58206 + Onsort Atom = 0x58b06 + Onstalled Atom = 0x59509 + Onstorage Atom = 0x59e09 + Onsubmit Atom = 0x5a708 + Onsuspend Atom = 0x5bb09 + Ontimeupdate Atom = 0xdb0c + Ontoggle Atom = 0x5c408 + Onunload Atom = 0x5cc08 + Onvolumechange Atom = 0x5d40e + Onwaiting Atom = 0x5e209 + Open Atom = 0x3cf04 + Optgroup Atom = 0xf608 + Optimum Atom = 0x5eb07 + Option Atom = 0x60006 + Output Atom = 0x49c06 + P Atom = 0xc01 + Param Atom = 0xc05 + Pattern Atom = 0x5107 + Ping Atom = 0x7704 + Placeholder Atom = 0xc30b + Plaintext Atom = 0xfd09 + Poster Atom = 0x15706 + Pre Atom = 0x25e03 + Preload Atom = 0x25e07 + Progress Atom = 0x52c08 + Prompt Atom = 0x5fa06 + Public Atom = 0x41e06 + Q Atom = 0x13101 + Radiogroup Atom = 0x30a + Readonly Atom = 0x2fb08 + Rel Atom = 0x25f03 + Required Atom = 0x1d008 + Reversed Atom = 0x5a08 + Rows Atom = 0x9204 + Rowspan Atom = 0x9207 + Rp Atom = 0x1c602 + Rt Atom = 0x13f02 + Ruby Atom = 0xaf04 + S Atom = 0x2c01 + Samp Atom = 0x4e04 + Sandbox Atom = 0xbb07 + Scope Atom = 0x2bd05 + Scoped Atom = 0x2bd06 + Script Atom = 0x3d406 + Seamless Atom = 0x31c08 + Section Atom = 0x4e207 + Select Atom = 0x57a06 + Selected Atom = 0x57a08 + Shape Atom = 0x4f905 + Size Atom = 0x55504 + Sizes Atom = 0x55505 + Small Atom = 0x18f05 + Sortable Atom = 0x58d08 + Sorted Atom = 0x19906 + Source Atom = 0x1aa06 + Spacer Atom = 0x2db06 + Span Atom = 0x9504 + Spellcheck Atom = 0x3230a + Src Atom = 0x3c303 + Srcdoc Atom = 0x3c306 + Srclang Atom = 0x41107 + Start Atom = 0x38605 + Step Atom = 0x5f704 + Strike Atom = 0x53306 + Strong Atom = 0x55906 + Style Atom = 0x61105 + Sub Atom = 0x5a903 + Summary Atom = 0x61607 + Sup Atom = 0x61d03 + Svg Atom = 0x62003 + System Atom = 0x62306 + Tabindex Atom = 0x46308 + Table Atom = 0x42d05 + Target Atom = 0x24b06 + Tbody Atom = 0x2e05 + Td Atom = 0x4702 + Template Atom = 0x62608 + Textarea Atom = 0x2f608 + Tfoot Atom = 0x8c05 + Th Atom = 0x22e02 + Thead Atom = 0x2d405 + Time Atom = 0xdd04 + Title Atom = 0xa105 + Tr Atom = 0x10502 + Track Atom = 0x10505 + Translate Atom = 0x14009 + Tt Atom = 0x5302 + Type Atom = 0x21404 + Typemustmatch Atom = 0x2140d + U Atom = 0xb01 + Ul Atom = 0x8a02 + Usemap Atom = 0x51106 + Value Atom = 0x4005 + Var Atom = 0x11503 + Video Atom = 0x28105 + Wbr Atom = 0x12103 + Width Atom = 0x50705 + Wrap Atom = 0x58704 + Xmp Atom = 0xc103 +) + +const hash0 = 0xc17da63e + +const maxAtomLen = 19 + +var table = [1 << 9]Atom{ + 0x1: 0x48a0b, // onmousemove + 0x2: 0x5e209, // onwaiting + 0x3: 0x1fa13, // onautocompleteerror + 0x4: 0x5fa06, // prompt + 0x7: 0x5eb07, // optimum + 0x8: 0x1604, // mark + 0xa: 0x5ad07, // itemref + 0xb: 0x4fe0a, // onpageshow + 0xc: 0x57a06, // select + 0xd: 0x17b09, // draggable + 0xe: 0x3e03, // nav + 0xf: 0x17507, // command + 0x11: 0xb01, // u + 0x14: 0x2d507, // headers + 0x15: 0x44a08, // datalist + 0x17: 0x4e04, // samp + 0x1a: 0x3fb09, // onkeydown + 0x1b: 0x55f08, // onscroll + 0x1c: 0x15003, // col + 0x20: 0x3c908, // itemprop + 0x21: 0x2780a, // http-equiv + 0x22: 0x61d03, // sup + 0x24: 0x1d008, // required + 0x2b: 0x25e07, // preload + 0x2c: 0x6040d, // onbeforeprint + 0x2d: 0x3600b, // ondragenter + 0x2e: 0x50902, // dt + 0x2f: 0x5a708, // onsubmit + 0x30: 0x27002, // hr + 0x31: 0x32f0d, // oncontextmenu + 0x33: 0x29c05, // image + 0x34: 0x50d07, // onpause + 0x35: 0x25906, // hgroup + 0x36: 0x7704, // ping + 0x37: 0x57808, // onselect + 0x3a: 0x11303, // div + 0x3b: 0x1fa0e, // onautocomplete + 0x40: 0x2eb02, // mi + 0x41: 0x31c08, // seamless + 0x42: 0x2807, // charset + 0x43: 0x8502, // id + 0x44: 0x5200a, // onpopstate + 0x45: 0x3ef03, // del + 0x46: 0x2cb07, // marquee + 0x47: 0x3309, // accesskey + 0x49: 0x8d06, // footer + 0x4a: 0x44e04, // list + 0x4b: 0x2b005, // ismap + 0x51: 0x33804, // menu + 0x52: 0x2f04, // body + 0x55: 0x9a08, // frameset + 0x56: 0x54a07, // onreset + 0x57: 0x12705, // blink + 0x58: 0xa105, // title + 0x59: 0x38807, // article + 0x5b: 0x22e02, // th + 0x5d: 0x13101, // q + 0x5e: 0x3cf04, // open + 0x5f: 0x2fa04, // area + 0x61: 0x44206, // onload + 0x62: 0xda04, // font + 0x63: 0xd604, // base + 0x64: 0x16207, // colspan + 0x65: 0x53707, // keytype + 0x66: 0x11e02, // dl + 0x68: 0x1b008, // fieldset + 0x6a: 0x2eb03, // min + 0x6b: 0x11503, // var + 0x6f: 0x2d506, // header + 0x70: 0x13f02, // rt + 0x71: 0x15008, // colgroup + 0x72: 0x23502, // mn + 0x74: 0x13a07, // onabort + 0x75: 0x3906, // keygen + 0x76: 0x4c209, // onoffline + 0x77: 0x21f09, // challenge + 0x78: 0x2b203, // map + 0x7a: 0x2e902, // h4 + 0x7b: 0x3b607, // onerror + 0x7c: 0x2e109, // maxlength + 0x7d: 0x2f505, // mtext + 0x7e: 0xbb07, // sandbox + 0x7f: 0x58b06, // onsort + 0x80: 0x100a, // malignmark + 0x81: 0x45d04, // meta + 0x82: 0x7b05, // async + 0x83: 0x2a702, // h3 + 0x84: 0x26702, // dd + 0x85: 0x27004, // href + 0x86: 0x6e0a, // mediagroup + 0x87: 0x19406, // coords + 0x88: 0x41107, // srclang + 0x89: 0x34d0a, // ondblclick + 0x8a: 0x4005, // value + 0x8c: 0xe908, // oncancel + 0x8e: 0x3230a, // spellcheck + 0x8f: 0x9a05, // frame + 0x91: 0x12403, // big + 0x94: 0x1f606, // action + 0x95: 0x6903, // dir + 0x97: 0x2fb08, // readonly + 0x99: 0x42d05, // table + 0x9a: 0x61607, // summary + 0x9b: 0x12103, // wbr + 0x9c: 0x30a, // radiogroup + 0x9d: 0x6c04, // name + 0x9f: 0x62306, // system + 0xa1: 0x15d05, // color + 0xa2: 0x7f06, // canvas + 0xa3: 0x25504, // html + 0xa5: 0x56f09, // onseeking + 0xac: 0x4f905, // shape + 0xad: 0x25f03, // rel + 0xae: 0x28510, // oncanplaythrough + 0xaf: 0x3760a, // ondragover + 0xb0: 0x62608, // template + 0xb1: 0x1d80d, // foreignObject + 0xb3: 0x9204, // rows + 0xb6: 0x44e07, // listing + 0xb7: 0x49c06, // output + 0xb9: 0x3310b, // contextmenu + 0xbb: 0x11f03, // low + 0xbc: 0x1c602, // rp + 0xbd: 0x5bb09, // onsuspend + 0xbe: 0x13606, // button + 0xbf: 0x4db04, // desc + 0xc1: 0x4e207, // section + 0xc2: 0x52a0a, // onprogress + 0xc3: 0x59e09, // onstorage + 0xc4: 0x2d204, // math + 0xc5: 0x4503, // alt + 0xc7: 0x8a02, // ul + 0xc8: 0x5107, // pattern + 0xc9: 0x4b60c, // onmousewheel + 0xca: 0x35709, // ondragend + 0xcb: 0xaf04, // ruby + 0xcc: 0xc01, // p + 0xcd: 0x31707, // onclose + 0xce: 0x24205, // meter + 0xcf: 0x11807, // bgsound + 0xd2: 0x25106, // height + 0xd4: 0x101, // b + 0xd5: 0x2c308, // itemtype + 0xd8: 0x1bb07, // caption + 0xd9: 0x10c08, // disabled + 0xdb: 0x33808, // menuitem + 0xdc: 0x62003, // svg + 0xdd: 0x18f05, // small + 0xde: 0x44a04, // data + 0xe0: 0x4cb08, // ononline + 0xe1: 0x2a206, // mglyph + 0xe3: 0x6505, // embed + 0xe4: 0x10502, // tr + 0xe5: 0x46b0b, // onloadstart + 0xe7: 0x3c306, // srcdoc + 0xeb: 0x5c408, // ontoggle + 0xed: 0xe703, // bdo + 0xee: 0x4702, // td + 0xef: 0x8305, // aside + 0xf0: 0x29402, // h2 + 0xf1: 0x52c08, // progress + 0xf2: 0x12c0a, // blockquote + 0xf4: 0xf005, // label + 0xf5: 0x601, // i + 0xf7: 0x9207, // rowspan + 0xfb: 0x51709, // onplaying + 0xfd: 0x2a103, // img + 0xfe: 0xf608, // optgroup + 0xff: 0x42307, // content + 0x101: 0x53e0c, // onratechange + 0x103: 0x3da0c, // onhashchange + 0x104: 0x4807, // details + 0x106: 0x40008, // download + 0x109: 0x14009, // translate + 0x10b: 0x4230f, // contenteditable + 0x10d: 0x36b0b, // ondragleave + 0x10e: 0x2106, // accept + 0x10f: 0x57a08, // selected + 0x112: 0x1f20a, // formaction + 0x113: 0x5b506, // center + 0x115: 0x45510, // onloadedmetadata + 0x116: 0x12804, // link + 0x117: 0xdd04, // time + 0x118: 0x19f0b, // crossorigin + 0x119: 0x3bd07, // onfocus + 0x11a: 0x58704, // wrap + 0x11b: 0x42204, // icon + 0x11d: 0x28105, // video + 0x11e: 0x4de05, // class + 0x121: 0x5d40e, // onvolumechange + 0x122: 0xaa06, // onblur + 0x123: 0x2b909, // itemscope + 0x124: 0x61105, // style + 0x127: 0x41e06, // public + 0x129: 0x2320e, // formnovalidate + 0x12a: 0x58206, // onshow + 0x12c: 0x51706, // onplay + 0x12d: 0x3c804, // cite + 0x12e: 0x2bc02, // ms + 0x12f: 0xdb0c, // ontimeupdate + 0x130: 0x10904, // kind + 0x131: 0x2470a, // formtarget + 0x135: 0x3af07, // onended + 0x136: 0x26506, // hidden + 0x137: 0x2c01, // s + 0x139: 0x2280a, // formmethod + 0x13a: 0x3e805, // input + 0x13c: 0x50b02, // h6 + 0x13d: 0xc902, // ol + 0x13e: 0x3420b, // oncuechange + 0x13f: 0x1e50d, // foreignobject + 0x143: 0x4e70e, // onbeforeunload + 0x144: 0x2bd05, // scope + 0x145: 0x39609, // onemptied + 0x146: 0x14b05, // defer + 0x147: 0xc103, // xmp + 0x148: 0x39f10, // ondurationchange + 0x149: 0x1903, // kbd + 0x14c: 0x47609, // onmessage + 0x14d: 0x60006, // option + 0x14e: 0x2eb09, // minlength + 0x14f: 0x32807, // checked + 0x150: 0xce08, // autoplay + 0x152: 0x202, // br + 0x153: 0x2360a, // novalidate + 0x156: 0x6307, // noembed + 0x159: 0x31007, // onclick + 0x15a: 0x47f0b, // onmousedown + 0x15b: 0x3a708, // onchange + 0x15e: 0x3f209, // oninvalid + 0x15f: 0x2bd06, // scoped + 0x160: 0x18808, // controls + 0x161: 0x30b05, // muted + 0x162: 0x58d08, // sortable + 0x163: 0x51106, // usemap + 0x164: 0x1b80a, // figcaption + 0x165: 0x35706, // ondrag + 0x166: 0x26b04, // high + 0x168: 0x3c303, // src + 0x169: 0x15706, // poster + 0x16b: 0x1670e, // annotation-xml + 0x16c: 0x5f704, // step + 0x16d: 0x4, // abbr + 0x16e: 0x1b06, // dialog + 0x170: 0x1202, // li + 0x172: 0x3ed02, // mo + 0x175: 0x1d803, // for + 0x176: 0x1a803, // ins + 0x178: 0x55504, // size + 0x179: 0x43210, // onlanguagechange + 0x17a: 0x8607, // default + 0x17b: 0x1a03, // bdi + 0x17c: 0x4d30a, // onpagehide + 0x17d: 0x6907, // dirname + 0x17e: 0x21404, // type + 0x17f: 0x1f204, // form + 0x181: 0x28509, // oncanplay + 0x182: 0x6103, // dfn + 0x183: 0x46308, // tabindex + 0x186: 0x6502, // em + 0x187: 0x27404, // lang + 0x189: 0x39108, // dropzone + 0x18a: 0x4080a, // onkeypress + 0x18b: 0x23c08, // datetime + 0x18c: 0x16204, // cols + 0x18d: 0x1, // a + 0x18e: 0x4420c, // onloadeddata + 0x190: 0xa605, // audio + 0x192: 0x2e05, // tbody + 0x193: 0x22c06, // method + 0x195: 0xf404, // loop + 0x196: 0x29606, // iframe + 0x198: 0x2d504, // head + 0x19e: 0x5f108, // manifest + 0x19f: 0xb309, // autofocus + 0x1a0: 0x14904, // code + 0x1a1: 0x55906, // strong + 0x1a2: 0x30308, // multiple + 0x1a3: 0xc05, // param + 0x1a6: 0x21107, // enctype + 0x1a7: 0x5b304, // face + 0x1a8: 0xfd09, // plaintext + 0x1a9: 0x26e02, // h1 + 0x1aa: 0x59509, // onstalled + 0x1ad: 0x3d406, // script + 0x1ae: 0x2db06, // spacer + 0x1af: 0x55108, // onresize + 0x1b0: 0x4a20b, // onmouseover + 0x1b1: 0x5cc08, // onunload + 0x1b2: 0x56708, // onseeked + 0x1b4: 0x2140d, // typemustmatch + 0x1b5: 0x1cc06, // figure + 0x1b6: 0x4950a, // onmouseout + 0x1b7: 0x25e03, // pre + 0x1b8: 0x50705, // width + 0x1b9: 0x19906, // sorted + 0x1bb: 0x5704, // nobr + 0x1be: 0x5302, // tt + 0x1bf: 0x1105, // align + 0x1c0: 0x3e607, // oninput + 0x1c3: 0x41807, // onkeyup + 0x1c6: 0x1c00c, // onafterprint + 0x1c7: 0x210e, // accept-charset + 0x1c8: 0x33c06, // itemid + 0x1c9: 0x3e809, // inputmode + 0x1cb: 0x53306, // strike + 0x1cc: 0x5a903, // sub + 0x1cd: 0x10505, // track + 0x1ce: 0x38605, // start + 0x1d0: 0xd608, // basefont + 0x1d6: 0x1aa06, // source + 0x1d7: 0x18206, // legend + 0x1d8: 0x2d405, // thead + 0x1da: 0x8c05, // tfoot + 0x1dd: 0x1ec06, // object + 0x1de: 0x6e05, // media + 0x1df: 0x1670a, // annotation + 0x1e0: 0x20d0b, // formenctype + 0x1e2: 0x3d208, // noscript + 0x1e4: 0x55505, // sizes + 0x1e5: 0x1fc0c, // autocomplete + 0x1e6: 0x9504, // span + 0x1e7: 0x9808, // noframes + 0x1e8: 0x24b06, // target + 0x1e9: 0x38f06, // ondrop + 0x1ea: 0x2b306, // applet + 0x1ec: 0x5a08, // reversed + 0x1f0: 0x2a907, // isindex + 0x1f3: 0x27008, // hreflang + 0x1f5: 0x2f302, // h5 + 0x1f6: 0x4f307, // address + 0x1fa: 0x2e103, // max + 0x1fb: 0xc30b, // placeholder + 0x1fc: 0x2f608, // textarea + 0x1fe: 0x4ad09, // onmouseup + 0x1ff: 0x3800b, // ondragstart +} + +const atomText = "abbradiogrouparamalignmarkbdialogaccept-charsetbodyaccesskey" + + "genavaluealtdetailsampatternobreversedfnoembedirnamediagroup" + + "ingasyncanvasidefaultfooterowspanoframesetitleaudionblurubya" + + "utofocusandboxmplaceholderautoplaybasefontimeupdatebdoncance" + + "labelooptgrouplaintextrackindisabledivarbgsoundlowbrbigblink" + + "blockquotebuttonabortranslatecodefercolgroupostercolorcolspa" + + "nnotation-xmlcommandraggablegendcontrolsmallcoordsortedcross" + + "originsourcefieldsetfigcaptionafterprintfigurequiredforeignO" + + "bjectforeignobjectformactionautocompleteerrorformenctypemust" + + "matchallengeformmethodformnovalidatetimeterformtargetheightm" + + "lhgroupreloadhiddenhigh1hreflanghttp-equivideoncanplaythroug" + + "h2iframeimageimglyph3isindexismappletitemscopeditemtypemarqu" + + "eematheaderspacermaxlength4minlength5mtextareadonlymultiplem" + + "utedonclickoncloseamlesspellcheckedoncontextmenuitemidoncuec" + + "hangeondblclickondragendondragenterondragleaveondragoverondr" + + "agstarticleondropzonemptiedondurationchangeonendedonerroronf" + + "ocusrcdocitempropenoscriptonhashchangeoninputmodeloninvalido" + + "nkeydownloadonkeypressrclangonkeyupublicontenteditableonlang" + + "uagechangeonloadeddatalistingonloadedmetadatabindexonloadsta" + + "rtonmessageonmousedownonmousemoveonmouseoutputonmouseoveronm" + + "ouseuponmousewheelonofflineononlineonpagehidesclassectionbef" + + "oreunloaddresshapeonpageshowidth6onpausemaponplayingonpopsta" + + "teonprogresstrikeytypeonratechangeonresetonresizestrongonscr" + + "ollonseekedonseekingonselectedonshowraponsortableonstalledon" + + "storageonsubmitemrefacenteronsuspendontoggleonunloadonvolume" + + "changeonwaitingoptimumanifestepromptoptionbeforeprintstylesu" + + "mmarysupsvgsystemplate" diff --git a/vendor/golang.org/x/net/html/const.go b/vendor/golang.org/x/net/html/const.go new file mode 100644 index 00000000..52f651ff --- /dev/null +++ b/vendor/golang.org/x/net/html/const.go @@ -0,0 +1,102 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +// Section 12.2.3.2 of the HTML5 specification says "The following elements +// have varying levels of special parsing rules". +// https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements +var isSpecialElementMap = map[string]bool{ + "address": true, + "applet": true, + "area": true, + "article": true, + "aside": true, + "base": true, + "basefont": true, + "bgsound": true, + "blockquote": true, + "body": true, + "br": true, + "button": true, + "caption": true, + "center": true, + "col": true, + "colgroup": true, + "dd": true, + "details": true, + "dir": true, + "div": true, + "dl": true, + "dt": true, + "embed": true, + "fieldset": true, + "figcaption": true, + "figure": true, + "footer": true, + "form": true, + "frame": true, + "frameset": true, + "h1": true, + "h2": true, + "h3": true, + "h4": true, + "h5": true, + "h6": true, + "head": true, + "header": true, + "hgroup": true, + "hr": true, + "html": true, + "iframe": true, + "img": true, + "input": true, + "isindex": true, + "li": true, + "link": true, + "listing": true, + "marquee": true, + "menu": true, + "meta": true, + "nav": true, + "noembed": true, + "noframes": true, + "noscript": true, + "object": true, + "ol": true, + "p": true, + "param": true, + "plaintext": true, + "pre": true, + "script": true, + "section": true, + "select": true, + "source": true, + "style": true, + "summary": true, + "table": true, + "tbody": true, + "td": true, + "template": true, + "textarea": true, + "tfoot": true, + "th": true, + "thead": true, + "title": true, + "tr": true, + "track": true, + "ul": true, + "wbr": true, + "xmp": true, +} + +func isSpecialElement(element *Node) bool { + switch element.Namespace { + case "", "html": + return isSpecialElementMap[element.Data] + case "svg": + return element.Data == "foreignObject" + } + return false +} diff --git a/vendor/golang.org/x/net/html/doc.go b/vendor/golang.org/x/net/html/doc.go new file mode 100644 index 00000000..94f49687 --- /dev/null +++ b/vendor/golang.org/x/net/html/doc.go @@ -0,0 +1,106 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package html implements an HTML5-compliant tokenizer and parser. + +Tokenization is done by creating a Tokenizer for an io.Reader r. It is the +caller's responsibility to ensure that r provides UTF-8 encoded HTML. + + z := html.NewTokenizer(r) + +Given a Tokenizer z, the HTML is tokenized by repeatedly calling z.Next(), +which parses the next token and returns its type, or an error: + + for { + tt := z.Next() + if tt == html.ErrorToken { + // ... + return ... + } + // Process the current token. + } + +There are two APIs for retrieving the current token. The high-level API is to +call Token; the low-level API is to call Text or TagName / TagAttr. Both APIs +allow optionally calling Raw after Next but before Token, Text, TagName, or +TagAttr. In EBNF notation, the valid call sequence per token is: + + Next {Raw} [ Token | Text | TagName {TagAttr} ] + +Token returns an independent data structure that completely describes a token. +Entities (such as "<") are unescaped, tag names and attribute keys are +lower-cased, and attributes are collected into a []Attribute. For example: + + for { + if z.Next() == html.ErrorToken { + // Returning io.EOF indicates success. + return z.Err() + } + emitToken(z.Token()) + } + +The low-level API performs fewer allocations and copies, but the contents of +the []byte values returned by Text, TagName and TagAttr may change on the next +call to Next. For example, to extract an HTML page's anchor text: + + depth := 0 + for { + tt := z.Next() + switch tt { + case ErrorToken: + return z.Err() + case TextToken: + if depth > 0 { + // emitBytes should copy the []byte it receives, + // if it doesn't process it immediately. + emitBytes(z.Text()) + } + case StartTagToken, EndTagToken: + tn, _ := z.TagName() + if len(tn) == 1 && tn[0] == 'a' { + if tt == StartTagToken { + depth++ + } else { + depth-- + } + } + } + } + +Parsing is done by calling Parse with an io.Reader, which returns the root of +the parse tree (the document element) as a *Node. It is the caller's +responsibility to ensure that the Reader provides UTF-8 encoded HTML. For +example, to process each anchor node in depth-first order: + + doc, err := html.Parse(r) + if err != nil { + // ... + } + var f func(*html.Node) + f = func(n *html.Node) { + if n.Type == html.ElementNode && n.Data == "a" { + // Do something with n... + } + for c := n.FirstChild; c != nil; c = c.NextSibling { + f(c) + } + } + f(doc) + +The relevant specifications include: +https://html.spec.whatwg.org/multipage/syntax.html and +https://html.spec.whatwg.org/multipage/syntax.html#tokenization +*/ +package html // import "golang.org/x/net/html" + +// The tokenization algorithm implemented by this package is not a line-by-line +// transliteration of the relatively verbose state-machine in the WHATWG +// specification. A more direct approach is used instead, where the program +// counter implies the state, such as whether it is tokenizing a tag or a text +// node. Specification compliance is verified by checking expected and actual +// outputs over a test suite rather than aiming for algorithmic fidelity. + +// TODO(nigeltao): Does a DOM API belong in this package or a separate one? +// TODO(nigeltao): How does parsing interact with a JavaScript engine? diff --git a/vendor/golang.org/x/net/html/doctype.go b/vendor/golang.org/x/net/html/doctype.go new file mode 100644 index 00000000..c484e5a9 --- /dev/null +++ b/vendor/golang.org/x/net/html/doctype.go @@ -0,0 +1,156 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "strings" +) + +// parseDoctype parses the data from a DoctypeToken into a name, +// public identifier, and system identifier. It returns a Node whose Type +// is DoctypeNode, whose Data is the name, and which has attributes +// named "system" and "public" for the two identifiers if they were present. +// quirks is whether the document should be parsed in "quirks mode". +func parseDoctype(s string) (n *Node, quirks bool) { + n = &Node{Type: DoctypeNode} + + // Find the name. + space := strings.IndexAny(s, whitespace) + if space == -1 { + space = len(s) + } + n.Data = s[:space] + // The comparison to "html" is case-sensitive. + if n.Data != "html" { + quirks = true + } + n.Data = strings.ToLower(n.Data) + s = strings.TrimLeft(s[space:], whitespace) + + if len(s) < 6 { + // It can't start with "PUBLIC" or "SYSTEM". + // Ignore the rest of the string. + return n, quirks || s != "" + } + + key := strings.ToLower(s[:6]) + s = s[6:] + for key == "public" || key == "system" { + s = strings.TrimLeft(s, whitespace) + if s == "" { + break + } + quote := s[0] + if quote != '"' && quote != '\'' { + break + } + s = s[1:] + q := strings.IndexRune(s, rune(quote)) + var id string + if q == -1 { + id = s + s = "" + } else { + id = s[:q] + s = s[q+1:] + } + n.Attr = append(n.Attr, Attribute{Key: key, Val: id}) + if key == "public" { + key = "system" + } else { + key = "" + } + } + + if key != "" || s != "" { + quirks = true + } else if len(n.Attr) > 0 { + if n.Attr[0].Key == "public" { + public := strings.ToLower(n.Attr[0].Val) + switch public { + case "-//w3o//dtd w3 html strict 3.0//en//", "-/w3d/dtd html 4.0 transitional/en", "html": + quirks = true + default: + for _, q := range quirkyIDs { + if strings.HasPrefix(public, q) { + quirks = true + break + } + } + } + // The following two public IDs only cause quirks mode if there is no system ID. + if len(n.Attr) == 1 && (strings.HasPrefix(public, "-//w3c//dtd html 4.01 frameset//") || + strings.HasPrefix(public, "-//w3c//dtd html 4.01 transitional//")) { + quirks = true + } + } + if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" && + strings.ToLower(lastAttr.Val) == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" { + quirks = true + } + } + + return n, quirks +} + +// quirkyIDs is a list of public doctype identifiers that cause a document +// to be interpreted in quirks mode. The identifiers should be in lower case. +var quirkyIDs = []string{ + "+//silmaril//dtd html pro v0r11 19970101//", + "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", + "-//as//dtd html 3.0 aswedit + extensions//", + "-//ietf//dtd html 2.0 level 1//", + "-//ietf//dtd html 2.0 level 2//", + "-//ietf//dtd html 2.0 strict level 1//", + "-//ietf//dtd html 2.0 strict level 2//", + "-//ietf//dtd html 2.0 strict//", + "-//ietf//dtd html 2.0//", + "-//ietf//dtd html 2.1e//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.2 final//", + "-//ietf//dtd html 3.2//", + "-//ietf//dtd html 3//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html//", + "-//metrius//dtd metrius presentational//", + "-//microsoft//dtd internet explorer 2.0 html strict//", + "-//microsoft//dtd internet explorer 2.0 html//", + "-//microsoft//dtd internet explorer 2.0 tables//", + "-//microsoft//dtd internet explorer 3.0 html strict//", + "-//microsoft//dtd internet explorer 3.0 html//", + "-//microsoft//dtd internet explorer 3.0 tables//", + "-//netscape comm. corp.//dtd html//", + "-//netscape comm. corp.//dtd strict html//", + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", + "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", + "-//spyglass//dtd html 2.0 extended//", + "-//sq//dtd html 2.0 hotmetal + extensions//", + "-//sun microsystems corp.//dtd hotjava html//", + "-//sun microsystems corp.//dtd hotjava strict html//", + "-//w3c//dtd html 3 1995-03-24//", + "-//w3c//dtd html 3.2 draft//", + "-//w3c//dtd html 3.2 final//", + "-//w3c//dtd html 3.2//", + "-//w3c//dtd html 3.2s draft//", + "-//w3c//dtd html 4.0 frameset//", + "-//w3c//dtd html 4.0 transitional//", + "-//w3c//dtd html experimental 19960712//", + "-//w3c//dtd html experimental 970421//", + "-//w3c//dtd w3 html//", + "-//w3o//dtd w3 html 3.0//", + "-//webtechs//dtd mozilla html 2.0//", + "-//webtechs//dtd mozilla html//", +} diff --git a/vendor/golang.org/x/net/html/entity.go b/vendor/golang.org/x/net/html/entity.go new file mode 100644 index 00000000..a50c04c6 --- /dev/null +++ b/vendor/golang.org/x/net/html/entity.go @@ -0,0 +1,2253 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +// All entities that do not end with ';' are 6 or fewer bytes long. +const longestEntityWithoutSemicolon = 6 + +// entity is a map from HTML entity names to their values. The semicolon matters: +// https://html.spec.whatwg.org/multipage/syntax.html#named-character-references +// lists both "amp" and "amp;" as two separate entries. +// +// Note that the HTML5 list is larger than the HTML4 list at +// http://www.w3.org/TR/html4/sgml/entities.html +var entity = map[string]rune{ + "AElig;": '\U000000C6', + "AMP;": '\U00000026', + "Aacute;": '\U000000C1', + "Abreve;": '\U00000102', + "Acirc;": '\U000000C2', + "Acy;": '\U00000410', + "Afr;": '\U0001D504', + "Agrave;": '\U000000C0', + "Alpha;": '\U00000391', + "Amacr;": '\U00000100', + "And;": '\U00002A53', + "Aogon;": '\U00000104', + "Aopf;": '\U0001D538', + "ApplyFunction;": '\U00002061', + "Aring;": '\U000000C5', + "Ascr;": '\U0001D49C', + "Assign;": '\U00002254', + "Atilde;": '\U000000C3', + "Auml;": '\U000000C4', + "Backslash;": '\U00002216', + "Barv;": '\U00002AE7', + "Barwed;": '\U00002306', + "Bcy;": '\U00000411', + "Because;": '\U00002235', + "Bernoullis;": '\U0000212C', + "Beta;": '\U00000392', + "Bfr;": '\U0001D505', + "Bopf;": '\U0001D539', + "Breve;": '\U000002D8', + "Bscr;": '\U0000212C', + "Bumpeq;": '\U0000224E', + "CHcy;": '\U00000427', + "COPY;": '\U000000A9', + "Cacute;": '\U00000106', + "Cap;": '\U000022D2', + "CapitalDifferentialD;": '\U00002145', + "Cayleys;": '\U0000212D', + "Ccaron;": '\U0000010C', + "Ccedil;": '\U000000C7', + "Ccirc;": '\U00000108', + "Cconint;": '\U00002230', + "Cdot;": '\U0000010A', + "Cedilla;": '\U000000B8', + "CenterDot;": '\U000000B7', + "Cfr;": '\U0000212D', + "Chi;": '\U000003A7', + "CircleDot;": '\U00002299', + "CircleMinus;": '\U00002296', + "CirclePlus;": '\U00002295', + "CircleTimes;": '\U00002297', + "ClockwiseContourIntegral;": '\U00002232', + "CloseCurlyDoubleQuote;": '\U0000201D', + "CloseCurlyQuote;": '\U00002019', + "Colon;": '\U00002237', + "Colone;": '\U00002A74', + "Congruent;": '\U00002261', + "Conint;": '\U0000222F', + "ContourIntegral;": '\U0000222E', + "Copf;": '\U00002102', + "Coproduct;": '\U00002210', + "CounterClockwiseContourIntegral;": '\U00002233', + "Cross;": '\U00002A2F', + "Cscr;": '\U0001D49E', + "Cup;": '\U000022D3', + "CupCap;": '\U0000224D', + "DD;": '\U00002145', + "DDotrahd;": '\U00002911', + "DJcy;": '\U00000402', + "DScy;": '\U00000405', + "DZcy;": '\U0000040F', + "Dagger;": '\U00002021', + "Darr;": '\U000021A1', + "Dashv;": '\U00002AE4', + "Dcaron;": '\U0000010E', + "Dcy;": '\U00000414', + "Del;": '\U00002207', + "Delta;": '\U00000394', + "Dfr;": '\U0001D507', + "DiacriticalAcute;": '\U000000B4', + "DiacriticalDot;": '\U000002D9', + "DiacriticalDoubleAcute;": '\U000002DD', + "DiacriticalGrave;": '\U00000060', + "DiacriticalTilde;": '\U000002DC', + "Diamond;": '\U000022C4', + "DifferentialD;": '\U00002146', + "Dopf;": '\U0001D53B', + "Dot;": '\U000000A8', + "DotDot;": '\U000020DC', + "DotEqual;": '\U00002250', + "DoubleContourIntegral;": '\U0000222F', + "DoubleDot;": '\U000000A8', + "DoubleDownArrow;": '\U000021D3', + "DoubleLeftArrow;": '\U000021D0', + "DoubleLeftRightArrow;": '\U000021D4', + "DoubleLeftTee;": '\U00002AE4', + "DoubleLongLeftArrow;": '\U000027F8', + "DoubleLongLeftRightArrow;": '\U000027FA', + "DoubleLongRightArrow;": '\U000027F9', + "DoubleRightArrow;": '\U000021D2', + "DoubleRightTee;": '\U000022A8', + "DoubleUpArrow;": '\U000021D1', + "DoubleUpDownArrow;": '\U000021D5', + "DoubleVerticalBar;": '\U00002225', + "DownArrow;": '\U00002193', + "DownArrowBar;": '\U00002913', + "DownArrowUpArrow;": '\U000021F5', + "DownBreve;": '\U00000311', + "DownLeftRightVector;": '\U00002950', + "DownLeftTeeVector;": '\U0000295E', + "DownLeftVector;": '\U000021BD', + "DownLeftVectorBar;": '\U00002956', + "DownRightTeeVector;": '\U0000295F', + "DownRightVector;": '\U000021C1', + "DownRightVectorBar;": '\U00002957', + "DownTee;": '\U000022A4', + "DownTeeArrow;": '\U000021A7', + "Downarrow;": '\U000021D3', + "Dscr;": '\U0001D49F', + "Dstrok;": '\U00000110', + "ENG;": '\U0000014A', + "ETH;": '\U000000D0', + "Eacute;": '\U000000C9', + "Ecaron;": '\U0000011A', + "Ecirc;": '\U000000CA', + "Ecy;": '\U0000042D', + "Edot;": '\U00000116', + "Efr;": '\U0001D508', + "Egrave;": '\U000000C8', + "Element;": '\U00002208', + "Emacr;": '\U00000112', + "EmptySmallSquare;": '\U000025FB', + "EmptyVerySmallSquare;": '\U000025AB', + "Eogon;": '\U00000118', + "Eopf;": '\U0001D53C', + "Epsilon;": '\U00000395', + "Equal;": '\U00002A75', + "EqualTilde;": '\U00002242', + "Equilibrium;": '\U000021CC', + "Escr;": '\U00002130', + "Esim;": '\U00002A73', + "Eta;": '\U00000397', + "Euml;": '\U000000CB', + "Exists;": '\U00002203', + "ExponentialE;": '\U00002147', + "Fcy;": '\U00000424', + "Ffr;": '\U0001D509', + "FilledSmallSquare;": '\U000025FC', + "FilledVerySmallSquare;": '\U000025AA', + "Fopf;": '\U0001D53D', + "ForAll;": '\U00002200', + "Fouriertrf;": '\U00002131', + "Fscr;": '\U00002131', + "GJcy;": '\U00000403', + "GT;": '\U0000003E', + "Gamma;": '\U00000393', + "Gammad;": '\U000003DC', + "Gbreve;": '\U0000011E', + "Gcedil;": '\U00000122', + "Gcirc;": '\U0000011C', + "Gcy;": '\U00000413', + "Gdot;": '\U00000120', + "Gfr;": '\U0001D50A', + "Gg;": '\U000022D9', + "Gopf;": '\U0001D53E', + "GreaterEqual;": '\U00002265', + "GreaterEqualLess;": '\U000022DB', + "GreaterFullEqual;": '\U00002267', + "GreaterGreater;": '\U00002AA2', + "GreaterLess;": '\U00002277', + "GreaterSlantEqual;": '\U00002A7E', + "GreaterTilde;": '\U00002273', + "Gscr;": '\U0001D4A2', + "Gt;": '\U0000226B', + "HARDcy;": '\U0000042A', + "Hacek;": '\U000002C7', + "Hat;": '\U0000005E', + "Hcirc;": '\U00000124', + "Hfr;": '\U0000210C', + "HilbertSpace;": '\U0000210B', + "Hopf;": '\U0000210D', + "HorizontalLine;": '\U00002500', + "Hscr;": '\U0000210B', + "Hstrok;": '\U00000126', + "HumpDownHump;": '\U0000224E', + "HumpEqual;": '\U0000224F', + "IEcy;": '\U00000415', + "IJlig;": '\U00000132', + "IOcy;": '\U00000401', + "Iacute;": '\U000000CD', + "Icirc;": '\U000000CE', + "Icy;": '\U00000418', + "Idot;": '\U00000130', + "Ifr;": '\U00002111', + "Igrave;": '\U000000CC', + "Im;": '\U00002111', + "Imacr;": '\U0000012A', + "ImaginaryI;": '\U00002148', + "Implies;": '\U000021D2', + "Int;": '\U0000222C', + "Integral;": '\U0000222B', + "Intersection;": '\U000022C2', + "InvisibleComma;": '\U00002063', + "InvisibleTimes;": '\U00002062', + "Iogon;": '\U0000012E', + "Iopf;": '\U0001D540', + "Iota;": '\U00000399', + "Iscr;": '\U00002110', + "Itilde;": '\U00000128', + "Iukcy;": '\U00000406', + "Iuml;": '\U000000CF', + "Jcirc;": '\U00000134', + "Jcy;": '\U00000419', + "Jfr;": '\U0001D50D', + "Jopf;": '\U0001D541', + "Jscr;": '\U0001D4A5', + "Jsercy;": '\U00000408', + "Jukcy;": '\U00000404', + "KHcy;": '\U00000425', + "KJcy;": '\U0000040C', + "Kappa;": '\U0000039A', + "Kcedil;": '\U00000136', + "Kcy;": '\U0000041A', + "Kfr;": '\U0001D50E', + "Kopf;": '\U0001D542', + "Kscr;": '\U0001D4A6', + "LJcy;": '\U00000409', + "LT;": '\U0000003C', + "Lacute;": '\U00000139', + "Lambda;": '\U0000039B', + "Lang;": '\U000027EA', + "Laplacetrf;": '\U00002112', + "Larr;": '\U0000219E', + "Lcaron;": '\U0000013D', + "Lcedil;": '\U0000013B', + "Lcy;": '\U0000041B', + "LeftAngleBracket;": '\U000027E8', + "LeftArrow;": '\U00002190', + "LeftArrowBar;": '\U000021E4', + "LeftArrowRightArrow;": '\U000021C6', + "LeftCeiling;": '\U00002308', + "LeftDoubleBracket;": '\U000027E6', + "LeftDownTeeVector;": '\U00002961', + "LeftDownVector;": '\U000021C3', + "LeftDownVectorBar;": '\U00002959', + "LeftFloor;": '\U0000230A', + "LeftRightArrow;": '\U00002194', + "LeftRightVector;": '\U0000294E', + "LeftTee;": '\U000022A3', + "LeftTeeArrow;": '\U000021A4', + "LeftTeeVector;": '\U0000295A', + "LeftTriangle;": '\U000022B2', + "LeftTriangleBar;": '\U000029CF', + "LeftTriangleEqual;": '\U000022B4', + "LeftUpDownVector;": '\U00002951', + "LeftUpTeeVector;": '\U00002960', + "LeftUpVector;": '\U000021BF', + "LeftUpVectorBar;": '\U00002958', + "LeftVector;": '\U000021BC', + "LeftVectorBar;": '\U00002952', + "Leftarrow;": '\U000021D0', + "Leftrightarrow;": '\U000021D4', + "LessEqualGreater;": '\U000022DA', + "LessFullEqual;": '\U00002266', + "LessGreater;": '\U00002276', + "LessLess;": '\U00002AA1', + "LessSlantEqual;": '\U00002A7D', + "LessTilde;": '\U00002272', + "Lfr;": '\U0001D50F', + "Ll;": '\U000022D8', + "Lleftarrow;": '\U000021DA', + "Lmidot;": '\U0000013F', + "LongLeftArrow;": '\U000027F5', + "LongLeftRightArrow;": '\U000027F7', + "LongRightArrow;": '\U000027F6', + "Longleftarrow;": '\U000027F8', + "Longleftrightarrow;": '\U000027FA', + "Longrightarrow;": '\U000027F9', + "Lopf;": '\U0001D543', + "LowerLeftArrow;": '\U00002199', + "LowerRightArrow;": '\U00002198', + "Lscr;": '\U00002112', + "Lsh;": '\U000021B0', + "Lstrok;": '\U00000141', + "Lt;": '\U0000226A', + "Map;": '\U00002905', + "Mcy;": '\U0000041C', + "MediumSpace;": '\U0000205F', + "Mellintrf;": '\U00002133', + "Mfr;": '\U0001D510', + "MinusPlus;": '\U00002213', + "Mopf;": '\U0001D544', + "Mscr;": '\U00002133', + "Mu;": '\U0000039C', + "NJcy;": '\U0000040A', + "Nacute;": '\U00000143', + "Ncaron;": '\U00000147', + "Ncedil;": '\U00000145', + "Ncy;": '\U0000041D', + "NegativeMediumSpace;": '\U0000200B', + "NegativeThickSpace;": '\U0000200B', + "NegativeThinSpace;": '\U0000200B', + "NegativeVeryThinSpace;": '\U0000200B', + "NestedGreaterGreater;": '\U0000226B', + "NestedLessLess;": '\U0000226A', + "NewLine;": '\U0000000A', + "Nfr;": '\U0001D511', + "NoBreak;": '\U00002060', + "NonBreakingSpace;": '\U000000A0', + "Nopf;": '\U00002115', + "Not;": '\U00002AEC', + "NotCongruent;": '\U00002262', + "NotCupCap;": '\U0000226D', + "NotDoubleVerticalBar;": '\U00002226', + "NotElement;": '\U00002209', + "NotEqual;": '\U00002260', + "NotExists;": '\U00002204', + "NotGreater;": '\U0000226F', + "NotGreaterEqual;": '\U00002271', + "NotGreaterLess;": '\U00002279', + "NotGreaterTilde;": '\U00002275', + "NotLeftTriangle;": '\U000022EA', + "NotLeftTriangleEqual;": '\U000022EC', + "NotLess;": '\U0000226E', + "NotLessEqual;": '\U00002270', + "NotLessGreater;": '\U00002278', + "NotLessTilde;": '\U00002274', + "NotPrecedes;": '\U00002280', + "NotPrecedesSlantEqual;": '\U000022E0', + "NotReverseElement;": '\U0000220C', + "NotRightTriangle;": '\U000022EB', + "NotRightTriangleEqual;": '\U000022ED', + "NotSquareSubsetEqual;": '\U000022E2', + "NotSquareSupersetEqual;": '\U000022E3', + "NotSubsetEqual;": '\U00002288', + "NotSucceeds;": '\U00002281', + "NotSucceedsSlantEqual;": '\U000022E1', + "NotSupersetEqual;": '\U00002289', + "NotTilde;": '\U00002241', + "NotTildeEqual;": '\U00002244', + "NotTildeFullEqual;": '\U00002247', + "NotTildeTilde;": '\U00002249', + "NotVerticalBar;": '\U00002224', + "Nscr;": '\U0001D4A9', + "Ntilde;": '\U000000D1', + "Nu;": '\U0000039D', + "OElig;": '\U00000152', + "Oacute;": '\U000000D3', + "Ocirc;": '\U000000D4', + "Ocy;": '\U0000041E', + "Odblac;": '\U00000150', + "Ofr;": '\U0001D512', + "Ograve;": '\U000000D2', + "Omacr;": '\U0000014C', + "Omega;": '\U000003A9', + "Omicron;": '\U0000039F', + "Oopf;": '\U0001D546', + "OpenCurlyDoubleQuote;": '\U0000201C', + "OpenCurlyQuote;": '\U00002018', + "Or;": '\U00002A54', + "Oscr;": '\U0001D4AA', + "Oslash;": '\U000000D8', + "Otilde;": '\U000000D5', + "Otimes;": '\U00002A37', + "Ouml;": '\U000000D6', + "OverBar;": '\U0000203E', + "OverBrace;": '\U000023DE', + "OverBracket;": '\U000023B4', + "OverParenthesis;": '\U000023DC', + "PartialD;": '\U00002202', + "Pcy;": '\U0000041F', + "Pfr;": '\U0001D513', + "Phi;": '\U000003A6', + "Pi;": '\U000003A0', + "PlusMinus;": '\U000000B1', + "Poincareplane;": '\U0000210C', + "Popf;": '\U00002119', + "Pr;": '\U00002ABB', + "Precedes;": '\U0000227A', + "PrecedesEqual;": '\U00002AAF', + "PrecedesSlantEqual;": '\U0000227C', + "PrecedesTilde;": '\U0000227E', + "Prime;": '\U00002033', + "Product;": '\U0000220F', + "Proportion;": '\U00002237', + "Proportional;": '\U0000221D', + "Pscr;": '\U0001D4AB', + "Psi;": '\U000003A8', + "QUOT;": '\U00000022', + "Qfr;": '\U0001D514', + "Qopf;": '\U0000211A', + "Qscr;": '\U0001D4AC', + "RBarr;": '\U00002910', + "REG;": '\U000000AE', + "Racute;": '\U00000154', + "Rang;": '\U000027EB', + "Rarr;": '\U000021A0', + "Rarrtl;": '\U00002916', + "Rcaron;": '\U00000158', + "Rcedil;": '\U00000156', + "Rcy;": '\U00000420', + "Re;": '\U0000211C', + "ReverseElement;": '\U0000220B', + "ReverseEquilibrium;": '\U000021CB', + "ReverseUpEquilibrium;": '\U0000296F', + "Rfr;": '\U0000211C', + "Rho;": '\U000003A1', + "RightAngleBracket;": '\U000027E9', + "RightArrow;": '\U00002192', + "RightArrowBar;": '\U000021E5', + "RightArrowLeftArrow;": '\U000021C4', + "RightCeiling;": '\U00002309', + "RightDoubleBracket;": '\U000027E7', + "RightDownTeeVector;": '\U0000295D', + "RightDownVector;": '\U000021C2', + "RightDownVectorBar;": '\U00002955', + "RightFloor;": '\U0000230B', + "RightTee;": '\U000022A2', + "RightTeeArrow;": '\U000021A6', + "RightTeeVector;": '\U0000295B', + "RightTriangle;": '\U000022B3', + "RightTriangleBar;": '\U000029D0', + "RightTriangleEqual;": '\U000022B5', + "RightUpDownVector;": '\U0000294F', + "RightUpTeeVector;": '\U0000295C', + "RightUpVector;": '\U000021BE', + "RightUpVectorBar;": '\U00002954', + "RightVector;": '\U000021C0', + "RightVectorBar;": '\U00002953', + "Rightarrow;": '\U000021D2', + "Ropf;": '\U0000211D', + "RoundImplies;": '\U00002970', + "Rrightarrow;": '\U000021DB', + "Rscr;": '\U0000211B', + "Rsh;": '\U000021B1', + "RuleDelayed;": '\U000029F4', + "SHCHcy;": '\U00000429', + "SHcy;": '\U00000428', + "SOFTcy;": '\U0000042C', + "Sacute;": '\U0000015A', + "Sc;": '\U00002ABC', + "Scaron;": '\U00000160', + "Scedil;": '\U0000015E', + "Scirc;": '\U0000015C', + "Scy;": '\U00000421', + "Sfr;": '\U0001D516', + "ShortDownArrow;": '\U00002193', + "ShortLeftArrow;": '\U00002190', + "ShortRightArrow;": '\U00002192', + "ShortUpArrow;": '\U00002191', + "Sigma;": '\U000003A3', + "SmallCircle;": '\U00002218', + "Sopf;": '\U0001D54A', + "Sqrt;": '\U0000221A', + "Square;": '\U000025A1', + "SquareIntersection;": '\U00002293', + "SquareSubset;": '\U0000228F', + "SquareSubsetEqual;": '\U00002291', + "SquareSuperset;": '\U00002290', + "SquareSupersetEqual;": '\U00002292', + "SquareUnion;": '\U00002294', + "Sscr;": '\U0001D4AE', + "Star;": '\U000022C6', + "Sub;": '\U000022D0', + "Subset;": '\U000022D0', + "SubsetEqual;": '\U00002286', + "Succeeds;": '\U0000227B', + "SucceedsEqual;": '\U00002AB0', + "SucceedsSlantEqual;": '\U0000227D', + "SucceedsTilde;": '\U0000227F', + "SuchThat;": '\U0000220B', + "Sum;": '\U00002211', + "Sup;": '\U000022D1', + "Superset;": '\U00002283', + "SupersetEqual;": '\U00002287', + "Supset;": '\U000022D1', + "THORN;": '\U000000DE', + "TRADE;": '\U00002122', + "TSHcy;": '\U0000040B', + "TScy;": '\U00000426', + "Tab;": '\U00000009', + "Tau;": '\U000003A4', + "Tcaron;": '\U00000164', + "Tcedil;": '\U00000162', + "Tcy;": '\U00000422', + "Tfr;": '\U0001D517', + "Therefore;": '\U00002234', + "Theta;": '\U00000398', + "ThinSpace;": '\U00002009', + "Tilde;": '\U0000223C', + "TildeEqual;": '\U00002243', + "TildeFullEqual;": '\U00002245', + "TildeTilde;": '\U00002248', + "Topf;": '\U0001D54B', + "TripleDot;": '\U000020DB', + "Tscr;": '\U0001D4AF', + "Tstrok;": '\U00000166', + "Uacute;": '\U000000DA', + "Uarr;": '\U0000219F', + "Uarrocir;": '\U00002949', + "Ubrcy;": '\U0000040E', + "Ubreve;": '\U0000016C', + "Ucirc;": '\U000000DB', + "Ucy;": '\U00000423', + "Udblac;": '\U00000170', + "Ufr;": '\U0001D518', + "Ugrave;": '\U000000D9', + "Umacr;": '\U0000016A', + "UnderBar;": '\U0000005F', + "UnderBrace;": '\U000023DF', + "UnderBracket;": '\U000023B5', + "UnderParenthesis;": '\U000023DD', + "Union;": '\U000022C3', + "UnionPlus;": '\U0000228E', + "Uogon;": '\U00000172', + "Uopf;": '\U0001D54C', + "UpArrow;": '\U00002191', + "UpArrowBar;": '\U00002912', + "UpArrowDownArrow;": '\U000021C5', + "UpDownArrow;": '\U00002195', + "UpEquilibrium;": '\U0000296E', + "UpTee;": '\U000022A5', + "UpTeeArrow;": '\U000021A5', + "Uparrow;": '\U000021D1', + "Updownarrow;": '\U000021D5', + "UpperLeftArrow;": '\U00002196', + "UpperRightArrow;": '\U00002197', + "Upsi;": '\U000003D2', + "Upsilon;": '\U000003A5', + "Uring;": '\U0000016E', + "Uscr;": '\U0001D4B0', + "Utilde;": '\U00000168', + "Uuml;": '\U000000DC', + "VDash;": '\U000022AB', + "Vbar;": '\U00002AEB', + "Vcy;": '\U00000412', + "Vdash;": '\U000022A9', + "Vdashl;": '\U00002AE6', + "Vee;": '\U000022C1', + "Verbar;": '\U00002016', + "Vert;": '\U00002016', + "VerticalBar;": '\U00002223', + "VerticalLine;": '\U0000007C', + "VerticalSeparator;": '\U00002758', + "VerticalTilde;": '\U00002240', + "VeryThinSpace;": '\U0000200A', + "Vfr;": '\U0001D519', + "Vopf;": '\U0001D54D', + "Vscr;": '\U0001D4B1', + "Vvdash;": '\U000022AA', + "Wcirc;": '\U00000174', + "Wedge;": '\U000022C0', + "Wfr;": '\U0001D51A', + "Wopf;": '\U0001D54E', + "Wscr;": '\U0001D4B2', + "Xfr;": '\U0001D51B', + "Xi;": '\U0000039E', + "Xopf;": '\U0001D54F', + "Xscr;": '\U0001D4B3', + "YAcy;": '\U0000042F', + "YIcy;": '\U00000407', + "YUcy;": '\U0000042E', + "Yacute;": '\U000000DD', + "Ycirc;": '\U00000176', + "Ycy;": '\U0000042B', + "Yfr;": '\U0001D51C', + "Yopf;": '\U0001D550', + "Yscr;": '\U0001D4B4', + "Yuml;": '\U00000178', + "ZHcy;": '\U00000416', + "Zacute;": '\U00000179', + "Zcaron;": '\U0000017D', + "Zcy;": '\U00000417', + "Zdot;": '\U0000017B', + "ZeroWidthSpace;": '\U0000200B', + "Zeta;": '\U00000396', + "Zfr;": '\U00002128', + "Zopf;": '\U00002124', + "Zscr;": '\U0001D4B5', + "aacute;": '\U000000E1', + "abreve;": '\U00000103', + "ac;": '\U0000223E', + "acd;": '\U0000223F', + "acirc;": '\U000000E2', + "acute;": '\U000000B4', + "acy;": '\U00000430', + "aelig;": '\U000000E6', + "af;": '\U00002061', + "afr;": '\U0001D51E', + "agrave;": '\U000000E0', + "alefsym;": '\U00002135', + "aleph;": '\U00002135', + "alpha;": '\U000003B1', + "amacr;": '\U00000101', + "amalg;": '\U00002A3F', + "amp;": '\U00000026', + "and;": '\U00002227', + "andand;": '\U00002A55', + "andd;": '\U00002A5C', + "andslope;": '\U00002A58', + "andv;": '\U00002A5A', + "ang;": '\U00002220', + "ange;": '\U000029A4', + "angle;": '\U00002220', + "angmsd;": '\U00002221', + "angmsdaa;": '\U000029A8', + "angmsdab;": '\U000029A9', + "angmsdac;": '\U000029AA', + "angmsdad;": '\U000029AB', + "angmsdae;": '\U000029AC', + "angmsdaf;": '\U000029AD', + "angmsdag;": '\U000029AE', + "angmsdah;": '\U000029AF', + "angrt;": '\U0000221F', + "angrtvb;": '\U000022BE', + "angrtvbd;": '\U0000299D', + "angsph;": '\U00002222', + "angst;": '\U000000C5', + "angzarr;": '\U0000237C', + "aogon;": '\U00000105', + "aopf;": '\U0001D552', + "ap;": '\U00002248', + "apE;": '\U00002A70', + "apacir;": '\U00002A6F', + "ape;": '\U0000224A', + "apid;": '\U0000224B', + "apos;": '\U00000027', + "approx;": '\U00002248', + "approxeq;": '\U0000224A', + "aring;": '\U000000E5', + "ascr;": '\U0001D4B6', + "ast;": '\U0000002A', + "asymp;": '\U00002248', + "asympeq;": '\U0000224D', + "atilde;": '\U000000E3', + "auml;": '\U000000E4', + "awconint;": '\U00002233', + "awint;": '\U00002A11', + "bNot;": '\U00002AED', + "backcong;": '\U0000224C', + "backepsilon;": '\U000003F6', + "backprime;": '\U00002035', + "backsim;": '\U0000223D', + "backsimeq;": '\U000022CD', + "barvee;": '\U000022BD', + "barwed;": '\U00002305', + "barwedge;": '\U00002305', + "bbrk;": '\U000023B5', + "bbrktbrk;": '\U000023B6', + "bcong;": '\U0000224C', + "bcy;": '\U00000431', + "bdquo;": '\U0000201E', + "becaus;": '\U00002235', + "because;": '\U00002235', + "bemptyv;": '\U000029B0', + "bepsi;": '\U000003F6', + "bernou;": '\U0000212C', + "beta;": '\U000003B2', + "beth;": '\U00002136', + "between;": '\U0000226C', + "bfr;": '\U0001D51F', + "bigcap;": '\U000022C2', + "bigcirc;": '\U000025EF', + "bigcup;": '\U000022C3', + "bigodot;": '\U00002A00', + "bigoplus;": '\U00002A01', + "bigotimes;": '\U00002A02', + "bigsqcup;": '\U00002A06', + "bigstar;": '\U00002605', + "bigtriangledown;": '\U000025BD', + "bigtriangleup;": '\U000025B3', + "biguplus;": '\U00002A04', + "bigvee;": '\U000022C1', + "bigwedge;": '\U000022C0', + "bkarow;": '\U0000290D', + "blacklozenge;": '\U000029EB', + "blacksquare;": '\U000025AA', + "blacktriangle;": '\U000025B4', + "blacktriangledown;": '\U000025BE', + "blacktriangleleft;": '\U000025C2', + "blacktriangleright;": '\U000025B8', + "blank;": '\U00002423', + "blk12;": '\U00002592', + "blk14;": '\U00002591', + "blk34;": '\U00002593', + "block;": '\U00002588', + "bnot;": '\U00002310', + "bopf;": '\U0001D553', + "bot;": '\U000022A5', + "bottom;": '\U000022A5', + "bowtie;": '\U000022C8', + "boxDL;": '\U00002557', + "boxDR;": '\U00002554', + "boxDl;": '\U00002556', + "boxDr;": '\U00002553', + "boxH;": '\U00002550', + "boxHD;": '\U00002566', + "boxHU;": '\U00002569', + "boxHd;": '\U00002564', + "boxHu;": '\U00002567', + "boxUL;": '\U0000255D', + "boxUR;": '\U0000255A', + "boxUl;": '\U0000255C', + "boxUr;": '\U00002559', + "boxV;": '\U00002551', + "boxVH;": '\U0000256C', + "boxVL;": '\U00002563', + "boxVR;": '\U00002560', + "boxVh;": '\U0000256B', + "boxVl;": '\U00002562', + "boxVr;": '\U0000255F', + "boxbox;": '\U000029C9', + "boxdL;": '\U00002555', + "boxdR;": '\U00002552', + "boxdl;": '\U00002510', + "boxdr;": '\U0000250C', + "boxh;": '\U00002500', + "boxhD;": '\U00002565', + "boxhU;": '\U00002568', + "boxhd;": '\U0000252C', + "boxhu;": '\U00002534', + "boxminus;": '\U0000229F', + "boxplus;": '\U0000229E', + "boxtimes;": '\U000022A0', + "boxuL;": '\U0000255B', + "boxuR;": '\U00002558', + "boxul;": '\U00002518', + "boxur;": '\U00002514', + "boxv;": '\U00002502', + "boxvH;": '\U0000256A', + "boxvL;": '\U00002561', + "boxvR;": '\U0000255E', + "boxvh;": '\U0000253C', + "boxvl;": '\U00002524', + "boxvr;": '\U0000251C', + "bprime;": '\U00002035', + "breve;": '\U000002D8', + "brvbar;": '\U000000A6', + "bscr;": '\U0001D4B7', + "bsemi;": '\U0000204F', + "bsim;": '\U0000223D', + "bsime;": '\U000022CD', + "bsol;": '\U0000005C', + "bsolb;": '\U000029C5', + "bsolhsub;": '\U000027C8', + "bull;": '\U00002022', + "bullet;": '\U00002022', + "bump;": '\U0000224E', + "bumpE;": '\U00002AAE', + "bumpe;": '\U0000224F', + "bumpeq;": '\U0000224F', + "cacute;": '\U00000107', + "cap;": '\U00002229', + "capand;": '\U00002A44', + "capbrcup;": '\U00002A49', + "capcap;": '\U00002A4B', + "capcup;": '\U00002A47', + "capdot;": '\U00002A40', + "caret;": '\U00002041', + "caron;": '\U000002C7', + "ccaps;": '\U00002A4D', + "ccaron;": '\U0000010D', + "ccedil;": '\U000000E7', + "ccirc;": '\U00000109', + "ccups;": '\U00002A4C', + "ccupssm;": '\U00002A50', + "cdot;": '\U0000010B', + "cedil;": '\U000000B8', + "cemptyv;": '\U000029B2', + "cent;": '\U000000A2', + "centerdot;": '\U000000B7', + "cfr;": '\U0001D520', + "chcy;": '\U00000447', + "check;": '\U00002713', + "checkmark;": '\U00002713', + "chi;": '\U000003C7', + "cir;": '\U000025CB', + "cirE;": '\U000029C3', + "circ;": '\U000002C6', + "circeq;": '\U00002257', + "circlearrowleft;": '\U000021BA', + "circlearrowright;": '\U000021BB', + "circledR;": '\U000000AE', + "circledS;": '\U000024C8', + "circledast;": '\U0000229B', + "circledcirc;": '\U0000229A', + "circleddash;": '\U0000229D', + "cire;": '\U00002257', + "cirfnint;": '\U00002A10', + "cirmid;": '\U00002AEF', + "cirscir;": '\U000029C2', + "clubs;": '\U00002663', + "clubsuit;": '\U00002663', + "colon;": '\U0000003A', + "colone;": '\U00002254', + "coloneq;": '\U00002254', + "comma;": '\U0000002C', + "commat;": '\U00000040', + "comp;": '\U00002201', + "compfn;": '\U00002218', + "complement;": '\U00002201', + "complexes;": '\U00002102', + "cong;": '\U00002245', + "congdot;": '\U00002A6D', + "conint;": '\U0000222E', + "copf;": '\U0001D554', + "coprod;": '\U00002210', + "copy;": '\U000000A9', + "copysr;": '\U00002117', + "crarr;": '\U000021B5', + "cross;": '\U00002717', + "cscr;": '\U0001D4B8', + "csub;": '\U00002ACF', + "csube;": '\U00002AD1', + "csup;": '\U00002AD0', + "csupe;": '\U00002AD2', + "ctdot;": '\U000022EF', + "cudarrl;": '\U00002938', + "cudarrr;": '\U00002935', + "cuepr;": '\U000022DE', + "cuesc;": '\U000022DF', + "cularr;": '\U000021B6', + "cularrp;": '\U0000293D', + "cup;": '\U0000222A', + "cupbrcap;": '\U00002A48', + "cupcap;": '\U00002A46', + "cupcup;": '\U00002A4A', + "cupdot;": '\U0000228D', + "cupor;": '\U00002A45', + "curarr;": '\U000021B7', + "curarrm;": '\U0000293C', + "curlyeqprec;": '\U000022DE', + "curlyeqsucc;": '\U000022DF', + "curlyvee;": '\U000022CE', + "curlywedge;": '\U000022CF', + "curren;": '\U000000A4', + "curvearrowleft;": '\U000021B6', + "curvearrowright;": '\U000021B7', + "cuvee;": '\U000022CE', + "cuwed;": '\U000022CF', + "cwconint;": '\U00002232', + "cwint;": '\U00002231', + "cylcty;": '\U0000232D', + "dArr;": '\U000021D3', + "dHar;": '\U00002965', + "dagger;": '\U00002020', + "daleth;": '\U00002138', + "darr;": '\U00002193', + "dash;": '\U00002010', + "dashv;": '\U000022A3', + "dbkarow;": '\U0000290F', + "dblac;": '\U000002DD', + "dcaron;": '\U0000010F', + "dcy;": '\U00000434', + "dd;": '\U00002146', + "ddagger;": '\U00002021', + "ddarr;": '\U000021CA', + "ddotseq;": '\U00002A77', + "deg;": '\U000000B0', + "delta;": '\U000003B4', + "demptyv;": '\U000029B1', + "dfisht;": '\U0000297F', + "dfr;": '\U0001D521', + "dharl;": '\U000021C3', + "dharr;": '\U000021C2', + "diam;": '\U000022C4', + "diamond;": '\U000022C4', + "diamondsuit;": '\U00002666', + "diams;": '\U00002666', + "die;": '\U000000A8', + "digamma;": '\U000003DD', + "disin;": '\U000022F2', + "div;": '\U000000F7', + "divide;": '\U000000F7', + "divideontimes;": '\U000022C7', + "divonx;": '\U000022C7', + "djcy;": '\U00000452', + "dlcorn;": '\U0000231E', + "dlcrop;": '\U0000230D', + "dollar;": '\U00000024', + "dopf;": '\U0001D555', + "dot;": '\U000002D9', + "doteq;": '\U00002250', + "doteqdot;": '\U00002251', + "dotminus;": '\U00002238', + "dotplus;": '\U00002214', + "dotsquare;": '\U000022A1', + "doublebarwedge;": '\U00002306', + "downarrow;": '\U00002193', + "downdownarrows;": '\U000021CA', + "downharpoonleft;": '\U000021C3', + "downharpoonright;": '\U000021C2', + "drbkarow;": '\U00002910', + "drcorn;": '\U0000231F', + "drcrop;": '\U0000230C', + "dscr;": '\U0001D4B9', + "dscy;": '\U00000455', + "dsol;": '\U000029F6', + "dstrok;": '\U00000111', + "dtdot;": '\U000022F1', + "dtri;": '\U000025BF', + "dtrif;": '\U000025BE', + "duarr;": '\U000021F5', + "duhar;": '\U0000296F', + "dwangle;": '\U000029A6', + "dzcy;": '\U0000045F', + "dzigrarr;": '\U000027FF', + "eDDot;": '\U00002A77', + "eDot;": '\U00002251', + "eacute;": '\U000000E9', + "easter;": '\U00002A6E', + "ecaron;": '\U0000011B', + "ecir;": '\U00002256', + "ecirc;": '\U000000EA', + "ecolon;": '\U00002255', + "ecy;": '\U0000044D', + "edot;": '\U00000117', + "ee;": '\U00002147', + "efDot;": '\U00002252', + "efr;": '\U0001D522', + "eg;": '\U00002A9A', + "egrave;": '\U000000E8', + "egs;": '\U00002A96', + "egsdot;": '\U00002A98', + "el;": '\U00002A99', + "elinters;": '\U000023E7', + "ell;": '\U00002113', + "els;": '\U00002A95', + "elsdot;": '\U00002A97', + "emacr;": '\U00000113', + "empty;": '\U00002205', + "emptyset;": '\U00002205', + "emptyv;": '\U00002205', + "emsp;": '\U00002003', + "emsp13;": '\U00002004', + "emsp14;": '\U00002005', + "eng;": '\U0000014B', + "ensp;": '\U00002002', + "eogon;": '\U00000119', + "eopf;": '\U0001D556', + "epar;": '\U000022D5', + "eparsl;": '\U000029E3', + "eplus;": '\U00002A71', + "epsi;": '\U000003B5', + "epsilon;": '\U000003B5', + "epsiv;": '\U000003F5', + "eqcirc;": '\U00002256', + "eqcolon;": '\U00002255', + "eqsim;": '\U00002242', + "eqslantgtr;": '\U00002A96', + "eqslantless;": '\U00002A95', + "equals;": '\U0000003D', + "equest;": '\U0000225F', + "equiv;": '\U00002261', + "equivDD;": '\U00002A78', + "eqvparsl;": '\U000029E5', + "erDot;": '\U00002253', + "erarr;": '\U00002971', + "escr;": '\U0000212F', + "esdot;": '\U00002250', + "esim;": '\U00002242', + "eta;": '\U000003B7', + "eth;": '\U000000F0', + "euml;": '\U000000EB', + "euro;": '\U000020AC', + "excl;": '\U00000021', + "exist;": '\U00002203', + "expectation;": '\U00002130', + "exponentiale;": '\U00002147', + "fallingdotseq;": '\U00002252', + "fcy;": '\U00000444', + "female;": '\U00002640', + "ffilig;": '\U0000FB03', + "fflig;": '\U0000FB00', + "ffllig;": '\U0000FB04', + "ffr;": '\U0001D523', + "filig;": '\U0000FB01', + "flat;": '\U0000266D', + "fllig;": '\U0000FB02', + "fltns;": '\U000025B1', + "fnof;": '\U00000192', + "fopf;": '\U0001D557', + "forall;": '\U00002200', + "fork;": '\U000022D4', + "forkv;": '\U00002AD9', + "fpartint;": '\U00002A0D', + "frac12;": '\U000000BD', + "frac13;": '\U00002153', + "frac14;": '\U000000BC', + "frac15;": '\U00002155', + "frac16;": '\U00002159', + "frac18;": '\U0000215B', + "frac23;": '\U00002154', + "frac25;": '\U00002156', + "frac34;": '\U000000BE', + "frac35;": '\U00002157', + "frac38;": '\U0000215C', + "frac45;": '\U00002158', + "frac56;": '\U0000215A', + "frac58;": '\U0000215D', + "frac78;": '\U0000215E', + "frasl;": '\U00002044', + "frown;": '\U00002322', + "fscr;": '\U0001D4BB', + "gE;": '\U00002267', + "gEl;": '\U00002A8C', + "gacute;": '\U000001F5', + "gamma;": '\U000003B3', + "gammad;": '\U000003DD', + "gap;": '\U00002A86', + "gbreve;": '\U0000011F', + "gcirc;": '\U0000011D', + "gcy;": '\U00000433', + "gdot;": '\U00000121', + "ge;": '\U00002265', + "gel;": '\U000022DB', + "geq;": '\U00002265', + "geqq;": '\U00002267', + "geqslant;": '\U00002A7E', + "ges;": '\U00002A7E', + "gescc;": '\U00002AA9', + "gesdot;": '\U00002A80', + "gesdoto;": '\U00002A82', + "gesdotol;": '\U00002A84', + "gesles;": '\U00002A94', + "gfr;": '\U0001D524', + "gg;": '\U0000226B', + "ggg;": '\U000022D9', + "gimel;": '\U00002137', + "gjcy;": '\U00000453', + "gl;": '\U00002277', + "glE;": '\U00002A92', + "gla;": '\U00002AA5', + "glj;": '\U00002AA4', + "gnE;": '\U00002269', + "gnap;": '\U00002A8A', + "gnapprox;": '\U00002A8A', + "gne;": '\U00002A88', + "gneq;": '\U00002A88', + "gneqq;": '\U00002269', + "gnsim;": '\U000022E7', + "gopf;": '\U0001D558', + "grave;": '\U00000060', + "gscr;": '\U0000210A', + "gsim;": '\U00002273', + "gsime;": '\U00002A8E', + "gsiml;": '\U00002A90', + "gt;": '\U0000003E', + "gtcc;": '\U00002AA7', + "gtcir;": '\U00002A7A', + "gtdot;": '\U000022D7', + "gtlPar;": '\U00002995', + "gtquest;": '\U00002A7C', + "gtrapprox;": '\U00002A86', + "gtrarr;": '\U00002978', + "gtrdot;": '\U000022D7', + "gtreqless;": '\U000022DB', + "gtreqqless;": '\U00002A8C', + "gtrless;": '\U00002277', + "gtrsim;": '\U00002273', + "hArr;": '\U000021D4', + "hairsp;": '\U0000200A', + "half;": '\U000000BD', + "hamilt;": '\U0000210B', + "hardcy;": '\U0000044A', + "harr;": '\U00002194', + "harrcir;": '\U00002948', + "harrw;": '\U000021AD', + "hbar;": '\U0000210F', + "hcirc;": '\U00000125', + "hearts;": '\U00002665', + "heartsuit;": '\U00002665', + "hellip;": '\U00002026', + "hercon;": '\U000022B9', + "hfr;": '\U0001D525', + "hksearow;": '\U00002925', + "hkswarow;": '\U00002926', + "hoarr;": '\U000021FF', + "homtht;": '\U0000223B', + "hookleftarrow;": '\U000021A9', + "hookrightarrow;": '\U000021AA', + "hopf;": '\U0001D559', + "horbar;": '\U00002015', + "hscr;": '\U0001D4BD', + "hslash;": '\U0000210F', + "hstrok;": '\U00000127', + "hybull;": '\U00002043', + "hyphen;": '\U00002010', + "iacute;": '\U000000ED', + "ic;": '\U00002063', + "icirc;": '\U000000EE', + "icy;": '\U00000438', + "iecy;": '\U00000435', + "iexcl;": '\U000000A1', + "iff;": '\U000021D4', + "ifr;": '\U0001D526', + "igrave;": '\U000000EC', + "ii;": '\U00002148', + "iiiint;": '\U00002A0C', + "iiint;": '\U0000222D', + "iinfin;": '\U000029DC', + "iiota;": '\U00002129', + "ijlig;": '\U00000133', + "imacr;": '\U0000012B', + "image;": '\U00002111', + "imagline;": '\U00002110', + "imagpart;": '\U00002111', + "imath;": '\U00000131', + "imof;": '\U000022B7', + "imped;": '\U000001B5', + "in;": '\U00002208', + "incare;": '\U00002105', + "infin;": '\U0000221E', + "infintie;": '\U000029DD', + "inodot;": '\U00000131', + "int;": '\U0000222B', + "intcal;": '\U000022BA', + "integers;": '\U00002124', + "intercal;": '\U000022BA', + "intlarhk;": '\U00002A17', + "intprod;": '\U00002A3C', + "iocy;": '\U00000451', + "iogon;": '\U0000012F', + "iopf;": '\U0001D55A', + "iota;": '\U000003B9', + "iprod;": '\U00002A3C', + "iquest;": '\U000000BF', + "iscr;": '\U0001D4BE', + "isin;": '\U00002208', + "isinE;": '\U000022F9', + "isindot;": '\U000022F5', + "isins;": '\U000022F4', + "isinsv;": '\U000022F3', + "isinv;": '\U00002208', + "it;": '\U00002062', + "itilde;": '\U00000129', + "iukcy;": '\U00000456', + "iuml;": '\U000000EF', + "jcirc;": '\U00000135', + "jcy;": '\U00000439', + "jfr;": '\U0001D527', + "jmath;": '\U00000237', + "jopf;": '\U0001D55B', + "jscr;": '\U0001D4BF', + "jsercy;": '\U00000458', + "jukcy;": '\U00000454', + "kappa;": '\U000003BA', + "kappav;": '\U000003F0', + "kcedil;": '\U00000137', + "kcy;": '\U0000043A', + "kfr;": '\U0001D528', + "kgreen;": '\U00000138', + "khcy;": '\U00000445', + "kjcy;": '\U0000045C', + "kopf;": '\U0001D55C', + "kscr;": '\U0001D4C0', + "lAarr;": '\U000021DA', + "lArr;": '\U000021D0', + "lAtail;": '\U0000291B', + "lBarr;": '\U0000290E', + "lE;": '\U00002266', + "lEg;": '\U00002A8B', + "lHar;": '\U00002962', + "lacute;": '\U0000013A', + "laemptyv;": '\U000029B4', + "lagran;": '\U00002112', + "lambda;": '\U000003BB', + "lang;": '\U000027E8', + "langd;": '\U00002991', + "langle;": '\U000027E8', + "lap;": '\U00002A85', + "laquo;": '\U000000AB', + "larr;": '\U00002190', + "larrb;": '\U000021E4', + "larrbfs;": '\U0000291F', + "larrfs;": '\U0000291D', + "larrhk;": '\U000021A9', + "larrlp;": '\U000021AB', + "larrpl;": '\U00002939', + "larrsim;": '\U00002973', + "larrtl;": '\U000021A2', + "lat;": '\U00002AAB', + "latail;": '\U00002919', + "late;": '\U00002AAD', + "lbarr;": '\U0000290C', + "lbbrk;": '\U00002772', + "lbrace;": '\U0000007B', + "lbrack;": '\U0000005B', + "lbrke;": '\U0000298B', + "lbrksld;": '\U0000298F', + "lbrkslu;": '\U0000298D', + "lcaron;": '\U0000013E', + "lcedil;": '\U0000013C', + "lceil;": '\U00002308', + "lcub;": '\U0000007B', + "lcy;": '\U0000043B', + "ldca;": '\U00002936', + "ldquo;": '\U0000201C', + "ldquor;": '\U0000201E', + "ldrdhar;": '\U00002967', + "ldrushar;": '\U0000294B', + "ldsh;": '\U000021B2', + "le;": '\U00002264', + "leftarrow;": '\U00002190', + "leftarrowtail;": '\U000021A2', + "leftharpoondown;": '\U000021BD', + "leftharpoonup;": '\U000021BC', + "leftleftarrows;": '\U000021C7', + "leftrightarrow;": '\U00002194', + "leftrightarrows;": '\U000021C6', + "leftrightharpoons;": '\U000021CB', + "leftrightsquigarrow;": '\U000021AD', + "leftthreetimes;": '\U000022CB', + "leg;": '\U000022DA', + "leq;": '\U00002264', + "leqq;": '\U00002266', + "leqslant;": '\U00002A7D', + "les;": '\U00002A7D', + "lescc;": '\U00002AA8', + "lesdot;": '\U00002A7F', + "lesdoto;": '\U00002A81', + "lesdotor;": '\U00002A83', + "lesges;": '\U00002A93', + "lessapprox;": '\U00002A85', + "lessdot;": '\U000022D6', + "lesseqgtr;": '\U000022DA', + "lesseqqgtr;": '\U00002A8B', + "lessgtr;": '\U00002276', + "lesssim;": '\U00002272', + "lfisht;": '\U0000297C', + "lfloor;": '\U0000230A', + "lfr;": '\U0001D529', + "lg;": '\U00002276', + "lgE;": '\U00002A91', + "lhard;": '\U000021BD', + "lharu;": '\U000021BC', + "lharul;": '\U0000296A', + "lhblk;": '\U00002584', + "ljcy;": '\U00000459', + "ll;": '\U0000226A', + "llarr;": '\U000021C7', + "llcorner;": '\U0000231E', + "llhard;": '\U0000296B', + "lltri;": '\U000025FA', + "lmidot;": '\U00000140', + "lmoust;": '\U000023B0', + "lmoustache;": '\U000023B0', + "lnE;": '\U00002268', + "lnap;": '\U00002A89', + "lnapprox;": '\U00002A89', + "lne;": '\U00002A87', + "lneq;": '\U00002A87', + "lneqq;": '\U00002268', + "lnsim;": '\U000022E6', + "loang;": '\U000027EC', + "loarr;": '\U000021FD', + "lobrk;": '\U000027E6', + "longleftarrow;": '\U000027F5', + "longleftrightarrow;": '\U000027F7', + "longmapsto;": '\U000027FC', + "longrightarrow;": '\U000027F6', + "looparrowleft;": '\U000021AB', + "looparrowright;": '\U000021AC', + "lopar;": '\U00002985', + "lopf;": '\U0001D55D', + "loplus;": '\U00002A2D', + "lotimes;": '\U00002A34', + "lowast;": '\U00002217', + "lowbar;": '\U0000005F', + "loz;": '\U000025CA', + "lozenge;": '\U000025CA', + "lozf;": '\U000029EB', + "lpar;": '\U00000028', + "lparlt;": '\U00002993', + "lrarr;": '\U000021C6', + "lrcorner;": '\U0000231F', + "lrhar;": '\U000021CB', + "lrhard;": '\U0000296D', + "lrm;": '\U0000200E', + "lrtri;": '\U000022BF', + "lsaquo;": '\U00002039', + "lscr;": '\U0001D4C1', + "lsh;": '\U000021B0', + "lsim;": '\U00002272', + "lsime;": '\U00002A8D', + "lsimg;": '\U00002A8F', + "lsqb;": '\U0000005B', + "lsquo;": '\U00002018', + "lsquor;": '\U0000201A', + "lstrok;": '\U00000142', + "lt;": '\U0000003C', + "ltcc;": '\U00002AA6', + "ltcir;": '\U00002A79', + "ltdot;": '\U000022D6', + "lthree;": '\U000022CB', + "ltimes;": '\U000022C9', + "ltlarr;": '\U00002976', + "ltquest;": '\U00002A7B', + "ltrPar;": '\U00002996', + "ltri;": '\U000025C3', + "ltrie;": '\U000022B4', + "ltrif;": '\U000025C2', + "lurdshar;": '\U0000294A', + "luruhar;": '\U00002966', + "mDDot;": '\U0000223A', + "macr;": '\U000000AF', + "male;": '\U00002642', + "malt;": '\U00002720', + "maltese;": '\U00002720', + "map;": '\U000021A6', + "mapsto;": '\U000021A6', + "mapstodown;": '\U000021A7', + "mapstoleft;": '\U000021A4', + "mapstoup;": '\U000021A5', + "marker;": '\U000025AE', + "mcomma;": '\U00002A29', + "mcy;": '\U0000043C', + "mdash;": '\U00002014', + "measuredangle;": '\U00002221', + "mfr;": '\U0001D52A', + "mho;": '\U00002127', + "micro;": '\U000000B5', + "mid;": '\U00002223', + "midast;": '\U0000002A', + "midcir;": '\U00002AF0', + "middot;": '\U000000B7', + "minus;": '\U00002212', + "minusb;": '\U0000229F', + "minusd;": '\U00002238', + "minusdu;": '\U00002A2A', + "mlcp;": '\U00002ADB', + "mldr;": '\U00002026', + "mnplus;": '\U00002213', + "models;": '\U000022A7', + "mopf;": '\U0001D55E', + "mp;": '\U00002213', + "mscr;": '\U0001D4C2', + "mstpos;": '\U0000223E', + "mu;": '\U000003BC', + "multimap;": '\U000022B8', + "mumap;": '\U000022B8', + "nLeftarrow;": '\U000021CD', + "nLeftrightarrow;": '\U000021CE', + "nRightarrow;": '\U000021CF', + "nVDash;": '\U000022AF', + "nVdash;": '\U000022AE', + "nabla;": '\U00002207', + "nacute;": '\U00000144', + "nap;": '\U00002249', + "napos;": '\U00000149', + "napprox;": '\U00002249', + "natur;": '\U0000266E', + "natural;": '\U0000266E', + "naturals;": '\U00002115', + "nbsp;": '\U000000A0', + "ncap;": '\U00002A43', + "ncaron;": '\U00000148', + "ncedil;": '\U00000146', + "ncong;": '\U00002247', + "ncup;": '\U00002A42', + "ncy;": '\U0000043D', + "ndash;": '\U00002013', + "ne;": '\U00002260', + "neArr;": '\U000021D7', + "nearhk;": '\U00002924', + "nearr;": '\U00002197', + "nearrow;": '\U00002197', + "nequiv;": '\U00002262', + "nesear;": '\U00002928', + "nexist;": '\U00002204', + "nexists;": '\U00002204', + "nfr;": '\U0001D52B', + "nge;": '\U00002271', + "ngeq;": '\U00002271', + "ngsim;": '\U00002275', + "ngt;": '\U0000226F', + "ngtr;": '\U0000226F', + "nhArr;": '\U000021CE', + "nharr;": '\U000021AE', + "nhpar;": '\U00002AF2', + "ni;": '\U0000220B', + "nis;": '\U000022FC', + "nisd;": '\U000022FA', + "niv;": '\U0000220B', + "njcy;": '\U0000045A', + "nlArr;": '\U000021CD', + "nlarr;": '\U0000219A', + "nldr;": '\U00002025', + "nle;": '\U00002270', + "nleftarrow;": '\U0000219A', + "nleftrightarrow;": '\U000021AE', + "nleq;": '\U00002270', + "nless;": '\U0000226E', + "nlsim;": '\U00002274', + "nlt;": '\U0000226E', + "nltri;": '\U000022EA', + "nltrie;": '\U000022EC', + "nmid;": '\U00002224', + "nopf;": '\U0001D55F', + "not;": '\U000000AC', + "notin;": '\U00002209', + "notinva;": '\U00002209', + "notinvb;": '\U000022F7', + "notinvc;": '\U000022F6', + "notni;": '\U0000220C', + "notniva;": '\U0000220C', + "notnivb;": '\U000022FE', + "notnivc;": '\U000022FD', + "npar;": '\U00002226', + "nparallel;": '\U00002226', + "npolint;": '\U00002A14', + "npr;": '\U00002280', + "nprcue;": '\U000022E0', + "nprec;": '\U00002280', + "nrArr;": '\U000021CF', + "nrarr;": '\U0000219B', + "nrightarrow;": '\U0000219B', + "nrtri;": '\U000022EB', + "nrtrie;": '\U000022ED', + "nsc;": '\U00002281', + "nsccue;": '\U000022E1', + "nscr;": '\U0001D4C3', + "nshortmid;": '\U00002224', + "nshortparallel;": '\U00002226', + "nsim;": '\U00002241', + "nsime;": '\U00002244', + "nsimeq;": '\U00002244', + "nsmid;": '\U00002224', + "nspar;": '\U00002226', + "nsqsube;": '\U000022E2', + "nsqsupe;": '\U000022E3', + "nsub;": '\U00002284', + "nsube;": '\U00002288', + "nsubseteq;": '\U00002288', + "nsucc;": '\U00002281', + "nsup;": '\U00002285', + "nsupe;": '\U00002289', + "nsupseteq;": '\U00002289', + "ntgl;": '\U00002279', + "ntilde;": '\U000000F1', + "ntlg;": '\U00002278', + "ntriangleleft;": '\U000022EA', + "ntrianglelefteq;": '\U000022EC', + "ntriangleright;": '\U000022EB', + "ntrianglerighteq;": '\U000022ED', + "nu;": '\U000003BD', + "num;": '\U00000023', + "numero;": '\U00002116', + "numsp;": '\U00002007', + "nvDash;": '\U000022AD', + "nvHarr;": '\U00002904', + "nvdash;": '\U000022AC', + "nvinfin;": '\U000029DE', + "nvlArr;": '\U00002902', + "nvrArr;": '\U00002903', + "nwArr;": '\U000021D6', + "nwarhk;": '\U00002923', + "nwarr;": '\U00002196', + "nwarrow;": '\U00002196', + "nwnear;": '\U00002927', + "oS;": '\U000024C8', + "oacute;": '\U000000F3', + "oast;": '\U0000229B', + "ocir;": '\U0000229A', + "ocirc;": '\U000000F4', + "ocy;": '\U0000043E', + "odash;": '\U0000229D', + "odblac;": '\U00000151', + "odiv;": '\U00002A38', + "odot;": '\U00002299', + "odsold;": '\U000029BC', + "oelig;": '\U00000153', + "ofcir;": '\U000029BF', + "ofr;": '\U0001D52C', + "ogon;": '\U000002DB', + "ograve;": '\U000000F2', + "ogt;": '\U000029C1', + "ohbar;": '\U000029B5', + "ohm;": '\U000003A9', + "oint;": '\U0000222E', + "olarr;": '\U000021BA', + "olcir;": '\U000029BE', + "olcross;": '\U000029BB', + "oline;": '\U0000203E', + "olt;": '\U000029C0', + "omacr;": '\U0000014D', + "omega;": '\U000003C9', + "omicron;": '\U000003BF', + "omid;": '\U000029B6', + "ominus;": '\U00002296', + "oopf;": '\U0001D560', + "opar;": '\U000029B7', + "operp;": '\U000029B9', + "oplus;": '\U00002295', + "or;": '\U00002228', + "orarr;": '\U000021BB', + "ord;": '\U00002A5D', + "order;": '\U00002134', + "orderof;": '\U00002134', + "ordf;": '\U000000AA', + "ordm;": '\U000000BA', + "origof;": '\U000022B6', + "oror;": '\U00002A56', + "orslope;": '\U00002A57', + "orv;": '\U00002A5B', + "oscr;": '\U00002134', + "oslash;": '\U000000F8', + "osol;": '\U00002298', + "otilde;": '\U000000F5', + "otimes;": '\U00002297', + "otimesas;": '\U00002A36', + "ouml;": '\U000000F6', + "ovbar;": '\U0000233D', + "par;": '\U00002225', + "para;": '\U000000B6', + "parallel;": '\U00002225', + "parsim;": '\U00002AF3', + "parsl;": '\U00002AFD', + "part;": '\U00002202', + "pcy;": '\U0000043F', + "percnt;": '\U00000025', + "period;": '\U0000002E', + "permil;": '\U00002030', + "perp;": '\U000022A5', + "pertenk;": '\U00002031', + "pfr;": '\U0001D52D', + "phi;": '\U000003C6', + "phiv;": '\U000003D5', + "phmmat;": '\U00002133', + "phone;": '\U0000260E', + "pi;": '\U000003C0', + "pitchfork;": '\U000022D4', + "piv;": '\U000003D6', + "planck;": '\U0000210F', + "planckh;": '\U0000210E', + "plankv;": '\U0000210F', + "plus;": '\U0000002B', + "plusacir;": '\U00002A23', + "plusb;": '\U0000229E', + "pluscir;": '\U00002A22', + "plusdo;": '\U00002214', + "plusdu;": '\U00002A25', + "pluse;": '\U00002A72', + "plusmn;": '\U000000B1', + "plussim;": '\U00002A26', + "plustwo;": '\U00002A27', + "pm;": '\U000000B1', + "pointint;": '\U00002A15', + "popf;": '\U0001D561', + "pound;": '\U000000A3', + "pr;": '\U0000227A', + "prE;": '\U00002AB3', + "prap;": '\U00002AB7', + "prcue;": '\U0000227C', + "pre;": '\U00002AAF', + "prec;": '\U0000227A', + "precapprox;": '\U00002AB7', + "preccurlyeq;": '\U0000227C', + "preceq;": '\U00002AAF', + "precnapprox;": '\U00002AB9', + "precneqq;": '\U00002AB5', + "precnsim;": '\U000022E8', + "precsim;": '\U0000227E', + "prime;": '\U00002032', + "primes;": '\U00002119', + "prnE;": '\U00002AB5', + "prnap;": '\U00002AB9', + "prnsim;": '\U000022E8', + "prod;": '\U0000220F', + "profalar;": '\U0000232E', + "profline;": '\U00002312', + "profsurf;": '\U00002313', + "prop;": '\U0000221D', + "propto;": '\U0000221D', + "prsim;": '\U0000227E', + "prurel;": '\U000022B0', + "pscr;": '\U0001D4C5', + "psi;": '\U000003C8', + "puncsp;": '\U00002008', + "qfr;": '\U0001D52E', + "qint;": '\U00002A0C', + "qopf;": '\U0001D562', + "qprime;": '\U00002057', + "qscr;": '\U0001D4C6', + "quaternions;": '\U0000210D', + "quatint;": '\U00002A16', + "quest;": '\U0000003F', + "questeq;": '\U0000225F', + "quot;": '\U00000022', + "rAarr;": '\U000021DB', + "rArr;": '\U000021D2', + "rAtail;": '\U0000291C', + "rBarr;": '\U0000290F', + "rHar;": '\U00002964', + "racute;": '\U00000155', + "radic;": '\U0000221A', + "raemptyv;": '\U000029B3', + "rang;": '\U000027E9', + "rangd;": '\U00002992', + "range;": '\U000029A5', + "rangle;": '\U000027E9', + "raquo;": '\U000000BB', + "rarr;": '\U00002192', + "rarrap;": '\U00002975', + "rarrb;": '\U000021E5', + "rarrbfs;": '\U00002920', + "rarrc;": '\U00002933', + "rarrfs;": '\U0000291E', + "rarrhk;": '\U000021AA', + "rarrlp;": '\U000021AC', + "rarrpl;": '\U00002945', + "rarrsim;": '\U00002974', + "rarrtl;": '\U000021A3', + "rarrw;": '\U0000219D', + "ratail;": '\U0000291A', + "ratio;": '\U00002236', + "rationals;": '\U0000211A', + "rbarr;": '\U0000290D', + "rbbrk;": '\U00002773', + "rbrace;": '\U0000007D', + "rbrack;": '\U0000005D', + "rbrke;": '\U0000298C', + "rbrksld;": '\U0000298E', + "rbrkslu;": '\U00002990', + "rcaron;": '\U00000159', + "rcedil;": '\U00000157', + "rceil;": '\U00002309', + "rcub;": '\U0000007D', + "rcy;": '\U00000440', + "rdca;": '\U00002937', + "rdldhar;": '\U00002969', + "rdquo;": '\U0000201D', + "rdquor;": '\U0000201D', + "rdsh;": '\U000021B3', + "real;": '\U0000211C', + "realine;": '\U0000211B', + "realpart;": '\U0000211C', + "reals;": '\U0000211D', + "rect;": '\U000025AD', + "reg;": '\U000000AE', + "rfisht;": '\U0000297D', + "rfloor;": '\U0000230B', + "rfr;": '\U0001D52F', + "rhard;": '\U000021C1', + "rharu;": '\U000021C0', + "rharul;": '\U0000296C', + "rho;": '\U000003C1', + "rhov;": '\U000003F1', + "rightarrow;": '\U00002192', + "rightarrowtail;": '\U000021A3', + "rightharpoondown;": '\U000021C1', + "rightharpoonup;": '\U000021C0', + "rightleftarrows;": '\U000021C4', + "rightleftharpoons;": '\U000021CC', + "rightrightarrows;": '\U000021C9', + "rightsquigarrow;": '\U0000219D', + "rightthreetimes;": '\U000022CC', + "ring;": '\U000002DA', + "risingdotseq;": '\U00002253', + "rlarr;": '\U000021C4', + "rlhar;": '\U000021CC', + "rlm;": '\U0000200F', + "rmoust;": '\U000023B1', + "rmoustache;": '\U000023B1', + "rnmid;": '\U00002AEE', + "roang;": '\U000027ED', + "roarr;": '\U000021FE', + "robrk;": '\U000027E7', + "ropar;": '\U00002986', + "ropf;": '\U0001D563', + "roplus;": '\U00002A2E', + "rotimes;": '\U00002A35', + "rpar;": '\U00000029', + "rpargt;": '\U00002994', + "rppolint;": '\U00002A12', + "rrarr;": '\U000021C9', + "rsaquo;": '\U0000203A', + "rscr;": '\U0001D4C7', + "rsh;": '\U000021B1', + "rsqb;": '\U0000005D', + "rsquo;": '\U00002019', + "rsquor;": '\U00002019', + "rthree;": '\U000022CC', + "rtimes;": '\U000022CA', + "rtri;": '\U000025B9', + "rtrie;": '\U000022B5', + "rtrif;": '\U000025B8', + "rtriltri;": '\U000029CE', + "ruluhar;": '\U00002968', + "rx;": '\U0000211E', + "sacute;": '\U0000015B', + "sbquo;": '\U0000201A', + "sc;": '\U0000227B', + "scE;": '\U00002AB4', + "scap;": '\U00002AB8', + "scaron;": '\U00000161', + "sccue;": '\U0000227D', + "sce;": '\U00002AB0', + "scedil;": '\U0000015F', + "scirc;": '\U0000015D', + "scnE;": '\U00002AB6', + "scnap;": '\U00002ABA', + "scnsim;": '\U000022E9', + "scpolint;": '\U00002A13', + "scsim;": '\U0000227F', + "scy;": '\U00000441', + "sdot;": '\U000022C5', + "sdotb;": '\U000022A1', + "sdote;": '\U00002A66', + "seArr;": '\U000021D8', + "searhk;": '\U00002925', + "searr;": '\U00002198', + "searrow;": '\U00002198', + "sect;": '\U000000A7', + "semi;": '\U0000003B', + "seswar;": '\U00002929', + "setminus;": '\U00002216', + "setmn;": '\U00002216', + "sext;": '\U00002736', + "sfr;": '\U0001D530', + "sfrown;": '\U00002322', + "sharp;": '\U0000266F', + "shchcy;": '\U00000449', + "shcy;": '\U00000448', + "shortmid;": '\U00002223', + "shortparallel;": '\U00002225', + "shy;": '\U000000AD', + "sigma;": '\U000003C3', + "sigmaf;": '\U000003C2', + "sigmav;": '\U000003C2', + "sim;": '\U0000223C', + "simdot;": '\U00002A6A', + "sime;": '\U00002243', + "simeq;": '\U00002243', + "simg;": '\U00002A9E', + "simgE;": '\U00002AA0', + "siml;": '\U00002A9D', + "simlE;": '\U00002A9F', + "simne;": '\U00002246', + "simplus;": '\U00002A24', + "simrarr;": '\U00002972', + "slarr;": '\U00002190', + "smallsetminus;": '\U00002216', + "smashp;": '\U00002A33', + "smeparsl;": '\U000029E4', + "smid;": '\U00002223', + "smile;": '\U00002323', + "smt;": '\U00002AAA', + "smte;": '\U00002AAC', + "softcy;": '\U0000044C', + "sol;": '\U0000002F', + "solb;": '\U000029C4', + "solbar;": '\U0000233F', + "sopf;": '\U0001D564', + "spades;": '\U00002660', + "spadesuit;": '\U00002660', + "spar;": '\U00002225', + "sqcap;": '\U00002293', + "sqcup;": '\U00002294', + "sqsub;": '\U0000228F', + "sqsube;": '\U00002291', + "sqsubset;": '\U0000228F', + "sqsubseteq;": '\U00002291', + "sqsup;": '\U00002290', + "sqsupe;": '\U00002292', + "sqsupset;": '\U00002290', + "sqsupseteq;": '\U00002292', + "squ;": '\U000025A1', + "square;": '\U000025A1', + "squarf;": '\U000025AA', + "squf;": '\U000025AA', + "srarr;": '\U00002192', + "sscr;": '\U0001D4C8', + "ssetmn;": '\U00002216', + "ssmile;": '\U00002323', + "sstarf;": '\U000022C6', + "star;": '\U00002606', + "starf;": '\U00002605', + "straightepsilon;": '\U000003F5', + "straightphi;": '\U000003D5', + "strns;": '\U000000AF', + "sub;": '\U00002282', + "subE;": '\U00002AC5', + "subdot;": '\U00002ABD', + "sube;": '\U00002286', + "subedot;": '\U00002AC3', + "submult;": '\U00002AC1', + "subnE;": '\U00002ACB', + "subne;": '\U0000228A', + "subplus;": '\U00002ABF', + "subrarr;": '\U00002979', + "subset;": '\U00002282', + "subseteq;": '\U00002286', + "subseteqq;": '\U00002AC5', + "subsetneq;": '\U0000228A', + "subsetneqq;": '\U00002ACB', + "subsim;": '\U00002AC7', + "subsub;": '\U00002AD5', + "subsup;": '\U00002AD3', + "succ;": '\U0000227B', + "succapprox;": '\U00002AB8', + "succcurlyeq;": '\U0000227D', + "succeq;": '\U00002AB0', + "succnapprox;": '\U00002ABA', + "succneqq;": '\U00002AB6', + "succnsim;": '\U000022E9', + "succsim;": '\U0000227F', + "sum;": '\U00002211', + "sung;": '\U0000266A', + "sup;": '\U00002283', + "sup1;": '\U000000B9', + "sup2;": '\U000000B2', + "sup3;": '\U000000B3', + "supE;": '\U00002AC6', + "supdot;": '\U00002ABE', + "supdsub;": '\U00002AD8', + "supe;": '\U00002287', + "supedot;": '\U00002AC4', + "suphsol;": '\U000027C9', + "suphsub;": '\U00002AD7', + "suplarr;": '\U0000297B', + "supmult;": '\U00002AC2', + "supnE;": '\U00002ACC', + "supne;": '\U0000228B', + "supplus;": '\U00002AC0', + "supset;": '\U00002283', + "supseteq;": '\U00002287', + "supseteqq;": '\U00002AC6', + "supsetneq;": '\U0000228B', + "supsetneqq;": '\U00002ACC', + "supsim;": '\U00002AC8', + "supsub;": '\U00002AD4', + "supsup;": '\U00002AD6', + "swArr;": '\U000021D9', + "swarhk;": '\U00002926', + "swarr;": '\U00002199', + "swarrow;": '\U00002199', + "swnwar;": '\U0000292A', + "szlig;": '\U000000DF', + "target;": '\U00002316', + "tau;": '\U000003C4', + "tbrk;": '\U000023B4', + "tcaron;": '\U00000165', + "tcedil;": '\U00000163', + "tcy;": '\U00000442', + "tdot;": '\U000020DB', + "telrec;": '\U00002315', + "tfr;": '\U0001D531', + "there4;": '\U00002234', + "therefore;": '\U00002234', + "theta;": '\U000003B8', + "thetasym;": '\U000003D1', + "thetav;": '\U000003D1', + "thickapprox;": '\U00002248', + "thicksim;": '\U0000223C', + "thinsp;": '\U00002009', + "thkap;": '\U00002248', + "thksim;": '\U0000223C', + "thorn;": '\U000000FE', + "tilde;": '\U000002DC', + "times;": '\U000000D7', + "timesb;": '\U000022A0', + "timesbar;": '\U00002A31', + "timesd;": '\U00002A30', + "tint;": '\U0000222D', + "toea;": '\U00002928', + "top;": '\U000022A4', + "topbot;": '\U00002336', + "topcir;": '\U00002AF1', + "topf;": '\U0001D565', + "topfork;": '\U00002ADA', + "tosa;": '\U00002929', + "tprime;": '\U00002034', + "trade;": '\U00002122', + "triangle;": '\U000025B5', + "triangledown;": '\U000025BF', + "triangleleft;": '\U000025C3', + "trianglelefteq;": '\U000022B4', + "triangleq;": '\U0000225C', + "triangleright;": '\U000025B9', + "trianglerighteq;": '\U000022B5', + "tridot;": '\U000025EC', + "trie;": '\U0000225C', + "triminus;": '\U00002A3A', + "triplus;": '\U00002A39', + "trisb;": '\U000029CD', + "tritime;": '\U00002A3B', + "trpezium;": '\U000023E2', + "tscr;": '\U0001D4C9', + "tscy;": '\U00000446', + "tshcy;": '\U0000045B', + "tstrok;": '\U00000167', + "twixt;": '\U0000226C', + "twoheadleftarrow;": '\U0000219E', + "twoheadrightarrow;": '\U000021A0', + "uArr;": '\U000021D1', + "uHar;": '\U00002963', + "uacute;": '\U000000FA', + "uarr;": '\U00002191', + "ubrcy;": '\U0000045E', + "ubreve;": '\U0000016D', + "ucirc;": '\U000000FB', + "ucy;": '\U00000443', + "udarr;": '\U000021C5', + "udblac;": '\U00000171', + "udhar;": '\U0000296E', + "ufisht;": '\U0000297E', + "ufr;": '\U0001D532', + "ugrave;": '\U000000F9', + "uharl;": '\U000021BF', + "uharr;": '\U000021BE', + "uhblk;": '\U00002580', + "ulcorn;": '\U0000231C', + "ulcorner;": '\U0000231C', + "ulcrop;": '\U0000230F', + "ultri;": '\U000025F8', + "umacr;": '\U0000016B', + "uml;": '\U000000A8', + "uogon;": '\U00000173', + "uopf;": '\U0001D566', + "uparrow;": '\U00002191', + "updownarrow;": '\U00002195', + "upharpoonleft;": '\U000021BF', + "upharpoonright;": '\U000021BE', + "uplus;": '\U0000228E', + "upsi;": '\U000003C5', + "upsih;": '\U000003D2', + "upsilon;": '\U000003C5', + "upuparrows;": '\U000021C8', + "urcorn;": '\U0000231D', + "urcorner;": '\U0000231D', + "urcrop;": '\U0000230E', + "uring;": '\U0000016F', + "urtri;": '\U000025F9', + "uscr;": '\U0001D4CA', + "utdot;": '\U000022F0', + "utilde;": '\U00000169', + "utri;": '\U000025B5', + "utrif;": '\U000025B4', + "uuarr;": '\U000021C8', + "uuml;": '\U000000FC', + "uwangle;": '\U000029A7', + "vArr;": '\U000021D5', + "vBar;": '\U00002AE8', + "vBarv;": '\U00002AE9', + "vDash;": '\U000022A8', + "vangrt;": '\U0000299C', + "varepsilon;": '\U000003F5', + "varkappa;": '\U000003F0', + "varnothing;": '\U00002205', + "varphi;": '\U000003D5', + "varpi;": '\U000003D6', + "varpropto;": '\U0000221D', + "varr;": '\U00002195', + "varrho;": '\U000003F1', + "varsigma;": '\U000003C2', + "vartheta;": '\U000003D1', + "vartriangleleft;": '\U000022B2', + "vartriangleright;": '\U000022B3', + "vcy;": '\U00000432', + "vdash;": '\U000022A2', + "vee;": '\U00002228', + "veebar;": '\U000022BB', + "veeeq;": '\U0000225A', + "vellip;": '\U000022EE', + "verbar;": '\U0000007C', + "vert;": '\U0000007C', + "vfr;": '\U0001D533', + "vltri;": '\U000022B2', + "vopf;": '\U0001D567', + "vprop;": '\U0000221D', + "vrtri;": '\U000022B3', + "vscr;": '\U0001D4CB', + "vzigzag;": '\U0000299A', + "wcirc;": '\U00000175', + "wedbar;": '\U00002A5F', + "wedge;": '\U00002227', + "wedgeq;": '\U00002259', + "weierp;": '\U00002118', + "wfr;": '\U0001D534', + "wopf;": '\U0001D568', + "wp;": '\U00002118', + "wr;": '\U00002240', + "wreath;": '\U00002240', + "wscr;": '\U0001D4CC', + "xcap;": '\U000022C2', + "xcirc;": '\U000025EF', + "xcup;": '\U000022C3', + "xdtri;": '\U000025BD', + "xfr;": '\U0001D535', + "xhArr;": '\U000027FA', + "xharr;": '\U000027F7', + "xi;": '\U000003BE', + "xlArr;": '\U000027F8', + "xlarr;": '\U000027F5', + "xmap;": '\U000027FC', + "xnis;": '\U000022FB', + "xodot;": '\U00002A00', + "xopf;": '\U0001D569', + "xoplus;": '\U00002A01', + "xotime;": '\U00002A02', + "xrArr;": '\U000027F9', + "xrarr;": '\U000027F6', + "xscr;": '\U0001D4CD', + "xsqcup;": '\U00002A06', + "xuplus;": '\U00002A04', + "xutri;": '\U000025B3', + "xvee;": '\U000022C1', + "xwedge;": '\U000022C0', + "yacute;": '\U000000FD', + "yacy;": '\U0000044F', + "ycirc;": '\U00000177', + "ycy;": '\U0000044B', + "yen;": '\U000000A5', + "yfr;": '\U0001D536', + "yicy;": '\U00000457', + "yopf;": '\U0001D56A', + "yscr;": '\U0001D4CE', + "yucy;": '\U0000044E', + "yuml;": '\U000000FF', + "zacute;": '\U0000017A', + "zcaron;": '\U0000017E', + "zcy;": '\U00000437', + "zdot;": '\U0000017C', + "zeetrf;": '\U00002128', + "zeta;": '\U000003B6', + "zfr;": '\U0001D537', + "zhcy;": '\U00000436', + "zigrarr;": '\U000021DD', + "zopf;": '\U0001D56B', + "zscr;": '\U0001D4CF', + "zwj;": '\U0000200D', + "zwnj;": '\U0000200C', + "AElig": '\U000000C6', + "AMP": '\U00000026', + "Aacute": '\U000000C1', + "Acirc": '\U000000C2', + "Agrave": '\U000000C0', + "Aring": '\U000000C5', + "Atilde": '\U000000C3', + "Auml": '\U000000C4', + "COPY": '\U000000A9', + "Ccedil": '\U000000C7', + "ETH": '\U000000D0', + "Eacute": '\U000000C9', + "Ecirc": '\U000000CA', + "Egrave": '\U000000C8', + "Euml": '\U000000CB', + "GT": '\U0000003E', + "Iacute": '\U000000CD', + "Icirc": '\U000000CE', + "Igrave": '\U000000CC', + "Iuml": '\U000000CF', + "LT": '\U0000003C', + "Ntilde": '\U000000D1', + "Oacute": '\U000000D3', + "Ocirc": '\U000000D4', + "Ograve": '\U000000D2', + "Oslash": '\U000000D8', + "Otilde": '\U000000D5', + "Ouml": '\U000000D6', + "QUOT": '\U00000022', + "REG": '\U000000AE', + "THORN": '\U000000DE', + "Uacute": '\U000000DA', + "Ucirc": '\U000000DB', + "Ugrave": '\U000000D9', + "Uuml": '\U000000DC', + "Yacute": '\U000000DD', + "aacute": '\U000000E1', + "acirc": '\U000000E2', + "acute": '\U000000B4', + "aelig": '\U000000E6', + "agrave": '\U000000E0', + "amp": '\U00000026', + "aring": '\U000000E5', + "atilde": '\U000000E3', + "auml": '\U000000E4', + "brvbar": '\U000000A6', + "ccedil": '\U000000E7', + "cedil": '\U000000B8', + "cent": '\U000000A2', + "copy": '\U000000A9', + "curren": '\U000000A4', + "deg": '\U000000B0', + "divide": '\U000000F7', + "eacute": '\U000000E9', + "ecirc": '\U000000EA', + "egrave": '\U000000E8', + "eth": '\U000000F0', + "euml": '\U000000EB', + "frac12": '\U000000BD', + "frac14": '\U000000BC', + "frac34": '\U000000BE', + "gt": '\U0000003E', + "iacute": '\U000000ED', + "icirc": '\U000000EE', + "iexcl": '\U000000A1', + "igrave": '\U000000EC', + "iquest": '\U000000BF', + "iuml": '\U000000EF', + "laquo": '\U000000AB', + "lt": '\U0000003C', + "macr": '\U000000AF', + "micro": '\U000000B5', + "middot": '\U000000B7', + "nbsp": '\U000000A0', + "not": '\U000000AC', + "ntilde": '\U000000F1', + "oacute": '\U000000F3', + "ocirc": '\U000000F4', + "ograve": '\U000000F2', + "ordf": '\U000000AA', + "ordm": '\U000000BA', + "oslash": '\U000000F8', + "otilde": '\U000000F5', + "ouml": '\U000000F6', + "para": '\U000000B6', + "plusmn": '\U000000B1', + "pound": '\U000000A3', + "quot": '\U00000022', + "raquo": '\U000000BB', + "reg": '\U000000AE', + "sect": '\U000000A7', + "shy": '\U000000AD', + "sup1": '\U000000B9', + "sup2": '\U000000B2', + "sup3": '\U000000B3', + "szlig": '\U000000DF', + "thorn": '\U000000FE', + "times": '\U000000D7', + "uacute": '\U000000FA', + "ucirc": '\U000000FB', + "ugrave": '\U000000F9', + "uml": '\U000000A8', + "uuml": '\U000000FC', + "yacute": '\U000000FD', + "yen": '\U000000A5', + "yuml": '\U000000FF', +} + +// HTML entities that are two unicode codepoints. +var entity2 = map[string][2]rune{ + // TODO(nigeltao): Handle replacements that are wider than their names. + // "nLt;": {'\u226A', '\u20D2'}, + // "nGt;": {'\u226B', '\u20D2'}, + "NotEqualTilde;": {'\u2242', '\u0338'}, + "NotGreaterFullEqual;": {'\u2267', '\u0338'}, + "NotGreaterGreater;": {'\u226B', '\u0338'}, + "NotGreaterSlantEqual;": {'\u2A7E', '\u0338'}, + "NotHumpDownHump;": {'\u224E', '\u0338'}, + "NotHumpEqual;": {'\u224F', '\u0338'}, + "NotLeftTriangleBar;": {'\u29CF', '\u0338'}, + "NotLessLess;": {'\u226A', '\u0338'}, + "NotLessSlantEqual;": {'\u2A7D', '\u0338'}, + "NotNestedGreaterGreater;": {'\u2AA2', '\u0338'}, + "NotNestedLessLess;": {'\u2AA1', '\u0338'}, + "NotPrecedesEqual;": {'\u2AAF', '\u0338'}, + "NotRightTriangleBar;": {'\u29D0', '\u0338'}, + "NotSquareSubset;": {'\u228F', '\u0338'}, + "NotSquareSuperset;": {'\u2290', '\u0338'}, + "NotSubset;": {'\u2282', '\u20D2'}, + "NotSucceedsEqual;": {'\u2AB0', '\u0338'}, + "NotSucceedsTilde;": {'\u227F', '\u0338'}, + "NotSuperset;": {'\u2283', '\u20D2'}, + "ThickSpace;": {'\u205F', '\u200A'}, + "acE;": {'\u223E', '\u0333'}, + "bne;": {'\u003D', '\u20E5'}, + "bnequiv;": {'\u2261', '\u20E5'}, + "caps;": {'\u2229', '\uFE00'}, + "cups;": {'\u222A', '\uFE00'}, + "fjlig;": {'\u0066', '\u006A'}, + "gesl;": {'\u22DB', '\uFE00'}, + "gvertneqq;": {'\u2269', '\uFE00'}, + "gvnE;": {'\u2269', '\uFE00'}, + "lates;": {'\u2AAD', '\uFE00'}, + "lesg;": {'\u22DA', '\uFE00'}, + "lvertneqq;": {'\u2268', '\uFE00'}, + "lvnE;": {'\u2268', '\uFE00'}, + "nGg;": {'\u22D9', '\u0338'}, + "nGtv;": {'\u226B', '\u0338'}, + "nLl;": {'\u22D8', '\u0338'}, + "nLtv;": {'\u226A', '\u0338'}, + "nang;": {'\u2220', '\u20D2'}, + "napE;": {'\u2A70', '\u0338'}, + "napid;": {'\u224B', '\u0338'}, + "nbump;": {'\u224E', '\u0338'}, + "nbumpe;": {'\u224F', '\u0338'}, + "ncongdot;": {'\u2A6D', '\u0338'}, + "nedot;": {'\u2250', '\u0338'}, + "nesim;": {'\u2242', '\u0338'}, + "ngE;": {'\u2267', '\u0338'}, + "ngeqq;": {'\u2267', '\u0338'}, + "ngeqslant;": {'\u2A7E', '\u0338'}, + "nges;": {'\u2A7E', '\u0338'}, + "nlE;": {'\u2266', '\u0338'}, + "nleqq;": {'\u2266', '\u0338'}, + "nleqslant;": {'\u2A7D', '\u0338'}, + "nles;": {'\u2A7D', '\u0338'}, + "notinE;": {'\u22F9', '\u0338'}, + "notindot;": {'\u22F5', '\u0338'}, + "nparsl;": {'\u2AFD', '\u20E5'}, + "npart;": {'\u2202', '\u0338'}, + "npre;": {'\u2AAF', '\u0338'}, + "npreceq;": {'\u2AAF', '\u0338'}, + "nrarrc;": {'\u2933', '\u0338'}, + "nrarrw;": {'\u219D', '\u0338'}, + "nsce;": {'\u2AB0', '\u0338'}, + "nsubE;": {'\u2AC5', '\u0338'}, + "nsubset;": {'\u2282', '\u20D2'}, + "nsubseteqq;": {'\u2AC5', '\u0338'}, + "nsucceq;": {'\u2AB0', '\u0338'}, + "nsupE;": {'\u2AC6', '\u0338'}, + "nsupset;": {'\u2283', '\u20D2'}, + "nsupseteqq;": {'\u2AC6', '\u0338'}, + "nvap;": {'\u224D', '\u20D2'}, + "nvge;": {'\u2265', '\u20D2'}, + "nvgt;": {'\u003E', '\u20D2'}, + "nvle;": {'\u2264', '\u20D2'}, + "nvlt;": {'\u003C', '\u20D2'}, + "nvltrie;": {'\u22B4', '\u20D2'}, + "nvrtrie;": {'\u22B5', '\u20D2'}, + "nvsim;": {'\u223C', '\u20D2'}, + "race;": {'\u223D', '\u0331'}, + "smtes;": {'\u2AAC', '\uFE00'}, + "sqcaps;": {'\u2293', '\uFE00'}, + "sqcups;": {'\u2294', '\uFE00'}, + "varsubsetneq;": {'\u228A', '\uFE00'}, + "varsubsetneqq;": {'\u2ACB', '\uFE00'}, + "varsupsetneq;": {'\u228B', '\uFE00'}, + "varsupsetneqq;": {'\u2ACC', '\uFE00'}, + "vnsub;": {'\u2282', '\u20D2'}, + "vnsup;": {'\u2283', '\u20D2'}, + "vsubnE;": {'\u2ACB', '\uFE00'}, + "vsubne;": {'\u228A', '\uFE00'}, + "vsupnE;": {'\u2ACC', '\uFE00'}, + "vsupne;": {'\u228B', '\uFE00'}, +} diff --git a/vendor/golang.org/x/net/html/escape.go b/vendor/golang.org/x/net/html/escape.go new file mode 100644 index 00000000..d8561396 --- /dev/null +++ b/vendor/golang.org/x/net/html/escape.go @@ -0,0 +1,258 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "bytes" + "strings" + "unicode/utf8" +) + +// These replacements permit compatibility with old numeric entities that +// assumed Windows-1252 encoding. +// https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference +var replacementTable = [...]rune{ + '\u20AC', // First entry is what 0x80 should be replaced with. + '\u0081', + '\u201A', + '\u0192', + '\u201E', + '\u2026', + '\u2020', + '\u2021', + '\u02C6', + '\u2030', + '\u0160', + '\u2039', + '\u0152', + '\u008D', + '\u017D', + '\u008F', + '\u0090', + '\u2018', + '\u2019', + '\u201C', + '\u201D', + '\u2022', + '\u2013', + '\u2014', + '\u02DC', + '\u2122', + '\u0161', + '\u203A', + '\u0153', + '\u009D', + '\u017E', + '\u0178', // Last entry is 0x9F. + // 0x00->'\uFFFD' is handled programmatically. + // 0x0D->'\u000D' is a no-op. +} + +// unescapeEntity reads an entity like "<" from b[src:] and writes the +// corresponding "<" to b[dst:], returning the incremented dst and src cursors. +// Precondition: b[src] == '&' && dst <= src. +// attribute should be true if parsing an attribute value. +func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) { + // https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference + + // i starts at 1 because we already know that s[0] == '&'. + i, s := 1, b[src:] + + if len(s) <= 1 { + b[dst] = b[src] + return dst + 1, src + 1 + } + + if s[i] == '#' { + if len(s) <= 3 { // We need to have at least "&#.". + b[dst] = b[src] + return dst + 1, src + 1 + } + i++ + c := s[i] + hex := false + if c == 'x' || c == 'X' { + hex = true + i++ + } + + x := '\x00' + for i < len(s) { + c = s[i] + i++ + if hex { + if '0' <= c && c <= '9' { + x = 16*x + rune(c) - '0' + continue + } else if 'a' <= c && c <= 'f' { + x = 16*x + rune(c) - 'a' + 10 + continue + } else if 'A' <= c && c <= 'F' { + x = 16*x + rune(c) - 'A' + 10 + continue + } + } else if '0' <= c && c <= '9' { + x = 10*x + rune(c) - '0' + continue + } + if c != ';' { + i-- + } + break + } + + if i <= 3 { // No characters matched. + b[dst] = b[src] + return dst + 1, src + 1 + } + + if 0x80 <= x && x <= 0x9F { + // Replace characters from Windows-1252 with UTF-8 equivalents. + x = replacementTable[x-0x80] + } else if x == 0 || (0xD800 <= x && x <= 0xDFFF) || x > 0x10FFFF { + // Replace invalid characters with the replacement character. + x = '\uFFFD' + } + + return dst + utf8.EncodeRune(b[dst:], x), src + i + } + + // Consume the maximum number of characters possible, with the + // consumed characters matching one of the named references. + + for i < len(s) { + c := s[i] + i++ + // Lower-cased characters are more common in entities, so we check for them first. + if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' { + continue + } + if c != ';' { + i-- + } + break + } + + entityName := string(s[1:i]) + if entityName == "" { + // No-op. + } else if attribute && entityName[len(entityName)-1] != ';' && len(s) > i && s[i] == '=' { + // No-op. + } else if x := entity[entityName]; x != 0 { + return dst + utf8.EncodeRune(b[dst:], x), src + i + } else if x := entity2[entityName]; x[0] != 0 { + dst1 := dst + utf8.EncodeRune(b[dst:], x[0]) + return dst1 + utf8.EncodeRune(b[dst1:], x[1]), src + i + } else if !attribute { + maxLen := len(entityName) - 1 + if maxLen > longestEntityWithoutSemicolon { + maxLen = longestEntityWithoutSemicolon + } + for j := maxLen; j > 1; j-- { + if x := entity[entityName[:j]]; x != 0 { + return dst + utf8.EncodeRune(b[dst:], x), src + j + 1 + } + } + } + + dst1, src1 = dst+i, src+i + copy(b[dst:dst1], b[src:src1]) + return dst1, src1 +} + +// unescape unescapes b's entities in-place, so that "a<b" becomes "a': + esc = ">" + case '"': + // """ is shorter than """. + esc = """ + case '\r': + esc = " " + default: + panic("unrecognized escape character") + } + s = s[i+1:] + if _, err := w.WriteString(esc); err != nil { + return err + } + i = strings.IndexAny(s, escapedChars) + } + _, err := w.WriteString(s) + return err +} + +// EscapeString escapes special characters like "<" to become "<". It +// escapes only five such characters: <, >, &, ' and ". +// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't +// always true. +func EscapeString(s string) string { + if strings.IndexAny(s, escapedChars) == -1 { + return s + } + var buf bytes.Buffer + escape(&buf, s) + return buf.String() +} + +// UnescapeString unescapes entities like "<" to become "<". It unescapes a +// larger range of entities than EscapeString escapes. For example, "á" +// unescapes to "á", as does "á" and "&xE1;". +// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't +// always true. +func UnescapeString(s string) string { + for _, c := range s { + if c == '&' { + return string(unescape([]byte(s), false)) + } + } + return s +} diff --git a/vendor/golang.org/x/net/html/foreign.go b/vendor/golang.org/x/net/html/foreign.go new file mode 100644 index 00000000..d3b38440 --- /dev/null +++ b/vendor/golang.org/x/net/html/foreign.go @@ -0,0 +1,226 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "strings" +) + +func adjustAttributeNames(aa []Attribute, nameMap map[string]string) { + for i := range aa { + if newName, ok := nameMap[aa[i].Key]; ok { + aa[i].Key = newName + } + } +} + +func adjustForeignAttributes(aa []Attribute) { + for i, a := range aa { + if a.Key == "" || a.Key[0] != 'x' { + continue + } + switch a.Key { + case "xlink:actuate", "xlink:arcrole", "xlink:href", "xlink:role", "xlink:show", + "xlink:title", "xlink:type", "xml:base", "xml:lang", "xml:space", "xmlns:xlink": + j := strings.Index(a.Key, ":") + aa[i].Namespace = a.Key[:j] + aa[i].Key = a.Key[j+1:] + } + } +} + +func htmlIntegrationPoint(n *Node) bool { + if n.Type != ElementNode { + return false + } + switch n.Namespace { + case "math": + if n.Data == "annotation-xml" { + for _, a := range n.Attr { + if a.Key == "encoding" { + val := strings.ToLower(a.Val) + if val == "text/html" || val == "application/xhtml+xml" { + return true + } + } + } + } + case "svg": + switch n.Data { + case "desc", "foreignObject", "title": + return true + } + } + return false +} + +func mathMLTextIntegrationPoint(n *Node) bool { + if n.Namespace != "math" { + return false + } + switch n.Data { + case "mi", "mo", "mn", "ms", "mtext": + return true + } + return false +} + +// Section 12.2.5.5. +var breakout = map[string]bool{ + "b": true, + "big": true, + "blockquote": true, + "body": true, + "br": true, + "center": true, + "code": true, + "dd": true, + "div": true, + "dl": true, + "dt": true, + "em": true, + "embed": true, + "h1": true, + "h2": true, + "h3": true, + "h4": true, + "h5": true, + "h6": true, + "head": true, + "hr": true, + "i": true, + "img": true, + "li": true, + "listing": true, + "menu": true, + "meta": true, + "nobr": true, + "ol": true, + "p": true, + "pre": true, + "ruby": true, + "s": true, + "small": true, + "span": true, + "strong": true, + "strike": true, + "sub": true, + "sup": true, + "table": true, + "tt": true, + "u": true, + "ul": true, + "var": true, +} + +// Section 12.2.5.5. +var svgTagNameAdjustments = map[string]string{ + "altglyph": "altGlyph", + "altglyphdef": "altGlyphDef", + "altglyphitem": "altGlyphItem", + "animatecolor": "animateColor", + "animatemotion": "animateMotion", + "animatetransform": "animateTransform", + "clippath": "clipPath", + "feblend": "feBlend", + "fecolormatrix": "feColorMatrix", + "fecomponenttransfer": "feComponentTransfer", + "fecomposite": "feComposite", + "feconvolvematrix": "feConvolveMatrix", + "fediffuselighting": "feDiffuseLighting", + "fedisplacementmap": "feDisplacementMap", + "fedistantlight": "feDistantLight", + "feflood": "feFlood", + "fefunca": "feFuncA", + "fefuncb": "feFuncB", + "fefuncg": "feFuncG", + "fefuncr": "feFuncR", + "fegaussianblur": "feGaussianBlur", + "feimage": "feImage", + "femerge": "feMerge", + "femergenode": "feMergeNode", + "femorphology": "feMorphology", + "feoffset": "feOffset", + "fepointlight": "fePointLight", + "fespecularlighting": "feSpecularLighting", + "fespotlight": "feSpotLight", + "fetile": "feTile", + "feturbulence": "feTurbulence", + "foreignobject": "foreignObject", + "glyphref": "glyphRef", + "lineargradient": "linearGradient", + "radialgradient": "radialGradient", + "textpath": "textPath", +} + +// Section 12.2.5.1 +var mathMLAttributeAdjustments = map[string]string{ + "definitionurl": "definitionURL", +} + +var svgAttributeAdjustments = map[string]string{ + "attributename": "attributeName", + "attributetype": "attributeType", + "basefrequency": "baseFrequency", + "baseprofile": "baseProfile", + "calcmode": "calcMode", + "clippathunits": "clipPathUnits", + "contentscripttype": "contentScriptType", + "contentstyletype": "contentStyleType", + "diffuseconstant": "diffuseConstant", + "edgemode": "edgeMode", + "externalresourcesrequired": "externalResourcesRequired", + "filterres": "filterRes", + "filterunits": "filterUnits", + "glyphref": "glyphRef", + "gradienttransform": "gradientTransform", + "gradientunits": "gradientUnits", + "kernelmatrix": "kernelMatrix", + "kernelunitlength": "kernelUnitLength", + "keypoints": "keyPoints", + "keysplines": "keySplines", + "keytimes": "keyTimes", + "lengthadjust": "lengthAdjust", + "limitingconeangle": "limitingConeAngle", + "markerheight": "markerHeight", + "markerunits": "markerUnits", + "markerwidth": "markerWidth", + "maskcontentunits": "maskContentUnits", + "maskunits": "maskUnits", + "numoctaves": "numOctaves", + "pathlength": "pathLength", + "patterncontentunits": "patternContentUnits", + "patterntransform": "patternTransform", + "patternunits": "patternUnits", + "pointsatx": "pointsAtX", + "pointsaty": "pointsAtY", + "pointsatz": "pointsAtZ", + "preservealpha": "preserveAlpha", + "preserveaspectratio": "preserveAspectRatio", + "primitiveunits": "primitiveUnits", + "refx": "refX", + "refy": "refY", + "repeatcount": "repeatCount", + "repeatdur": "repeatDur", + "requiredextensions": "requiredExtensions", + "requiredfeatures": "requiredFeatures", + "specularconstant": "specularConstant", + "specularexponent": "specularExponent", + "spreadmethod": "spreadMethod", + "startoffset": "startOffset", + "stddeviation": "stdDeviation", + "stitchtiles": "stitchTiles", + "surfacescale": "surfaceScale", + "systemlanguage": "systemLanguage", + "tablevalues": "tableValues", + "targetx": "targetX", + "targety": "targetY", + "textlength": "textLength", + "viewbox": "viewBox", + "viewtarget": "viewTarget", + "xchannelselector": "xChannelSelector", + "ychannelselector": "yChannelSelector", + "zoomandpan": "zoomAndPan", +} diff --git a/vendor/golang.org/x/net/html/node.go b/vendor/golang.org/x/net/html/node.go new file mode 100644 index 00000000..26b657ae --- /dev/null +++ b/vendor/golang.org/x/net/html/node.go @@ -0,0 +1,193 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "golang.org/x/net/html/atom" +) + +// A NodeType is the type of a Node. +type NodeType uint32 + +const ( + ErrorNode NodeType = iota + TextNode + DocumentNode + ElementNode + CommentNode + DoctypeNode + scopeMarkerNode +) + +// Section 12.2.3.3 says "scope markers are inserted when entering applet +// elements, buttons, object elements, marquees, table cells, and table +// captions, and are used to prevent formatting from 'leaking'". +var scopeMarker = Node{Type: scopeMarkerNode} + +// A Node consists of a NodeType and some Data (tag name for element nodes, +// content for text) and are part of a tree of Nodes. Element nodes may also +// have a Namespace and contain a slice of Attributes. Data is unescaped, so +// that it looks like "a 0 { + return (*s)[i-1] + } + return nil +} + +// index returns the index of the top-most occurrence of n in the stack, or -1 +// if n is not present. +func (s *nodeStack) index(n *Node) int { + for i := len(*s) - 1; i >= 0; i-- { + if (*s)[i] == n { + return i + } + } + return -1 +} + +// insert inserts a node at the given index. +func (s *nodeStack) insert(i int, n *Node) { + (*s) = append(*s, nil) + copy((*s)[i+1:], (*s)[i:]) + (*s)[i] = n +} + +// remove removes a node from the stack. It is a no-op if n is not present. +func (s *nodeStack) remove(n *Node) { + i := s.index(n) + if i == -1 { + return + } + copy((*s)[i:], (*s)[i+1:]) + j := len(*s) - 1 + (*s)[j] = nil + *s = (*s)[:j] +} diff --git a/vendor/golang.org/x/net/html/parse.go b/vendor/golang.org/x/net/html/parse.go new file mode 100644 index 00000000..be4b2bf5 --- /dev/null +++ b/vendor/golang.org/x/net/html/parse.go @@ -0,0 +1,2094 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "errors" + "fmt" + "io" + "strings" + + a "golang.org/x/net/html/atom" +) + +// A parser implements the HTML5 parsing algorithm: +// https://html.spec.whatwg.org/multipage/syntax.html#tree-construction +type parser struct { + // tokenizer provides the tokens for the parser. + tokenizer *Tokenizer + // tok is the most recently read token. + tok Token + // Self-closing tags like
are treated as start tags, except that + // hasSelfClosingToken is set while they are being processed. + hasSelfClosingToken bool + // doc is the document root element. + doc *Node + // The stack of open elements (section 12.2.3.2) and active formatting + // elements (section 12.2.3.3). + oe, afe nodeStack + // Element pointers (section 12.2.3.4). + head, form *Node + // Other parsing state flags (section 12.2.3.5). + scripting, framesetOK bool + // im is the current insertion mode. + im insertionMode + // originalIM is the insertion mode to go back to after completing a text + // or inTableText insertion mode. + originalIM insertionMode + // fosterParenting is whether new elements should be inserted according to + // the foster parenting rules (section 12.2.5.3). + fosterParenting bool + // quirks is whether the parser is operating in "quirks mode." + quirks bool + // fragment is whether the parser is parsing an HTML fragment. + fragment bool + // context is the context element when parsing an HTML fragment + // (section 12.4). + context *Node +} + +func (p *parser) top() *Node { + if n := p.oe.top(); n != nil { + return n + } + return p.doc +} + +// Stop tags for use in popUntil. These come from section 12.2.3.2. +var ( + defaultScopeStopTags = map[string][]a.Atom{ + "": {a.Applet, a.Caption, a.Html, a.Table, a.Td, a.Th, a.Marquee, a.Object, a.Template}, + "math": {a.AnnotationXml, a.Mi, a.Mn, a.Mo, a.Ms, a.Mtext}, + "svg": {a.Desc, a.ForeignObject, a.Title}, + } +) + +type scope int + +const ( + defaultScope scope = iota + listItemScope + buttonScope + tableScope + tableRowScope + tableBodyScope + selectScope +) + +// popUntil pops the stack of open elements at the highest element whose tag +// is in matchTags, provided there is no higher element in the scope's stop +// tags (as defined in section 12.2.3.2). It returns whether or not there was +// such an element. If there was not, popUntil leaves the stack unchanged. +// +// For example, the set of stop tags for table scope is: "html", "table". If +// the stack was: +// ["html", "body", "font", "table", "b", "i", "u"] +// then popUntil(tableScope, "font") would return false, but +// popUntil(tableScope, "i") would return true and the stack would become: +// ["html", "body", "font", "table", "b"] +// +// If an element's tag is in both the stop tags and matchTags, then the stack +// will be popped and the function returns true (provided, of course, there was +// no higher element in the stack that was also in the stop tags). For example, +// popUntil(tableScope, "table") returns true and leaves: +// ["html", "body", "font"] +func (p *parser) popUntil(s scope, matchTags ...a.Atom) bool { + if i := p.indexOfElementInScope(s, matchTags...); i != -1 { + p.oe = p.oe[:i] + return true + } + return false +} + +// indexOfElementInScope returns the index in p.oe of the highest element whose +// tag is in matchTags that is in scope. If no matching element is in scope, it +// returns -1. +func (p *parser) indexOfElementInScope(s scope, matchTags ...a.Atom) int { + for i := len(p.oe) - 1; i >= 0; i-- { + tagAtom := p.oe[i].DataAtom + if p.oe[i].Namespace == "" { + for _, t := range matchTags { + if t == tagAtom { + return i + } + } + switch s { + case defaultScope: + // No-op. + case listItemScope: + if tagAtom == a.Ol || tagAtom == a.Ul { + return -1 + } + case buttonScope: + if tagAtom == a.Button { + return -1 + } + case tableScope: + if tagAtom == a.Html || tagAtom == a.Table { + return -1 + } + case selectScope: + if tagAtom != a.Optgroup && tagAtom != a.Option { + return -1 + } + default: + panic("unreachable") + } + } + switch s { + case defaultScope, listItemScope, buttonScope: + for _, t := range defaultScopeStopTags[p.oe[i].Namespace] { + if t == tagAtom { + return -1 + } + } + } + } + return -1 +} + +// elementInScope is like popUntil, except that it doesn't modify the stack of +// open elements. +func (p *parser) elementInScope(s scope, matchTags ...a.Atom) bool { + return p.indexOfElementInScope(s, matchTags...) != -1 +} + +// clearStackToContext pops elements off the stack of open elements until a +// scope-defined element is found. +func (p *parser) clearStackToContext(s scope) { + for i := len(p.oe) - 1; i >= 0; i-- { + tagAtom := p.oe[i].DataAtom + switch s { + case tableScope: + if tagAtom == a.Html || tagAtom == a.Table { + p.oe = p.oe[:i+1] + return + } + case tableRowScope: + if tagAtom == a.Html || tagAtom == a.Tr { + p.oe = p.oe[:i+1] + return + } + case tableBodyScope: + if tagAtom == a.Html || tagAtom == a.Tbody || tagAtom == a.Tfoot || tagAtom == a.Thead { + p.oe = p.oe[:i+1] + return + } + default: + panic("unreachable") + } + } +} + +// generateImpliedEndTags pops nodes off the stack of open elements as long as +// the top node has a tag name of dd, dt, li, option, optgroup, p, rp, or rt. +// If exceptions are specified, nodes with that name will not be popped off. +func (p *parser) generateImpliedEndTags(exceptions ...string) { + var i int +loop: + for i = len(p.oe) - 1; i >= 0; i-- { + n := p.oe[i] + if n.Type == ElementNode { + switch n.DataAtom { + case a.Dd, a.Dt, a.Li, a.Option, a.Optgroup, a.P, a.Rp, a.Rt: + for _, except := range exceptions { + if n.Data == except { + break loop + } + } + continue + } + } + break + } + + p.oe = p.oe[:i+1] +} + +// addChild adds a child node n to the top element, and pushes n onto the stack +// of open elements if it is an element node. +func (p *parser) addChild(n *Node) { + if p.shouldFosterParent() { + p.fosterParent(n) + } else { + p.top().AppendChild(n) + } + + if n.Type == ElementNode { + p.oe = append(p.oe, n) + } +} + +// shouldFosterParent returns whether the next node to be added should be +// foster parented. +func (p *parser) shouldFosterParent() bool { + if p.fosterParenting { + switch p.top().DataAtom { + case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr: + return true + } + } + return false +} + +// fosterParent adds a child node according to the foster parenting rules. +// Section 12.2.5.3, "foster parenting". +func (p *parser) fosterParent(n *Node) { + var table, parent, prev *Node + var i int + for i = len(p.oe) - 1; i >= 0; i-- { + if p.oe[i].DataAtom == a.Table { + table = p.oe[i] + break + } + } + + if table == nil { + // The foster parent is the html element. + parent = p.oe[0] + } else { + parent = table.Parent + } + if parent == nil { + parent = p.oe[i-1] + } + + if table != nil { + prev = table.PrevSibling + } else { + prev = parent.LastChild + } + if prev != nil && prev.Type == TextNode && n.Type == TextNode { + prev.Data += n.Data + return + } + + parent.InsertBefore(n, table) +} + +// addText adds text to the preceding node if it is a text node, or else it +// calls addChild with a new text node. +func (p *parser) addText(text string) { + if text == "" { + return + } + + if p.shouldFosterParent() { + p.fosterParent(&Node{ + Type: TextNode, + Data: text, + }) + return + } + + t := p.top() + if n := t.LastChild; n != nil && n.Type == TextNode { + n.Data += text + return + } + p.addChild(&Node{ + Type: TextNode, + Data: text, + }) +} + +// addElement adds a child element based on the current token. +func (p *parser) addElement() { + p.addChild(&Node{ + Type: ElementNode, + DataAtom: p.tok.DataAtom, + Data: p.tok.Data, + Attr: p.tok.Attr, + }) +} + +// Section 12.2.3.3. +func (p *parser) addFormattingElement() { + tagAtom, attr := p.tok.DataAtom, p.tok.Attr + p.addElement() + + // Implement the Noah's Ark clause, but with three per family instead of two. + identicalElements := 0 +findIdenticalElements: + for i := len(p.afe) - 1; i >= 0; i-- { + n := p.afe[i] + if n.Type == scopeMarkerNode { + break + } + if n.Type != ElementNode { + continue + } + if n.Namespace != "" { + continue + } + if n.DataAtom != tagAtom { + continue + } + if len(n.Attr) != len(attr) { + continue + } + compareAttributes: + for _, t0 := range n.Attr { + for _, t1 := range attr { + if t0.Key == t1.Key && t0.Namespace == t1.Namespace && t0.Val == t1.Val { + // Found a match for this attribute, continue with the next attribute. + continue compareAttributes + } + } + // If we get here, there is no attribute that matches a. + // Therefore the element is not identical to the new one. + continue findIdenticalElements + } + + identicalElements++ + if identicalElements >= 3 { + p.afe.remove(n) + } + } + + p.afe = append(p.afe, p.top()) +} + +// Section 12.2.3.3. +func (p *parser) clearActiveFormattingElements() { + for { + n := p.afe.pop() + if len(p.afe) == 0 || n.Type == scopeMarkerNode { + return + } + } +} + +// Section 12.2.3.3. +func (p *parser) reconstructActiveFormattingElements() { + n := p.afe.top() + if n == nil { + return + } + if n.Type == scopeMarkerNode || p.oe.index(n) != -1 { + return + } + i := len(p.afe) - 1 + for n.Type != scopeMarkerNode && p.oe.index(n) == -1 { + if i == 0 { + i = -1 + break + } + i-- + n = p.afe[i] + } + for { + i++ + clone := p.afe[i].clone() + p.addChild(clone) + p.afe[i] = clone + if i == len(p.afe)-1 { + break + } + } +} + +// Section 12.2.4. +func (p *parser) acknowledgeSelfClosingTag() { + p.hasSelfClosingToken = false +} + +// An insertion mode (section 12.2.3.1) is the state transition function from +// a particular state in the HTML5 parser's state machine. It updates the +// parser's fields depending on parser.tok (where ErrorToken means EOF). +// It returns whether the token was consumed. +type insertionMode func(*parser) bool + +// setOriginalIM sets the insertion mode to return to after completing a text or +// inTableText insertion mode. +// Section 12.2.3.1, "using the rules for". +func (p *parser) setOriginalIM() { + if p.originalIM != nil { + panic("html: bad parser state: originalIM was set twice") + } + p.originalIM = p.im +} + +// Section 12.2.3.1, "reset the insertion mode". +func (p *parser) resetInsertionMode() { + for i := len(p.oe) - 1; i >= 0; i-- { + n := p.oe[i] + if i == 0 && p.context != nil { + n = p.context + } + + switch n.DataAtom { + case a.Select: + p.im = inSelectIM + case a.Td, a.Th: + p.im = inCellIM + case a.Tr: + p.im = inRowIM + case a.Tbody, a.Thead, a.Tfoot: + p.im = inTableBodyIM + case a.Caption: + p.im = inCaptionIM + case a.Colgroup: + p.im = inColumnGroupIM + case a.Table: + p.im = inTableIM + case a.Head: + p.im = inBodyIM + case a.Body: + p.im = inBodyIM + case a.Frameset: + p.im = inFramesetIM + case a.Html: + p.im = beforeHeadIM + default: + continue + } + return + } + p.im = inBodyIM +} + +const whitespace = " \t\r\n\f" + +// Section 12.2.5.4.1. +func initialIM(p *parser) bool { + switch p.tok.Type { + case TextToken: + p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) + if len(p.tok.Data) == 0 { + // It was all whitespace, so ignore it. + return true + } + case CommentToken: + p.doc.AppendChild(&Node{ + Type: CommentNode, + Data: p.tok.Data, + }) + return true + case DoctypeToken: + n, quirks := parseDoctype(p.tok.Data) + p.doc.AppendChild(n) + p.quirks = quirks + p.im = beforeHTMLIM + return true + } + p.quirks = true + p.im = beforeHTMLIM + return false +} + +// Section 12.2.5.4.2. +func beforeHTMLIM(p *parser) bool { + switch p.tok.Type { + case DoctypeToken: + // Ignore the token. + return true + case TextToken: + p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) + if len(p.tok.Data) == 0 { + // It was all whitespace, so ignore it. + return true + } + case StartTagToken: + if p.tok.DataAtom == a.Html { + p.addElement() + p.im = beforeHeadIM + return true + } + case EndTagToken: + switch p.tok.DataAtom { + case a.Head, a.Body, a.Html, a.Br: + p.parseImpliedToken(StartTagToken, a.Html, a.Html.String()) + return false + default: + // Ignore the token. + return true + } + case CommentToken: + p.doc.AppendChild(&Node{ + Type: CommentNode, + Data: p.tok.Data, + }) + return true + } + p.parseImpliedToken(StartTagToken, a.Html, a.Html.String()) + return false +} + +// Section 12.2.5.4.3. +func beforeHeadIM(p *parser) bool { + switch p.tok.Type { + case TextToken: + p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) + if len(p.tok.Data) == 0 { + // It was all whitespace, so ignore it. + return true + } + case StartTagToken: + switch p.tok.DataAtom { + case a.Head: + p.addElement() + p.head = p.top() + p.im = inHeadIM + return true + case a.Html: + return inBodyIM(p) + } + case EndTagToken: + switch p.tok.DataAtom { + case a.Head, a.Body, a.Html, a.Br: + p.parseImpliedToken(StartTagToken, a.Head, a.Head.String()) + return false + default: + // Ignore the token. + return true + } + case CommentToken: + p.addChild(&Node{ + Type: CommentNode, + Data: p.tok.Data, + }) + return true + case DoctypeToken: + // Ignore the token. + return true + } + + p.parseImpliedToken(StartTagToken, a.Head, a.Head.String()) + return false +} + +// Section 12.2.5.4.4. +func inHeadIM(p *parser) bool { + switch p.tok.Type { + case TextToken: + s := strings.TrimLeft(p.tok.Data, whitespace) + if len(s) < len(p.tok.Data) { + // Add the initial whitespace to the current node. + p.addText(p.tok.Data[:len(p.tok.Data)-len(s)]) + if s == "" { + return true + } + p.tok.Data = s + } + case StartTagToken: + switch p.tok.DataAtom { + case a.Html: + return inBodyIM(p) + case a.Base, a.Basefont, a.Bgsound, a.Command, a.Link, a.Meta: + p.addElement() + p.oe.pop() + p.acknowledgeSelfClosingTag() + return true + case a.Script, a.Title, a.Noscript, a.Noframes, a.Style: + p.addElement() + p.setOriginalIM() + p.im = textIM + return true + case a.Head: + // Ignore the token. + return true + } + case EndTagToken: + switch p.tok.DataAtom { + case a.Head: + n := p.oe.pop() + if n.DataAtom != a.Head { + panic("html: bad parser state: element not found, in the in-head insertion mode") + } + p.im = afterHeadIM + return true + case a.Body, a.Html, a.Br: + p.parseImpliedToken(EndTagToken, a.Head, a.Head.String()) + return false + default: + // Ignore the token. + return true + } + case CommentToken: + p.addChild(&Node{ + Type: CommentNode, + Data: p.tok.Data, + }) + return true + case DoctypeToken: + // Ignore the token. + return true + } + + p.parseImpliedToken(EndTagToken, a.Head, a.Head.String()) + return false +} + +// Section 12.2.5.4.6. +func afterHeadIM(p *parser) bool { + switch p.tok.Type { + case TextToken: + s := strings.TrimLeft(p.tok.Data, whitespace) + if len(s) < len(p.tok.Data) { + // Add the initial whitespace to the current node. + p.addText(p.tok.Data[:len(p.tok.Data)-len(s)]) + if s == "" { + return true + } + p.tok.Data = s + } + case StartTagToken: + switch p.tok.DataAtom { + case a.Html: + return inBodyIM(p) + case a.Body: + p.addElement() + p.framesetOK = false + p.im = inBodyIM + return true + case a.Frameset: + p.addElement() + p.im = inFramesetIM + return true + case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Title: + p.oe = append(p.oe, p.head) + defer p.oe.remove(p.head) + return inHeadIM(p) + case a.Head: + // Ignore the token. + return true + } + case EndTagToken: + switch p.tok.DataAtom { + case a.Body, a.Html, a.Br: + // Drop down to creating an implied tag. + default: + // Ignore the token. + return true + } + case CommentToken: + p.addChild(&Node{ + Type: CommentNode, + Data: p.tok.Data, + }) + return true + case DoctypeToken: + // Ignore the token. + return true + } + + p.parseImpliedToken(StartTagToken, a.Body, a.Body.String()) + p.framesetOK = true + return false +} + +// copyAttributes copies attributes of src not found on dst to dst. +func copyAttributes(dst *Node, src Token) { + if len(src.Attr) == 0 { + return + } + attr := map[string]string{} + for _, t := range dst.Attr { + attr[t.Key] = t.Val + } + for _, t := range src.Attr { + if _, ok := attr[t.Key]; !ok { + dst.Attr = append(dst.Attr, t) + attr[t.Key] = t.Val + } + } +} + +// Section 12.2.5.4.7. +func inBodyIM(p *parser) bool { + switch p.tok.Type { + case TextToken: + d := p.tok.Data + switch n := p.oe.top(); n.DataAtom { + case a.Pre, a.Listing: + if n.FirstChild == nil { + // Ignore a newline at the start of a
 block.
+				if d != "" && d[0] == '\r' {
+					d = d[1:]
+				}
+				if d != "" && d[0] == '\n' {
+					d = d[1:]
+				}
+			}
+		}
+		d = strings.Replace(d, "\x00", "", -1)
+		if d == "" {
+			return true
+		}
+		p.reconstructActiveFormattingElements()
+		p.addText(d)
+		if p.framesetOK && strings.TrimLeft(d, whitespace) != "" {
+			// There were non-whitespace characters inserted.
+			p.framesetOK = false
+		}
+	case StartTagToken:
+		switch p.tok.DataAtom {
+		case a.Html:
+			copyAttributes(p.oe[0], p.tok)
+		case a.Base, a.Basefont, a.Bgsound, a.Command, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Title:
+			return inHeadIM(p)
+		case a.Body:
+			if len(p.oe) >= 2 {
+				body := p.oe[1]
+				if body.Type == ElementNode && body.DataAtom == a.Body {
+					p.framesetOK = false
+					copyAttributes(body, p.tok)
+				}
+			}
+		case a.Frameset:
+			if !p.framesetOK || len(p.oe) < 2 || p.oe[1].DataAtom != a.Body {
+				// Ignore the token.
+				return true
+			}
+			body := p.oe[1]
+			if body.Parent != nil {
+				body.Parent.RemoveChild(body)
+			}
+			p.oe = p.oe[:1]
+			p.addElement()
+			p.im = inFramesetIM
+			return true
+		case a.Address, a.Article, a.Aside, a.Blockquote, a.Center, a.Details, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Menu, a.Nav, a.Ol, a.P, a.Section, a.Summary, a.Ul:
+			p.popUntil(buttonScope, a.P)
+			p.addElement()
+		case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
+			p.popUntil(buttonScope, a.P)
+			switch n := p.top(); n.DataAtom {
+			case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
+				p.oe.pop()
+			}
+			p.addElement()
+		case a.Pre, a.Listing:
+			p.popUntil(buttonScope, a.P)
+			p.addElement()
+			// The newline, if any, will be dealt with by the TextToken case.
+			p.framesetOK = false
+		case a.Form:
+			if p.form == nil {
+				p.popUntil(buttonScope, a.P)
+				p.addElement()
+				p.form = p.top()
+			}
+		case a.Li:
+			p.framesetOK = false
+			for i := len(p.oe) - 1; i >= 0; i-- {
+				node := p.oe[i]
+				switch node.DataAtom {
+				case a.Li:
+					p.oe = p.oe[:i]
+				case a.Address, a.Div, a.P:
+					continue
+				default:
+					if !isSpecialElement(node) {
+						continue
+					}
+				}
+				break
+			}
+			p.popUntil(buttonScope, a.P)
+			p.addElement()
+		case a.Dd, a.Dt:
+			p.framesetOK = false
+			for i := len(p.oe) - 1; i >= 0; i-- {
+				node := p.oe[i]
+				switch node.DataAtom {
+				case a.Dd, a.Dt:
+					p.oe = p.oe[:i]
+				case a.Address, a.Div, a.P:
+					continue
+				default:
+					if !isSpecialElement(node) {
+						continue
+					}
+				}
+				break
+			}
+			p.popUntil(buttonScope, a.P)
+			p.addElement()
+		case a.Plaintext:
+			p.popUntil(buttonScope, a.P)
+			p.addElement()
+		case a.Button:
+			p.popUntil(defaultScope, a.Button)
+			p.reconstructActiveFormattingElements()
+			p.addElement()
+			p.framesetOK = false
+		case a.A:
+			for i := len(p.afe) - 1; i >= 0 && p.afe[i].Type != scopeMarkerNode; i-- {
+				if n := p.afe[i]; n.Type == ElementNode && n.DataAtom == a.A {
+					p.inBodyEndTagFormatting(a.A)
+					p.oe.remove(n)
+					p.afe.remove(n)
+					break
+				}
+			}
+			p.reconstructActiveFormattingElements()
+			p.addFormattingElement()
+		case a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U:
+			p.reconstructActiveFormattingElements()
+			p.addFormattingElement()
+		case a.Nobr:
+			p.reconstructActiveFormattingElements()
+			if p.elementInScope(defaultScope, a.Nobr) {
+				p.inBodyEndTagFormatting(a.Nobr)
+				p.reconstructActiveFormattingElements()
+			}
+			p.addFormattingElement()
+		case a.Applet, a.Marquee, a.Object:
+			p.reconstructActiveFormattingElements()
+			p.addElement()
+			p.afe = append(p.afe, &scopeMarker)
+			p.framesetOK = false
+		case a.Table:
+			if !p.quirks {
+				p.popUntil(buttonScope, a.P)
+			}
+			p.addElement()
+			p.framesetOK = false
+			p.im = inTableIM
+			return true
+		case a.Area, a.Br, a.Embed, a.Img, a.Input, a.Keygen, a.Wbr:
+			p.reconstructActiveFormattingElements()
+			p.addElement()
+			p.oe.pop()
+			p.acknowledgeSelfClosingTag()
+			if p.tok.DataAtom == a.Input {
+				for _, t := range p.tok.Attr {
+					if t.Key == "type" {
+						if strings.ToLower(t.Val) == "hidden" {
+							// Skip setting framesetOK = false
+							return true
+						}
+					}
+				}
+			}
+			p.framesetOK = false
+		case a.Param, a.Source, a.Track:
+			p.addElement()
+			p.oe.pop()
+			p.acknowledgeSelfClosingTag()
+		case a.Hr:
+			p.popUntil(buttonScope, a.P)
+			p.addElement()
+			p.oe.pop()
+			p.acknowledgeSelfClosingTag()
+			p.framesetOK = false
+		case a.Image:
+			p.tok.DataAtom = a.Img
+			p.tok.Data = a.Img.String()
+			return false
+		case a.Isindex:
+			if p.form != nil {
+				// Ignore the token.
+				return true
+			}
+			action := ""
+			prompt := "This is a searchable index. Enter search keywords: "
+			attr := []Attribute{{Key: "name", Val: "isindex"}}
+			for _, t := range p.tok.Attr {
+				switch t.Key {
+				case "action":
+					action = t.Val
+				case "name":
+					// Ignore the attribute.
+				case "prompt":
+					prompt = t.Val
+				default:
+					attr = append(attr, t)
+				}
+			}
+			p.acknowledgeSelfClosingTag()
+			p.popUntil(buttonScope, a.P)
+			p.parseImpliedToken(StartTagToken, a.Form, a.Form.String())
+			if action != "" {
+				p.form.Attr = []Attribute{{Key: "action", Val: action}}
+			}
+			p.parseImpliedToken(StartTagToken, a.Hr, a.Hr.String())
+			p.parseImpliedToken(StartTagToken, a.Label, a.Label.String())
+			p.addText(prompt)
+			p.addChild(&Node{
+				Type:     ElementNode,
+				DataAtom: a.Input,
+				Data:     a.Input.String(),
+				Attr:     attr,
+			})
+			p.oe.pop()
+			p.parseImpliedToken(EndTagToken, a.Label, a.Label.String())
+			p.parseImpliedToken(StartTagToken, a.Hr, a.Hr.String())
+			p.parseImpliedToken(EndTagToken, a.Form, a.Form.String())
+		case a.Textarea:
+			p.addElement()
+			p.setOriginalIM()
+			p.framesetOK = false
+			p.im = textIM
+		case a.Xmp:
+			p.popUntil(buttonScope, a.P)
+			p.reconstructActiveFormattingElements()
+			p.framesetOK = false
+			p.addElement()
+			p.setOriginalIM()
+			p.im = textIM
+		case a.Iframe:
+			p.framesetOK = false
+			p.addElement()
+			p.setOriginalIM()
+			p.im = textIM
+		case a.Noembed, a.Noscript:
+			p.addElement()
+			p.setOriginalIM()
+			p.im = textIM
+		case a.Select:
+			p.reconstructActiveFormattingElements()
+			p.addElement()
+			p.framesetOK = false
+			p.im = inSelectIM
+			return true
+		case a.Optgroup, a.Option:
+			if p.top().DataAtom == a.Option {
+				p.oe.pop()
+			}
+			p.reconstructActiveFormattingElements()
+			p.addElement()
+		case a.Rp, a.Rt:
+			if p.elementInScope(defaultScope, a.Ruby) {
+				p.generateImpliedEndTags()
+			}
+			p.addElement()
+		case a.Math, a.Svg:
+			p.reconstructActiveFormattingElements()
+			if p.tok.DataAtom == a.Math {
+				adjustAttributeNames(p.tok.Attr, mathMLAttributeAdjustments)
+			} else {
+				adjustAttributeNames(p.tok.Attr, svgAttributeAdjustments)
+			}
+			adjustForeignAttributes(p.tok.Attr)
+			p.addElement()
+			p.top().Namespace = p.tok.Data
+			if p.hasSelfClosingToken {
+				p.oe.pop()
+				p.acknowledgeSelfClosingTag()
+			}
+			return true
+		case a.Caption, a.Col, a.Colgroup, a.Frame, a.Head, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:
+			// Ignore the token.
+		default:
+			p.reconstructActiveFormattingElements()
+			p.addElement()
+		}
+	case EndTagToken:
+		switch p.tok.DataAtom {
+		case a.Body:
+			if p.elementInScope(defaultScope, a.Body) {
+				p.im = afterBodyIM
+			}
+		case a.Html:
+			if p.elementInScope(defaultScope, a.Body) {
+				p.parseImpliedToken(EndTagToken, a.Body, a.Body.String())
+				return false
+			}
+			return true
+		case a.Address, a.Article, a.Aside, a.Blockquote, a.Button, a.Center, a.Details, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Listing, a.Menu, a.Nav, a.Ol, a.Pre, a.Section, a.Summary, a.Ul:
+			p.popUntil(defaultScope, p.tok.DataAtom)
+		case a.Form:
+			node := p.form
+			p.form = nil
+			i := p.indexOfElementInScope(defaultScope, a.Form)
+			if node == nil || i == -1 || p.oe[i] != node {
+				// Ignore the token.
+				return true
+			}
+			p.generateImpliedEndTags()
+			p.oe.remove(node)
+		case a.P:
+			if !p.elementInScope(buttonScope, a.P) {
+				p.parseImpliedToken(StartTagToken, a.P, a.P.String())
+			}
+			p.popUntil(buttonScope, a.P)
+		case a.Li:
+			p.popUntil(listItemScope, a.Li)
+		case a.Dd, a.Dt:
+			p.popUntil(defaultScope, p.tok.DataAtom)
+		case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
+			p.popUntil(defaultScope, a.H1, a.H2, a.H3, a.H4, a.H5, a.H6)
+		case a.A, a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.Nobr, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U:
+			p.inBodyEndTagFormatting(p.tok.DataAtom)
+		case a.Applet, a.Marquee, a.Object:
+			if p.popUntil(defaultScope, p.tok.DataAtom) {
+				p.clearActiveFormattingElements()
+			}
+		case a.Br:
+			p.tok.Type = StartTagToken
+			return false
+		default:
+			p.inBodyEndTagOther(p.tok.DataAtom)
+		}
+	case CommentToken:
+		p.addChild(&Node{
+			Type: CommentNode,
+			Data: p.tok.Data,
+		})
+	}
+
+	return true
+}
+
+func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom) {
+	// This is the "adoption agency" algorithm, described at
+	// https://html.spec.whatwg.org/multipage/syntax.html#adoptionAgency
+
+	// TODO: this is a fairly literal line-by-line translation of that algorithm.
+	// Once the code successfully parses the comprehensive test suite, we should
+	// refactor this code to be more idiomatic.
+
+	// Steps 1-4. The outer loop.
+	for i := 0; i < 8; i++ {
+		// Step 5. Find the formatting element.
+		var formattingElement *Node
+		for j := len(p.afe) - 1; j >= 0; j-- {
+			if p.afe[j].Type == scopeMarkerNode {
+				break
+			}
+			if p.afe[j].DataAtom == tagAtom {
+				formattingElement = p.afe[j]
+				break
+			}
+		}
+		if formattingElement == nil {
+			p.inBodyEndTagOther(tagAtom)
+			return
+		}
+		feIndex := p.oe.index(formattingElement)
+		if feIndex == -1 {
+			p.afe.remove(formattingElement)
+			return
+		}
+		if !p.elementInScope(defaultScope, tagAtom) {
+			// Ignore the tag.
+			return
+		}
+
+		// Steps 9-10. Find the furthest block.
+		var furthestBlock *Node
+		for _, e := range p.oe[feIndex:] {
+			if isSpecialElement(e) {
+				furthestBlock = e
+				break
+			}
+		}
+		if furthestBlock == nil {
+			e := p.oe.pop()
+			for e != formattingElement {
+				e = p.oe.pop()
+			}
+			p.afe.remove(e)
+			return
+		}
+
+		// Steps 11-12. Find the common ancestor and bookmark node.
+		commonAncestor := p.oe[feIndex-1]
+		bookmark := p.afe.index(formattingElement)
+
+		// Step 13. The inner loop. Find the lastNode to reparent.
+		lastNode := furthestBlock
+		node := furthestBlock
+		x := p.oe.index(node)
+		// Steps 13.1-13.2
+		for j := 0; j < 3; j++ {
+			// Step 13.3.
+			x--
+			node = p.oe[x]
+			// Step 13.4 - 13.5.
+			if p.afe.index(node) == -1 {
+				p.oe.remove(node)
+				continue
+			}
+			// Step 13.6.
+			if node == formattingElement {
+				break
+			}
+			// Step 13.7.
+			clone := node.clone()
+			p.afe[p.afe.index(node)] = clone
+			p.oe[p.oe.index(node)] = clone
+			node = clone
+			// Step 13.8.
+			if lastNode == furthestBlock {
+				bookmark = p.afe.index(node) + 1
+			}
+			// Step 13.9.
+			if lastNode.Parent != nil {
+				lastNode.Parent.RemoveChild(lastNode)
+			}
+			node.AppendChild(lastNode)
+			// Step 13.10.
+			lastNode = node
+		}
+
+		// Step 14. Reparent lastNode to the common ancestor,
+		// or for misnested table nodes, to the foster parent.
+		if lastNode.Parent != nil {
+			lastNode.Parent.RemoveChild(lastNode)
+		}
+		switch commonAncestor.DataAtom {
+		case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:
+			p.fosterParent(lastNode)
+		default:
+			commonAncestor.AppendChild(lastNode)
+		}
+
+		// Steps 15-17. Reparent nodes from the furthest block's children
+		// to a clone of the formatting element.
+		clone := formattingElement.clone()
+		reparentChildren(clone, furthestBlock)
+		furthestBlock.AppendChild(clone)
+
+		// Step 18. Fix up the list of active formatting elements.
+		if oldLoc := p.afe.index(formattingElement); oldLoc != -1 && oldLoc < bookmark {
+			// Move the bookmark with the rest of the list.
+			bookmark--
+		}
+		p.afe.remove(formattingElement)
+		p.afe.insert(bookmark, clone)
+
+		// Step 19. Fix up the stack of open elements.
+		p.oe.remove(formattingElement)
+		p.oe.insert(p.oe.index(furthestBlock)+1, clone)
+	}
+}
+
+// inBodyEndTagOther performs the "any other end tag" algorithm for inBodyIM.
+// "Any other end tag" handling from 12.2.5.5 The rules for parsing tokens in foreign content
+// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inforeign
+func (p *parser) inBodyEndTagOther(tagAtom a.Atom) {
+	for i := len(p.oe) - 1; i >= 0; i-- {
+		if p.oe[i].DataAtom == tagAtom {
+			p.oe = p.oe[:i]
+			break
+		}
+		if isSpecialElement(p.oe[i]) {
+			break
+		}
+	}
+}
+
+// Section 12.2.5.4.8.
+func textIM(p *parser) bool {
+	switch p.tok.Type {
+	case ErrorToken:
+		p.oe.pop()
+	case TextToken:
+		d := p.tok.Data
+		if n := p.oe.top(); n.DataAtom == a.Textarea && n.FirstChild == nil {
+			// Ignore a newline at the start of a