/*
 * THIS FILE WAS AUTOMATICALLY GENERATED, DO NOT EDIT.
 *
 * This file was generated by the dom/make_names.pl script.
 *
 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2013 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. ``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
 * 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.
 */

#pragma once

#include "Namespace.h"
#include "TagName.h"
#include <wtf/EnumTraits.h>
#include <wtf/Forward.h>

namespace WebCore {

class QualifiedName;

enum class NodeName : uint16_t {
    Unknown,

    // Elements
    HTML_abbr,
    HTML_acronym,
    HTML_address,
    HTML_applet,
    HTML_area,
    HTML_article,
    HTML_aside,
    HTML_attachment,
    HTML_audio,
    HTML_b,
    HTML_base,
    HTML_basefont,
    HTML_bdi,
    HTML_bdo,
    HTML_bgsound,
    HTML_big,
    HTML_blockquote,
    HTML_body,
    HTML_br,
    HTML_button,
    HTML_canvas,
    HTML_caption,
    HTML_center,
    HTML_cite,
    HTML_code,
    HTML_col,
    HTML_colgroup,
    HTML_color_profile,
    HTML_data,
    HTML_datalist,
    HTML_dd,
    HTML_del,
    HTML_details,
    HTML_dfn,
    HTML_dialog,
    HTML_dir,
    HTML_div,
    HTML_dl,
    HTML_dt,
    HTML_em,
    HTML_embed,
    HTML_fieldset,
    HTML_figcaption,
    HTML_figure,
    HTML_footer,
    HTML_form,
    HTML_frame,
    HTML_frameset,
    HTML_h1,
    HTML_h2,
    HTML_h3,
    HTML_h4,
    HTML_h5,
    HTML_h6,
    HTML_head,
    HTML_header,
    HTML_hgroup,
    HTML_hr,
    HTML_html,
    HTML_i,
    HTML_iframe,
    HTML_img,
    HTML_input,
    HTML_ins,
    HTML_kbd,
    HTML_keygen,
    HTML_label,
    HTML_legend,
    HTML_li,
    HTML_link,
    HTML_listing,
    HTML_main,
    HTML_map,
    HTML_mark,
    HTML_marquee,
    HTML_menu,
    HTML_meta,
    HTML_meter,
    HTML_model,
    HTML_nav,
    HTML_nobr,
    HTML_noembed,
    HTML_noframes,
    HTML_noscript,
    HTML_object,
    HTML_ol,
    HTML_optgroup,
    HTML_option,
    HTML_output,
    HTML_p,
    HTML_param,
    HTML_picture,
    HTML_plaintext,
    HTML_pre,
    HTML_progress,
    HTML_q,
    HTML_rb,
    HTML_rp,
    HTML_rt,
    HTML_rtc,
    HTML_ruby,
    HTML_s,
    HTML_samp,
    HTML_search,
    HTML_section,
    HTML_select,
    HTML_slot,
    HTML_small,
    HTML_source,
    HTML_span,
    HTML_strike,
    HTML_strong,
    HTML_sub,
    HTML_summary,
    HTML_sup,
    HTML_table,
    HTML_tbody,
    HTML_td,
    HTML_template,
    HTML_textarea,
    HTML_tfoot,
    HTML_th,
    HTML_thead,
    HTML_time,
    HTML_tr,
    HTML_track,
    HTML_tt,
    HTML_u,
    HTML_ul,
    HTML_var,
    HTML_video,
    HTML_wbr,
    HTML_xmp,
    MathML_annotation,
    MathML_maction,
    MathML_maligngroup,
    MathML_malignmark,
    MathML_math,
    MathML_menclose,
    MathML_merror,
    MathML_mfenced,
    MathML_mfrac,
    MathML_mglyph,
    MathML_mi,
    MathML_mlabeledtr,
    MathML_mlongdiv,
    MathML_mmultiscripts,
    MathML_mn,
    MathML_mo,
    MathML_mover,
    MathML_mpadded,
    MathML_mphantom,
    MathML_mprescripts,
    MathML_mroot,
    MathML_mrow,
    MathML_ms,
    MathML_mscarries,
    MathML_mscarry,
    MathML_msgroup,
    MathML_msline,
    MathML_mspace,
    MathML_msqrt,
    MathML_msrow,
    MathML_mstack,
    MathML_mstyle,
    MathML_msub,
    MathML_msubsup,
    MathML_msup,
    MathML_mtable,
    MathML_mtd,
    MathML_mtext,
    MathML_mtr,
    MathML_munder,
    MathML_munderover,
    MathML_none,
    MathML_semantics,
    SVG_altGlyph,
    SVG_altGlyphDef,
    SVG_altGlyphItem,
    SVG_animate,
    SVG_animateColor,
    SVG_animateMotion,
    SVG_animateTransform,
    SVG_circle,
    SVG_clipPath,
    SVG_cursor,
    SVG_defs,
    SVG_desc,
    SVG_ellipse,
    SVG_feBlend,
    SVG_feColorMatrix,
    SVG_feComponentTransfer,
    SVG_feComposite,
    SVG_feConvolveMatrix,
    SVG_feDiffuseLighting,
    SVG_feDisplacementMap,
    SVG_feDistantLight,
    SVG_feDropShadow,
    SVG_feFlood,
    SVG_feFuncA,
    SVG_feFuncB,
    SVG_feFuncG,
    SVG_feFuncR,
    SVG_feGaussianBlur,
    SVG_feImage,
    SVG_feMerge,
    SVG_feMergeNode,
    SVG_feMorphology,
    SVG_feOffset,
    SVG_fePointLight,
    SVG_feSpecularLighting,
    SVG_feSpotLight,
    SVG_feTile,
    SVG_feTurbulence,
    SVG_filter,
    SVG_foreignObject,
    SVG_g,
    SVG_glyph,
    SVG_glyphRef,
    SVG_hkern,
    SVG_line,
    SVG_linearGradient,
    SVG_marker,
    SVG_mask,
    SVG_metadata,
    SVG_mpath,
    SVG_path,
    SVG_pattern,
    SVG_polygon,
    SVG_polyline,
    SVG_radialGradient,
    SVG_rect,
    SVG_set,
    SVG_stop,
    SVG_svg,
    SVG_switch,
    SVG_symbol,
    SVG_text,
    SVG_textPath,
    SVG_tref,
    SVG_tspan,
    SVG_use,
    SVG_view,
    SVG_vkern,
    HTML_a,
    HTML_annotation_xml,
    HTML_font,
    HTML_font_face,
    HTML_font_face_format,
    HTML_font_face_name,
    HTML_font_face_src,
    HTML_font_face_uri,
    HTML_image,
    HTML_missing_glyph,
    HTML_script,
    HTML_style,
    HTML_title,
    MathML_annotation_xml,
    SVG_a,
    SVG_font,
    SVG_font_face,
    SVG_font_face_format,
    SVG_font_face_name,
    SVG_font_face_src,
    SVG_font_face_uri,
    SVG_image,
    SVG_missing_glyph,
    SVG_script,
    SVG_style,
    SVG_title,

    // Attributes
    XLink_actuateAttr,
    XLink_arcroleAttr,
    XLink_showAttr,
    XMLNS_xmlnsAttr,
    XML_spaceAttr,
    abbrAttr,
    accentAttr,
    accentunderAttr,
    acceptAttr,
    accept_charsetAttr,
    accesskeyAttr,
    accumulateAttr,
    actionAttr,
    actiontypeAttr,
    additiveAttr,
    alignAttr,
    alignment_baselineAttr,
    alinkAttr,
    allowAttr,
    allowfullscreenAttr,
    alphaAttr,
    altAttr,
    alttextAttr,
    amplitudeAttr,
    animateAttr,
    arabic_formAttr,
    archiveAttr,
    aria_activedescendantAttr,
    aria_atomicAttr,
    aria_autocompleteAttr,
    aria_braillelabelAttr,
    aria_brailleroledescriptionAttr,
    aria_busyAttr,
    aria_checkedAttr,
    aria_colcountAttr,
    aria_colindexAttr,
    aria_colspanAttr,
    aria_controlsAttr,
    aria_currentAttr,
    aria_describedbyAttr,
    aria_descriptionAttr,
    aria_detailsAttr,
    aria_disabledAttr,
    aria_dropeffectAttr,
    aria_errormessageAttr,
    aria_expandedAttr,
    aria_flowtoAttr,
    aria_grabbedAttr,
    aria_haspopupAttr,
    aria_helpAttr,
    aria_hiddenAttr,
    aria_invalidAttr,
    aria_keyshortcutsAttr,
    aria_labelAttr,
    aria_labeledbyAttr,
    aria_labelledbyAttr,
    aria_levelAttr,
    aria_liveAttr,
    aria_modalAttr,
    aria_multilineAttr,
    aria_multiselectableAttr,
    aria_orientationAttr,
    aria_ownsAttr,
    aria_placeholderAttr,
    aria_posinsetAttr,
    aria_pressedAttr,
    aria_readonlyAttr,
    aria_relevantAttr,
    aria_requiredAttr,
    aria_roledescriptionAttr,
    aria_rowcountAttr,
    aria_rowindexAttr,
    aria_rowspanAttr,
    aria_selectedAttr,
    aria_setsizeAttr,
    aria_sortAttr,
    aria_valuemaxAttr,
    aria_valueminAttr,
    aria_valuenowAttr,
    aria_valuetextAttr,
    asAttr,
    ascentAttr,
    asyncAttr,
    attributeNameAttr,
    attributeTypeAttr,
    attributiondestinationAttr,
    attributionsourceidAttr,
    attributionsourcenonceAttr,
    autocapitalizeAttr,
    autocompleteAttr,
    autocorrectAttr,
    autofocusAttr,
    autopictureinpictureAttr,
    autoplayAttr,
    autosaveAttr,
    axisAttr,
    azimuthAttr,
    backgroundAttr,
    baseFrequencyAttr,
    baseProfileAttr,
    baseline_shiftAttr,
    beginAttr,
    behaviorAttr,
    bgcolorAttr,
    biasAttr,
    blockingAttr,
    borderAttr,
    bordercolorAttr,
    buffered_renderingAttr,
    byAttr,
    calcModeAttr,
    cap_heightAttr,
    captureAttr,
    cellborderAttr,
    cellpaddingAttr,
    cellspacingAttr,
    challengeAttr,
    charAttr,
    charoffAttr,
    charsetAttr,
    checkedAttr,
    citeAttr,
    classAttr,
    classidAttr,
    clearAttr,
    clipAttr,
    clipPathUnitsAttr,
    clip_pathAttr,
    clip_ruleAttr,
    closeAttr,
    codeAttr,
    codebaseAttr,
    codetypeAttr,
    colorAttr,
    color_interpolationAttr,
    color_interpolation_filtersAttr,
    colorspaceAttr,
    colsAttr,
    colspanAttr,
    columnspanAttr,
    commandAttr,
    commandforAttr,
    compactAttr,
    contentAttr,
    contenteditableAttr,
    controlsAttr,
    coordsAttr,
    crossoriginAttr,
    cueAttr,
    cuebackgroundAttr,
    cursorAttr,
    cxAttr,
    cyAttr,
    dAttr,
    dataAttr,
    datetimeAttr,
    declareAttr,
    decodingAttr,
    defaultAttr,
    deferAttr,
    definitionURLAttr,
    denomalignAttr,
    depthAttr,
    descentAttr,
    diffuseConstantAttr,
    dirAttr,
    directionAttr,
    dirnameAttr,
    disabledAttr,
    disablepictureinpictureAttr,
    disableremoteplaybackAttr,
    displayAttr,
    displaystyleAttr,
    divisorAttr,
    dominant_baselineAttr,
    downloadAttr,
    draggableAttr,
    dropzoneAttr,
    durAttr,
    dxAttr,
    dyAttr,
    edgeModeAttr,
    elevationAttr,
    encodingAttr,
    enctypeAttr,
    endAttr,
    enterkeyhintAttr,
    environmentmapAttr,
    eventAttr,
    expandedAttr,
    exponentAttr,
    exportpartsAttr,
    faceAttr,
    fenceAttr,
    fetchpriorityAttr,
    filenameAttr,
    fillAttr,
    fill_opacityAttr,
    fill_ruleAttr,
    filterAttr,
    filterUnitsAttr,
    flood_colorAttr,
    flood_opacityAttr,
    focusedAttr,
    font_familyAttr,
    font_sizeAttr,
    font_size_adjustAttr,
    font_stretchAttr,
    font_styleAttr,
    font_variantAttr,
    font_weightAttr,
    font_widthAttr,
    fontfamilyAttr,
    fontsizeAttr,
    fontstyleAttr,
    fontweightAttr,
    forAttr,
    formAttr,
    formactionAttr,
    formatAttr,
    formenctypeAttr,
    formmethodAttr,
    formnovalidateAttr,
    formtargetAttr,
    frAttr,
    frameAttr,
    frameborderAttr,
    fromAttr,
    fxAttr,
    fyAttr,
    g1Attr,
    g2Attr,
    glyphRefAttr,
    glyph_nameAttr,
    glyph_orientation_horizontalAttr,
    glyph_orientation_verticalAttr,
    gradientTransformAttr,
    gradientUnitsAttr,
    headersAttr,
    heightAttr,
    hiddenAttr,
    highAttr,
    horiz_adv_xAttr,
    horiz_origin_xAttr,
    horiz_origin_yAttr,
    hreflangAttr,
    hspaceAttr,
    http_equivAttr,
    idAttr,
    image_renderingAttr,
    imagesizesAttr,
    imagesrcsetAttr,
    in2Attr,
    inAttr,
    inertAttr,
    inputmodeAttr,
    integrityAttr,
    interactiveAttr,
    interceptAttr,
    isAttr,
    ismapAttr,
    k1Attr,
    k2Attr,
    k3Attr,
    k4Attr,
    kAttr,
    kernelMatrixAttr,
    kernelUnitLengthAttr,
    keyPointsAttr,
    keySplinesAttr,
    keyTimesAttr,
    keytypeAttr,
    kindAttr,
    labelAttr,
    languageAttr,
    largeopAttr,
    leftmarginAttr,
    lengthAdjustAttr,
    letter_spacingAttr,
    lighting_colorAttr,
    limitingConeAngleAttr,
    linethicknessAttr,
    linkAttr,
    listAttr,
    loadingAttr,
    localAttr,
    longdescAttr,
    loopAttr,
    loopendAttr,
    loopstartAttr,
    lowAttr,
    lowsrcAttr,
    lspaceAttr,
    marginheightAttr,
    marginwidthAttr,
    markerHeightAttr,
    markerUnitsAttr,
    markerWidthAttr,
    marker_endAttr,
    marker_midAttr,
    marker_startAttr,
    maskAttr,
    maskContentUnitsAttr,
    maskUnitsAttr,
    mask_typeAttr,
    mathbackgroundAttr,
    mathcolorAttr,
    mathsizeAttr,
    mathvariantAttr,
    maxAttr,
    maxlengthAttr,
    maxsizeAttr,
    mayscriptAttr,
    mediaAttr,
    mediagroupAttr,
    methodAttr,
    minAttr,
    minlengthAttr,
    minsizeAttr,
    modeAttr,
    movablelimitsAttr,
    multipleAttr,
    mutedAttr,
    nameAttr,
    nohrefAttr,
    nomoduleAttr,
    nonceAttr,
    noportalAttr,
    noresizeAttr,
    noshadeAttr,
    notationAttr,
    novalidateAttr,
    nowrapAttr,
    numOctavesAttr,
    numalignAttr,
    objectAttr,
    offsetAttr,
    onabortAttr,
    onafterprintAttr,
    onanimationcancelAttr,
    onanimationendAttr,
    onanimationiterationAttr,
    onanimationstartAttr,
    onautocompleteAttr,
    onautocompleteerrorAttr,
    onauxclickAttr,
    onbeforecopyAttr,
    onbeforecutAttr,
    onbeforeinputAttr,
    onbeforeloadAttr,
    onbeforepasteAttr,
    onbeforeprintAttr,
    onbeforetoggleAttr,
    onbeforeunloadAttr,
    onbeginAttr,
    onblurAttr,
    oncancelAttr,
    oncanplayAttr,
    oncanplaythroughAttr,
    onchangeAttr,
    onclickAttr,
    oncloseAttr,
    oncommandAttr,
    oncontentvisibilityautostatechangeAttr,
    oncontextmenuAttr,
    oncopyAttr,
    oncuechangeAttr,
    oncutAttr,
    ondblclickAttr,
    ondevicechangeAttr,
    ondragAttr,
    ondragendAttr,
    ondragenterAttr,
    ondragleaveAttr,
    ondragoverAttr,
    ondragstartAttr,
    ondropAttr,
    ondurationchangeAttr,
    onemptiedAttr,
    onendAttr,
    onendedAttr,
    onerrorAttr,
    onfocusAttr,
    onfocusinAttr,
    onfocusoutAttr,
    onformdataAttr,
    onfullscreenchangeAttr,
    onfullscreenerrorAttr,
    ongamepadconnectedAttr,
    ongamepaddisconnectedAttr,
    ongesturechangeAttr,
    ongestureendAttr,
    ongesturestartAttr,
    ongotpointercaptureAttr,
    onhashchangeAttr,
    oninputAttr,
    oninvalidAttr,
    onkeydownAttr,
    onkeypressAttr,
    onkeyupAttr,
    onlanguagechangeAttr,
    onloadAttr,
    onloadeddataAttr,
    onloadedmetadataAttr,
    onloadstartAttr,
    onlostpointercaptureAttr,
    onmessageAttr,
    onmessageerrorAttr,
    onmousedownAttr,
    onmouseenterAttr,
    onmouseleaveAttr,
    onmousemoveAttr,
    onmouseoutAttr,
    onmouseoverAttr,
    onmouseupAttr,
    onmousewheelAttr,
    onofflineAttr,
    ononlineAttr,
    onorientationchangeAttr,
    onpagehideAttr,
    onpagerevealAttr,
    onpageshowAttr,
    onpageswapAttr,
    onpasteAttr,
    onpauseAttr,
    onplayAttr,
    onplayingAttr,
    onpointercancelAttr,
    onpointerdownAttr,
    onpointerenterAttr,
    onpointerleaveAttr,
    onpointermoveAttr,
    onpointeroutAttr,
    onpointeroverAttr,
    onpointerupAttr,
    onpopstateAttr,
    onprogressAttr,
    onratechangeAttr,
    onredrawAttr,
    onrejectionhandledAttr,
    onresetAttr,
    onresizeAttr,
    onscrollAttr,
    onsecuritypolicyviolationAttr,
    onseekedAttr,
    onseekingAttr,
    onselectAttr,
    onselectionchangeAttr,
    onselectstartAttr,
    onslotchangeAttr,
    onstalledAttr,
    onstorageAttr,
    onsubmitAttr,
    onsuspendAttr,
    ontimeupdateAttr,
    ontoggleAttr,
    ontouchcancelAttr,
    ontouchendAttr,
    ontouchforcechangeAttr,
    ontouchmoveAttr,
    ontouchstartAttr,
    ontransitioncancelAttr,
    ontransitionendAttr,
    ontransitionrunAttr,
    ontransitionstartAttr,
    onuncapturederrorAttr,
    onunhandledrejectionAttr,
    onunloadAttr,
    onvolumechangeAttr,
    onwaitingAttr,
    onwebkitanimationendAttr,
    onwebkitanimationiterationAttr,
    onwebkitanimationstartAttr,
    onwebkitbeginfullscreenAttr,
    onwebkitcurrentplaybacktargetiswirelesschangedAttr,
    onwebkitendfullscreenAttr,
    onwebkitfullscreenchangeAttr,
    onwebkitfullscreenerrorAttr,
    onwebkitkeyaddedAttr,
    onwebkitkeyerrorAttr,
    onwebkitkeymessageAttr,
    onwebkitmouseforcechangedAttr,
    onwebkitmouseforcedownAttr,
    onwebkitmouseforceupAttr,
    onwebkitmouseforcewillbeginAttr,
    onwebkitneedkeyAttr,
    onwebkitplaybacktargetavailabilitychangedAttr,
    onwebkitpresentationmodechangedAttr,
    onwebkittransitionendAttr,
    onwheelAttr,
    onzoomAttr,
    opacityAttr,
    openAttr,
    operatorAttr,
    optimumAttr,
    orderAttr,
    orientAttr,
    originAttr,
    overflowAttr,
    paint_orderAttr,
    panose_1Attr,
    partAttr,
    pathAttr,
    pathLengthAttr,
    patternAttr,
    patternContentUnitsAttr,
    patternTransformAttr,
    patternUnitsAttr,
    pingAttr,
    placeholderAttr,
    playcountAttr,
    playsinlineAttr,
    pointer_eventsAttr,
    pointsAtXAttr,
    pointsAtYAttr,
    pointsAtZAttr,
    pointsAttr,
    popoverAttr,
    popovertargetAttr,
    popovertargetactionAttr,
    posterAttr,
    preloadAttr,
    preserveAlphaAttr,
    preserveAspectRatioAttr,
    primitiveUnitsAttr,
    progressAttr,
    rAttr,
    radiusAttr,
    readonlyAttr,
    refXAttr,
    refYAttr,
    referrerpolicyAttr,
    relAttr,
    repeatCountAttr,
    repeatDurAttr,
    requiredAttr,
    requiredExtensionsAttr,
    requiredFeaturesAttr,
    restartAttr,
    resultAttr,
    resultsAttr,
    revAttr,
    reversedAttr,
    rotateAttr,
    rowsAttr,
    rowspanAttr,
    rspaceAttr,
    rulesAttr,
    rxAttr,
    ryAttr,
    sandboxAttr,
    saveAttr,
    scaleAttr,
    schemeAttr,
    scopeAttr,
    scrollamountAttr,
    scrolldelayAttr,
    scrollingAttr,
    seedAttr,
    selectAttr,
    selectedAttr,
    selectionAttr,
    separatorAttr,
    separatorsAttr,
    shadowrootclonableAttr,
    shadowrootcustomelementregistryAttr,
    shadowrootdelegatesfocusAttr,
    shadowrootmodeAttr,
    shadowrootreferencetargetAttr,
    shadowrootserializableAttr,
    shapeAttr,
    shape_renderingAttr,
    sizeAttr,
    sizesAttr,
    slopeAttr,
    slotAttr,
    spacingAttr,
    spanAttr,
    specularConstantAttr,
    specularExponentAttr,
    spellcheckAttr,
    spreadMethodAttr,
    srcAttr,
    srcdocAttr,
    srclangAttr,
    srcsetAttr,
    stagemodeAttr,
    standbyAttr,
    startAttr,
    startOffsetAttr,
    stdDeviationAttr,
    stepAttr,
    stitchTilesAttr,
    stop_colorAttr,
    stop_opacityAttr,
    stretchyAttr,
    strokeAttr,
    stroke_dasharrayAttr,
    stroke_dashoffsetAttr,
    stroke_linecapAttr,
    stroke_linejoinAttr,
    stroke_miterlimitAttr,
    stroke_opacityAttr,
    stroke_widthAttr,
    styleAttr,
    subscriptshiftAttr,
    subtitleAttr,
    summaryAttr,
    superscriptshiftAttr,
    surfaceScaleAttr,
    switchAttr,
    symmetricAttr,
    systemLanguageAttr,
    tabindexAttr,
    tableValuesAttr,
    targetAttr,
    targetXAttr,
    targetYAttr,
    textAttr,
    textLengthAttr,
    text_anchorAttr,
    text_decorationAttr,
    text_renderingAttr,
    toAttr,
    topmarginAttr,
    transformAttr,
    transform_originAttr,
    translateAttr,
    truespeedAttr,
    u1Attr,
    u2Attr,
    uiactionsAttr,
    unicodeAttr,
    unicode_bidiAttr,
    units_per_emAttr,
    usemapAttr,
    useragentpartAttr,
    valignAttr,
    valueAttr,
    valuesAttr,
    valuetypeAttr,
    vector_effectAttr,
    versionAttr,
    vert_adv_yAttr,
    vert_origin_xAttr,
    vert_origin_yAttr,
    viewBoxAttr,
    viewTargetAttr,
    visibilityAttr,
    vlinkAttr,
    voffsetAttr,
    vspaceAttr,
    webkit_playsinlineAttr,
    webkitairplayAttr,
    webkitallowfullscreenAttr,
    webkitattachmentbloburlAttr,
    webkitattachmentidAttr,
    webkitattachmentpathAttr,
    webkitdirectoryAttr,
    webkitdropzoneAttr,
    webkitwirelessvideoplaybackdisabledAttr,
    widthAttr,
    word_spacingAttr,
    wrapAttr,
    writing_modeAttr,
    writingsuggestionsAttr,
    x1Attr,
    x2Attr,
    xAttr,
    xChannelSelectorAttr,
    x_apple_data_detectorsAttr,
    x_apple_data_detectors_resultAttr,
    x_apple_data_detectors_typeAttr,
    x_apple_pdf_annotationAttr,
    x_heightAttr,
    x_itunes_inherit_uri_query_componentAttr,
    y1Attr,
    y2Attr,
    yAttr,
    yChannelSelectorAttr,
    zAttr,
    zoomAndPanAttr,
    XLink_hrefAttr,
    XLink_roleAttr,
    XLink_titleAttr,
    XLink_typeAttr,
    XML_langAttr,
    hrefAttr,
    langAttr,
    roleAttr,
    titleAttr,
    typeAttr,
};

using ElementName = NodeName;

namespace ElementNames {
namespace HTML {
inline constexpr auto abbr = ElementName::HTML_abbr;
inline constexpr auto acronym = ElementName::HTML_acronym;
inline constexpr auto address = ElementName::HTML_address;
inline constexpr auto applet = ElementName::HTML_applet;
inline constexpr auto area = ElementName::HTML_area;
inline constexpr auto article = ElementName::HTML_article;
inline constexpr auto aside = ElementName::HTML_aside;
inline constexpr auto attachment = ElementName::HTML_attachment;
inline constexpr auto audio = ElementName::HTML_audio;
inline constexpr auto b = ElementName::HTML_b;
inline constexpr auto base = ElementName::HTML_base;
inline constexpr auto basefont = ElementName::HTML_basefont;
inline constexpr auto bdi = ElementName::HTML_bdi;
inline constexpr auto bdo = ElementName::HTML_bdo;
inline constexpr auto bgsound = ElementName::HTML_bgsound;
inline constexpr auto big = ElementName::HTML_big;
inline constexpr auto blockquote = ElementName::HTML_blockquote;
inline constexpr auto body = ElementName::HTML_body;
inline constexpr auto br = ElementName::HTML_br;
inline constexpr auto button = ElementName::HTML_button;
inline constexpr auto canvas = ElementName::HTML_canvas;
inline constexpr auto caption = ElementName::HTML_caption;
inline constexpr auto center = ElementName::HTML_center;
inline constexpr auto cite = ElementName::HTML_cite;
inline constexpr auto code = ElementName::HTML_code;
inline constexpr auto col = ElementName::HTML_col;
inline constexpr auto colgroup = ElementName::HTML_colgroup;
inline constexpr auto color_profile = ElementName::HTML_color_profile;
inline constexpr auto data = ElementName::HTML_data;
inline constexpr auto datalist = ElementName::HTML_datalist;
inline constexpr auto dd = ElementName::HTML_dd;
inline constexpr auto del = ElementName::HTML_del;
inline constexpr auto details = ElementName::HTML_details;
inline constexpr auto dfn = ElementName::HTML_dfn;
inline constexpr auto dialog = ElementName::HTML_dialog;
inline constexpr auto dir = ElementName::HTML_dir;
inline constexpr auto div = ElementName::HTML_div;
inline constexpr auto dl = ElementName::HTML_dl;
inline constexpr auto dt = ElementName::HTML_dt;
inline constexpr auto em = ElementName::HTML_em;
inline constexpr auto embed = ElementName::HTML_embed;
inline constexpr auto fieldset = ElementName::HTML_fieldset;
inline constexpr auto figcaption = ElementName::HTML_figcaption;
inline constexpr auto figure = ElementName::HTML_figure;
inline constexpr auto footer = ElementName::HTML_footer;
inline constexpr auto form = ElementName::HTML_form;
inline constexpr auto frame = ElementName::HTML_frame;
inline constexpr auto frameset = ElementName::HTML_frameset;
inline constexpr auto h1 = ElementName::HTML_h1;
inline constexpr auto h2 = ElementName::HTML_h2;
inline constexpr auto h3 = ElementName::HTML_h3;
inline constexpr auto h4 = ElementName::HTML_h4;
inline constexpr auto h5 = ElementName::HTML_h5;
inline constexpr auto h6 = ElementName::HTML_h6;
inline constexpr auto head = ElementName::HTML_head;
inline constexpr auto header = ElementName::HTML_header;
inline constexpr auto hgroup = ElementName::HTML_hgroup;
inline constexpr auto hr = ElementName::HTML_hr;
inline constexpr auto html = ElementName::HTML_html;
inline constexpr auto i = ElementName::HTML_i;
inline constexpr auto iframe = ElementName::HTML_iframe;
inline constexpr auto img = ElementName::HTML_img;
inline constexpr auto input = ElementName::HTML_input;
inline constexpr auto ins = ElementName::HTML_ins;
inline constexpr auto kbd = ElementName::HTML_kbd;
inline constexpr auto keygen = ElementName::HTML_keygen;
inline constexpr auto label = ElementName::HTML_label;
inline constexpr auto legend = ElementName::HTML_legend;
inline constexpr auto li = ElementName::HTML_li;
inline constexpr auto link = ElementName::HTML_link;
inline constexpr auto listing = ElementName::HTML_listing;
inline constexpr auto main = ElementName::HTML_main;
inline constexpr auto map = ElementName::HTML_map;
inline constexpr auto mark = ElementName::HTML_mark;
inline constexpr auto marquee = ElementName::HTML_marquee;
inline constexpr auto menu = ElementName::HTML_menu;
inline constexpr auto meta = ElementName::HTML_meta;
inline constexpr auto meter = ElementName::HTML_meter;
inline constexpr auto model = ElementName::HTML_model;
inline constexpr auto nav = ElementName::HTML_nav;
inline constexpr auto nobr = ElementName::HTML_nobr;
inline constexpr auto noembed = ElementName::HTML_noembed;
inline constexpr auto noframes = ElementName::HTML_noframes;
inline constexpr auto noscript = ElementName::HTML_noscript;
inline constexpr auto object = ElementName::HTML_object;
inline constexpr auto ol = ElementName::HTML_ol;
inline constexpr auto optgroup = ElementName::HTML_optgroup;
inline constexpr auto option = ElementName::HTML_option;
inline constexpr auto output = ElementName::HTML_output;
inline constexpr auto p = ElementName::HTML_p;
inline constexpr auto param = ElementName::HTML_param;
inline constexpr auto picture = ElementName::HTML_picture;
inline constexpr auto plaintext = ElementName::HTML_plaintext;
inline constexpr auto pre = ElementName::HTML_pre;
inline constexpr auto progress = ElementName::HTML_progress;
inline constexpr auto q = ElementName::HTML_q;
inline constexpr auto rb = ElementName::HTML_rb;
inline constexpr auto rp = ElementName::HTML_rp;
inline constexpr auto rt = ElementName::HTML_rt;
inline constexpr auto rtc = ElementName::HTML_rtc;
inline constexpr auto ruby = ElementName::HTML_ruby;
inline constexpr auto s = ElementName::HTML_s;
inline constexpr auto samp = ElementName::HTML_samp;
inline constexpr auto search = ElementName::HTML_search;
inline constexpr auto section = ElementName::HTML_section;
inline constexpr auto select = ElementName::HTML_select;
inline constexpr auto slot = ElementName::HTML_slot;
inline constexpr auto small_ = ElementName::HTML_small;
inline constexpr auto source = ElementName::HTML_source;
inline constexpr auto span = ElementName::HTML_span;
inline constexpr auto strike = ElementName::HTML_strike;
inline constexpr auto strong = ElementName::HTML_strong;
inline constexpr auto sub = ElementName::HTML_sub;
inline constexpr auto summary = ElementName::HTML_summary;
inline constexpr auto sup = ElementName::HTML_sup;
inline constexpr auto table = ElementName::HTML_table;
inline constexpr auto tbody = ElementName::HTML_tbody;
inline constexpr auto td = ElementName::HTML_td;
inline constexpr auto template_ = ElementName::HTML_template;
inline constexpr auto textarea = ElementName::HTML_textarea;
inline constexpr auto tfoot = ElementName::HTML_tfoot;
inline constexpr auto th = ElementName::HTML_th;
inline constexpr auto thead = ElementName::HTML_thead;
inline constexpr auto time = ElementName::HTML_time;
inline constexpr auto tr = ElementName::HTML_tr;
inline constexpr auto track = ElementName::HTML_track;
inline constexpr auto tt = ElementName::HTML_tt;
inline constexpr auto u = ElementName::HTML_u;
inline constexpr auto ul = ElementName::HTML_ul;
inline constexpr auto var = ElementName::HTML_var;
inline constexpr auto video = ElementName::HTML_video;
inline constexpr auto wbr = ElementName::HTML_wbr;
inline constexpr auto xmp = ElementName::HTML_xmp;
inline constexpr auto a = ElementName::HTML_a;
inline constexpr auto annotation_xml = ElementName::HTML_annotation_xml;
inline constexpr auto font = ElementName::HTML_font;
inline constexpr auto font_face = ElementName::HTML_font_face;
inline constexpr auto font_face_format = ElementName::HTML_font_face_format;
inline constexpr auto font_face_name = ElementName::HTML_font_face_name;
inline constexpr auto font_face_src = ElementName::HTML_font_face_src;
inline constexpr auto font_face_uri = ElementName::HTML_font_face_uri;
inline constexpr auto image = ElementName::HTML_image;
inline constexpr auto missing_glyph = ElementName::HTML_missing_glyph;
inline constexpr auto script = ElementName::HTML_script;
inline constexpr auto style = ElementName::HTML_style;
inline constexpr auto title = ElementName::HTML_title;
} // namespace HTML

namespace MathML {
inline constexpr auto annotation = ElementName::MathML_annotation;
inline constexpr auto maction = ElementName::MathML_maction;
inline constexpr auto maligngroup = ElementName::MathML_maligngroup;
inline constexpr auto malignmark = ElementName::MathML_malignmark;
inline constexpr auto math = ElementName::MathML_math;
inline constexpr auto menclose = ElementName::MathML_menclose;
inline constexpr auto merror = ElementName::MathML_merror;
inline constexpr auto mfenced = ElementName::MathML_mfenced;
inline constexpr auto mfrac = ElementName::MathML_mfrac;
inline constexpr auto mglyph = ElementName::MathML_mglyph;
inline constexpr auto mi = ElementName::MathML_mi;
inline constexpr auto mlabeledtr = ElementName::MathML_mlabeledtr;
inline constexpr auto mlongdiv = ElementName::MathML_mlongdiv;
inline constexpr auto mmultiscripts = ElementName::MathML_mmultiscripts;
inline constexpr auto mn = ElementName::MathML_mn;
inline constexpr auto mo = ElementName::MathML_mo;
inline constexpr auto mover = ElementName::MathML_mover;
inline constexpr auto mpadded = ElementName::MathML_mpadded;
inline constexpr auto mphantom = ElementName::MathML_mphantom;
inline constexpr auto mprescripts = ElementName::MathML_mprescripts;
inline constexpr auto mroot = ElementName::MathML_mroot;
inline constexpr auto mrow = ElementName::MathML_mrow;
inline constexpr auto ms = ElementName::MathML_ms;
inline constexpr auto mscarries = ElementName::MathML_mscarries;
inline constexpr auto mscarry = ElementName::MathML_mscarry;
inline constexpr auto msgroup = ElementName::MathML_msgroup;
inline constexpr auto msline = ElementName::MathML_msline;
inline constexpr auto mspace = ElementName::MathML_mspace;
inline constexpr auto msqrt = ElementName::MathML_msqrt;
inline constexpr auto msrow = ElementName::MathML_msrow;
inline constexpr auto mstack = ElementName::MathML_mstack;
inline constexpr auto mstyle = ElementName::MathML_mstyle;
inline constexpr auto msub = ElementName::MathML_msub;
inline constexpr auto msubsup = ElementName::MathML_msubsup;
inline constexpr auto msup = ElementName::MathML_msup;
inline constexpr auto mtable = ElementName::MathML_mtable;
inline constexpr auto mtd = ElementName::MathML_mtd;
inline constexpr auto mtext = ElementName::MathML_mtext;
inline constexpr auto mtr = ElementName::MathML_mtr;
inline constexpr auto munder = ElementName::MathML_munder;
inline constexpr auto munderover = ElementName::MathML_munderover;
inline constexpr auto none = ElementName::MathML_none;
inline constexpr auto semantics = ElementName::MathML_semantics;
inline constexpr auto annotation_xml = ElementName::MathML_annotation_xml;
} // namespace MathML

namespace SVG {
inline constexpr auto altGlyph = ElementName::SVG_altGlyph;
inline constexpr auto altGlyphDef = ElementName::SVG_altGlyphDef;
inline constexpr auto altGlyphItem = ElementName::SVG_altGlyphItem;
inline constexpr auto animate = ElementName::SVG_animate;
inline constexpr auto animateColor = ElementName::SVG_animateColor;
inline constexpr auto animateMotion = ElementName::SVG_animateMotion;
inline constexpr auto animateTransform = ElementName::SVG_animateTransform;
inline constexpr auto circle = ElementName::SVG_circle;
inline constexpr auto clipPath = ElementName::SVG_clipPath;
inline constexpr auto cursor = ElementName::SVG_cursor;
inline constexpr auto defs = ElementName::SVG_defs;
inline constexpr auto desc = ElementName::SVG_desc;
inline constexpr auto ellipse = ElementName::SVG_ellipse;
inline constexpr auto feBlend = ElementName::SVG_feBlend;
inline constexpr auto feColorMatrix = ElementName::SVG_feColorMatrix;
inline constexpr auto feComponentTransfer = ElementName::SVG_feComponentTransfer;
inline constexpr auto feComposite = ElementName::SVG_feComposite;
inline constexpr auto feConvolveMatrix = ElementName::SVG_feConvolveMatrix;
inline constexpr auto feDiffuseLighting = ElementName::SVG_feDiffuseLighting;
inline constexpr auto feDisplacementMap = ElementName::SVG_feDisplacementMap;
inline constexpr auto feDistantLight = ElementName::SVG_feDistantLight;
inline constexpr auto feDropShadow = ElementName::SVG_feDropShadow;
inline constexpr auto feFlood = ElementName::SVG_feFlood;
inline constexpr auto feFuncA = ElementName::SVG_feFuncA;
inline constexpr auto feFuncB = ElementName::SVG_feFuncB;
inline constexpr auto feFuncG = ElementName::SVG_feFuncG;
inline constexpr auto feFuncR = ElementName::SVG_feFuncR;
inline constexpr auto feGaussianBlur = ElementName::SVG_feGaussianBlur;
inline constexpr auto feImage = ElementName::SVG_feImage;
inline constexpr auto feMerge = ElementName::SVG_feMerge;
inline constexpr auto feMergeNode = ElementName::SVG_feMergeNode;
inline constexpr auto feMorphology = ElementName::SVG_feMorphology;
inline constexpr auto feOffset = ElementName::SVG_feOffset;
inline constexpr auto fePointLight = ElementName::SVG_fePointLight;
inline constexpr auto feSpecularLighting = ElementName::SVG_feSpecularLighting;
inline constexpr auto feSpotLight = ElementName::SVG_feSpotLight;
inline constexpr auto feTile = ElementName::SVG_feTile;
inline constexpr auto feTurbulence = ElementName::SVG_feTurbulence;
inline constexpr auto filter = ElementName::SVG_filter;
inline constexpr auto foreignObject = ElementName::SVG_foreignObject;
inline constexpr auto g = ElementName::SVG_g;
inline constexpr auto glyph = ElementName::SVG_glyph;
inline constexpr auto glyphRef = ElementName::SVG_glyphRef;
inline constexpr auto hkern = ElementName::SVG_hkern;
inline constexpr auto line = ElementName::SVG_line;
inline constexpr auto linearGradient = ElementName::SVG_linearGradient;
inline constexpr auto marker = ElementName::SVG_marker;
inline constexpr auto mask = ElementName::SVG_mask;
inline constexpr auto metadata = ElementName::SVG_metadata;
inline constexpr auto mpath = ElementName::SVG_mpath;
inline constexpr auto path = ElementName::SVG_path;
inline constexpr auto pattern = ElementName::SVG_pattern;
inline constexpr auto polygon = ElementName::SVG_polygon;
inline constexpr auto polyline = ElementName::SVG_polyline;
inline constexpr auto radialGradient = ElementName::SVG_radialGradient;
inline constexpr auto rect = ElementName::SVG_rect;
inline constexpr auto set = ElementName::SVG_set;
inline constexpr auto stop = ElementName::SVG_stop;
inline constexpr auto svg = ElementName::SVG_svg;
inline constexpr auto switch_ = ElementName::SVG_switch;
inline constexpr auto symbol = ElementName::SVG_symbol;
inline constexpr auto text = ElementName::SVG_text;
inline constexpr auto textPath = ElementName::SVG_textPath;
inline constexpr auto tref = ElementName::SVG_tref;
inline constexpr auto tspan = ElementName::SVG_tspan;
inline constexpr auto use = ElementName::SVG_use;
inline constexpr auto view = ElementName::SVG_view;
inline constexpr auto vkern = ElementName::SVG_vkern;
inline constexpr auto a = ElementName::SVG_a;
inline constexpr auto font = ElementName::SVG_font;
inline constexpr auto font_face = ElementName::SVG_font_face;
inline constexpr auto font_face_format = ElementName::SVG_font_face_format;
inline constexpr auto font_face_name = ElementName::SVG_font_face_name;
inline constexpr auto font_face_src = ElementName::SVG_font_face_src;
inline constexpr auto font_face_uri = ElementName::SVG_font_face_uri;
inline constexpr auto image = ElementName::SVG_image;
inline constexpr auto missing_glyph = ElementName::SVG_missing_glyph;
inline constexpr auto script = ElementName::SVG_script;
inline constexpr auto style = ElementName::SVG_style;
inline constexpr auto title = ElementName::SVG_title;
} // namespace SVG

} // namespace ElementNames

namespace AttributeNames {
inline constexpr auto abbrAttr = NodeName::abbrAttr;
inline constexpr auto accentAttr = NodeName::accentAttr;
inline constexpr auto accentunderAttr = NodeName::accentunderAttr;
inline constexpr auto acceptAttr = NodeName::acceptAttr;
inline constexpr auto accept_charsetAttr = NodeName::accept_charsetAttr;
inline constexpr auto accesskeyAttr = NodeName::accesskeyAttr;
inline constexpr auto accumulateAttr = NodeName::accumulateAttr;
inline constexpr auto actionAttr = NodeName::actionAttr;
inline constexpr auto actiontypeAttr = NodeName::actiontypeAttr;
inline constexpr auto additiveAttr = NodeName::additiveAttr;
inline constexpr auto alignAttr = NodeName::alignAttr;
inline constexpr auto alignment_baselineAttr = NodeName::alignment_baselineAttr;
inline constexpr auto alinkAttr = NodeName::alinkAttr;
inline constexpr auto allowAttr = NodeName::allowAttr;
inline constexpr auto allowfullscreenAttr = NodeName::allowfullscreenAttr;
inline constexpr auto alphaAttr = NodeName::alphaAttr;
inline constexpr auto altAttr = NodeName::altAttr;
inline constexpr auto alttextAttr = NodeName::alttextAttr;
inline constexpr auto amplitudeAttr = NodeName::amplitudeAttr;
inline constexpr auto animateAttr = NodeName::animateAttr;
inline constexpr auto arabic_formAttr = NodeName::arabic_formAttr;
inline constexpr auto archiveAttr = NodeName::archiveAttr;
inline constexpr auto aria_activedescendantAttr = NodeName::aria_activedescendantAttr;
inline constexpr auto aria_atomicAttr = NodeName::aria_atomicAttr;
inline constexpr auto aria_autocompleteAttr = NodeName::aria_autocompleteAttr;
inline constexpr auto aria_braillelabelAttr = NodeName::aria_braillelabelAttr;
inline constexpr auto aria_brailleroledescriptionAttr = NodeName::aria_brailleroledescriptionAttr;
inline constexpr auto aria_busyAttr = NodeName::aria_busyAttr;
inline constexpr auto aria_checkedAttr = NodeName::aria_checkedAttr;
inline constexpr auto aria_colcountAttr = NodeName::aria_colcountAttr;
inline constexpr auto aria_colindexAttr = NodeName::aria_colindexAttr;
inline constexpr auto aria_colspanAttr = NodeName::aria_colspanAttr;
inline constexpr auto aria_controlsAttr = NodeName::aria_controlsAttr;
inline constexpr auto aria_currentAttr = NodeName::aria_currentAttr;
inline constexpr auto aria_describedbyAttr = NodeName::aria_describedbyAttr;
inline constexpr auto aria_descriptionAttr = NodeName::aria_descriptionAttr;
inline constexpr auto aria_detailsAttr = NodeName::aria_detailsAttr;
inline constexpr auto aria_disabledAttr = NodeName::aria_disabledAttr;
inline constexpr auto aria_dropeffectAttr = NodeName::aria_dropeffectAttr;
inline constexpr auto aria_errormessageAttr = NodeName::aria_errormessageAttr;
inline constexpr auto aria_expandedAttr = NodeName::aria_expandedAttr;
inline constexpr auto aria_flowtoAttr = NodeName::aria_flowtoAttr;
inline constexpr auto aria_grabbedAttr = NodeName::aria_grabbedAttr;
inline constexpr auto aria_haspopupAttr = NodeName::aria_haspopupAttr;
inline constexpr auto aria_helpAttr = NodeName::aria_helpAttr;
inline constexpr auto aria_hiddenAttr = NodeName::aria_hiddenAttr;
inline constexpr auto aria_invalidAttr = NodeName::aria_invalidAttr;
inline constexpr auto aria_keyshortcutsAttr = NodeName::aria_keyshortcutsAttr;
inline constexpr auto aria_labelAttr = NodeName::aria_labelAttr;
inline constexpr auto aria_labeledbyAttr = NodeName::aria_labeledbyAttr;
inline constexpr auto aria_labelledbyAttr = NodeName::aria_labelledbyAttr;
inline constexpr auto aria_levelAttr = NodeName::aria_levelAttr;
inline constexpr auto aria_liveAttr = NodeName::aria_liveAttr;
inline constexpr auto aria_modalAttr = NodeName::aria_modalAttr;
inline constexpr auto aria_multilineAttr = NodeName::aria_multilineAttr;
inline constexpr auto aria_multiselectableAttr = NodeName::aria_multiselectableAttr;
inline constexpr auto aria_orientationAttr = NodeName::aria_orientationAttr;
inline constexpr auto aria_ownsAttr = NodeName::aria_ownsAttr;
inline constexpr auto aria_placeholderAttr = NodeName::aria_placeholderAttr;
inline constexpr auto aria_posinsetAttr = NodeName::aria_posinsetAttr;
inline constexpr auto aria_pressedAttr = NodeName::aria_pressedAttr;
inline constexpr auto aria_readonlyAttr = NodeName::aria_readonlyAttr;
inline constexpr auto aria_relevantAttr = NodeName::aria_relevantAttr;
inline constexpr auto aria_requiredAttr = NodeName::aria_requiredAttr;
inline constexpr auto aria_roledescriptionAttr = NodeName::aria_roledescriptionAttr;
inline constexpr auto aria_rowcountAttr = NodeName::aria_rowcountAttr;
inline constexpr auto aria_rowindexAttr = NodeName::aria_rowindexAttr;
inline constexpr auto aria_rowspanAttr = NodeName::aria_rowspanAttr;
inline constexpr auto aria_selectedAttr = NodeName::aria_selectedAttr;
inline constexpr auto aria_setsizeAttr = NodeName::aria_setsizeAttr;
inline constexpr auto aria_sortAttr = NodeName::aria_sortAttr;
inline constexpr auto aria_valuemaxAttr = NodeName::aria_valuemaxAttr;
inline constexpr auto aria_valueminAttr = NodeName::aria_valueminAttr;
inline constexpr auto aria_valuenowAttr = NodeName::aria_valuenowAttr;
inline constexpr auto aria_valuetextAttr = NodeName::aria_valuetextAttr;
inline constexpr auto asAttr = NodeName::asAttr;
inline constexpr auto ascentAttr = NodeName::ascentAttr;
inline constexpr auto asyncAttr = NodeName::asyncAttr;
inline constexpr auto attributeNameAttr = NodeName::attributeNameAttr;
inline constexpr auto attributeTypeAttr = NodeName::attributeTypeAttr;
inline constexpr auto attributiondestinationAttr = NodeName::attributiondestinationAttr;
inline constexpr auto attributionsourceidAttr = NodeName::attributionsourceidAttr;
inline constexpr auto attributionsourcenonceAttr = NodeName::attributionsourcenonceAttr;
inline constexpr auto autocapitalizeAttr = NodeName::autocapitalizeAttr;
inline constexpr auto autocompleteAttr = NodeName::autocompleteAttr;
inline constexpr auto autocorrectAttr = NodeName::autocorrectAttr;
inline constexpr auto autofocusAttr = NodeName::autofocusAttr;
inline constexpr auto autopictureinpictureAttr = NodeName::autopictureinpictureAttr;
inline constexpr auto autoplayAttr = NodeName::autoplayAttr;
inline constexpr auto autosaveAttr = NodeName::autosaveAttr;
inline constexpr auto axisAttr = NodeName::axisAttr;
inline constexpr auto azimuthAttr = NodeName::azimuthAttr;
inline constexpr auto backgroundAttr = NodeName::backgroundAttr;
inline constexpr auto baseFrequencyAttr = NodeName::baseFrequencyAttr;
inline constexpr auto baseProfileAttr = NodeName::baseProfileAttr;
inline constexpr auto baseline_shiftAttr = NodeName::baseline_shiftAttr;
inline constexpr auto beginAttr = NodeName::beginAttr;
inline constexpr auto behaviorAttr = NodeName::behaviorAttr;
inline constexpr auto bgcolorAttr = NodeName::bgcolorAttr;
inline constexpr auto biasAttr = NodeName::biasAttr;
inline constexpr auto blockingAttr = NodeName::blockingAttr;
inline constexpr auto borderAttr = NodeName::borderAttr;
inline constexpr auto bordercolorAttr = NodeName::bordercolorAttr;
inline constexpr auto buffered_renderingAttr = NodeName::buffered_renderingAttr;
inline constexpr auto byAttr = NodeName::byAttr;
inline constexpr auto calcModeAttr = NodeName::calcModeAttr;
inline constexpr auto cap_heightAttr = NodeName::cap_heightAttr;
inline constexpr auto captureAttr = NodeName::captureAttr;
inline constexpr auto cellborderAttr = NodeName::cellborderAttr;
inline constexpr auto cellpaddingAttr = NodeName::cellpaddingAttr;
inline constexpr auto cellspacingAttr = NodeName::cellspacingAttr;
inline constexpr auto challengeAttr = NodeName::challengeAttr;
inline constexpr auto charAttr = NodeName::charAttr;
inline constexpr auto charoffAttr = NodeName::charoffAttr;
inline constexpr auto charsetAttr = NodeName::charsetAttr;
inline constexpr auto checkedAttr = NodeName::checkedAttr;
inline constexpr auto citeAttr = NodeName::citeAttr;
inline constexpr auto classAttr = NodeName::classAttr;
inline constexpr auto classidAttr = NodeName::classidAttr;
inline constexpr auto clearAttr = NodeName::clearAttr;
inline constexpr auto clipAttr = NodeName::clipAttr;
inline constexpr auto clipPathUnitsAttr = NodeName::clipPathUnitsAttr;
inline constexpr auto clip_pathAttr = NodeName::clip_pathAttr;
inline constexpr auto clip_ruleAttr = NodeName::clip_ruleAttr;
inline constexpr auto closeAttr = NodeName::closeAttr;
inline constexpr auto codeAttr = NodeName::codeAttr;
inline constexpr auto codebaseAttr = NodeName::codebaseAttr;
inline constexpr auto codetypeAttr = NodeName::codetypeAttr;
inline constexpr auto colorAttr = NodeName::colorAttr;
inline constexpr auto color_interpolationAttr = NodeName::color_interpolationAttr;
inline constexpr auto color_interpolation_filtersAttr = NodeName::color_interpolation_filtersAttr;
inline constexpr auto colorspaceAttr = NodeName::colorspaceAttr;
inline constexpr auto colsAttr = NodeName::colsAttr;
inline constexpr auto colspanAttr = NodeName::colspanAttr;
inline constexpr auto columnspanAttr = NodeName::columnspanAttr;
inline constexpr auto commandAttr = NodeName::commandAttr;
inline constexpr auto commandforAttr = NodeName::commandforAttr;
inline constexpr auto compactAttr = NodeName::compactAttr;
inline constexpr auto contentAttr = NodeName::contentAttr;
inline constexpr auto contenteditableAttr = NodeName::contenteditableAttr;
inline constexpr auto controlsAttr = NodeName::controlsAttr;
inline constexpr auto coordsAttr = NodeName::coordsAttr;
inline constexpr auto crossoriginAttr = NodeName::crossoriginAttr;
inline constexpr auto cueAttr = NodeName::cueAttr;
inline constexpr auto cuebackgroundAttr = NodeName::cuebackgroundAttr;
inline constexpr auto cursorAttr = NodeName::cursorAttr;
inline constexpr auto cxAttr = NodeName::cxAttr;
inline constexpr auto cyAttr = NodeName::cyAttr;
inline constexpr auto dAttr = NodeName::dAttr;
inline constexpr auto dataAttr = NodeName::dataAttr;
inline constexpr auto datetimeAttr = NodeName::datetimeAttr;
inline constexpr auto declareAttr = NodeName::declareAttr;
inline constexpr auto decodingAttr = NodeName::decodingAttr;
inline constexpr auto defaultAttr = NodeName::defaultAttr;
inline constexpr auto deferAttr = NodeName::deferAttr;
inline constexpr auto definitionURLAttr = NodeName::definitionURLAttr;
inline constexpr auto denomalignAttr = NodeName::denomalignAttr;
inline constexpr auto depthAttr = NodeName::depthAttr;
inline constexpr auto descentAttr = NodeName::descentAttr;
inline constexpr auto diffuseConstantAttr = NodeName::diffuseConstantAttr;
inline constexpr auto dirAttr = NodeName::dirAttr;
inline constexpr auto directionAttr = NodeName::directionAttr;
inline constexpr auto dirnameAttr = NodeName::dirnameAttr;
inline constexpr auto disabledAttr = NodeName::disabledAttr;
inline constexpr auto disablepictureinpictureAttr = NodeName::disablepictureinpictureAttr;
inline constexpr auto disableremoteplaybackAttr = NodeName::disableremoteplaybackAttr;
inline constexpr auto displayAttr = NodeName::displayAttr;
inline constexpr auto displaystyleAttr = NodeName::displaystyleAttr;
inline constexpr auto divisorAttr = NodeName::divisorAttr;
inline constexpr auto dominant_baselineAttr = NodeName::dominant_baselineAttr;
inline constexpr auto downloadAttr = NodeName::downloadAttr;
inline constexpr auto draggableAttr = NodeName::draggableAttr;
inline constexpr auto dropzoneAttr = NodeName::dropzoneAttr;
inline constexpr auto durAttr = NodeName::durAttr;
inline constexpr auto dxAttr = NodeName::dxAttr;
inline constexpr auto dyAttr = NodeName::dyAttr;
inline constexpr auto edgeModeAttr = NodeName::edgeModeAttr;
inline constexpr auto elevationAttr = NodeName::elevationAttr;
inline constexpr auto encodingAttr = NodeName::encodingAttr;
inline constexpr auto enctypeAttr = NodeName::enctypeAttr;
inline constexpr auto endAttr = NodeName::endAttr;
inline constexpr auto enterkeyhintAttr = NodeName::enterkeyhintAttr;
inline constexpr auto environmentmapAttr = NodeName::environmentmapAttr;
inline constexpr auto eventAttr = NodeName::eventAttr;
inline constexpr auto expandedAttr = NodeName::expandedAttr;
inline constexpr auto exponentAttr = NodeName::exponentAttr;
inline constexpr auto exportpartsAttr = NodeName::exportpartsAttr;
inline constexpr auto faceAttr = NodeName::faceAttr;
inline constexpr auto fenceAttr = NodeName::fenceAttr;
inline constexpr auto fetchpriorityAttr = NodeName::fetchpriorityAttr;
inline constexpr auto filenameAttr = NodeName::filenameAttr;
inline constexpr auto fillAttr = NodeName::fillAttr;
inline constexpr auto fill_opacityAttr = NodeName::fill_opacityAttr;
inline constexpr auto fill_ruleAttr = NodeName::fill_ruleAttr;
inline constexpr auto filterAttr = NodeName::filterAttr;
inline constexpr auto filterUnitsAttr = NodeName::filterUnitsAttr;
inline constexpr auto flood_colorAttr = NodeName::flood_colorAttr;
inline constexpr auto flood_opacityAttr = NodeName::flood_opacityAttr;
inline constexpr auto focusedAttr = NodeName::focusedAttr;
inline constexpr auto font_familyAttr = NodeName::font_familyAttr;
inline constexpr auto font_sizeAttr = NodeName::font_sizeAttr;
inline constexpr auto font_size_adjustAttr = NodeName::font_size_adjustAttr;
inline constexpr auto font_stretchAttr = NodeName::font_stretchAttr;
inline constexpr auto font_styleAttr = NodeName::font_styleAttr;
inline constexpr auto font_variantAttr = NodeName::font_variantAttr;
inline constexpr auto font_weightAttr = NodeName::font_weightAttr;
inline constexpr auto font_widthAttr = NodeName::font_widthAttr;
inline constexpr auto fontfamilyAttr = NodeName::fontfamilyAttr;
inline constexpr auto fontsizeAttr = NodeName::fontsizeAttr;
inline constexpr auto fontstyleAttr = NodeName::fontstyleAttr;
inline constexpr auto fontweightAttr = NodeName::fontweightAttr;
inline constexpr auto forAttr = NodeName::forAttr;
inline constexpr auto formAttr = NodeName::formAttr;
inline constexpr auto formactionAttr = NodeName::formactionAttr;
inline constexpr auto formatAttr = NodeName::formatAttr;
inline constexpr auto formenctypeAttr = NodeName::formenctypeAttr;
inline constexpr auto formmethodAttr = NodeName::formmethodAttr;
inline constexpr auto formnovalidateAttr = NodeName::formnovalidateAttr;
inline constexpr auto formtargetAttr = NodeName::formtargetAttr;
inline constexpr auto frAttr = NodeName::frAttr;
inline constexpr auto frameAttr = NodeName::frameAttr;
inline constexpr auto frameborderAttr = NodeName::frameborderAttr;
inline constexpr auto fromAttr = NodeName::fromAttr;
inline constexpr auto fxAttr = NodeName::fxAttr;
inline constexpr auto fyAttr = NodeName::fyAttr;
inline constexpr auto g1Attr = NodeName::g1Attr;
inline constexpr auto g2Attr = NodeName::g2Attr;
inline constexpr auto glyphRefAttr = NodeName::glyphRefAttr;
inline constexpr auto glyph_nameAttr = NodeName::glyph_nameAttr;
inline constexpr auto glyph_orientation_horizontalAttr = NodeName::glyph_orientation_horizontalAttr;
inline constexpr auto glyph_orientation_verticalAttr = NodeName::glyph_orientation_verticalAttr;
inline constexpr auto gradientTransformAttr = NodeName::gradientTransformAttr;
inline constexpr auto gradientUnitsAttr = NodeName::gradientUnitsAttr;
inline constexpr auto headersAttr = NodeName::headersAttr;
inline constexpr auto heightAttr = NodeName::heightAttr;
inline constexpr auto hiddenAttr = NodeName::hiddenAttr;
inline constexpr auto highAttr = NodeName::highAttr;
inline constexpr auto horiz_adv_xAttr = NodeName::horiz_adv_xAttr;
inline constexpr auto horiz_origin_xAttr = NodeName::horiz_origin_xAttr;
inline constexpr auto horiz_origin_yAttr = NodeName::horiz_origin_yAttr;
inline constexpr auto hreflangAttr = NodeName::hreflangAttr;
inline constexpr auto hspaceAttr = NodeName::hspaceAttr;
inline constexpr auto http_equivAttr = NodeName::http_equivAttr;
inline constexpr auto idAttr = NodeName::idAttr;
inline constexpr auto image_renderingAttr = NodeName::image_renderingAttr;
inline constexpr auto imagesizesAttr = NodeName::imagesizesAttr;
inline constexpr auto imagesrcsetAttr = NodeName::imagesrcsetAttr;
inline constexpr auto in2Attr = NodeName::in2Attr;
inline constexpr auto inAttr = NodeName::inAttr;
inline constexpr auto inertAttr = NodeName::inertAttr;
inline constexpr auto inputmodeAttr = NodeName::inputmodeAttr;
inline constexpr auto integrityAttr = NodeName::integrityAttr;
inline constexpr auto interactiveAttr = NodeName::interactiveAttr;
inline constexpr auto interceptAttr = NodeName::interceptAttr;
inline constexpr auto isAttr = NodeName::isAttr;
inline constexpr auto ismapAttr = NodeName::ismapAttr;
inline constexpr auto k1Attr = NodeName::k1Attr;
inline constexpr auto k2Attr = NodeName::k2Attr;
inline constexpr auto k3Attr = NodeName::k3Attr;
inline constexpr auto k4Attr = NodeName::k4Attr;
inline constexpr auto kAttr = NodeName::kAttr;
inline constexpr auto kernelMatrixAttr = NodeName::kernelMatrixAttr;
inline constexpr auto kernelUnitLengthAttr = NodeName::kernelUnitLengthAttr;
inline constexpr auto keyPointsAttr = NodeName::keyPointsAttr;
inline constexpr auto keySplinesAttr = NodeName::keySplinesAttr;
inline constexpr auto keyTimesAttr = NodeName::keyTimesAttr;
inline constexpr auto keytypeAttr = NodeName::keytypeAttr;
inline constexpr auto kindAttr = NodeName::kindAttr;
inline constexpr auto labelAttr = NodeName::labelAttr;
inline constexpr auto languageAttr = NodeName::languageAttr;
inline constexpr auto largeopAttr = NodeName::largeopAttr;
inline constexpr auto leftmarginAttr = NodeName::leftmarginAttr;
inline constexpr auto lengthAdjustAttr = NodeName::lengthAdjustAttr;
inline constexpr auto letter_spacingAttr = NodeName::letter_spacingAttr;
inline constexpr auto lighting_colorAttr = NodeName::lighting_colorAttr;
inline constexpr auto limitingConeAngleAttr = NodeName::limitingConeAngleAttr;
inline constexpr auto linethicknessAttr = NodeName::linethicknessAttr;
inline constexpr auto linkAttr = NodeName::linkAttr;
inline constexpr auto listAttr = NodeName::listAttr;
inline constexpr auto loadingAttr = NodeName::loadingAttr;
inline constexpr auto localAttr = NodeName::localAttr;
inline constexpr auto longdescAttr = NodeName::longdescAttr;
inline constexpr auto loopAttr = NodeName::loopAttr;
inline constexpr auto loopendAttr = NodeName::loopendAttr;
inline constexpr auto loopstartAttr = NodeName::loopstartAttr;
inline constexpr auto lowAttr = NodeName::lowAttr;
inline constexpr auto lowsrcAttr = NodeName::lowsrcAttr;
inline constexpr auto lspaceAttr = NodeName::lspaceAttr;
inline constexpr auto marginheightAttr = NodeName::marginheightAttr;
inline constexpr auto marginwidthAttr = NodeName::marginwidthAttr;
inline constexpr auto markerHeightAttr = NodeName::markerHeightAttr;
inline constexpr auto markerUnitsAttr = NodeName::markerUnitsAttr;
inline constexpr auto markerWidthAttr = NodeName::markerWidthAttr;
inline constexpr auto marker_endAttr = NodeName::marker_endAttr;
inline constexpr auto marker_midAttr = NodeName::marker_midAttr;
inline constexpr auto marker_startAttr = NodeName::marker_startAttr;
inline constexpr auto maskAttr = NodeName::maskAttr;
inline constexpr auto maskContentUnitsAttr = NodeName::maskContentUnitsAttr;
inline constexpr auto maskUnitsAttr = NodeName::maskUnitsAttr;
inline constexpr auto mask_typeAttr = NodeName::mask_typeAttr;
inline constexpr auto mathbackgroundAttr = NodeName::mathbackgroundAttr;
inline constexpr auto mathcolorAttr = NodeName::mathcolorAttr;
inline constexpr auto mathsizeAttr = NodeName::mathsizeAttr;
inline constexpr auto mathvariantAttr = NodeName::mathvariantAttr;
inline constexpr auto maxAttr = NodeName::maxAttr;
inline constexpr auto maxlengthAttr = NodeName::maxlengthAttr;
inline constexpr auto maxsizeAttr = NodeName::maxsizeAttr;
inline constexpr auto mayscriptAttr = NodeName::mayscriptAttr;
inline constexpr auto mediaAttr = NodeName::mediaAttr;
inline constexpr auto mediagroupAttr = NodeName::mediagroupAttr;
inline constexpr auto methodAttr = NodeName::methodAttr;
inline constexpr auto minAttr = NodeName::minAttr;
inline constexpr auto minlengthAttr = NodeName::minlengthAttr;
inline constexpr auto minsizeAttr = NodeName::minsizeAttr;
inline constexpr auto modeAttr = NodeName::modeAttr;
inline constexpr auto movablelimitsAttr = NodeName::movablelimitsAttr;
inline constexpr auto multipleAttr = NodeName::multipleAttr;
inline constexpr auto mutedAttr = NodeName::mutedAttr;
inline constexpr auto nameAttr = NodeName::nameAttr;
inline constexpr auto nohrefAttr = NodeName::nohrefAttr;
inline constexpr auto nomoduleAttr = NodeName::nomoduleAttr;
inline constexpr auto nonceAttr = NodeName::nonceAttr;
inline constexpr auto noportalAttr = NodeName::noportalAttr;
inline constexpr auto noresizeAttr = NodeName::noresizeAttr;
inline constexpr auto noshadeAttr = NodeName::noshadeAttr;
inline constexpr auto notationAttr = NodeName::notationAttr;
inline constexpr auto novalidateAttr = NodeName::novalidateAttr;
inline constexpr auto nowrapAttr = NodeName::nowrapAttr;
inline constexpr auto numOctavesAttr = NodeName::numOctavesAttr;
inline constexpr auto numalignAttr = NodeName::numalignAttr;
inline constexpr auto objectAttr = NodeName::objectAttr;
inline constexpr auto offsetAttr = NodeName::offsetAttr;
inline constexpr auto onabortAttr = NodeName::onabortAttr;
inline constexpr auto onafterprintAttr = NodeName::onafterprintAttr;
inline constexpr auto onanimationcancelAttr = NodeName::onanimationcancelAttr;
inline constexpr auto onanimationendAttr = NodeName::onanimationendAttr;
inline constexpr auto onanimationiterationAttr = NodeName::onanimationiterationAttr;
inline constexpr auto onanimationstartAttr = NodeName::onanimationstartAttr;
inline constexpr auto onautocompleteAttr = NodeName::onautocompleteAttr;
inline constexpr auto onautocompleteerrorAttr = NodeName::onautocompleteerrorAttr;
inline constexpr auto onauxclickAttr = NodeName::onauxclickAttr;
inline constexpr auto onbeforecopyAttr = NodeName::onbeforecopyAttr;
inline constexpr auto onbeforecutAttr = NodeName::onbeforecutAttr;
inline constexpr auto onbeforeinputAttr = NodeName::onbeforeinputAttr;
inline constexpr auto onbeforeloadAttr = NodeName::onbeforeloadAttr;
inline constexpr auto onbeforepasteAttr = NodeName::onbeforepasteAttr;
inline constexpr auto onbeforeprintAttr = NodeName::onbeforeprintAttr;
inline constexpr auto onbeforetoggleAttr = NodeName::onbeforetoggleAttr;
inline constexpr auto onbeforeunloadAttr = NodeName::onbeforeunloadAttr;
inline constexpr auto onbeginAttr = NodeName::onbeginAttr;
inline constexpr auto onblurAttr = NodeName::onblurAttr;
inline constexpr auto oncancelAttr = NodeName::oncancelAttr;
inline constexpr auto oncanplayAttr = NodeName::oncanplayAttr;
inline constexpr auto oncanplaythroughAttr = NodeName::oncanplaythroughAttr;
inline constexpr auto onchangeAttr = NodeName::onchangeAttr;
inline constexpr auto onclickAttr = NodeName::onclickAttr;
inline constexpr auto oncloseAttr = NodeName::oncloseAttr;
inline constexpr auto oncommandAttr = NodeName::oncommandAttr;
inline constexpr auto oncontentvisibilityautostatechangeAttr = NodeName::oncontentvisibilityautostatechangeAttr;
inline constexpr auto oncontextmenuAttr = NodeName::oncontextmenuAttr;
inline constexpr auto oncopyAttr = NodeName::oncopyAttr;
inline constexpr auto oncuechangeAttr = NodeName::oncuechangeAttr;
inline constexpr auto oncutAttr = NodeName::oncutAttr;
inline constexpr auto ondblclickAttr = NodeName::ondblclickAttr;
inline constexpr auto ondevicechangeAttr = NodeName::ondevicechangeAttr;
inline constexpr auto ondragAttr = NodeName::ondragAttr;
inline constexpr auto ondragendAttr = NodeName::ondragendAttr;
inline constexpr auto ondragenterAttr = NodeName::ondragenterAttr;
inline constexpr auto ondragleaveAttr = NodeName::ondragleaveAttr;
inline constexpr auto ondragoverAttr = NodeName::ondragoverAttr;
inline constexpr auto ondragstartAttr = NodeName::ondragstartAttr;
inline constexpr auto ondropAttr = NodeName::ondropAttr;
inline constexpr auto ondurationchangeAttr = NodeName::ondurationchangeAttr;
inline constexpr auto onemptiedAttr = NodeName::onemptiedAttr;
inline constexpr auto onendAttr = NodeName::onendAttr;
inline constexpr auto onendedAttr = NodeName::onendedAttr;
inline constexpr auto onerrorAttr = NodeName::onerrorAttr;
inline constexpr auto onfocusAttr = NodeName::onfocusAttr;
inline constexpr auto onfocusinAttr = NodeName::onfocusinAttr;
inline constexpr auto onfocusoutAttr = NodeName::onfocusoutAttr;
inline constexpr auto onformdataAttr = NodeName::onformdataAttr;
inline constexpr auto onfullscreenchangeAttr = NodeName::onfullscreenchangeAttr;
inline constexpr auto onfullscreenerrorAttr = NodeName::onfullscreenerrorAttr;
inline constexpr auto ongamepadconnectedAttr = NodeName::ongamepadconnectedAttr;
inline constexpr auto ongamepaddisconnectedAttr = NodeName::ongamepaddisconnectedAttr;
inline constexpr auto ongesturechangeAttr = NodeName::ongesturechangeAttr;
inline constexpr auto ongestureendAttr = NodeName::ongestureendAttr;
inline constexpr auto ongesturestartAttr = NodeName::ongesturestartAttr;
inline constexpr auto ongotpointercaptureAttr = NodeName::ongotpointercaptureAttr;
inline constexpr auto onhashchangeAttr = NodeName::onhashchangeAttr;
inline constexpr auto oninputAttr = NodeName::oninputAttr;
inline constexpr auto oninvalidAttr = NodeName::oninvalidAttr;
inline constexpr auto onkeydownAttr = NodeName::onkeydownAttr;
inline constexpr auto onkeypressAttr = NodeName::onkeypressAttr;
inline constexpr auto onkeyupAttr = NodeName::onkeyupAttr;
inline constexpr auto onlanguagechangeAttr = NodeName::onlanguagechangeAttr;
inline constexpr auto onloadAttr = NodeName::onloadAttr;
inline constexpr auto onloadeddataAttr = NodeName::onloadeddataAttr;
inline constexpr auto onloadedmetadataAttr = NodeName::onloadedmetadataAttr;
inline constexpr auto onloadstartAttr = NodeName::onloadstartAttr;
inline constexpr auto onlostpointercaptureAttr = NodeName::onlostpointercaptureAttr;
inline constexpr auto onmessageAttr = NodeName::onmessageAttr;
inline constexpr auto onmessageerrorAttr = NodeName::onmessageerrorAttr;
inline constexpr auto onmousedownAttr = NodeName::onmousedownAttr;
inline constexpr auto onmouseenterAttr = NodeName::onmouseenterAttr;
inline constexpr auto onmouseleaveAttr = NodeName::onmouseleaveAttr;
inline constexpr auto onmousemoveAttr = NodeName::onmousemoveAttr;
inline constexpr auto onmouseoutAttr = NodeName::onmouseoutAttr;
inline constexpr auto onmouseoverAttr = NodeName::onmouseoverAttr;
inline constexpr auto onmouseupAttr = NodeName::onmouseupAttr;
inline constexpr auto onmousewheelAttr = NodeName::onmousewheelAttr;
inline constexpr auto onofflineAttr = NodeName::onofflineAttr;
inline constexpr auto ononlineAttr = NodeName::ononlineAttr;
inline constexpr auto onorientationchangeAttr = NodeName::onorientationchangeAttr;
inline constexpr auto onpagehideAttr = NodeName::onpagehideAttr;
inline constexpr auto onpagerevealAttr = NodeName::onpagerevealAttr;
inline constexpr auto onpageshowAttr = NodeName::onpageshowAttr;
inline constexpr auto onpageswapAttr = NodeName::onpageswapAttr;
inline constexpr auto onpasteAttr = NodeName::onpasteAttr;
inline constexpr auto onpauseAttr = NodeName::onpauseAttr;
inline constexpr auto onplayAttr = NodeName::onplayAttr;
inline constexpr auto onplayingAttr = NodeName::onplayingAttr;
inline constexpr auto onpointercancelAttr = NodeName::onpointercancelAttr;
inline constexpr auto onpointerdownAttr = NodeName::onpointerdownAttr;
inline constexpr auto onpointerenterAttr = NodeName::onpointerenterAttr;
inline constexpr auto onpointerleaveAttr = NodeName::onpointerleaveAttr;
inline constexpr auto onpointermoveAttr = NodeName::onpointermoveAttr;
inline constexpr auto onpointeroutAttr = NodeName::onpointeroutAttr;
inline constexpr auto onpointeroverAttr = NodeName::onpointeroverAttr;
inline constexpr auto onpointerupAttr = NodeName::onpointerupAttr;
inline constexpr auto onpopstateAttr = NodeName::onpopstateAttr;
inline constexpr auto onprogressAttr = NodeName::onprogressAttr;
inline constexpr auto onratechangeAttr = NodeName::onratechangeAttr;
inline constexpr auto onredrawAttr = NodeName::onredrawAttr;
inline constexpr auto onrejectionhandledAttr = NodeName::onrejectionhandledAttr;
inline constexpr auto onresetAttr = NodeName::onresetAttr;
inline constexpr auto onresizeAttr = NodeName::onresizeAttr;
inline constexpr auto onscrollAttr = NodeName::onscrollAttr;
inline constexpr auto onsecuritypolicyviolationAttr = NodeName::onsecuritypolicyviolationAttr;
inline constexpr auto onseekedAttr = NodeName::onseekedAttr;
inline constexpr auto onseekingAttr = NodeName::onseekingAttr;
inline constexpr auto onselectAttr = NodeName::onselectAttr;
inline constexpr auto onselectionchangeAttr = NodeName::onselectionchangeAttr;
inline constexpr auto onselectstartAttr = NodeName::onselectstartAttr;
inline constexpr auto onslotchangeAttr = NodeName::onslotchangeAttr;
inline constexpr auto onstalledAttr = NodeName::onstalledAttr;
inline constexpr auto onstorageAttr = NodeName::onstorageAttr;
inline constexpr auto onsubmitAttr = NodeName::onsubmitAttr;
inline constexpr auto onsuspendAttr = NodeName::onsuspendAttr;
inline constexpr auto ontimeupdateAttr = NodeName::ontimeupdateAttr;
inline constexpr auto ontoggleAttr = NodeName::ontoggleAttr;
inline constexpr auto ontouchcancelAttr = NodeName::ontouchcancelAttr;
inline constexpr auto ontouchendAttr = NodeName::ontouchendAttr;
inline constexpr auto ontouchforcechangeAttr = NodeName::ontouchforcechangeAttr;
inline constexpr auto ontouchmoveAttr = NodeName::ontouchmoveAttr;
inline constexpr auto ontouchstartAttr = NodeName::ontouchstartAttr;
inline constexpr auto ontransitioncancelAttr = NodeName::ontransitioncancelAttr;
inline constexpr auto ontransitionendAttr = NodeName::ontransitionendAttr;
inline constexpr auto ontransitionrunAttr = NodeName::ontransitionrunAttr;
inline constexpr auto ontransitionstartAttr = NodeName::ontransitionstartAttr;
inline constexpr auto onuncapturederrorAttr = NodeName::onuncapturederrorAttr;
inline constexpr auto onunhandledrejectionAttr = NodeName::onunhandledrejectionAttr;
inline constexpr auto onunloadAttr = NodeName::onunloadAttr;
inline constexpr auto onvolumechangeAttr = NodeName::onvolumechangeAttr;
inline constexpr auto onwaitingAttr = NodeName::onwaitingAttr;
inline constexpr auto onwebkitanimationendAttr = NodeName::onwebkitanimationendAttr;
inline constexpr auto onwebkitanimationiterationAttr = NodeName::onwebkitanimationiterationAttr;
inline constexpr auto onwebkitanimationstartAttr = NodeName::onwebkitanimationstartAttr;
inline constexpr auto onwebkitbeginfullscreenAttr = NodeName::onwebkitbeginfullscreenAttr;
inline constexpr auto onwebkitcurrentplaybacktargetiswirelesschangedAttr = NodeName::onwebkitcurrentplaybacktargetiswirelesschangedAttr;
inline constexpr auto onwebkitendfullscreenAttr = NodeName::onwebkitendfullscreenAttr;
inline constexpr auto onwebkitfullscreenchangeAttr = NodeName::onwebkitfullscreenchangeAttr;
inline constexpr auto onwebkitfullscreenerrorAttr = NodeName::onwebkitfullscreenerrorAttr;
inline constexpr auto onwebkitkeyaddedAttr = NodeName::onwebkitkeyaddedAttr;
inline constexpr auto onwebkitkeyerrorAttr = NodeName::onwebkitkeyerrorAttr;
inline constexpr auto onwebkitkeymessageAttr = NodeName::onwebkitkeymessageAttr;
inline constexpr auto onwebkitmouseforcechangedAttr = NodeName::onwebkitmouseforcechangedAttr;
inline constexpr auto onwebkitmouseforcedownAttr = NodeName::onwebkitmouseforcedownAttr;
inline constexpr auto onwebkitmouseforceupAttr = NodeName::onwebkitmouseforceupAttr;
inline constexpr auto onwebkitmouseforcewillbeginAttr = NodeName::onwebkitmouseforcewillbeginAttr;
inline constexpr auto onwebkitneedkeyAttr = NodeName::onwebkitneedkeyAttr;
inline constexpr auto onwebkitplaybacktargetavailabilitychangedAttr = NodeName::onwebkitplaybacktargetavailabilitychangedAttr;
inline constexpr auto onwebkitpresentationmodechangedAttr = NodeName::onwebkitpresentationmodechangedAttr;
inline constexpr auto onwebkittransitionendAttr = NodeName::onwebkittransitionendAttr;
inline constexpr auto onwheelAttr = NodeName::onwheelAttr;
inline constexpr auto onzoomAttr = NodeName::onzoomAttr;
inline constexpr auto opacityAttr = NodeName::opacityAttr;
inline constexpr auto openAttr = NodeName::openAttr;
inline constexpr auto operatorAttr = NodeName::operatorAttr;
inline constexpr auto optimumAttr = NodeName::optimumAttr;
inline constexpr auto orderAttr = NodeName::orderAttr;
inline constexpr auto orientAttr = NodeName::orientAttr;
inline constexpr auto originAttr = NodeName::originAttr;
inline constexpr auto overflowAttr = NodeName::overflowAttr;
inline constexpr auto paint_orderAttr = NodeName::paint_orderAttr;
inline constexpr auto panose_1Attr = NodeName::panose_1Attr;
inline constexpr auto partAttr = NodeName::partAttr;
inline constexpr auto pathAttr = NodeName::pathAttr;
inline constexpr auto pathLengthAttr = NodeName::pathLengthAttr;
inline constexpr auto patternAttr = NodeName::patternAttr;
inline constexpr auto patternContentUnitsAttr = NodeName::patternContentUnitsAttr;
inline constexpr auto patternTransformAttr = NodeName::patternTransformAttr;
inline constexpr auto patternUnitsAttr = NodeName::patternUnitsAttr;
inline constexpr auto pingAttr = NodeName::pingAttr;
inline constexpr auto placeholderAttr = NodeName::placeholderAttr;
inline constexpr auto playcountAttr = NodeName::playcountAttr;
inline constexpr auto playsinlineAttr = NodeName::playsinlineAttr;
inline constexpr auto pointer_eventsAttr = NodeName::pointer_eventsAttr;
inline constexpr auto pointsAtXAttr = NodeName::pointsAtXAttr;
inline constexpr auto pointsAtYAttr = NodeName::pointsAtYAttr;
inline constexpr auto pointsAtZAttr = NodeName::pointsAtZAttr;
inline constexpr auto pointsAttr = NodeName::pointsAttr;
inline constexpr auto popoverAttr = NodeName::popoverAttr;
inline constexpr auto popovertargetAttr = NodeName::popovertargetAttr;
inline constexpr auto popovertargetactionAttr = NodeName::popovertargetactionAttr;
inline constexpr auto posterAttr = NodeName::posterAttr;
inline constexpr auto preloadAttr = NodeName::preloadAttr;
inline constexpr auto preserveAlphaAttr = NodeName::preserveAlphaAttr;
inline constexpr auto preserveAspectRatioAttr = NodeName::preserveAspectRatioAttr;
inline constexpr auto primitiveUnitsAttr = NodeName::primitiveUnitsAttr;
inline constexpr auto progressAttr = NodeName::progressAttr;
inline constexpr auto rAttr = NodeName::rAttr;
inline constexpr auto radiusAttr = NodeName::radiusAttr;
inline constexpr auto readonlyAttr = NodeName::readonlyAttr;
inline constexpr auto refXAttr = NodeName::refXAttr;
inline constexpr auto refYAttr = NodeName::refYAttr;
inline constexpr auto referrerpolicyAttr = NodeName::referrerpolicyAttr;
inline constexpr auto relAttr = NodeName::relAttr;
inline constexpr auto repeatCountAttr = NodeName::repeatCountAttr;
inline constexpr auto repeatDurAttr = NodeName::repeatDurAttr;
inline constexpr auto requiredAttr = NodeName::requiredAttr;
inline constexpr auto requiredExtensionsAttr = NodeName::requiredExtensionsAttr;
inline constexpr auto requiredFeaturesAttr = NodeName::requiredFeaturesAttr;
inline constexpr auto restartAttr = NodeName::restartAttr;
inline constexpr auto resultAttr = NodeName::resultAttr;
inline constexpr auto resultsAttr = NodeName::resultsAttr;
inline constexpr auto revAttr = NodeName::revAttr;
inline constexpr auto reversedAttr = NodeName::reversedAttr;
inline constexpr auto rotateAttr = NodeName::rotateAttr;
inline constexpr auto rowsAttr = NodeName::rowsAttr;
inline constexpr auto rowspanAttr = NodeName::rowspanAttr;
inline constexpr auto rspaceAttr = NodeName::rspaceAttr;
inline constexpr auto rulesAttr = NodeName::rulesAttr;
inline constexpr auto rxAttr = NodeName::rxAttr;
inline constexpr auto ryAttr = NodeName::ryAttr;
inline constexpr auto sandboxAttr = NodeName::sandboxAttr;
inline constexpr auto saveAttr = NodeName::saveAttr;
inline constexpr auto scaleAttr = NodeName::scaleAttr;
inline constexpr auto schemeAttr = NodeName::schemeAttr;
inline constexpr auto scopeAttr = NodeName::scopeAttr;
inline constexpr auto scrollamountAttr = NodeName::scrollamountAttr;
inline constexpr auto scrolldelayAttr = NodeName::scrolldelayAttr;
inline constexpr auto scrollingAttr = NodeName::scrollingAttr;
inline constexpr auto seedAttr = NodeName::seedAttr;
inline constexpr auto selectAttr = NodeName::selectAttr;
inline constexpr auto selectedAttr = NodeName::selectedAttr;
inline constexpr auto selectionAttr = NodeName::selectionAttr;
inline constexpr auto separatorAttr = NodeName::separatorAttr;
inline constexpr auto separatorsAttr = NodeName::separatorsAttr;
inline constexpr auto shadowrootclonableAttr = NodeName::shadowrootclonableAttr;
inline constexpr auto shadowrootcustomelementregistryAttr = NodeName::shadowrootcustomelementregistryAttr;
inline constexpr auto shadowrootdelegatesfocusAttr = NodeName::shadowrootdelegatesfocusAttr;
inline constexpr auto shadowrootmodeAttr = NodeName::shadowrootmodeAttr;
inline constexpr auto shadowrootreferencetargetAttr = NodeName::shadowrootreferencetargetAttr;
inline constexpr auto shadowrootserializableAttr = NodeName::shadowrootserializableAttr;
inline constexpr auto shapeAttr = NodeName::shapeAttr;
inline constexpr auto shape_renderingAttr = NodeName::shape_renderingAttr;
inline constexpr auto sizeAttr = NodeName::sizeAttr;
inline constexpr auto sizesAttr = NodeName::sizesAttr;
inline constexpr auto slopeAttr = NodeName::slopeAttr;
inline constexpr auto slotAttr = NodeName::slotAttr;
inline constexpr auto spacingAttr = NodeName::spacingAttr;
inline constexpr auto spanAttr = NodeName::spanAttr;
inline constexpr auto specularConstantAttr = NodeName::specularConstantAttr;
inline constexpr auto specularExponentAttr = NodeName::specularExponentAttr;
inline constexpr auto spellcheckAttr = NodeName::spellcheckAttr;
inline constexpr auto spreadMethodAttr = NodeName::spreadMethodAttr;
inline constexpr auto srcAttr = NodeName::srcAttr;
inline constexpr auto srcdocAttr = NodeName::srcdocAttr;
inline constexpr auto srclangAttr = NodeName::srclangAttr;
inline constexpr auto srcsetAttr = NodeName::srcsetAttr;
inline constexpr auto stagemodeAttr = NodeName::stagemodeAttr;
inline constexpr auto standbyAttr = NodeName::standbyAttr;
inline constexpr auto startAttr = NodeName::startAttr;
inline constexpr auto startOffsetAttr = NodeName::startOffsetAttr;
inline constexpr auto stdDeviationAttr = NodeName::stdDeviationAttr;
inline constexpr auto stepAttr = NodeName::stepAttr;
inline constexpr auto stitchTilesAttr = NodeName::stitchTilesAttr;
inline constexpr auto stop_colorAttr = NodeName::stop_colorAttr;
inline constexpr auto stop_opacityAttr = NodeName::stop_opacityAttr;
inline constexpr auto stretchyAttr = NodeName::stretchyAttr;
inline constexpr auto strokeAttr = NodeName::strokeAttr;
inline constexpr auto stroke_dasharrayAttr = NodeName::stroke_dasharrayAttr;
inline constexpr auto stroke_dashoffsetAttr = NodeName::stroke_dashoffsetAttr;
inline constexpr auto stroke_linecapAttr = NodeName::stroke_linecapAttr;
inline constexpr auto stroke_linejoinAttr = NodeName::stroke_linejoinAttr;
inline constexpr auto stroke_miterlimitAttr = NodeName::stroke_miterlimitAttr;
inline constexpr auto stroke_opacityAttr = NodeName::stroke_opacityAttr;
inline constexpr auto stroke_widthAttr = NodeName::stroke_widthAttr;
inline constexpr auto styleAttr = NodeName::styleAttr;
inline constexpr auto subscriptshiftAttr = NodeName::subscriptshiftAttr;
inline constexpr auto subtitleAttr = NodeName::subtitleAttr;
inline constexpr auto summaryAttr = NodeName::summaryAttr;
inline constexpr auto superscriptshiftAttr = NodeName::superscriptshiftAttr;
inline constexpr auto surfaceScaleAttr = NodeName::surfaceScaleAttr;
inline constexpr auto switchAttr = NodeName::switchAttr;
inline constexpr auto symmetricAttr = NodeName::symmetricAttr;
inline constexpr auto systemLanguageAttr = NodeName::systemLanguageAttr;
inline constexpr auto tabindexAttr = NodeName::tabindexAttr;
inline constexpr auto tableValuesAttr = NodeName::tableValuesAttr;
inline constexpr auto targetAttr = NodeName::targetAttr;
inline constexpr auto targetXAttr = NodeName::targetXAttr;
inline constexpr auto targetYAttr = NodeName::targetYAttr;
inline constexpr auto textAttr = NodeName::textAttr;
inline constexpr auto textLengthAttr = NodeName::textLengthAttr;
inline constexpr auto text_anchorAttr = NodeName::text_anchorAttr;
inline constexpr auto text_decorationAttr = NodeName::text_decorationAttr;
inline constexpr auto text_renderingAttr = NodeName::text_renderingAttr;
inline constexpr auto toAttr = NodeName::toAttr;
inline constexpr auto topmarginAttr = NodeName::topmarginAttr;
inline constexpr auto transformAttr = NodeName::transformAttr;
inline constexpr auto transform_originAttr = NodeName::transform_originAttr;
inline constexpr auto translateAttr = NodeName::translateAttr;
inline constexpr auto truespeedAttr = NodeName::truespeedAttr;
inline constexpr auto u1Attr = NodeName::u1Attr;
inline constexpr auto u2Attr = NodeName::u2Attr;
inline constexpr auto uiactionsAttr = NodeName::uiactionsAttr;
inline constexpr auto unicodeAttr = NodeName::unicodeAttr;
inline constexpr auto unicode_bidiAttr = NodeName::unicode_bidiAttr;
inline constexpr auto units_per_emAttr = NodeName::units_per_emAttr;
inline constexpr auto usemapAttr = NodeName::usemapAttr;
inline constexpr auto useragentpartAttr = NodeName::useragentpartAttr;
inline constexpr auto valignAttr = NodeName::valignAttr;
inline constexpr auto valueAttr = NodeName::valueAttr;
inline constexpr auto valuesAttr = NodeName::valuesAttr;
inline constexpr auto valuetypeAttr = NodeName::valuetypeAttr;
inline constexpr auto vector_effectAttr = NodeName::vector_effectAttr;
inline constexpr auto versionAttr = NodeName::versionAttr;
inline constexpr auto vert_adv_yAttr = NodeName::vert_adv_yAttr;
inline constexpr auto vert_origin_xAttr = NodeName::vert_origin_xAttr;
inline constexpr auto vert_origin_yAttr = NodeName::vert_origin_yAttr;
inline constexpr auto viewBoxAttr = NodeName::viewBoxAttr;
inline constexpr auto viewTargetAttr = NodeName::viewTargetAttr;
inline constexpr auto visibilityAttr = NodeName::visibilityAttr;
inline constexpr auto vlinkAttr = NodeName::vlinkAttr;
inline constexpr auto voffsetAttr = NodeName::voffsetAttr;
inline constexpr auto vspaceAttr = NodeName::vspaceAttr;
inline constexpr auto webkit_playsinlineAttr = NodeName::webkit_playsinlineAttr;
inline constexpr auto webkitairplayAttr = NodeName::webkitairplayAttr;
inline constexpr auto webkitallowfullscreenAttr = NodeName::webkitallowfullscreenAttr;
inline constexpr auto webkitattachmentbloburlAttr = NodeName::webkitattachmentbloburlAttr;
inline constexpr auto webkitattachmentidAttr = NodeName::webkitattachmentidAttr;
inline constexpr auto webkitattachmentpathAttr = NodeName::webkitattachmentpathAttr;
inline constexpr auto webkitdirectoryAttr = NodeName::webkitdirectoryAttr;
inline constexpr auto webkitdropzoneAttr = NodeName::webkitdropzoneAttr;
inline constexpr auto webkitwirelessvideoplaybackdisabledAttr = NodeName::webkitwirelessvideoplaybackdisabledAttr;
inline constexpr auto widthAttr = NodeName::widthAttr;
inline constexpr auto word_spacingAttr = NodeName::word_spacingAttr;
inline constexpr auto wrapAttr = NodeName::wrapAttr;
inline constexpr auto writing_modeAttr = NodeName::writing_modeAttr;
inline constexpr auto writingsuggestionsAttr = NodeName::writingsuggestionsAttr;
inline constexpr auto x1Attr = NodeName::x1Attr;
inline constexpr auto x2Attr = NodeName::x2Attr;
inline constexpr auto xAttr = NodeName::xAttr;
inline constexpr auto xChannelSelectorAttr = NodeName::xChannelSelectorAttr;
inline constexpr auto x_apple_data_detectorsAttr = NodeName::x_apple_data_detectorsAttr;
inline constexpr auto x_apple_data_detectors_resultAttr = NodeName::x_apple_data_detectors_resultAttr;
inline constexpr auto x_apple_data_detectors_typeAttr = NodeName::x_apple_data_detectors_typeAttr;
inline constexpr auto x_apple_pdf_annotationAttr = NodeName::x_apple_pdf_annotationAttr;
inline constexpr auto x_heightAttr = NodeName::x_heightAttr;
inline constexpr auto x_itunes_inherit_uri_query_componentAttr = NodeName::x_itunes_inherit_uri_query_componentAttr;
inline constexpr auto y1Attr = NodeName::y1Attr;
inline constexpr auto y2Attr = NodeName::y2Attr;
inline constexpr auto yAttr = NodeName::yAttr;
inline constexpr auto yChannelSelectorAttr = NodeName::yChannelSelectorAttr;
inline constexpr auto zAttr = NodeName::zAttr;
inline constexpr auto zoomAndPanAttr = NodeName::zoomAndPanAttr;
inline constexpr auto hrefAttr = NodeName::hrefAttr;
inline constexpr auto langAttr = NodeName::langAttr;
inline constexpr auto roleAttr = NodeName::roleAttr;
inline constexpr auto titleAttr = NodeName::titleAttr;
inline constexpr auto typeAttr = NodeName::typeAttr;

namespace XLink {
inline constexpr auto actuateAttr = NodeName::XLink_actuateAttr;
inline constexpr auto arcroleAttr = NodeName::XLink_arcroleAttr;
inline constexpr auto showAttr = NodeName::XLink_showAttr;
inline constexpr auto hrefAttr = NodeName::XLink_hrefAttr;
inline constexpr auto roleAttr = NodeName::XLink_roleAttr;
inline constexpr auto titleAttr = NodeName::XLink_titleAttr;
inline constexpr auto typeAttr = NodeName::XLink_typeAttr;
} // namespace XLink

namespace XML {
inline constexpr auto spaceAttr = NodeName::XML_spaceAttr;
inline constexpr auto langAttr = NodeName::XML_langAttr;
} // namespace XML

namespace XMLNS {
inline constexpr auto xmlnsAttr = NodeName::XMLNS_xmlnsAttr;
} // namespace XMLNS

} // namespace AttributeNames

NodeName findNodeName(Namespace, const String&);
ElementName findHTMLElementName(std::span<const LChar>);
ElementName findHTMLElementName(std::span<const UChar>);
ElementName findHTMLElementName(const String&);
ElementName findSVGElementName(const String&);
ElementName findMathMLElementName(const String&);
TagName tagNameForElementName(ElementName);
ElementName elementNameForTag(Namespace, TagName);
const QualifiedName& qualifiedNameForNodeName(NodeName);

inline TagName tagNameForElementName(ElementName elementName)
{
    constexpr auto s_lastUniqueTagName = TagName::vkern;

    if (enumToUnderlyingType(elementName) <= enumToUnderlyingType(s_lastUniqueTagName)) [[likely]]
        return static_cast<TagName>(elementName);

    switch (elementName) {
    case ElementName::HTML_a:
        return TagName::a;
    case ElementName::HTML_annotation_xml:
        return TagName::annotation_xml;
    case ElementName::HTML_font:
        return TagName::font;
    case ElementName::HTML_font_face:
        return TagName::font_face;
    case ElementName::HTML_font_face_format:
        return TagName::font_face_format;
    case ElementName::HTML_font_face_name:
        return TagName::font_face_name;
    case ElementName::HTML_font_face_src:
        return TagName::font_face_src;
    case ElementName::HTML_font_face_uri:
        return TagName::font_face_uri;
    case ElementName::HTML_image:
        return TagName::image;
    case ElementName::HTML_missing_glyph:
        return TagName::missing_glyph;
    case ElementName::HTML_script:
        return TagName::script;
    case ElementName::HTML_style:
        return TagName::style;
    case ElementName::HTML_title:
        return TagName::title;
    case ElementName::MathML_annotation_xml:
        return TagName::annotation_xml;
    case ElementName::SVG_a:
        return TagName::a;
    case ElementName::SVG_font:
        return TagName::font;
    case ElementName::SVG_font_face:
        return TagName::font_face;
    case ElementName::SVG_font_face_format:
        return TagName::font_face_format;
    case ElementName::SVG_font_face_name:
        return TagName::font_face_name;
    case ElementName::SVG_font_face_src:
        return TagName::font_face_src;
    case ElementName::SVG_font_face_uri:
        return TagName::font_face_uri;
    case ElementName::SVG_image:
        return TagName::image;
    case ElementName::SVG_missing_glyph:
        return TagName::missing_glyph;
    case ElementName::SVG_script:
        return TagName::script;
    case ElementName::SVG_style:
        return TagName::style;
    case ElementName::SVG_title:
        return TagName::title;
    default:
        break;
    }

    return TagName::Unknown;
}

inline ElementName elementNameForTag(Namespace ns, TagName tagName)
{
    if (ns == Namespace::HTML) {
        constexpr auto s_firstUniqueHTMLTagName = TagName::abbr;
        constexpr auto s_lastUniqueHTMLTagName = TagName::xmp;

        if (tagName < s_firstUniqueHTMLTagName) [[unlikely]]
            return ElementName::Unknown;

        if (tagName <= s_lastUniqueHTMLTagName) [[likely]]
            return static_cast<ElementName>(tagName);

        switch (tagName) {
        case TagName::a:
            return ElementName::HTML_a;
        case TagName::annotation_xml:
            return ElementName::HTML_annotation_xml;
        case TagName::font:
            return ElementName::HTML_font;
        case TagName::font_face:
            return ElementName::HTML_font_face;
        case TagName::font_face_format:
            return ElementName::HTML_font_face_format;
        case TagName::font_face_name:
            return ElementName::HTML_font_face_name;
        case TagName::font_face_src:
            return ElementName::HTML_font_face_src;
        case TagName::font_face_uri:
            return ElementName::HTML_font_face_uri;
        case TagName::image:
            return ElementName::HTML_image;
        case TagName::missing_glyph:
            return ElementName::HTML_missing_glyph;
        case TagName::script:
            return ElementName::HTML_script;
        case TagName::style:
            return ElementName::HTML_style;
        case TagName::title:
            return ElementName::HTML_title;
        default:
            break;
        }
        return ElementName::Unknown;
    }

    if (ns == Namespace::MathML) {
        constexpr auto s_firstUniqueMathMLTagName = TagName::annotation;
        constexpr auto s_lastUniqueMathMLTagName = TagName::semantics;

        if (tagName < s_firstUniqueMathMLTagName) [[unlikely]]
            return ElementName::Unknown;

        if (tagName <= s_lastUniqueMathMLTagName) [[likely]]
            return static_cast<ElementName>(tagName);

        switch (tagName) {
        case TagName::annotation_xml:
            return ElementName::MathML_annotation_xml;
        default:
            break;
        }
        return ElementName::Unknown;
    }

    if (ns == Namespace::SVG) {
        constexpr auto s_firstUniqueSVGTagName = TagName::altGlyph;
        constexpr auto s_lastUniqueSVGTagName = TagName::vkern;

        if (tagName < s_firstUniqueSVGTagName) [[unlikely]]
            return ElementName::Unknown;

        if (tagName <= s_lastUniqueSVGTagName) [[likely]]
            return static_cast<ElementName>(tagName);

        switch (tagName) {
        case TagName::a:
            return ElementName::SVG_a;
        case TagName::font:
            return ElementName::SVG_font;
        case TagName::font_face:
            return ElementName::SVG_font_face;
        case TagName::font_face_format:
            return ElementName::SVG_font_face_format;
        case TagName::font_face_name:
            return ElementName::SVG_font_face_name;
        case TagName::font_face_src:
            return ElementName::SVG_font_face_src;
        case TagName::font_face_uri:
            return ElementName::SVG_font_face_uri;
        case TagName::image:
            return ElementName::SVG_image;
        case TagName::missing_glyph:
            return ElementName::SVG_missing_glyph;
        case TagName::script:
            return ElementName::SVG_script;
        case TagName::style:
            return ElementName::SVG_style;
        case TagName::title:
            return ElementName::SVG_title;
        default:
            break;
        }
        return ElementName::Unknown;
    }

    return ElementName::Unknown;
}

} // namespace WebCore
