use crate::data::caniuse::features::Feature;
static KEYS: &[&str] = &[
    "aac",
    "abortcontroller",
    "accelerometer",
    "addeventlistener",
    "ambient-light",
    "apng",
    "array-find",
    "array-find-index",
    "array-flat",
    "array-includes",
    "arrow-functions",
    "asmjs",
    "async-clipboard",
    "async-functions",
    "atob-btoa",
    "audio",
    "audio-api",
    "audiotracks",
    "autofocus",
    "auxclick",
    "av1",
    "avif",
    "background-attachment",
    "background-clip-text",
    "background-img-opts",
    "background-position-x-y",
    "background-repeat-round-space",
    "background-sync",
    "battery-status",
    "beacon",
    "beforeafterprint",
    "bigint",
    "blobbuilder",
    "bloburls",
    "border-image",
    "border-radius",
    "broadcastchannel",
    "brotli",
    "calc",
    "canvas",
    "canvas-blending",
    "canvas-text",
    "ch-unit",
    "chacha20-poly1305",
    "channel-messaging",
    "childnode-remove",
    "classlist",
    "client-hints-dpr-width-viewport",
    "clipboard",
    "colr",
    "colr-v1",
    "comparedocumentposition",
    "console-basic",
    "console-time",
    "const",
    "constraint-validation",
    "contenteditable",
    "contentsecuritypolicy",
    "contentsecuritypolicy2",
    "cookie-store-api",
    "cors",
    "createimagebitmap",
    "credential-management",
    "cross-document-view-transitions",
    "cryptography",
    "css-all",
    "css-anchor-positioning",
    "css-animation",
    "css-any-link",
    "css-appearance",
    "css-at-counter-style",
    "css-backdrop-filter",
    "css-background-offsets",
    "css-backgroundblendmode",
    "css-boxdecorationbreak",
    "css-boxshadow",
    "css-canvas",
    "css-caret-color",
    "css-cascade-layers",
    "css-cascade-scope",
    "css-case-insensitive",
    "css-clip-path",
    "css-color-adjust",
    "css-color-function",
    "css-conic-gradients",
    "css-container-queries",
    "css-container-queries-style",
    "css-container-query-units",
    "css-containment",
    "css-content-visibility",
    "css-counters",
    "css-crisp-edges",
    "css-cross-fade",
    "css-default-pseudo",
    "css-descendant-gtgt",
    "css-deviceadaptation",
    "css-dir-pseudo",
    "css-display-contents",
    "css-element-function",
    "css-env-function",
    "css-exclusions",
    "css-featurequeries",
    "css-filter-function",
    "css-filters",
    "css-first-letter",
    "css-first-line",
    "css-fixed",
    "css-focus-visible",
    "css-focus-within",
    "css-font-palette",
    "css-font-rendering-controls",
    "css-font-stretch",
    "css-gencontent",
    "css-gradients",
    "css-grid",
    "css-grid-lanes",
    "css-hanging-punctuation",
    "css-has",
    "css-hyphens",
    "css-if",
    "css-image-orientation",
    "css-image-set",
    "css-in-out-of-range",
    "css-indeterminate-pseudo",
    "css-initial-letter",
    "css-initial-value",
    "css-lch-lab",
    "css-letter-spacing",
    "css-line-clamp",
    "css-logical-props",
    "css-marker-pseudo",
    "css-masks",
    "css-matches-pseudo",
    "css-math-functions",
    "css-media-interaction",
    "css-media-range-syntax",
    "css-media-resolution",
    "css-mediaqueries",
    "css-mixblendmode",
    "css-motion-paths",
    "css-namespaces",
    "css-nesting",
    "css-not-sel-list",
    "css-nth-child-of",
    "css-opacity",
    "css-optional-pseudo",
    "css-overflow",
    "css-overflow-anchor",
    "css-overflow-overlay",
    "css-overscroll-behavior",
    "css-page-break",
    "css-paged-media",
    "css-paint-api",
    "css-placeholder",
    "css-placeholder-shown",
    "css-read-only-write",
    "css-rebeccapurple",
    "css-reflections",
    "css-regions",
    "css-relative-colors",
    "css-repeating-gradients",
    "css-resize",
    "css-revert-value",
    "css-rrggbbaa",
    "css-scroll-behavior",
    "css-scrollbar",
    "css-sel2",
    "css-sel3",
    "css-selection",
    "css-shapes",
    "css-snappoints",
    "css-sticky",
    "css-subgrid",
    "css-supports-api",
    "css-table",
    "css-text-align-last",
    "css-text-box-trim",
    "css-text-indent",
    "css-text-justify",
    "css-text-orientation",
    "css-text-wrap-balance",
    "css-textshadow",
    "css-touch-action",
    "css-transitions",
    "css-unset-value",
    "css-variables",
    "css-when-else",
    "css-widows-orphans",
    "css-writing-mode",
    "css-zoom",
    "css3-attr",
    "css3-boxsizing",
    "css3-colors",
    "css3-cursors",
    "css3-cursors-grab",
    "css3-cursors-newer",
    "css3-tabsize",
    "currentcolor",
    "custom-elements",
    "custom-elementsv1",
    "customevent",
    "customizable-select",
    "datalist",
    "dataset",
    "datauri",
    "date-tolocaledatestring",
    "declarative-shadow-dom",
    "decorators",
    "details",
    "deviceorientation",
    "devicepixelratio",
    "dialog",
    "dispatchevent",
    "dnssec",
    "do-not-track",
    "document-currentscript",
    "document-evaluate-xpath",
    "document-execcommand",
    "document-policy",
    "document-scrollingelement",
    "documenthead",
    "dom-manip-convenience",
    "dom-range",
    "domcontentloaded",
    "dommatrix",
    "download",
    "dragndrop",
    "element-closest",
    "element-from-point",
    "element-scroll-methods",
    "eme",
    "eot",
    "es5",
    "es6",
    "es6-class",
    "es6-generators",
    "es6-module",
    "es6-module-dynamic-import",
    "es6-number",
    "es6-string-includes",
    "eventsource",
    "extended-system-fonts",
    "feature-policy",
    "fetch",
    "fieldset-disabled",
    "fileapi",
    "filereader",
    "filereadersync",
    "filesystem",
    "flac",
    "flexbox",
    "flexbox-gap",
    "flow-root",
    "focusin-focusout-events",
    "font-family-system-ui",
    "font-feature",
    "font-kerning",
    "font-loading",
    "font-size-adjust",
    "font-smooth",
    "font-unicode-range",
    "font-variant-alternates",
    "font-variant-numeric",
    "fontface",
    "form-attribute",
    "form-submit-attributes",
    "form-validation",
    "fullscreen",
    "gamepad",
    "geolocation",
    "getboundingclientrect",
    "getcomputedstyle",
    "getelementsbyclassname",
    "getrandomvalues",
    "gyroscope",
    "hardwareconcurrency",
    "hashchange",
    "heif",
    "hevc",
    "hidden",
    "high-resolution-time",
    "history",
    "html-media-capture",
    "html5semantic",
    "http-live-streaming",
    "http2",
    "http3",
    "iframe-sandbox",
    "iframe-seamless",
    "iframe-srcdoc",
    "imagecapture",
    "ime",
    "img-naturalwidth-naturalheight",
    "import-maps",
    "imports",
    "indeterminate-checkbox",
    "indexeddb",
    "indexeddb2",
    "inline-block",
    "innertext",
    "input-autocomplete-onoff",
    "input-color",
    "input-datetime",
    "input-email-tel-url",
    "input-event",
    "input-file-accept",
    "input-file-directory",
    "input-file-multiple",
    "input-inputmode",
    "input-minlength",
    "input-number",
    "input-pattern",
    "input-placeholder",
    "input-range",
    "input-search",
    "input-selection",
    "insert-adjacent",
    "insertadjacenthtml",
    "internationalization",
    "intersectionobserver",
    "intersectionobserver-v2",
    "intl-pluralrules",
    "intrinsic-width",
    "jpeg2000",
    "jpegxl",
    "jpegxr",
    "js-regexp-lookbehind",
    "json",
    "justify-content-space-evenly",
    "kerning-pairs-ligatures",
    "keyboardevent-charcode",
    "keyboardevent-code",
    "keyboardevent-getmodifierstate",
    "keyboardevent-key",
    "keyboardevent-location",
    "keyboardevent-which",
    "lazyload",
    "let",
    "link-icon-png",
    "link-icon-svg",
    "link-rel-dns-prefetch",
    "link-rel-modulepreload",
    "link-rel-preconnect",
    "link-rel-prefetch",
    "link-rel-preload",
    "link-rel-prerender",
    "loading-lazy-attr",
    "localecompare",
    "magnetometer",
    "matchesselector",
    "matchmedia",
    "mathml",
    "maxlength",
    "media-fragments",
    "mediacapture-fromelement",
    "mediarecorder",
    "mediasource",
    "menu",
    "meta-theme-color",
    "meter",
    "midi",
    "minmaxwh",
    "mp3",
    "mpeg-dash",
    "mpeg4",
    "multibackgrounds",
    "multicolumn",
    "mutation-events",
    "mutationobserver",
    "namevalue-storage",
    "native-filesystem-api",
    "nav-timing",
    "netinfo",
    "notifications",
    "object-entries",
    "object-fit",
    "object-observe",
    "object-values",
    "objectrtc",
    "offline-apps",
    "offscreencanvas",
    "ogg-vorbis",
    "ogv",
    "ol-reversed",
    "once-event-listener",
    "online-status",
    "opus",
    "orientation-sensor",
    "outline",
    "pad-start-end",
    "page-transition-events",
    "pagevisibility",
    "passive-event-listener",
    "passkeys",
    "path2d",
    "payment-request",
    "pdf-viewer",
    "permissions-api",
    "permissions-policy",
    "picture",
    "picture-in-picture",
    "ping",
    "png-alpha",
    "pointer",
    "pointer-events",
    "pointerlock",
    "portals",
    "prefers-color-scheme",
    "prefers-reduced-motion",
    "progress",
    "promise-finally",
    "promises",
    "proximity",
    "proxy",
    "publickeypinning",
    "push-api",
    "queryselector",
    "readonly-attr",
    "referrer-policy",
    "registerprotocolhandler",
    "rel-noopener",
    "rel-noreferrer",
    "rellist",
    "rem",
    "requestanimationframe",
    "requestidlecallback",
    "resizeobserver",
    "resource-timing",
    "rest-parameters",
    "rtcpeerconnection",
    "ruby",
    "run-in",
    "same-site-cookie-attribute",
    "screen-orientation",
    "script-async",
    "script-defer",
    "scrollintoview",
    "scrollintoviewifneeded",
    "sdch",
    "selection-api",
    "server-timing",
    "serviceworkers",
    "setimmediate",
    "shadowdom",
    "shadowdomv1",
    "sharedarraybuffer",
    "sharedworkers",
    "sni",
    "spdy",
    "speech-recognition",
    "speech-synthesis",
    "spellcheck-attribute",
    "sql-storage",
    "srcset",
    "stream",
    "streams",
    "stricttransportsecurity",
    "style-scoped",
    "subresource-integrity",
    "svg",
    "svg-css",
    "svg-filters",
    "svg-fonts",
    "svg-fragment",
    "svg-html",
    "svg-html5",
    "svg-img",
    "svg-smil",
    "sxg",
    "tabindex-attr",
    "template",
    "template-literals",
    "temporal",
    "text-decoration",
    "text-emphasis",
    "text-overflow",
    "text-size-adjust",
    "text-stroke",
    "textcontent",
    "textencoder",
    "tls1-1",
    "tls1-2",
    "tls1-3",
    "touch",
    "transforms2d",
    "transforms3d",
    "trusted-types",
    "ttf",
    "typedarrays",
    "u2f",
    "unhandledrejection",
    "upgradeinsecurerequests",
    "url",
    "url-scroll-to-text-fragment",
    "urlsearchparams",
    "use-strict",
    "user-select-none",
    "user-timing",
    "variable-fonts",
    "vector-effect",
    "vibration",
    "video",
    "videotracks",
    "view-transitions",
    "viewport-unit-variants",
    "viewport-units",
    "wai-aria",
    "wake-lock",
    "wasm",
    "wasm-bigint",
    "wasm-bulk-memory",
    "wasm-multi-value",
    "wasm-mutable-globals",
    "wasm-nontrapping-fptoint",
    "wasm-reference-types",
    "wasm-signext",
    "wasm-simd",
    "wasm-threads",
    "wav",
    "wbr-element",
    "web-animation",
    "web-bluetooth",
    "web-serial",
    "web-share",
    "webauthn",
    "webcodecs",
    "webgl",
    "webgl2",
    "webgpu",
    "webhid",
    "webkit-user-drag",
    "webm",
    "webnfc",
    "webp",
    "websockets",
    "webtransport",
    "webusb",
    "webvr",
    "webvtt",
    "webworkers",
    "webxr",
    "will-change",
    "woff",
    "woff2",
    "word-break",
    "wordwrap",
    "x-doc-messaging",
    "x-frame-options",
    "xhr2",
    "xhtml",
    "xhtmlsmil",
    "xml-serializer",
    "zstd",
];
static RANGES: &[u32] = &[
    0u32, 2359u32, 4100u32, 4927u32, 7480u32, 7638u32, 9744u32, 11820u32, 13905u32, 15593u32,
    17590u32, 19651u32, 21314u32, 22960u32, 24826u32, 27349u32, 29878u32, 32134u32, 32722u32,
    34846u32, 36329u32, 37590u32, 38741u32, 41212u32, 43498u32, 46033u32, 48363u32, 50568u32,
    51605u32, 52864u32, 54893u32, 56701u32, 58321u32, 60713u32, 63094u32, 65610u32, 68133u32,
    69871u32, 71800u32, 74141u32, 76694u32, 78914u32, 81425u32, 83739u32, 85703u32, 88043u32,
    90284u32, 92729u32, 93802u32, 96135u32, 97945u32, 98750u32, 101178u32, 103642u32, 106098u32,
    108623u32, 111019u32, 113522u32, 115888u32, 117968u32, 118861u32, 121333u32, 123129u32,
    124338u32, 124743u32, 126863u32, 128957u32, 129318u32, 131773u32, 134085u32, 136535u32,
    137876u32, 139440u32, 141791u32, 143902u32, 146157u32, 148676u32, 149520u32, 151338u32,
    152488u32, 153046u32, 155004u32, 157275u32, 159117u32, 160222u32, 161834u32, 162821u32,
    163409u32, 164396u32, 166054u32, 167068u32, 169623u32, 171858u32, 173658u32, 176004u32,
    176011u32, 176085u32, 177151u32, 178961u32, 179486u32, 181193u32, 181236u32, 183447u32,
    183963u32, 186287u32, 188794u32, 191357u32, 193887u32, 195467u32, 197285u32, 198352u32,
    200129u32, 202212u32, 204767u32, 207255u32, 209150u32, 209170u32, 209668u32, 210646u32,
    212778u32, 212906u32, 214696u32, 216727u32, 219089u32, 221461u32, 222446u32, 224876u32,
    225849u32, 228374u32, 230540u32, 232961u32, 234505u32, 236919u32, 239239u32, 240826u32,
    242798u32, 243915u32, 246440u32, 248987u32, 251051u32, 252712u32, 255245u32, 256068u32,
    257592u32, 258728u32, 261291u32, 263755u32, 266316u32, 267656u32, 268686u32, 270299u32,
    272851u32, 274738u32, 275669u32, 278050u32, 280152u32, 282568u32, 284697u32, 286590u32,
    286738u32, 287435u32, 289872u32, 291870u32, 293470u32, 295289u32, 296979u32, 298981u32,
    301538u32, 304085u32, 306234u32, 308233u32, 310075u32, 312078u32, 313056u32, 315271u32,
    317826u32, 319717u32, 319974u32, 322536u32, 322980u32, 324941u32, 325654u32, 328199u32,
    330034u32, 332546u32, 334622u32, 336630u32, 336631u32, 338491u32, 340797u32, 342847u32,
    342984u32, 345537u32, 348088u32, 350061u32, 351969u32, 353886u32, 356229u32, 358768u32,
    359145u32, 360990u32, 363432u32, 363573u32, 365831u32, 368394u32, 370949u32, 373382u32,
    374453u32, 374454u32, 376659u32, 378832u32, 381270u32, 382933u32, 385468u32, 388031u32,
    389937u32, 392190u32, 394719u32, 397170u32, 397870u32, 399872u32, 402356u32, 404254u32,
    406807u32, 409360u32, 411690u32, 413865u32, 415974u32, 418028u32, 420490u32, 422367u32,
    424434u32, 424452u32, 427004u32, 429309u32, 431333u32, 433416u32, 435213u32, 436955u32,
    439210u32, 441260u32, 443703u32, 444099u32, 445828u32, 447850u32, 450271u32, 452707u32,
    455142u32, 457511u32, 458742u32, 460653u32, 463132u32, 464623u32, 466392u32, 468657u32,
    470584u32, 472918u32, 475077u32, 477121u32, 478117u32, 479882u32, 482218u32, 483609u32,
    485570u32, 488108u32, 490559u32, 492995u32, 495484u32, 497728u32, 499841u32, 502342u32,
    504873u32, 507424u32, 509973u32, 512275u32, 513102u32, 514952u32, 517444u32, 517649u32,
    518813u32, 521255u32, 523528u32, 525980u32, 526519u32, 529069u32, 529920u32, 531988u32,
    533316u32, 535714u32, 535715u32, 537954u32, 538955u32, 538992u32, 541545u32, 542693u32,
    543044u32, 545291u32, 547629u32, 549571u32, 552134u32, 554545u32, 557041u32, 559203u32,
    561399u32, 563917u32, 566346u32, 568634u32, 570280u32, 572647u32, 574246u32, 576217u32,
    578649u32, 581101u32, 583607u32, 586068u32, 588466u32, 590975u32, 593385u32, 595894u32,
    598073u32, 599921u32, 600792u32, 602508u32, 604798u32, 605245u32, 605450u32, 605495u32,
    606978u32, 609497u32, 611354u32, 613744u32, 616166u32, 617961u32, 620168u32, 622213u32,
    624611u32, 627105u32, 627142u32, 629174u32, 631578u32, 632968u32, 635029u32, 636312u32,
    638123u32, 639940u32, 641718u32, 642952u32, 644412u32, 646899u32, 646900u32, 649374u32,
    651783u32, 653436u32, 655975u32, 658170u32, 659820u32, 661670u32, 663736u32, 663969u32,
    664693u32, 667020u32, 668288u32, 670845u32, 673308u32, 673333u32, 675728u32, 678253u32,
    680765u32, 682849u32, 685161u32, 687678u32, 688340u32, 690688u32, 691704u32, 693640u32,
    695544u32, 697735u32, 697831u32, 699735u32, 699757u32, 700970u32, 702308u32, 704440u32,
    705724u32, 707995u32, 709887u32, 712301u32, 714426u32, 715253u32, 717801u32, 719686u32,
    722106u32, 724448u32, 726375u32, 727257u32, 729378u32, 731119u32, 733251u32, 735007u32,
    735610u32, 737671u32, 739327u32, 741135u32, 743692u32, 745508u32, 747950u32, 749705u32,
    749706u32, 751308u32, 752993u32, 755407u32, 757169u32, 759340u32, 759826u32, 761875u32,
    762267u32, 763962u32, 766503u32, 768923u32, 771104u32, 772685u32, 774593u32, 776896u32,
    778905u32, 781377u32, 783742u32, 785175u32, 786822u32, 788967u32, 791037u32, 793176u32,
    795497u32, 795817u32, 797647u32, 799508u32, 801914u32, 804336u32, 806799u32, 808633u32,
    809094u32, 811554u32, 813063u32, 815034u32, 815077u32, 815496u32, 817360u32, 818825u32,
    820721u32, 823256u32, 824195u32, 825144u32, 827182u32, 829676u32, 830958u32, 833063u32,
    835249u32, 837091u32, 839453u32, 839566u32, 841515u32, 844056u32, 846578u32, 849051u32,
    849910u32, 852131u32, 854628u32, 857060u32, 859584u32, 862057u32, 862931u32, 865214u32,
    867432u32, 869492u32, 869599u32, 871629u32, 873779u32, 876320u32, 877707u32, 880000u32,
    882535u32, 884615u32, 885988u32, 888221u32, 889896u32, 891956u32, 894475u32, 896877u32,
    897730u32, 900246u32, 902680u32, 903788u32, 905625u32, 907611u32, 909785u32, 910936u32,
    912923u32, 915345u32, 917809u32, 919945u32, 921717u32, 924036u32, 925630u32, 928149u32,
    928719u32, 929345u32, 930367u32, 932665u32, 935174u32, 936273u32, 938116u32, 939525u32,
    941005u32, 942452u32, 944086u32, 945611u32, 946888u32, 948437u32, 949621u32, 951119u32,
    953594u32, 956101u32, 958061u32, 959058u32, 959697u32, 960771u32, 962397u32, 963398u32,
    965750u32, 967471u32, 968000u32, 968632u32, 969936u32, 972207u32, 972224u32, 974257u32,
    976706u32, 977520u32, 978464u32, 978944u32, 981183u32, 983643u32, 984445u32, 986503u32,
    988943u32, 991002u32, 993438u32, 995975u32, 998518u32, 1000868u32, 1003294u32, 1005847u32,
    1005857u32, 1008406u32, 1008863u32,
];
pub fn get_feature_stat(name: &str) -> Option<Feature> {
    match KEYS.binary_search(&name) {
        Ok(idx) => {
            let start = RANGES[idx];
            let end = RANGES[idx + 1];
            Some(Feature::new(start, end))
        }
        Err(_) => None,
    }
}
