/* C++ code produced by gperf version 3.0.4 */
/* Command-line: /usr/bin/gperf --key-positions='*' -m 10 -s 2 --output-file=SelectorPseudoClassAndCompatibilityElementMap.cpp SelectorPseudoClassAndCompatibilityElementMap.gperf  */

#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
/* The character set is not based on ISO-646.  */
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
#endif

#line 2 "SelectorPseudoClassAndCompatibilityElementMap.gperf"

/*
 * Copyright (C) 2014-2016 Apple Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 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 APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.
 */

// This file is automatically generated from SelectorPseudoTypeMap.in by makeprop, do not edit by hand.

#include "config.h"
#include "SelectorPseudoTypeMap.h"

#include "CSSParserValues.h"

#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wdeprecated-register"
#pragma clang diagnostic ignored "-Wimplicit-fallthrough"
#endif

namespace WebCore {

struct SelectorPseudoClassOrCompatibilityPseudoElementEntry {
    const char* name;
    PseudoClassOrCompatibilityPseudoElement pseudoTypes;
};

enum
  {
    TOTAL_KEYWORDS = 62,
    MIN_WORD_LENGTH = 3,
    MAX_WORD_LENGTH = 23,
    MIN_HASH_VALUE = 4,
    MAX_HASH_VALUE = 169
  };

/* maximum key range = 166, duplicates = 0 */

#ifndef GPERF_DOWNCASE
#define GPERF_DOWNCASE 1
static unsigned char gperf_downcase[256] =
  {
      0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,
     15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
     30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
     45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
     60,  61,  62,  63,  64,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106,
    107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
    122,  91,  92,  93,  94,  95,  96,  97,  98,  99, 100, 101, 102, 103, 104,
    105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
    120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
    135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
    150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
    165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
    180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
    195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
    210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
    225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
    240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
    255
  };
#endif

#ifndef GPERF_CASE_STRNCMP
#define GPERF_CASE_STRNCMP 1
static int
gperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n)
{
  for (; n > 0;)
    {
      unsigned char c1 = gperf_downcase[(unsigned char)*s1++];
      unsigned char c2 = gperf_downcase[(unsigned char)*s2++];
      if (c1 != 0 && c1 == c2)
        {
          n--;
          continue;
        }
      return (int)c1 - (int)c2;
    }
  return 0;
}
#endif

class SelectorPseudoClassAndCompatibilityElementMapHash
{
private:
  static inline unsigned int hash (const char *str, unsigned int len);
public:
  static const struct SelectorPseudoClassOrCompatibilityPseudoElementEntry *in_word_set (const char *str, unsigned int len);
};

inline unsigned int
SelectorPseudoClassAndCompatibilityElementMapHash::hash (register const char *str, register unsigned int len)
{
  static const unsigned char asso_values[] =
    {
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
       20, 170, 170, 170, 170,   0, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170,   0,   1,  12,   3,   1,
        0,  36,  14,   0, 170,  34,   0,  43,   0,   0,
        4,   9,   0,   0,   0,  20,  15,   2, 170,   2,
        3, 170, 170, 170, 170, 170, 170,   0,   1,  12,
        3,   1,   0,  36,  14,   0, 170,  34,   0,  43,
        0,   0,   4,   9,   0,   0,   0,  20,  15,   2,
      170,   2,   3, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
      170, 170, 170, 170, 170, 170
    };
  register int hval = len;

  switch (hval)
    {
      default:
        hval += asso_values[(unsigned char)str[22]];
      /*FALLTHROUGH*/
      case 22:
        hval += asso_values[(unsigned char)str[21]];
      /*FALLTHROUGH*/
      case 21:
        hval += asso_values[(unsigned char)str[20]];
      /*FALLTHROUGH*/
      case 20:
        hval += asso_values[(unsigned char)str[19]];
      /*FALLTHROUGH*/
      case 19:
        hval += asso_values[(unsigned char)str[18]];
      /*FALLTHROUGH*/
      case 18:
        hval += asso_values[(unsigned char)str[17]];
      /*FALLTHROUGH*/
      case 17:
        hval += asso_values[(unsigned char)str[16]];
      /*FALLTHROUGH*/
      case 16:
        hval += asso_values[(unsigned char)str[15]];
      /*FALLTHROUGH*/
      case 15:
        hval += asso_values[(unsigned char)str[14]];
      /*FALLTHROUGH*/
      case 14:
        hval += asso_values[(unsigned char)str[13]];
      /*FALLTHROUGH*/
      case 13:
        hval += asso_values[(unsigned char)str[12]];
      /*FALLTHROUGH*/
      case 12:
        hval += asso_values[(unsigned char)str[11]];
      /*FALLTHROUGH*/
      case 11:
        hval += asso_values[(unsigned char)str[10]];
      /*FALLTHROUGH*/
      case 10:
        hval += asso_values[(unsigned char)str[9]];
      /*FALLTHROUGH*/
      case 9:
        hval += asso_values[(unsigned char)str[8]];
      /*FALLTHROUGH*/
      case 8:
        hval += asso_values[(unsigned char)str[7]];
      /*FALLTHROUGH*/
      case 7:
        hval += asso_values[(unsigned char)str[6]];
      /*FALLTHROUGH*/
      case 6:
        hval += asso_values[(unsigned char)str[5]];
      /*FALLTHROUGH*/
      case 5:
        hval += asso_values[(unsigned char)str[4]];
      /*FALLTHROUGH*/
      case 4:
        hval += asso_values[(unsigned char)str[3]];
      /*FALLTHROUGH*/
      case 3:
        hval += asso_values[(unsigned char)str[2]];
      /*FALLTHROUGH*/
      case 2:
        hval += asso_values[(unsigned char)str[1]];
      /*FALLTHROUGH*/
      case 1:
        hval += asso_values[(unsigned char)str[0]];
        break;
    }
  return hval;
}

static const struct SelectorPseudoClassOrCompatibilityPseudoElementEntry wordlist[] =
  {
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 115 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"root", {CSSSelector::PseudoClassRoot, CSSSelector::PseudoElementUnknown}},
#line 118 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"start", {CSSSelector::PseudoClassStart, CSSSelector::PseudoElementUnknown}},
#line 71 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"after", {CSSSelector::PseudoClassUnknown, CSSSelector::PseudoElementAfter}},
#line 82 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"end", {CSSSelector::PseudoClassEnd, CSSSelector::PseudoElementUnknown}},
#line 125 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"past", {CSSSelector::PseudoClassPast, CSSSelector::PseudoElementUnknown}},
#line 73 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"before", {CSSSelector::PseudoClassUnknown, CSSSelector::PseudoElementBefore}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 85 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"first-line", {CSSSelector::PseudoClassUnknown, CSSSelector::PseudoElementFirstLine}},
#line 109 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"optional", {CSSSelector::PseudoClassOptional, CSSSelector::PseudoElementUnknown}},
#line 81 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"enabled", {CSSSelector::PseudoClassEnabled, CSSSelector::PseudoElementUnknown}},
#line 84 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"first-letter", {CSSSelector::PseudoClassUnknown, CSSSelector::PseudoElementFirstLetter}},
#line 112 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"read-only", {CSSSelector::PseudoClassReadOnly, CSSSelector::PseudoElementUnknown}},
#line 78 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"disabled", {CSSSelector::PseudoClassDisabled, CSSSelector::PseudoElementUnknown}},
#line 113 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"read-write", {CSSSelector::PseudoClassReadWrite, CSSSelector::PseudoElementUnknown}},
#line 90 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"host", {CSSSelector::PseudoClassHost, CSSSelector::PseudoElementUnknown}},
#line 98 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"last-of-type", {CSSSelector::PseudoClassLastOfType, CSSSelector::PseudoElementUnknown}},
#line 86 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"first-of-type", {CSSSelector::PseudoClassFirstOfType, CSSSelector::PseudoElementUnknown}},
#line 108 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"only-of-type", {CSSSelector::PseudoClassOnlyOfType, CSSSelector::PseudoElementUnknown}},
#line 116 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"scope", {CSSSelector::PseudoClassScope, CSSSelector::PseudoElementUnknown}},
#line 120 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"valid", {CSSSelector::PseudoClassValid, CSSSelector::PseudoElementUnknown}},
#line 102 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"not(", {CSSSelector::PseudoClassNot, CSSSelector::PseudoElementUnknown}},
#line 95 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"invalid", {CSSSelector::PseudoClassInvalid, CSSSelector::PseudoElementUnknown}},
#line 122 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"visited", {CSSSelector::PseudoClassVisited, CSSSelector::PseudoElementUnknown}},
#line 89 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"horizontal", {CSSSelector::PseudoClassHorizontal, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 101 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"no-button", {CSSSelector::PseudoClassNoButton, CSSSelector::PseudoElementUnknown}},
#line 77 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"default", {CSSSelector::PseudoClassDefault, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 75 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"corner-present", {CSSSelector::PseudoClassCornerPresent, CSSSelector::PseudoElementUnknown}},
#line 70 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"active", {CSSSelector::PseudoClassActive, CSSSelector::PseudoElementUnknown}},
#line 91 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"hover", {CSSSelector::PseudoClassHover, CSSSelector::PseudoElementUnknown}},
#line 121 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"vertical", {CSSSelector::PseudoClassVertical, CSSSelector::PseudoElementUnknown}},
#line 87 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"focus", {CSSSelector::PseudoClassFocus, CSSSelector::PseudoElementUnknown}},
#line 99 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"link", {CSSSelector::PseudoClassLink, CSSSelector::PseudoElementUnknown}},
#line 97 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"last-child", {CSSSelector::PseudoClassLastChild, CSSSelector::PseudoElementUnknown}},
#line 83 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"first-child", {CSSSelector::PseudoClassFirstChild, CSSSelector::PseudoElementUnknown}},
#line 107 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"only-child", {CSSSelector::PseudoClassOnlyChild, CSSSelector::PseudoElementUnknown}},
#line 114 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"required", {CSSSelector::PseudoClassRequired, CSSSelector::PseudoElementUnknown}},
#line 119 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"target", {CSSSelector::PseudoClassTarget, CSSSelector::PseudoElementUnknown}},
#line 72 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"any-link", {CSSSelector::PseudoClassAnyLink, CSSSelector::PseudoElementUnknown}},
#line 92 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"in-range", {CSSSelector::PseudoClassInRange, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 124 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"future", {CSSSelector::PseudoClassFuture, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 123 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"window-inactive", {CSSSelector::PseudoClassWindowInactive, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 106 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"nth-of-type(", {CSSSelector::PseudoClassNthOfType, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 80 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"empty", {CSSSelector::PseudoClassEmpty, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 105 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"nth-last-of-type(", {CSSSelector::PseudoClassNthLastOfType, CSSSelector::PseudoElementUnknown}},
#line 79 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"double-button", {CSSSelector::PseudoClassDoubleButton, CSSSelector::PseudoElementUnknown}},
#line 88 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"focus-within", {CSSSelector::PseudoClassFocusWithin, CSSSelector::PseudoElementUnknown}},
#line 96 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"lang(", {CSSSelector::PseudoClassLang, CSSSelector::PseudoElementUnknown}},
#line 94 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"indeterminate", {CSSSelector::PseudoClassIndeterminate, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 93 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"increment", {CSSSelector::PseudoClassIncrement, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 111 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"placeholder-shown", {CSSSelector::PseudoClassPlaceholderShown, CSSSelector::PseudoElementUnknown}},
#line 110 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"out-of-range", {CSSSelector::PseudoClassOutOfRange, CSSSelector::PseudoElementUnknown}},
#line 76 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"decrement", {CSSSelector::PseudoClassDecrement, CSSSelector::PseudoElementUnknown}},
#line 117 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"single-button", {CSSSelector::PseudoClassSingleButton, CSSSelector::PseudoElementUnknown}},
#line 65 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"-webkit-any(", {CSSSelector::PseudoClassAny, CSSSelector::PseudoElementUnknown}},
#line 103 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"nth-child(", {CSSSelector::PseudoClassNthChild, CSSSelector::PseudoElementUnknown}},
#line 67 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"-webkit-autofill", {CSSSelector::PseudoClassAutofill, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 104 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"nth-last-child(", {CSSSelector::PseudoClassNthLastChild, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 74 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"checked", {CSSSelector::PseudoClassChecked, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 68 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"-webkit-drag", {CSSSelector::PseudoClassDrag, CSSSelector::PseudoElementUnknown}},
#line 66 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"-webkit-any-link", {CSSSelector::PseudoClassAnyLinkDeprecated, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 100 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"matches(", {CSSSelector::PseudoClassMatches, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 64 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"-khtml-drag", {CSSSelector::PseudoClassDrag, CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
    {"",{CSSSelector::PseudoClassUnknown,CSSSelector::PseudoElementUnknown}},
#line 69 "SelectorPseudoClassAndCompatibilityElementMap.gperf"
    {"-webkit-full-page-media", {CSSSelector::PseudoClassFullPageMedia, CSSSelector::PseudoElementUnknown}}
  };

const struct SelectorPseudoClassOrCompatibilityPseudoElementEntry *
SelectorPseudoClassAndCompatibilityElementMapHash::in_word_set (register const char *str, register unsigned int len)
{
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register int key = hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= 0)
        {
          register const char *s = wordlist[key].name;

          if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0')
            return &wordlist[key];
        }
    }
  return 0;
}
#line 126 "SelectorPseudoClassAndCompatibilityElementMap.gperf"


static inline const SelectorPseudoClassOrCompatibilityPseudoElementEntry* parsePseudoClassAndCompatibilityElementString(const LChar* characters, unsigned length)
{
    return SelectorPseudoClassAndCompatibilityElementMapHash::in_word_set(reinterpret_cast<const char*>(characters), length);
}

static inline const SelectorPseudoClassOrCompatibilityPseudoElementEntry* parsePseudoClassAndCompatibilityElementString(const UChar* characters, unsigned length)
{
    const unsigned maxKeywordLength = 23;
    LChar buffer[maxKeywordLength];
    if (length > maxKeywordLength)
        return nullptr;

    for (unsigned i = 0; i < length; ++i) {
        UChar character = characters[i];
        if (character & ~0xff)
            return nullptr;

        buffer[i] = static_cast<LChar>(character);
    }
    return parsePseudoClassAndCompatibilityElementString(buffer, length);
}

PseudoClassOrCompatibilityPseudoElement parsePseudoClassAndCompatibilityElementString(const CSSParserString& pseudoTypeString)
{
    const SelectorPseudoClassOrCompatibilityPseudoElementEntry* entry;
    if (pseudoTypeString.is8Bit())
        entry = parsePseudoClassAndCompatibilityElementString(pseudoTypeString.characters8(), pseudoTypeString.length());
    else
        entry = parsePseudoClassAndCompatibilityElementString(pseudoTypeString.characters16(), pseudoTypeString.length());

    if (entry)
        return entry->pseudoTypes;
    return { CSSSelector::PseudoClassUnknown, CSSSelector::PseudoElementUnknown };
}

PseudoClassOrCompatibilityPseudoElement parsePseudoClassAndCompatibilityElementString(const StringView& pseudoTypeString)
{
    const SelectorPseudoClassOrCompatibilityPseudoElementEntry* entry;
    if (pseudoTypeString.is8Bit())
        entry = parsePseudoClassAndCompatibilityElementString(pseudoTypeString.characters8(), pseudoTypeString.length());
    else
        entry = parsePseudoClassAndCompatibilityElementString(pseudoTypeString.characters16(), pseudoTypeString.length());

    if (entry)
        return entry->pseudoTypes;
    return { CSSSelector::PseudoClassUnknown, CSSSelector::PseudoElementUnknown };
}

} // namespace WebCore

#if defined(__clang__)
#pragma clang diagnostic pop
#endif

