Bug 1366241 - Change memory layout of element name and attribute name hashes in HTML parser from sorted to level order BST in order to take advantage of cache during lookup. r=hsivonen
authorWilliam Chen <wchen@mozilla.com>
Tue, 27 Jun 2017 13:48:25 -0700
changeset 415023 b40afe5dca11facb3780392a3e3277ef9eda8df1
parent 415022 040e1c1c53dc11c1d163f987d73b39ba860a7104
child 415024 5e83b520f1a09e8dd62dbee0b7fde8ea1202316a
push id7566
push usermtabara@mozilla.com
push dateWed, 02 Aug 2017 08:25:16 +0000
treeherdermozilla-beta@86913f512c3c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewershsivonen
bugs1366241
milestone56.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1366241 - Change memory layout of element name and attribute name hashes in HTML parser from sorted to level order BST in order to take advantage of cache during lookup. r=hsivonen
parser/html/javasrc/AttributeName.java
parser/html/javasrc/ElementName.java
parser/html/nsHtml5AttributeName.cpp
parser/html/nsHtml5AttributeName.h
parser/html/nsHtml5ElementName.cpp
parser/html/nsHtml5ElementName.h
--- a/parser/html/javasrc/AttributeName.java
+++ b/parser/html/javasrc/AttributeName.java
@@ -18,16 +18,19 @@
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  */
 
 package nu.validator.htmlparser.impl;
 
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
 
 import nu.validator.htmlparser.annotation.Inline;
 import nu.validator.htmlparser.annotation.Local;
 import nu.validator.htmlparser.annotation.NoLength;
 import nu.validator.htmlparser.annotation.NsUri;
 import nu.validator.htmlparser.annotation.Prefix;
 import nu.validator.htmlparser.annotation.QName;
 import nu.validator.htmlparser.annotation.Unsigned;
@@ -247,16 +250,34 @@ public final class AttributeName
         arr[1] = name;
         arr[2] = name;
         // [NOCPP[
         arr[3] = name;
         // ]NOCPP]
         return arr;
     }
 
+    @Inline static int levelOrderBinarySearch(int[] data, int key) {
+        int n = data.length;
+        int i = 0;
+
+        while (i < n) {
+            int val = data[i];
+            if (val < key) {
+                i = 2 * i + 2;
+            } else if (val > key) {
+                i = 2 * i + 1;
+            } else {
+                return i;
+            }
+        }
+
+        return -1;
+    }
+
     /**
      * Returns an attribute name by buffer.
      *
      * <p>
      * C++ ownership: The return value is either released by the caller if the
      * attribute is a duplicate or the ownership is transferred to
      * HtmlAttributes and released upon clearing or destroying that object.
      *
@@ -270,17 +291,19 @@ public final class AttributeName
      *            whether to check ncnameness
      * @return an <code>AttributeName</code> corresponding to the argument data
      */
     @Inline static AttributeName nameByBuffer(@NoLength char[] buf, int offset,
             int length
             , Interner interner) {
         // XXX deal with offset
         @Unsigned int hash = AttributeName.bufToHash(buf, length);
-        int index = Arrays.binarySearch(AttributeName.ATTRIBUTE_HASHES, hash);
+        int[] hashes;
+        hashes = AttributeName.ATTRIBUTE_HASHES;
+        int index = levelOrderBinarySearch(hashes, hash);
         if (index < 0) {
             return null;
         }
         AttributeName attributeName = AttributeName.ATTRIBUTE_NAMES[index];
         @Local String name = attributeName.getLocal(0);
         if (!Portability.localEqualsBuffer(name, buf, offset, length)) {
             return null;
         }
@@ -678,16 +701,35 @@ public final class AttributeName
 //        return new String(buf);
 //    }
 //
 //    private int hash() {
 //        String name = getLocal(HTML);
 //        return bufToHash(name.toCharArray(), name.length());
 //    }
 //
+//    private static void fillLevelOrderArray(List<AttributeName> sorted, int depth,
+//                                            int rootIdx, AttributeName[] levelOrder) {
+//        if (rootIdx >= levelOrder.length) {
+//            return;
+//        }
+//
+//        if (depth > 0) {
+//            fillLevelOrderArray(sorted, depth - 1, rootIdx * 2 + 1, levelOrder);
+//        }
+//
+//        if (!sorted.isEmpty()) {
+//            levelOrder[rootIdx] = sorted.remove(0);
+//        }
+//
+//        if (depth > 0) {
+//            fillLevelOrderArray(sorted, depth - 1, rootIdx * 2 + 2, levelOrder);
+//        }
+//    }
+//
 //    /**
 //     * Regenerate self
 //     *
 //     * @param args
 //     */
 //    public static void main(String[] args) {
 //        Arrays.sort(ATTRIBUTE_NAMES);
 //        for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
@@ -706,25 +748,32 @@ public final class AttributeName
 //            }
 //        }
 //        for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
 //            AttributeName att = ATTRIBUTE_NAMES[i];
 //            System.out.println("public static final AttributeName "
 //                    + att.constName() + " = new AttributeName" + att.toString()
 //                    + ";");
 //        }
+//
+//        LinkedList<AttributeName> sortedNames = new LinkedList<AttributeName>();
+//        Collections.addAll(sortedNames, ATTRIBUTE_NAMES);
+//        AttributeName[] levelOrder = new AttributeName[ATTRIBUTE_NAMES.length];
+//        int bstDepth = (int) Math.ceil(Math.log(ATTRIBUTE_NAMES.length) / Math.log(2));
+//        fillLevelOrderArray(sortedNames, bstDepth, 0, levelOrder);
+//
 //        System.out.println("private final static @NoLength AttributeName[] ATTRIBUTE_NAMES = {");
-//        for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
-//            AttributeName att = ATTRIBUTE_NAMES[i];
+//        for (int i = 0; i < levelOrder.length; i++) {
+//            AttributeName att = levelOrder[i];
 //            System.out.println(att.constName() + ",");
 //        }
 //        System.out.println("};");
 //        System.out.println("private final static int[] ATTRIBUTE_HASHES = {");
-//        for (int i = 0; i < ATTRIBUTE_NAMES.length; i++) {
-//            AttributeName att = ATTRIBUTE_NAMES[i];
+//        for (int i = 0; i < levelOrder.length; i++) {
+//            AttributeName att = levelOrder[i];
 //            System.out.println(Integer.toString(att.hash()) + ",");
 //        }
 //        System.out.println("};");
 //    }
 
     // START GENERATED CODE
     public static final AttributeName ALT = new AttributeName(ALL_NO_NS, SAME_LOCAL("alt"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName DIR = new AttributeName(ALL_NO_NS, SAME_LOCAL("dir"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG | CASE_FOLDED);
@@ -1213,994 +1262,994 @@ public final class AttributeName
     public static final AttributeName REFX = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("refx", "refX"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName BY = new AttributeName(ALL_NO_NS, SAME_LOCAL("by"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName CY = new AttributeName(ALL_NO_NS, SAME_LOCAL("cy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName DY = new AttributeName(ALL_NO_NS, SAME_LOCAL("dy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName FY = new AttributeName(ALL_NO_NS, SAME_LOCAL("fy"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName RY = new AttributeName(ALL_NO_NS, SAME_LOCAL("ry"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     public static final AttributeName REFY = new AttributeName(ALL_NO_NS, SVG_DIFFERENT("refy", "refY"), ALL_NO_PREFIX, NCNAME_HTML | NCNAME_FOREIGN | NCNAME_LANG);
     private final static @NoLength AttributeName[] ATTRIBUTE_NAMES = {
-    ALT,
-    DIR,
-    DUR,
+    ONCLICK,
+    DATETIME,
+    ONDRAGOVER,
+    ARIA_SETSIZE,
+    LANG,
+    FLOOD_OPACITY,
+    PATTERN,
+    ARIA_DESCRIBEDBY,
+    SPACING,
+    ONBEFORECUT,
+    LIMITINGCONEANGLE,
+    ONINPUT,
+    CLIP_PATH,
+    SRCSET,
+    VALUETYPE,
+    Y,
+    ARIA_VALUEMIN,
+    ROWALIGN,
+    ACCENTUNDER,
+    OBJECT,
+    SIZE,
+    MATHVARIANT,
+    MARKERHEIGHT,
+    PRIMITIVEUNITS,
+    XMLNS,
+    ONFOCUSOUT,
+    SLOPE,
+    COLS,
+    FONTFAMILY,
+    COLUMNALIGN,
+    RX,
+    MIN,
+    K3,
+    ARIA_LEVEL,
+    ARIA_DATATYPE,
+    ISMAP,
+    ONDBLCLICK,
+    HEADERS,
+    BASEPROFILE,
+    LINEBREAK,
+    ONBEFOREPRINT,
+    REPEATDUR,
+    XREF,
+    TARGET,
+    ACTIONTYPE,
+    SCRIPTSIZEMULTIPLIER,
+    AMPLITUDE,
+    AZIMUTH,
+    ICON,
+    TRANSFORM,
+    COLOR_PROFILE,
+    ONCONTEXTMENU,
+    STROKE_MITERLIMIT,
+    KEYPOINTS,
+    CHAR,
+    ONDRAGLEAVE,
+    MAXSIZE,
+    DEPTH,
+    LETTER_SPACING,
+    TEXT_ANCHOR,
+    REQUIREDFEATURES,
+    VIEWBOX,
+    DY,
     END,
-    FOR,
-    IN2,
-    LOW,
-    MIN,
-    MAX,
-    REL,
-    REV,
     SRC,
-    D,
-    R,
-    X,
-    Y,
-    Z,
-    K1,
-    X1,
     Y1,
-    K2,
-    X2,
-    Y2,
-    K3,
-    K4,
-    XML_SPACE,
-    XML_LANG,
     XML_BASE,
-    ARIA_GRAB,
-    ARIA_VALUEMAX,
-    ARIA_LABELLEDBY,
-    ARIA_DESCRIBEDBY,
-    ARIA_DISABLED,
-    ARIA_CHECKED,
-    ARIA_SELECTED,
     ARIA_DROPEFFECT,
-    ARIA_REQUIRED,
-    ARIA_EXPANDED,
-    ARIA_PRESSED,
-    ARIA_LEVEL,
-    ARIA_CHANNEL,
-    ARIA_HIDDEN,
-    ARIA_SECRET,
     ARIA_POSINSET,
-    ARIA_ATOMIC,
-    ARIA_INVALID,
-    ARIA_TEMPLATEID,
-    ARIA_VALUEMIN,
-    ARIA_MULTISELECTABLE,
-    ARIA_CONTROLS,
-    ARIA_MULTILINE,
     ARIA_READONLY,
-    ARIA_OWNS,
-    ARIA_ACTIVEDESCENDANT,
-    ARIA_RELEVANT,
-    ARIA_DATATYPE,
-    ARIA_VALUENOW,
-    ARIA_SORT,
-    ARIA_AUTOCOMPLETE,
     ARIA_FLOWTO,
-    ARIA_BUSY,
+    DATA,
+    NOTATION,
+    VSPACE,
+    FENCE,
+    ID,
+    SRCDOC,
+    ACCEPT,
+    CODETYPE,
+    FACE,
+    NAME,
+    ONRESET,
+    ONSELECTSTART,
+    REFERRERPOLICY,
+    STRETCHY,
+    HREFLANG,
+    DRAGGABLE,
+    MARGINHEIGHT,
+    HIGH,
+    ONCHANGE,
+    BEGIN,
+    OPTIMUM,
+    VISIBILITY,
+    MARKERWIDTH,
+    FILL_RULE,
+    SCALE,
+    FRAMESPACING,
+    ZOOMANDPAN,
+    ONUNLOAD,
+    POINTSATY,
+    XLINK_TITLE,
+    AUTOPLAY,
+    COLOR_INTERPOLATION_FILTERS,
+    ONMOUSEWHEEL,
+    ONMOUSEMOVE,
+    STROKE_LINECAP,
+    STROKE_OPACITY,
+    GLYPH_ORIENTATION_VERTICAL,
+    STEP,
+    WRAP,
+    NOWRAP,
+    ONERROR,
+    BIAS,
+    CLASS,
+    PRESERVEASPECTRATIO,
+    CONTENTEDITABLE,
+    FONTWEIGHT,
+    FILTERUNITS,
+    ONSTOP,
+    STITCHTILES,
+    WIDTH,
+    INPUTMODE,
+    REQUIREDEXTENSIONS,
+    ELEVATION,
+    DX,
+    BY,
+    RY,
+    DIR,
+    IN2,
+    REL,
+    R,
+    K1,
+    X2,
+    XML_SPACE,
+    ARIA_VALUEMAX,
+    ARIA_CHECKED,
+    ARIA_EXPANDED,
+    ARIA_HIDDEN,
+    ARIA_INVALID,
+    ARIA_CONTROLS,
+    ARIA_ACTIVEDESCENDANT,
+    ARIA_SORT,
     ARIA_LIVE,
-    ARIA_HASPOPUP,
-    ARIA_SETSIZE,
-    CLEAR,
     DISABLED,
-    DEFAULT,
-    DATA,
-    EQUALCOLUMNS,
     EQUALROWS,
-    HSPACE,
-    ISMAP,
-    LOCAL,
     LSPACE,
-    MOVABLELIMITS,
-    NOTATION,
-    ONDATAAVAILABLE,
     ONPASTE,
-    RSPACE,
-    ROWALIGN,
-    ROTATE,
     SEPARATOR,
-    SEPARATORS,
-    VSPACE,
-    XCHANNELSELECTOR,
     YCHANNELSELECTOR,
-    ENABLE_BACKGROUND,
-    ONDBLCLICK,
-    ONABORT,
     CALCMODE,
-    CHECKED,
-    FENCE,
-    ONSCROLL,
     ONACTIVATE,
-    OPACITY,
-    SPACING,
-    SPECULAREXPONENT,
     SPECULARCONSTANT,
-    BORDER,
-    ID,
-    GRADIENTTRANSFORM,
     GRADIENTUNITS,
-    HIDDEN,
-    HEADERS,
-    READONLY,
     RENDERING_INTENT,
-    SEED,
-    SRCDOC,
-    STDDEVIATION,
     SANDBOX,
-    WORD_SPACING,
-    ACCENTUNDER,
-    ACCEPT_CHARSET,
     ACCESSKEY,
-    ACCENT,
-    ACCEPT,
-    BEVELLED,
     BASEFREQUENCY,
-    BASELINE_SHIFT,
-    BASEPROFILE,
-    BASELINE,
     BASE,
-    CODE,
-    CODETYPE,
-    CODEBASE,
     CITE,
-    DEFER,
-    DATETIME,
-    DIRECTION,
     EDGEMODE,
-    EDGE,
-    FACE,
-    INDEX,
     INTERCEPT,
-    INTEGRITY,
-    LINEBREAK,
-    LABEL,
     LINETHICKNESS,
-    MODE,
-    NAME,
-    NORESIZE,
     ONBEFOREUNLOAD,
-    ONREPEAT,
-    OBJECT,
-    ONSELECT,
     ORDER,
-    OTHER,
-    ONRESET,
-    ONREADYSTATECHANGE,
     ONMESSAGE,
-    ONBEGIN,
-    ONBEFOREPRINT,
-    ORIENT,
     ORIENTATION,
-    ONBEFORECOPY,
-    ONSELECTSTART,
-    ONBEFOREPASTE,
     ONKEYPRESS,
-    ONKEYUP,
-    ONBEFORECUT,
-    ONKEYDOWN,
     ONRESIZE,
-    REPEAT,
-    REFERRERPOLICY,
-    RULES,
     ROLE,
-    REPEATCOUNT,
-    REPEATDUR,
-    SELECTED,
     SIZES,
-    SUPERSCRIPTSHIFT,
-    STRETCHY,
-    SCHEME,
     SPREADMETHOD,
-    SELECTION,
-    SIZE,
-    TYPE,
     DIFFUSECONSTANT,
-    HREF,
-    HREFLANG,
-    ONAFTERPRINT,
     PROFILE,
-    SURFACESCALE,
-    XREF,
-    ALIGN,
     ALIGNMENT_BASELINE,
-    ALIGNMENTSCOPE,
-    DRAGGABLE,
-    HEIGHT,
     IMAGE_RENDERING,
-    LANGUAGE,
-    LANG,
-    LARGEOP,
     LONGDESC,
-    LENGTHADJUST,
-    MARGINHEIGHT,
-    MARGINWIDTH,
     ORIGIN,
-    PING,
-    TARGET,
-    TARGETX,
     TARGETY,
-    ARCHIVE,
-    HIGH,
-    LIGHTING_COLOR,
     MATHBACKGROUND,
-    METHOD,
-    MATHVARIANT,
-    MATHCOLOR,
     MATHSIZE,
-    NOSHADE,
-    ONCHANGE,
-    PATHLENGTH,
     PATH,
-    ALTIMG,
-    ACTIONTYPE,
-    ACTION,
     ACTIVE,
-    ADDITIVE,
-    BEGIN,
-    DOMINANT_BASELINE,
     DIVISOR,
-    DEFINITIONURL,
-    LIMITINGCONEANGLE,
-    MEDIA,
     MANIFEST,
-    ONFINISH,
-    OPTIMUM,
-    RADIOGROUP,
     RADIUS,
-    SCRIPTLEVEL,
-    SCRIPTSIZEMULTIPLIER,
-    SCRIPTMINSIZE,
     TABINDEX,
-    VALIGN,
-    VISIBILITY,
-    BACKGROUND,
     LINK,
-    MARKER_MID,
-    MARKERHEIGHT,
-    MARKER_END,
     MASK,
-    MARKER_START,
-    MARKERWIDTH,
-    MASKUNITS,
     MARKERUNITS,
+    CELLPADDING,
+    FILL_OPACITY,
+    REPLACE,
+    TABLEVALUES,
+    FRAMEBORDER,
+    FORM,
+    SUMMARY,
+    ALINK,
+    KERNING,
+    ONINVALID,
+    POINTS,
+    SPAN,
+    WHEN,
+    XLINK_ARCROLE,
+    XLINK_SHOW,
+    AUTOFOCUS,
+    COLOR_INTERPOLATION,
+    EXPONENT,
+    NUMOCTAVES,
+    ONMOUSEOVER,
+    ONCOPY,
+    ONFOCUS,
+    TO,
+    STROKE_DASHOFFSET,
+    SCROLLING,
+    CLIP,
+    DISPLAY,
+    GLYPHREF,
+    PROPERTY,
+    SCOPE,
+    STOP_OPACITY,
+    ATTRIBUTENAME,
+    CHAROFF,
+    ONDRAG,
+    ONDROP,
+    OVERFLOW,
+    START,
+    CLASSID,
+    CLOSURE,
+    KEYSPLINES,
+    OFFSET,
+    ROWSPACING,
+    VERSION,
+    CONTENT,
+    FONT_STRETCH,
+    FONTSTYLE,
+    FONT_VARIANT,
+    FONT_SIZE,
+    MULTIPLE,
+    POSTER,
+    PATTERNCONTENTUNITS,
+    TEXT_RENDERING,
+    TEXT,
+    COLUMNSPAN,
+    COLUMNWIDTH,
+    ONCUT,
+    RESULT,
+    VALUES,
+    VALUE,
+    VIEWTARGET,
+    CX,
+    FX,
+    REFX,
+    CY,
+    FY,
+    REFY,
+    ALT,
+    DUR,
+    FOR,
+    LOW,
+    MAX,
+    REV,
+    D,
+    X,
+    Z,
+    X1,
+    K2,
+    Y2,
+    K4,
+    XML_LANG,
+    ARIA_GRAB,
+    ARIA_LABELLEDBY,
+    ARIA_DISABLED,
+    ARIA_SELECTED,
+    ARIA_REQUIRED,
+    ARIA_PRESSED,
+    ARIA_CHANNEL,
+    ARIA_SECRET,
+    ARIA_ATOMIC,
+    ARIA_TEMPLATEID,
+    ARIA_MULTISELECTABLE,
+    ARIA_MULTILINE,
+    ARIA_OWNS,
+    ARIA_RELEVANT,
+    ARIA_VALUENOW,
+    ARIA_AUTOCOMPLETE,
+    ARIA_BUSY,
+    ARIA_HASPOPUP,
+    CLEAR,
+    DEFAULT,
+    EQUALCOLUMNS,
+    HSPACE,
+    LOCAL,
+    MOVABLELIMITS,
+    ONDATAAVAILABLE,
+    RSPACE,
+    ROTATE,
+    SEPARATORS,
+    XCHANNELSELECTOR,
+    ENABLE_BACKGROUND,
+    ONABORT,
+    CHECKED,
+    ONSCROLL,
+    OPACITY,
+    SPECULAREXPONENT,
+    BORDER,
+    GRADIENTTRANSFORM,
+    HIDDEN,
+    READONLY,
+    SEED,
+    STDDEVIATION,
+    WORD_SPACING,
+    ACCEPT_CHARSET,
+    ACCENT,
+    BEVELLED,
+    BASELINE_SHIFT,
+    BASELINE,
+    CODE,
+    CODEBASE,
+    DEFER,
+    DIRECTION,
+    EDGE,
+    INDEX,
+    INTEGRITY,
+    LABEL,
+    MODE,
+    NORESIZE,
+    ONREPEAT,
+    ONSELECT,
+    OTHER,
+    ONREADYSTATECHANGE,
+    ONBEGIN,
+    ORIENT,
+    ONBEFORECOPY,
+    ONBEFOREPASTE,
+    ONKEYUP,
+    ONKEYDOWN,
+    REPEAT,
+    RULES,
+    REPEATCOUNT,
+    SELECTED,
+    SUPERSCRIPTSHIFT,
+    SCHEME,
+    SELECTION,
+    TYPE,
+    HREF,
+    ONAFTERPRINT,
+    SURFACESCALE,
+    ALIGN,
+    ALIGNMENTSCOPE,
+    HEIGHT,
+    LANGUAGE,
+    LARGEOP,
+    LENGTHADJUST,
+    MARGINWIDTH,
+    PING,
+    TARGETX,
+    ARCHIVE,
+    LIGHTING_COLOR,
+    METHOD,
+    MATHCOLOR,
+    NOSHADE,
+    PATHLENGTH,
+    ALTIMG,
+    ACTION,
+    ADDITIVE,
+    DOMINANT_BASELINE,
+    DEFINITIONURL,
+    MEDIA,
+    ONFINISH,
+    RADIOGROUP,
+    SCRIPTLEVEL,
+    SCRIPTMINSIZE,
+    VALIGN,
+    BACKGROUND,
+    MARKER_MID,
+    MARKER_END,
+    MARKER_START,
+    MASKUNITS,
     MASKCONTENTUNITS,
-    AMPLITUDE,
     CELLSPACING,
-    CELLPADDING,
     DECLARE,
-    FILL_RULE,
     FILL,
-    FILL_OPACITY,
     MAXLENGTH,
-    ONCLICK,
     ONBLUR,
-    REPLACE,
     ROWLINES,
-    SCALE,
     STYLE,
-    TABLEVALUES,
     TITLE,
-    AZIMUTH,
     FORMAT,
-    FRAMEBORDER,
     FRAME,
-    FRAMESPACING,
     FROM,
-    FORM,
     PROMPT,
-    PRIMITIVEUNITS,
     SYMMETRIC,
-    SUMMARY,
     USEMAP,
-    ZOOMANDPAN,
     ASYNC,
-    ALINK,
     IN,
-    ICON,
     KERNELMATRIX,
-    KERNING,
     KERNELUNITLENGTH,
-    ONUNLOAD,
     OPEN,
-    ONINVALID,
     ONEND,
-    ONINPUT,
     POINTER_EVENTS,
-    POINTS,
     POINTSATX,
-    POINTSATY,
     POINTSATZ,
-    SPAN,
     STANDBY,
-    TRANSFORM,
     VLINK,
-    WHEN,
     XLINK_HREF,
-    XLINK_TITLE,
     XLINK_ROLE,
-    XLINK_ARCROLE,
     XMLNS_XLINK,
-    XMLNS,
     XLINK_TYPE,
-    XLINK_SHOW,
     XLINK_ACTUATE,
-    AUTOPLAY,
     AUTOCOMPLETE,
-    AUTOFOCUS,
     BGCOLOR,
-    COLOR_PROFILE,
     COLOR_RENDERING,
-    COLOR_INTERPOLATION,
     COLOR,
-    COLOR_INTERPOLATION_FILTERS,
     ENCODING,
-    EXPONENT,
     FLOOD_COLOR,
-    FLOOD_OPACITY,
     LQUOTE,
-    NUMOCTAVES,
     ONLOAD,
-    ONMOUSEWHEEL,
     ONMOUSEENTER,
-    ONMOUSEOVER,
     ONFOCUSIN,
-    ONCONTEXTMENU,
     ONZOOM,
-    ONCOPY,
     ONMOUSELEAVE,
-    ONMOUSEMOVE,
     ONMOUSEUP,
-    ONFOCUS,
     ONMOUSEOUT,
-    ONFOCUSOUT,
     ONMOUSEDOWN,
-    TO,
     RQUOTE,
-    STROKE_LINECAP,
     STROKE_DASHARRAY,
-    STROKE_DASHOFFSET,
     STROKE_LINEJOIN,
-    STROKE_MITERLIMIT,
     STROKE,
-    SCROLLING,
     STROKE_WIDTH,
-    STROKE_OPACITY,
     COMPACT,
-    CLIP,
     CLIP_RULE,
-    CLIP_PATH,
     CLIPPATHUNITS,
-    DISPLAY,
     DISPLAYSTYLE,
-    GLYPH_ORIENTATION_VERTICAL,
     GLYPH_ORIENTATION_HORIZONTAL,
-    GLYPHREF,
     HTTP_EQUIV,
-    KEYPOINTS,
     LOOP,
-    PROPERTY,
     SCOPED,
-    STEP,
     SHAPE_RENDERING,
-    SCOPE,
     SHAPE,
-    SLOPE,
     STOP_COLOR,
-    STOP_OPACITY,
     TEMPLATE,
-    WRAP,
     ABBR,
-    ATTRIBUTENAME,
     ATTRIBUTETYPE,
-    CHAR,
     COORDS,
-    CHAROFF,
     CHARSET,
-    NOWRAP,
     NOHREF,
-    ONDRAG,
     ONDRAGENTER,
-    ONDRAGOVER,
     ONDRAGEND,
-    ONDROP,
     ONDRAGDROP,
-    ONERROR,
     OPERATOR,
-    OVERFLOW,
     ONDRAGSTART,
-    ONDRAGLEAVE,
     STARTOFFSET,
-    START,
     AXIS,
-    BIAS,
     COLSPAN,
-    CLASSID,
     CROSSORIGIN,
-    COLS,
     CURSOR,
-    CLOSURE,
     CLOSE,
-    CLASS,
     KEYSYSTEM,
-    KEYSPLINES,
     LOWSRC,
-    MAXSIZE,
     MINSIZE,
-    OFFSET,
     PRESERVEALPHA,
-    PRESERVEASPECTRATIO,
     ROWSPAN,
-    ROWSPACING,
     ROWS,
-    SRCSET,
     SUBSCRIPTSHIFT,
-    VERSION,
     ALTTEXT,
-    CONTENTEDITABLE,
     CONTROLS,
-    CONTENT,
     CONTEXTMENU,
-    DEPTH,
     ENCTYPE,
-    FONT_STRETCH,
     FILTER,
-    FONTWEIGHT,
     FONT_WEIGHT,
-    FONTSTYLE,
     FONT_STYLE,
-    FONTFAMILY,
     FONT_FAMILY,
-    FONT_VARIANT,
     FONT_SIZE_ADJUST,
-    FILTERUNITS,
     FONTSIZE,
-    FONT_SIZE,
     KEYTIMES,
-    LETTER_SPACING,
     LIST,
-    MULTIPLE,
     RT,
-    ONSTOP,
     ONSTART,
-    POSTER,
     PATTERNTRANSFORM,
-    PATTERN,
     PATTERNUNITS,
-    PATTERNCONTENTUNITS,
     RESTART,
-    STITCHTILES,
     SYSTEMLANGUAGE,
-    TEXT_RENDERING,
     TEXT_DECORATION,
-    TEXT_ANCHOR,
     TEXTLENGTH,
-    TEXT,
     WRITING_MODE,
-    WIDTH,
     ACCUMULATE,
-    COLUMNSPAN,
     COLUMNLINES,
-    COLUMNALIGN,
     COLUMNSPACING,
-    COLUMNWIDTH,
     GROUPALIGN,
-    INPUTMODE,
     ONSUBMIT,
-    ONCUT,
     REQUIRED,
-    REQUIREDFEATURES,
-    RESULT,
-    REQUIREDEXTENSIONS,
-    VALUES,
-    VALUETYPE,
-    VALUE,
-    ELEVATION,
-    VIEWTARGET,
-    VIEWBOX,
-    CX,
-    DX,
-    FX,
-    RX,
-    REFX,
-    BY,
-    CY,
-    DY,
-    FY,
-    RY,
-    REFY,
     };
     private final static int[] ATTRIBUTE_HASHES = {
-    50917059,
-    52488851,
-    52489043,
+    1872034503,
+    1748971848,
+    1972744954,
+    1680511804,
+    1786740932,
+    1917953597,
+    2007021895,
+    1680159328,
+    1723309623,
+    1754907227,
+    1820262641,
+    1905902311,
+    1933123337,
+    1991625270,
+    2026893641,
+    71827457,
+    1680251485,
+    1689130184,
+    1747295467,
+    1754606246,
+    1757053236,
+    1804069019,
+    1854302364,
+    1889633006,
+    1910503637,
+    1922679610,
+    1941440197,
+    1983347764,
+    2001710298,
+    2016810187,
+    2073034754,
+    57205395,
+    911736834,
+    1680181850,
+    1680347981,
+    1684319541,
+    1704262346,
+    1734404167,
+    1747906667,
+    1752985897,
+    1754792749,
+    1756471625,
+    1776114564,
+    1790814502,
+    1814558026,
+    1823841492,
+    1864698185,
+    1881750231,
+    1902640276,
+    1908462185,
+    1916210285,
+    1922566877,
+    1924583073,
+    1937336473,
+    1966384692,
+    1972996699,
+    1988784439,
+    2000752725,
+    2004846654,
+    2009079867,
+    2024647008,
+    2060474743,
+    2082471938,
     53006051,
-    53537523,
-    55077603,
-    56685811,
-    57205395,
-    57210387,
-    59825747,
-    59830867,
     60345635,
-    60817409,
-    68157441,
-    71303169,
-    71827457,
-    72351745,
-    878182402,
-    884998146,
     885522434,
-    894959618,
-    901775362,
-    902299650,
-    911736834,
-    928514050,
-    1037879561,
-    1038063816,
     1038141480,
-    1680095865,
-    1680140893,
-    1680159327,
-    1680159328,
-    1680165421,
-    1680165436,
-    1680165437,
     1680165487,
-    1680165533,
-    1680165613,
-    1680165692,
-    1680181850,
-    1680181996,
-    1680185931,
-    1680198203,
     1680198381,
-    1680229115,
-    1680230940,
-    1680231247,
-    1680251485,
-    1680282148,
-    1680311085,
-    1680315086,
     1680323325,
-    1680343801,
-    1680345685,
-    1680345965,
-    1680347981,
-    1680368221,
-    1680411449,
-    1680413393,
     1680433915,
-    1680437801,
+    1681969220,
+    1687164232,
+    1691145478,
+    1716303957,
+    1732771842,
+    1740096054,
+    1747479606,
+    1748503880,
+    1749856356,
+    1754214628,
+    1754645079,
+    1754858317,
+    1756190926,
+    1756804936,
+    1767875272,
+    1782518297,
+    1787193500,
+    1801312388,
+    1804978712,
+    1814986837,
+    1822002839,
+    1825677514,
+    1854474395,
+    1867448617,
+    1874261045,
+    1884267068,
+    1894552650,
+    1905541832,
+    1906421049,
+    1910441627,
+    1915025672,
+    1916337499,
+    1922400908,
+    1922665179,
+    1924443742,
+    1924773438,
+    1934917290,
+    1941286708,
+    1943317364,
+    1972151670,
+    1972908839,
+    1982640164,
+    1983461061,
+    1990107683,
+    2000096287,
+    2001634458,
+    2001826027,
+    2006459190,
+    2008401563,
+    2010716309,
+    2019887833,
+    2024794274,
+    2034765641,
+    2065694722,
+    2081423362,
+    2089811970,
+    52488851,
+    55077603,
+    59825747,
+    68157441,
+    878182402,
+    901775362,
+    1037879561,
+    1680140893,
+    1680165436,
+    1680165613,
+    1680185931,
+    1680230940,
+    1680311085,
+    1680345685,
+    1680411449,
     1680446153,
-    1680452349,
-    1680511804,
-    1681174213,
     1681733672,
-    1681879063,
-    1681969220,
-    1682440540,
     1682587945,
-    1683805446,
-    1684319541,
-    1685882101,
     1685902598,
-    1686731997,
-    1687164232,
-    1687620127,
     1687751191,
-    1689048326,
-    1689130184,
-    1689324870,
     1689788441,
-    1689839946,
-    1691145478,
-    1692408896,
     1692933184,
-    1699185409,
-    1704262346,
-    1704526375,
     1714745560,
-    1714763319,
-    1716303957,
-    1721189160,
     1721305962,
-    1721347639,
-    1723309623,
-    1723336432,
     1723336528,
-    1731048742,
-    1732771842,
-    1733874289,
     1733919469,
-    1734182982,
-    1734404167,
-    1739561208,
     1739583824,
-    1739927860,
-    1740096054,
-    1740119884,
     1740130375,
-    1742183484,
-    1747295467,
-    1747299630,
     1747309881,
-    1747446838,
-    1747479606,
-    1747792072,
     1747800157,
-    1747839118,
-    1747906667,
-    1747939528,
     1748021284,
-    1748306996,
-    1748503880,
-    1748552744,
     1748566068,
-    1748869205,
-    1748971848,
-    1749027145,
     1749350104,
-    1749399124,
-    1749856356,
-    1751507685,
     1751679545,
-    1751755561,
-    1752985897,
-    1753049109,
     1753297133,
-    1753550036,
-    1754214628,
-    1754434872,
     1754546894,
-    1754579720,
-    1754606246,
-    1754612424,
     1754643237,
-    1754644293,
-    1754645079,
-    1754647074,
     1754647353,
-    1754698327,
-    1754792749,
-    1754794646,
     1754798923,
-    1754835516,
-    1754858317,
-    1754860061,
     1754872618,
-    1754899031,
-    1754907227,
-    1754927689,
     1754958648,
-    1756147974,
-    1756190926,
-    1756219733,
     1756302628,
-    1756360955,
-    1756471625,
-    1756704824,
     1756737685,
-    1756762256,
-    1756804936,
-    1756836998,
     1756874572,
-    1756889417,
-    1757053236,
-    1757421892,
     1765800271,
-    1767725700,
-    1767875272,
-    1771569964,
     1772032615,
-    1773606972,
-    1776114564,
-    1780879045,
     1780975314,
-    1781007934,
-    1782518297,
-    1784574102,
     1785174319,
-    1786622296,
-    1786740932,
-    1786775671,
     1786821704,
-    1786851500,
-    1787193500,
-    1787365531,
     1788254870,
-    1788842244,
-    1790814502,
-    1791068279,
     1791070327,
-    1797886599,
-    1801312388,
-    1803561214,
     1804036350,
-    1804054854,
-    1804069019,
-    1804081401,
     1804235064,
-    1804405895,
-    1804978712,
-    1805715690,
     1805715716,
-    1814517574,
-    1814558026,
-    1814560070,
     1814656326,
-    1814656840,
-    1814986837,
-    1816104145,
     1816144023,
-    1816178925,
-    1820262641,
-    1820727381,
     1820928104,
-    1821958888,
-    1822002839,
-    1823574314,
     1823580230,
-    1823829083,
-    1823841492,
-    1824159037,
     1824377064,
-    1825437894,
-    1825677514,
-    1848600826,
     1853862084,
-    1854285018,
-    1854302364,
-    1854366938,
     1854464212,
-    1854466380,
-    1854474395,
-    1854497001,
     1854497003,
+    1865910347,
+    1867620412,
+    1873590471,
+    1874698443,
+    1884142379,
+    1884343396,
+    1891186903,
+    1898428101,
+    1903659239,
+    1905672729,
+    1906408598,
+    1907660596,
+    1909819252,
+    1910441773,
+    1910527802,
+    1915341049,
+    1916278099,
+    1917327080,
+    1921894426,
+    1922413307,
+    1922607670,
+    1922677495,
+    1923088386,
+    1924517489,
+    1924629705,
+    1932959284,
+    1933369607,
+    1934970504,
+    1939976792,
+    1941435445,
+    1941550652,
+    1965512429,
+    1966442279,
+    1972656710,
+    1972904518,
+    1972922984,
+    1975062341,
+    1983266615,
+    1983416119,
+    1987422362,
+    1989522022,
+    1991220282,
+    1993343287,
+    2000160071,
+    2001527900,
+    2001669449,
+    2001732764,
+    2001898809,
+    2005342360,
+    2006824246,
+    2007064819,
+    2009041198,
+    2009231684,
+    2016711994,
+    2017010843,
+    2023342821,
+    2024763702,
+    2026741958,
+    2026975253,
+    2060302634,
+    2065170434,
+    2066743298,
+    2075005220,
+    2081947650,
+    2083520514,
+    2091784484,
+    50917059,
+    52489043,
+    53537523,
+    56685811,
+    57210387,
+    59830867,
+    60817409,
+    71303169,
+    72351745,
+    884998146,
+    894959618,
+    902299650,
+    928514050,
+    1038063816,
+    1680095865,
+    1680159327,
+    1680165421,
+    1680165437,
+    1680165533,
+    1680165692,
+    1680181996,
+    1680198203,
+    1680229115,
+    1680231247,
+    1680282148,
+    1680315086,
+    1680343801,
+    1680345965,
+    1680368221,
+    1680413393,
+    1680437801,
+    1680452349,
+    1681174213,
+    1681879063,
+    1682440540,
+    1683805446,
+    1685882101,
+    1686731997,
+    1687620127,
+    1689048326,
+    1689324870,
+    1689839946,
+    1692408896,
+    1699185409,
+    1704526375,
+    1714763319,
+    1721189160,
+    1721347639,
+    1723336432,
+    1731048742,
+    1733874289,
+    1734182982,
+    1739561208,
+    1739927860,
+    1740119884,
+    1742183484,
+    1747299630,
+    1747446838,
+    1747792072,
+    1747839118,
+    1747939528,
+    1748306996,
+    1748552744,
+    1748869205,
+    1749027145,
+    1749399124,
+    1751507685,
+    1751755561,
+    1753049109,
+    1753550036,
+    1754434872,
+    1754579720,
+    1754612424,
+    1754644293,
+    1754647074,
+    1754698327,
+    1754794646,
+    1754835516,
+    1754860061,
+    1754899031,
+    1754927689,
+    1756147974,
+    1756219733,
+    1756360955,
+    1756704824,
+    1756762256,
+    1756836998,
+    1756889417,
+    1757421892,
+    1767725700,
+    1771569964,
+    1773606972,
+    1780879045,
+    1781007934,
+    1784574102,
+    1786622296,
+    1786775671,
+    1786851500,
+    1787365531,
+    1788842244,
+    1791068279,
+    1797886599,
+    1803561214,
+    1804054854,
+    1804081401,
+    1804405895,
+    1805715690,
+    1814517574,
+    1814560070,
+    1814656840,
+    1816104145,
+    1816178925,
+    1820727381,
+    1821958888,
+    1823574314,
+    1823829083,
+    1824159037,
+    1825437894,
+    1848600826,
+    1854285018,
+    1854366938,
+    1854466380,
+    1854497001,
     1854497008,
-    1864698185,
     1865910331,
-    1865910347,
     1866496199,
-    1867448617,
     1867462756,
-    1867620412,
     1871251689,
-    1872034503,
     1872343590,
-    1873590471,
     1873656984,
-    1874261045,
     1874270021,
-    1874698443,
     1874788501,
-    1881750231,
     1884079398,
-    1884142379,
     1884246821,
-    1884267068,
     1884295780,
-    1884343396,
     1889569526,
-    1889633006,
     1890996553,
-    1891186903,
     1891937366,
-    1894552650,
     1898415413,
-    1898428101,
     1900544002,
-    1902640276,
     1903612236,
-    1903659239,
     1903759600,
-    1905541832,
     1905628916,
-    1905672729,
     1905754853,
-    1905902311,
     1906408542,
-    1906408598,
     1906419001,
-    1906421049,
     1906423097,
-    1907660596,
     1907701479,
-    1908462185,
     1909438149,
-    1909819252,
     1910328970,
-    1910441627,
     1910441770,
-    1910441773,
     1910487243,
-    1910503637,
     1910507338,
-    1910527802,
     1910572893,
-    1915025672,
     1915295948,
-    1915341049,
     1915757815,
-    1916210285,
     1916247343,
-    1916278099,
     1916286197,
-    1916337499,
     1917295176,
-    1917327080,
     1917857531,
-    1917953597,
     1921061206,
-    1921894426,
     1922319046,
-    1922400908,
     1922413292,
-    1922413307,
     1922470745,
-    1922566877,
     1922567078,
-    1922607670,
     1922665052,
-    1922665179,
     1922671417,
-    1922677495,
     1922679386,
-    1922679610,
     1922699851,
-    1923088386,
     1924206934,
-    1924443742,
     1924462384,
-    1924517489,
     1924570799,
-    1924583073,
     1924585254,
-    1924629705,
     1924738716,
-    1924773438,
     1932870919,
-    1932959284,
     1932986153,
-    1933123337,
     1933145837,
-    1933369607,
     1933508940,
-    1934917290,
     1934917372,
-    1934970504,
     1935597338,
-    1937336473,
     1937777860,
-    1939976792,
     1941253366,
-    1941286708,
     1941409583,
-    1941435445,
     1941438085,
-    1941440197,
     1941454586,
-    1941550652,
     1942026440,
-    1943317364,
     1965349396,
-    1965512429,
     1965561677,
-    1966384692,
     1966439670,
-    1966442279,
     1966454567,
-    1972151670,
     1972196486,
-    1972656710,
     1972744939,
-    1972744954,
     1972863609,
-    1972904518,
     1972904522,
-    1972908839,
     1972909592,
-    1972922984,
     1972962123,
-    1972996699,
     1974849131,
-    1975062341,
     1982254612,
-    1982640164,
     1983157559,
-    1983266615,
     1983290011,
-    1983347764,
     1983398182,
-    1983416119,
     1983432389,
-    1983461061,
     1987410233,
-    1987422362,
     1988132214,
-    1988784439,
     1988788535,
-    1989522022,
     1990062797,
-    1990107683,
     1991021879,
-    1991220282,
     1991392548,
-    1991625270,
     1991643278,
-    1993343287,
     1999273799,
-    2000096287,
     2000125224,
-    2000160071,
     2000162011,
-    2000752725,
     2001210183,
-    2001527900,
     2001578182,
-    2001634458,
     2001634459,
-    2001669449,
     2001669450,
-    2001710298,
     2001710299,
-    2001732764,
     2001814704,
-    2001826027,
     2001898808,
-    2001898809,
     2004199576,
-    2004846654,
     2004957380,
-    2005342360,
     2005925890,
-    2006459190,
     2006516551,
-    2006824246,
     2007019632,
-    2007021895,
     2007064812,
-    2007064819,
     2008084807,
-    2008401563,
     2008408414,
-    2009041198,
     2009071951,
-    2009079867,
     2009141482,
-    2009231684,
     2010452700,
-    2010716309,
     2015950026,
-    2016711994,
     2016787611,
-    2016810187,
     2016910397,
-    2017010843,
     2018908874,
-    2019887833,
     2023146024,
-    2023342821,
     2024616088,
-    2024647008,
-    2024763702,
-    2024794274,
-    2026741958,
-    2026893641,
-    2026975253,
-    2034765641,
-    2060302634,
-    2060474743,
-    2065170434,
-    2065694722,
-    2066743298,
-    2073034754,
-    2075005220,
-    2081423362,
-    2081947650,
-    2082471938,
-    2083520514,
-    2089811970,
-    2091784484,
     };
 }
--- a/parser/html/javasrc/ElementName.java
+++ b/parser/html/javasrc/ElementName.java
@@ -18,16 +18,19 @@
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  */
 
 package nu.validator.htmlparser.impl;
 
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
 
 import nu.validator.htmlparser.annotation.Inline;
 import nu.validator.htmlparser.annotation.Local;
 import nu.validator.htmlparser.annotation.NoLength;
 import nu.validator.htmlparser.annotation.Unsigned;
 import nu.validator.htmlparser.common.Interner;
 
 public final class ElementName
@@ -108,19 +111,39 @@ public final class ElementName
     @Inline public int getGroup() {
         return flags & ElementName.GROUP_MASK;
     }
 
     @Inline public boolean isInterned() {
         return (flags & ElementName.NOT_INTERNED) == 0;
     }
 
+    @Inline static int levelOrderBinarySearch(int[] data, int key) {
+        int n = data.length;
+        int i = 0;
+
+        while (i < n) {
+            int val = data[i];
+            if (val < key) {
+                i = 2 * i + 2;
+            } else if (val > key) {
+                i = 2 * i + 1;
+            } else {
+                return i;
+            }
+        }
+
+        return -1;
+    }
+
     @Inline static ElementName elementNameByBuffer(@NoLength char[] buf, int offset, int length, Interner interner) {
         @Unsigned int hash = ElementName.bufToHash(buf, length);
-        int index = Arrays.binarySearch(ElementName.ELEMENT_HASHES, hash);
+        int[] hashes;
+        hashes = ElementName.ELEMENT_HASHES;
+        int index = levelOrderBinarySearch(hashes, hash);
         if (index < 0) {
             return null;
         } else {
             ElementName elementName = ElementName.ELEMENT_NAMES[index];
             @Local String name = elementName.name;
             if (!Portability.localEqualsBuffer(name, buf, offset, length)) {
                 return null;
             }
@@ -404,16 +427,35 @@ public final class ElementName
 //            case TreeBuilder.FOREIGNOBJECT_OR_DESC:
 //                return "FOREIGNOBJECT_OR_DESC";
 //            case TreeBuilder.MENUITEM:
 //                return "MENUITEM";
 //        }
 //        return null;
 //    }
 //
+//    private static void fillLevelOrderArray(List<ElementName> sorted, int depth,
+//            int rootIdx, ElementName[] levelOrder) {
+//        if (rootIdx >= levelOrder.length) {
+//            return;
+//        }
+//
+//        if (depth > 0) {
+//            fillLevelOrderArray(sorted, depth - 1, rootIdx * 2 + 1, levelOrder);
+//        }
+//
+//        if (!sorted.isEmpty()) {
+//            levelOrder[rootIdx] = sorted.remove(0);
+//        }
+//
+//        if (depth > 0) {
+//            fillLevelOrderArray(sorted, depth - 1, rootIdx * 2 + 2, levelOrder);
+//        }
+//    }
+//
 //    /**
 //     * Regenerate self
 //     *
 //     * @param args
 //     */
 //    public static void main(String[] args) {
 //        Arrays.sort(ELEMENT_NAMES);
 //        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
@@ -434,25 +476,32 @@ public final class ElementName
 //            ElementName el = ELEMENT_NAMES[i];
 //            if ("isindex".equals(el.name)) {
 //                continue;
 //            }
 //            System.out.println("public static final ElementName "
 //                    + el.constName() + " = new ElementName" + el.toString()
 //                    + ";");
 //        }
+//
+//        LinkedList<ElementName> sortedNames = new LinkedList<ElementName>();
+//        Collections.addAll(sortedNames, ELEMENT_NAMES);
+//        ElementName[] levelOrder = new ElementName[ELEMENT_NAMES.length];
+//        int bstDepth = (int) Math.ceil(Math.log(ELEMENT_NAMES.length) / Math.log(2));
+//        fillLevelOrderArray(sortedNames, bstDepth, 0, levelOrder);
+//
 //        System.out.println("private final static @NoLength ElementName[] ELEMENT_NAMES = {");
-//        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
-//            ElementName el = ELEMENT_NAMES[i];
+//        for (int i = 0; i < levelOrder.length; i++) {
+//            ElementName el = levelOrder[i];
 //            System.out.println(el.constName() + ",");
 //        }
 //        System.out.println("};");
 //        System.out.println("private final static int[] ELEMENT_HASHES = {");
-//        for (int i = 0; i < ELEMENT_NAMES.length; i++) {
-//            ElementName el = ELEMENT_NAMES[i];
+//        for (int i = 0; i < levelOrder.length; i++) {
+//            ElementName el = levelOrder[i];
 //            System.out.println(Integer.toString(el.hash()) + ",");
 //        }
 //        System.out.println("};");
 //    }
 
     // START GENERATED CODE
     public static final ElementName BIG = new ElementName("big", "big", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
     public static final ElementName BDO = new ElementName("bdo", "bdo", TreeBuilder.OTHER);
@@ -653,420 +702,420 @@ public final class ElementName
     public static final ElementName FECOLORMATRIX = new ElementName("fecolormatrix", "feColorMatrix", TreeBuilder.OTHER);
     public static final ElementName FECONVOLVEMATRIX = new ElementName("feconvolvematrix", "feConvolveMatrix", TreeBuilder.OTHER);
     public static final ElementName BODY = new ElementName("body", "body", TreeBuilder.BODY | SPECIAL | OPTIONAL_END_TAG);
     public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", TreeBuilder.OTHER);
     public static final ElementName RUBY = new ElementName("ruby", "ruby", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR);
     public static final ElementName SUMMARY = new ElementName("summary", "summary", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL);
     public static final ElementName TBODY = new ElementName("tbody", "tbody", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
     private final static @NoLength ElementName[] ELEMENT_NAMES = {
-    BIG,
-    BDO,
-    COL,
-    DEL,
-    DFN,
-    DIR,
-    DIV,
+    KEYGEN,
+    FETURBULENCE,
+    FRAMESET,
+    H2,
+    MATH,
+    MARKER,
+    RADIALGRADIENT,
+    RTC,
+    FEBLEND,
+    STYLE,
+    LABEL,
+    SAMP,
+    MS,
+    MTEXT,
+    FECOLORMATRIX,
     IMG,
-    INS,
-    KBD,
-    MAP,
-    NAV,
-    PRE,
-    A,
-    B,
-    RTC,
-    SUB,
-    SVG,
-    SUP,
-    SET,
-    USE,
-    VAR,
-    G,
     WBR,
-    XMP,
-    I,
-    P,
+    META,
+    ARTICLE,
+    IMAGE,
+    FEFUNCG,
+    LINK,
+    FORM,
+    AUDIO,
+    FECOMPONENTTRANSFER,
+    ADDRESS,
+    APPLET,
+    FEDISTANTLIGHT,
+    OUTPUT,
+    TEXT,
+    FEMORPHOLOGY,
+    DEL,
+    NAV,
+    SET,
     Q,
-    S,
-    U,
-    H1,
-    H2,
-    H3,
-    H4,
-    H5,
     H6,
-    AREA,
+    DESC,
+    NOEMBED,
+    CODE,
+    FETILE,
+    POLYLINE,
+    TEMPLATE,
+    STRONG,
+    SWITCH,
+    TRACK,
+    ALTGLYPHITEM,
+    BUTTON,
+    PATTERN,
+    FEDISPLACEMENTMAP,
+    ANIMATECOLOR,
+    FEGAUSSIANBLUR,
+    NOBR,
+    DEFS,
+    PROGRESS,
+    FOREIGNOBJECT,
+    FESPOTLIGHT,
+    INPUT,
+    RT,
+    TT,
+    SCRIPT,
+    FEDROPSHADOW,
+    ISINDEX,
+    SUMMARY,
+    BDO,
+    DIR,
+    KBD,
+    A,
+    SVG,
+    VAR,
+    I,
+    U,
+    H4,
     FEFUNCA,
-    METADATA,
-    META,
-    TEXTAREA,
     FEFUNCB,
-    RB,
-    DESC,
-    DD,
     BGSOUND,
-    EMBED,
-    FEBLEND,
-    FEFLOOD,
     HEAD,
-    LEGEND,
-    NOEMBED,
-    TD,
     THEAD,
-    ASIDE,
-    ARTICLE,
-    ANIMATE,
     BASE,
-    BLOCKQUOTE,
-    CODE,
-    CIRCLE,
     CITE,
-    ELLIPSE,
-    FETURBULENCE,
-    FEMERGENODE,
     FEIMAGE,
-    FEMERGE,
-    FETILE,
-    FRAME,
     FIGURE,
-    FECOMPOSITE,
-    IMAGE,
-    IFRAME,
     LINE,
-    MARQUEE,
-    POLYLINE,
-    PICTURE,
     SOURCE,
-    STRIKE,
-    STYLE,
-    TABLE,
     TITLE,
-    TIME,
-    TEMPLATE,
-    ALTGLYPHDEF,
     GLYPHREF,
-    DIALOG,
-    FEFUNCG,
-    FEDIFFUSELIGHTING,
     FESPECULARLIGHTING,
-    LISTING,
-    STRONG,
-    ALTGLYPH,
     CLIPPATH,
-    MGLYPH,
-    MATH,
-    MPATH,
     PATH,
-    TH,
-    SWITCH,
-    TEXTPATH,
     LI,
-    MI,
-    LINK,
-    MARK,
     MALIGNMARK,
-    MASK,
-    TRACK,
-    DL,
     HTML,
-    OL,
-    LABEL,
-    UL,
     SMALL,
+    ACRONYM,
+    PARAM,
+    FIGCAPTION,
+    OPTION,
+    SECTION,
+    VIDEO,
+    RP,
+    BR,
+    HR,
+    FOOTER,
+    HEADER,
+    METER,
+    TR,
+    CANVAS,
+    DETAILS,
+    NOFRAMES,
+    DT,
+    BASEFONT,
+    FIELDSET,
+    FEOFFSET,
+    FEPOINTLIGHT,
+    FONT,
+    LINEARGRADIENT,
+    NOSCRIPT,
+    OBJECT,
+    PLAINTEXT,
+    RECT,
+    SELECT,
+    TFOOT,
+    MENU,
+    VIEW,
+    FECONVOLVEMATRIX,
+    BODY,
+    RUBY,
+    TBODY,
+    BIG,
+    COL,
+    DFN,
+    DIV,
+    INS,
+    MAP,
+    PRE,
+    B,
+    SUB,
+    SUP,
+    USE,
+    G,
+    XMP,
+    P,
+    S,
+    H1,
+    H3,
+    H5,
+    AREA,
+    METADATA,
+    TEXTAREA,
+    RB,
+    DD,
+    EMBED,
+    FEFLOOD,
+    LEGEND,
+    TD,
+    ASIDE,
+    ANIMATE,
+    BLOCKQUOTE,
+    CIRCLE,
+    ELLIPSE,
+    FEMERGENODE,
+    FEMERGE,
+    FRAME,
+    FECOMPOSITE,
+    IFRAME,
+    MARQUEE,
+    PICTURE,
+    STRIKE,
+    TABLE,
+    TIME,
+    ALTGLYPHDEF,
+    DIALOG,
+    FEDIFFUSELIGHTING,
+    LISTING,
+    ALTGLYPH,
+    MGLYPH,
+    MPATH,
+    TH,
+    TEXTPATH,
+    MI,
+    MARK,
+    MASK,
+    DL,
+    OL,
+    UL,
     SYMBOL,
-    ALTGLYPHITEM,
     ANIMATETRANSFORM,
-    ACRONYM,
     EM,
-    FORM,
     MENUITEM,
-    PARAM,
     ANIMATEMOTION,
-    BUTTON,
     CAPTION,
-    FIGCAPTION,
     MN,
-    KEYGEN,
     MAIN,
-    OPTION,
     POLYGON,
-    PATTERN,
     SPAN,
-    SECTION,
     TSPAN,
-    AUDIO,
     MO,
-    VIDEO,
     COLGROUP,
-    FEDISPLACEMENTMAP,
     HGROUP,
-    RP,
     OPTGROUP,
-    SAMP,
     STOP,
-    BR,
     ABBR,
-    ANIMATECOLOR,
     CENTER,
-    HR,
     FEFUNCR,
-    FECOMPONENTTRANSFER,
     FILTER,
-    FOOTER,
-    FEGAUSSIANBLUR,
-    HEADER,
-    MARKER,
-    METER,
-    NOBR,
-    TR,
-    ADDRESS,
-    CANVAS,
-    DEFS,
-    DETAILS,
-    MS,
-    NOFRAMES,
-    PROGRESS,
-    DT,
-    APPLET,
-    BASEFONT,
-    FOREIGNOBJECT,
-    FIELDSET,
-    FRAMESET,
-    FEOFFSET,
-    FESPOTLIGHT,
-    FEPOINTLIGHT,
-    FEDISTANTLIGHT,
-    FONT,
-    INPUT,
-    LINEARGRADIENT,
-    MTEXT,
-    NOSCRIPT,
-    RT,
-    OBJECT,
-    OUTPUT,
-    PLAINTEXT,
-    TT,
-    RECT,
-    RADIALGRADIENT,
-    SELECT,
-    SCRIPT,
-    TFOOT,
-    TEXT,
-    MENU,
-    FEDROPSHADOW,
-    VIEW,
-    FECOLORMATRIX,
-    FECONVOLVEMATRIX,
-    ISINDEX,
-    BODY,
-    FEMORPHOLOGY,
-    RUBY,
-    SUMMARY,
-    TBODY,
     };
     private final static int[] ELEMENT_HASHES = {
-    51434643,
-    51438659,
-    51961587,
-    52485715,
-    52486755,
-    52488851,
-    52490899,
+    1903302038,
+    1749656156,
+    2001349720,
+    893386754,
+    1803929812,
+    1971461414,
+    2007781534,
+    59821379,
+    1733054663,
+    1756625221,
+    1870268949,
+    1941178676,
+    1986527234,
+    2005324101,
+    2068523853,
     55104723,
-    55110883,
-    56151587,
-    57206291,
-    57733651,
-    58773795,
-    59244545,
-    59768833,
-    59821379,
-    60345171,
-    60347747,
-    60352339,
-    60354131,
-    61395251,
-    61925907,
-    62390273,
     62450211,
-    62973651,
-    63438849,
-    67108865,
+    1686491348,
+    1747176599,
+    1751288021,
+    1783210839,
+    1853642948,
+    1884120164,
+    1914900309,
+    1967788867,
+    1982173479,
+    1998724870,
+    2001392798,
+    2006329158,
+    2008994116,
+    2085266636,
+    52485715,
+    57733651,
+    60354131,
     67633153,
-    68681729,
-    69730305,
-    876609538,
-    893386754,
-    910163970,
-    926941186,
-    943718402,
     960495618,
-    1679960596,
+    1715310660,
+    1737099991,
+    1748100148,
+    1749801286,
+    1755076808,
+    1757268168,
+    1790207270,
+    1806806678,
+    1857653029,
+    1881288348,
+    1898753862,
+    1906135367,
+    1934172497,
+    1965334268,
+    1968053806,
+    1971938532,
+    1983533124,
+    1990037800,
+    2001309869,
+    2001392795,
+    2003183333,
+    2005925890,
+    2006974466,
+    2008340774,
+    2051837468,
+    2070023911,
+    2092255447,
+    51438659,
+    52488851,
+    56151587,
+    59244545,
+    60347747,
+    61925907,
+    63438849,
+    69730305,
+    926941186,
     1682547543,
-    1686489160,
-    1686491348,
-    1689922072,
     1699324759,
-    1703936002,
-    1715310660,
-    1730150402,
     1730965751,
-    1732381397,
-    1733054663,
-    1733076167,
     1733890180,
-    1736200310,
-    1737099991,
-    1738539010,
     1740181637,
-    1747048757,
-    1747176599,
-    1747306711,
     1747814436,
-    1747838298,
-    1748100148,
-    1748225318,
     1748359220,
-    1749395095,
-    1749656156,
-    1749673195,
     1749715159,
-    1749723735,
-    1749801286,
-    1749813541,
     1749905526,
-    1749932347,
-    1751288021,
-    1751386406,
     1752979652,
-    1753362711,
-    1755076808,
-    1755148615,
     1756474198,
-    1756600614,
-    1756625221,
-    1757137429,
     1757146773,
-    1757157700,
-    1757268168,
-    1763839627,
     1766992520,
-    1782357526,
-    1783210839,
-    1783388497,
     1783388498,
-    1786534215,
-    1790207270,
-    1797585096,
     1798686984,
-    1803876550,
-    1803929812,
-    1803929861,
     1805502724,
-    1805647874,
-    1806806678,
-    1807599880,
     1818230786,
-    1818755074,
-    1853642948,
-    1854228692,
     1854228698,
-    1854245076,
-    1857653029,
-    1864368130,
     1868312196,
-    1870135298,
-    1870268949,
-    1873281026,
     1874053333,
+    1881613047,
+    1889085973,
+    1900845386,
+    1905563974,
+    1907661127,
+    1925844629,
+    1938817026,
+    1963982850,
+    1967128578,
+    1967795958,
+    1968836118,
+    1971465813,
+    1973420034,
+    1982935782,
+    1983633431,
+    1988763672,
+    1998585858,
+    1999397992,
+    2001349704,
+    2001349736,
+    2001392796,
+    2001495140,
+    2004635806,
+    2005719336,
+    2006028454,
+    2006896969,
+    2007601444,
+    2008125638,
+    2008851557,
+    2021937364,
+    2060065124,
+    2068523856,
+    2083120164,
+    2091479332,
+    2092557349,
+    51434643,
+    51961587,
+    52486755,
+    52490899,
+    55110883,
+    57206291,
+    58773795,
+    59768833,
+    60345171,
+    60352339,
+    61395251,
+    62390273,
+    62973651,
+    67108865,
+    68681729,
+    876609538,
+    910163970,
+    943718402,
+    1679960596,
+    1686489160,
+    1689922072,
+    1703936002,
+    1730150402,
+    1732381397,
+    1733076167,
+    1736200310,
+    1738539010,
+    1747048757,
+    1747306711,
+    1747838298,
+    1748225318,
+    1749395095,
+    1749673195,
+    1749723735,
+    1749813541,
+    1749932347,
+    1751386406,
+    1753362711,
+    1755148615,
+    1756600614,
+    1757137429,
+    1757157700,
+    1763839627,
+    1782357526,
+    1783388497,
+    1786534215,
+    1797585096,
+    1803876550,
+    1803929861,
+    1805647874,
+    1807599880,
+    1818755074,
+    1854228692,
+    1854245076,
+    1864368130,
+    1870135298,
+    1873281026,
     1874102998,
-    1881288348,
     1881498736,
-    1881613047,
     1881669634,
-    1884120164,
     1887579800,
-    1889085973,
     1898223949,
-    1898753862,
     1899272519,
-    1900845386,
     1902641154,
-    1903302038,
     1904412884,
-    1905563974,
     1906087319,
-    1906135367,
     1907435316,
-    1907661127,
     1907959605,
-    1914900309,
     1919418370,
-    1925844629,
     1932928296,
-    1934172497,
     1935549734,
-    1938817026,
     1939219752,
-    1941178676,
     1941221172,
-    1963982850,
     1965115924,
-    1965334268,
     1966223078,
-    1967128578,
     1967760215,
-    1967788867,
     1967795910,
-    1967795958,
-    1968053806,
-    1968836118,
-    1971461414,
-    1971465813,
-    1971938532,
-    1973420034,
-    1982173479,
-    1982935782,
-    1983533124,
-    1983633431,
-    1986527234,
-    1988763672,
-    1990037800,
-    1998585858,
-    1998724870,
-    1999397992,
-    2001309869,
-    2001349704,
-    2001349720,
-    2001349736,
-    2001392795,
-    2001392796,
-    2001392798,
-    2001495140,
-    2003183333,
-    2004635806,
-    2005324101,
-    2005719336,
-    2005925890,
-    2006028454,
-    2006329158,
-    2006896969,
-    2006974466,
-    2007601444,
-    2007781534,
-    2008125638,
-    2008340774,
-    2008851557,
-    2008994116,
-    2021937364,
-    2051837468,
-    2060065124,
-    2068523853,
-    2068523856,
-    2070023911,
-    2083120164,
-    2085266636,
-    2091479332,
-    2092255447,
-    2092557349,
     };
 }
--- a/parser/html/nsHtml5AttributeName.cpp
+++ b/parser/html/nsHtml5AttributeName.cpp
@@ -653,98 +653,98 @@ nsHtml5AttributeName* nsHtml5AttributeNa
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_BY = nullptr;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_CY = nullptr;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_DY = nullptr;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_FY = nullptr;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_RY = nullptr;
 nsHtml5AttributeName* nsHtml5AttributeName::ATTR_REFY = nullptr;
 nsHtml5AttributeName** nsHtml5AttributeName::ATTRIBUTE_NAMES = 0;
 static int32_t const ATTRIBUTE_HASHES_DATA[] = {
-  50917059,   52488851,   52489043,   53006051,   53537523,   55077603,
-  56685811,   57205395,   57210387,   59825747,   59830867,   60345635,
-  60817409,   68157441,   71303169,   71827457,   72351745,   878182402,
-  884998146,  885522434,  894959618,  901775362,  902299650,  911736834,
-  928514050,  1037879561, 1038063816, 1038141480, 1680095865, 1680140893,
-  1680159327, 1680159328, 1680165421, 1680165436, 1680165437, 1680165487,
-  1680165533, 1680165613, 1680165692, 1680181850, 1680181996, 1680185931,
-  1680198203, 1680198381, 1680229115, 1680230940, 1680231247, 1680251485,
-  1680282148, 1680311085, 1680315086, 1680323325, 1680343801, 1680345685,
-  1680345965, 1680347981, 1680368221, 1680411449, 1680413393, 1680433915,
-  1680437801, 1680446153, 1680452349, 1680511804, 1681174213, 1681733672,
-  1681879063, 1681969220, 1682440540, 1682587945, 1683805446, 1684319541,
-  1685882101, 1685902598, 1686731997, 1687164232, 1687620127, 1687751191,
-  1689048326, 1689130184, 1689324870, 1689788441, 1689839946, 1691145478,
-  1692408896, 1692933184, 1699185409, 1704262346, 1704526375, 1714745560,
-  1714763319, 1716303957, 1721189160, 1721305962, 1721347639, 1723309623,
-  1723336432, 1723336528, 1731048742, 1732771842, 1733874289, 1733919469,
-  1734182982, 1734404167, 1739561208, 1739583824, 1739927860, 1740096054,
-  1740119884, 1740130375, 1742183484, 1747295467, 1747299630, 1747309881,
-  1747446838, 1747479606, 1747792072, 1747800157, 1747839118, 1747906667,
-  1747939528, 1748021284, 1748306996, 1748503880, 1748552744, 1748566068,
-  1748869205, 1748971848, 1749027145, 1749350104, 1749399124, 1749856356,
-  1751507685, 1751679545, 1751755561, 1752985897, 1753049109, 1753297133,
-  1753550036, 1754214628, 1754434872, 1754546894, 1754579720, 1754606246,
-  1754612424, 1754643237, 1754644293, 1754645079, 1754647074, 1754647353,
-  1754698327, 1754792749, 1754794646, 1754798923, 1754835516, 1754858317,
-  1754860061, 1754872618, 1754899031, 1754907227, 1754927689, 1754958648,
-  1756147974, 1756190926, 1756219733, 1756302628, 1756360955, 1756471625,
-  1756704824, 1756737685, 1756762256, 1756804936, 1756836998, 1756874572,
-  1756889417, 1757053236, 1757421892, 1765800271, 1767725700, 1767875272,
-  1771569964, 1772032615, 1773606972, 1776114564, 1780879045, 1780975314,
-  1781007934, 1782518297, 1784574102, 1785174319, 1786622296, 1786740932,
-  1786775671, 1786821704, 1786851500, 1787193500, 1787365531, 1788254870,
-  1788842244, 1790814502, 1791068279, 1791070327, 1797886599, 1801312388,
-  1803561214, 1804036350, 1804054854, 1804069019, 1804081401, 1804235064,
-  1804405895, 1804978712, 1805715690, 1805715716, 1814517574, 1814558026,
-  1814560070, 1814656326, 1814656840, 1814986837, 1816104145, 1816144023,
-  1816178925, 1820262641, 1820727381, 1820928104, 1821958888, 1822002839,
-  1823574314, 1823580230, 1823829083, 1823841492, 1824159037, 1824377064,
-  1825437894, 1825677514, 1848600826, 1853862084, 1854285018, 1854302364,
-  1854366938, 1854464212, 1854466380, 1854474395, 1854497001, 1854497003,
-  1854497008, 1864698185, 1865910331, 1865910347, 1866496199, 1867448617,
-  1867462756, 1867620412, 1871251689, 1872034503, 1872343590, 1873590471,
-  1873656984, 1874261045, 1874270021, 1874698443, 1874788501, 1881750231,
-  1884079398, 1884142379, 1884246821, 1884267068, 1884295780, 1884343396,
-  1889569526, 1889633006, 1890996553, 1891186903, 1891937366, 1894552650,
-  1898415413, 1898428101, 1900544002, 1902640276, 1903612236, 1903659239,
-  1903759600, 1905541832, 1905628916, 1905672729, 1905754853, 1905902311,
-  1906408542, 1906408598, 1906419001, 1906421049, 1906423097, 1907660596,
-  1907701479, 1908462185, 1909438149, 1909819252, 1910328970, 1910441627,
-  1910441770, 1910441773, 1910487243, 1910503637, 1910507338, 1910527802,
-  1910572893, 1915025672, 1915295948, 1915341049, 1915757815, 1916210285,
-  1916247343, 1916278099, 1916286197, 1916337499, 1917295176, 1917327080,
-  1917857531, 1917953597, 1921061206, 1921894426, 1922319046, 1922400908,
-  1922413292, 1922413307, 1922470745, 1922566877, 1922567078, 1922607670,
-  1922665052, 1922665179, 1922671417, 1922677495, 1922679386, 1922679610,
-  1922699851, 1923088386, 1924206934, 1924443742, 1924462384, 1924517489,
-  1924570799, 1924583073, 1924585254, 1924629705, 1924738716, 1924773438,
-  1932870919, 1932959284, 1932986153, 1933123337, 1933145837, 1933369607,
-  1933508940, 1934917290, 1934917372, 1934970504, 1935597338, 1937336473,
-  1937777860, 1939976792, 1941253366, 1941286708, 1941409583, 1941435445,
-  1941438085, 1941440197, 1941454586, 1941550652, 1942026440, 1943317364,
-  1965349396, 1965512429, 1965561677, 1966384692, 1966439670, 1966442279,
-  1966454567, 1972151670, 1972196486, 1972656710, 1972744939, 1972744954,
-  1972863609, 1972904518, 1972904522, 1972908839, 1972909592, 1972922984,
-  1972962123, 1972996699, 1974849131, 1975062341, 1982254612, 1982640164,
-  1983157559, 1983266615, 1983290011, 1983347764, 1983398182, 1983416119,
-  1983432389, 1983461061, 1987410233, 1987422362, 1988132214, 1988784439,
-  1988788535, 1989522022, 1990062797, 1990107683, 1991021879, 1991220282,
-  1991392548, 1991625270, 1991643278, 1993343287, 1999273799, 2000096287,
-  2000125224, 2000160071, 2000162011, 2000752725, 2001210183, 2001527900,
-  2001578182, 2001634458, 2001634459, 2001669449, 2001669450, 2001710298,
-  2001710299, 2001732764, 2001814704, 2001826027, 2001898808, 2001898809,
-  2004199576, 2004846654, 2004957380, 2005342360, 2005925890, 2006459190,
-  2006516551, 2006824246, 2007019632, 2007021895, 2007064812, 2007064819,
-  2008084807, 2008401563, 2008408414, 2009041198, 2009071951, 2009079867,
-  2009141482, 2009231684, 2010452700, 2010716309, 2015950026, 2016711994,
-  2016787611, 2016810187, 2016910397, 2017010843, 2018908874, 2019887833,
-  2023146024, 2023342821, 2024616088, 2024647008, 2024763702, 2024794274,
-  2026741958, 2026893641, 2026975253, 2034765641, 2060302634, 2060474743,
-  2065170434, 2065694722, 2066743298, 2073034754, 2075005220, 2081423362,
-  2081947650, 2082471938, 2083520514, 2089811970, 2091784484
+  1872034503, 1748971848, 1972744954, 1680511804, 1786740932, 1917953597,
+  2007021895, 1680159328, 1723309623, 1754907227, 1820262641, 1905902311,
+  1933123337, 1991625270, 2026893641, 71827457,   1680251485, 1689130184,
+  1747295467, 1754606246, 1757053236, 1804069019, 1854302364, 1889633006,
+  1910503637, 1922679610, 1941440197, 1983347764, 2001710298, 2016810187,
+  2073034754, 57205395,   911736834,  1680181850, 1680347981, 1684319541,
+  1704262346, 1734404167, 1747906667, 1752985897, 1754792749, 1756471625,
+  1776114564, 1790814502, 1814558026, 1823841492, 1864698185, 1881750231,
+  1902640276, 1908462185, 1916210285, 1922566877, 1924583073, 1937336473,
+  1966384692, 1972996699, 1988784439, 2000752725, 2004846654, 2009079867,
+  2024647008, 2060474743, 2082471938, 53006051,   60345635,   885522434,
+  1038141480, 1680165487, 1680198381, 1680323325, 1680433915, 1681969220,
+  1687164232, 1691145478, 1716303957, 1732771842, 1740096054, 1747479606,
+  1748503880, 1749856356, 1754214628, 1754645079, 1754858317, 1756190926,
+  1756804936, 1767875272, 1782518297, 1787193500, 1801312388, 1804978712,
+  1814986837, 1822002839, 1825677514, 1854474395, 1867448617, 1874261045,
+  1884267068, 1894552650, 1905541832, 1906421049, 1910441627, 1915025672,
+  1916337499, 1922400908, 1922665179, 1924443742, 1924773438, 1934917290,
+  1941286708, 1943317364, 1972151670, 1972908839, 1982640164, 1983461061,
+  1990107683, 2000096287, 2001634458, 2001826027, 2006459190, 2008401563,
+  2010716309, 2019887833, 2024794274, 2034765641, 2065694722, 2081423362,
+  2089811970, 52488851,   55077603,   59825747,   68157441,   878182402,
+  901775362,  1037879561, 1680140893, 1680165436, 1680165613, 1680185931,
+  1680230940, 1680311085, 1680345685, 1680411449, 1680446153, 1681733672,
+  1682587945, 1685902598, 1687751191, 1689788441, 1692933184, 1714745560,
+  1721305962, 1723336528, 1733919469, 1739583824, 1740130375, 1747309881,
+  1747800157, 1748021284, 1748566068, 1749350104, 1751679545, 1753297133,
+  1754546894, 1754643237, 1754647353, 1754798923, 1754872618, 1754958648,
+  1756302628, 1756737685, 1756874572, 1765800271, 1772032615, 1780975314,
+  1785174319, 1786821704, 1788254870, 1791070327, 1804036350, 1804235064,
+  1805715716, 1814656326, 1816144023, 1820928104, 1823580230, 1824377064,
+  1853862084, 1854464212, 1854497003, 1865910347, 1867620412, 1873590471,
+  1874698443, 1884142379, 1884343396, 1891186903, 1898428101, 1903659239,
+  1905672729, 1906408598, 1907660596, 1909819252, 1910441773, 1910527802,
+  1915341049, 1916278099, 1917327080, 1921894426, 1922413307, 1922607670,
+  1922677495, 1923088386, 1924517489, 1924629705, 1932959284, 1933369607,
+  1934970504, 1939976792, 1941435445, 1941550652, 1965512429, 1966442279,
+  1972656710, 1972904518, 1972922984, 1975062341, 1983266615, 1983416119,
+  1987422362, 1989522022, 1991220282, 1993343287, 2000160071, 2001527900,
+  2001669449, 2001732764, 2001898809, 2005342360, 2006824246, 2007064819,
+  2009041198, 2009231684, 2016711994, 2017010843, 2023342821, 2024763702,
+  2026741958, 2026975253, 2060302634, 2065170434, 2066743298, 2075005220,
+  2081947650, 2083520514, 2091784484, 50917059,   52489043,   53537523,
+  56685811,   57210387,   59830867,   60817409,   71303169,   72351745,
+  884998146,  894959618,  902299650,  928514050,  1038063816, 1680095865,
+  1680159327, 1680165421, 1680165437, 1680165533, 1680165692, 1680181996,
+  1680198203, 1680229115, 1680231247, 1680282148, 1680315086, 1680343801,
+  1680345965, 1680368221, 1680413393, 1680437801, 1680452349, 1681174213,
+  1681879063, 1682440540, 1683805446, 1685882101, 1686731997, 1687620127,
+  1689048326, 1689324870, 1689839946, 1692408896, 1699185409, 1704526375,
+  1714763319, 1721189160, 1721347639, 1723336432, 1731048742, 1733874289,
+  1734182982, 1739561208, 1739927860, 1740119884, 1742183484, 1747299630,
+  1747446838, 1747792072, 1747839118, 1747939528, 1748306996, 1748552744,
+  1748869205, 1749027145, 1749399124, 1751507685, 1751755561, 1753049109,
+  1753550036, 1754434872, 1754579720, 1754612424, 1754644293, 1754647074,
+  1754698327, 1754794646, 1754835516, 1754860061, 1754899031, 1754927689,
+  1756147974, 1756219733, 1756360955, 1756704824, 1756762256, 1756836998,
+  1756889417, 1757421892, 1767725700, 1771569964, 1773606972, 1780879045,
+  1781007934, 1784574102, 1786622296, 1786775671, 1786851500, 1787365531,
+  1788842244, 1791068279, 1797886599, 1803561214, 1804054854, 1804081401,
+  1804405895, 1805715690, 1814517574, 1814560070, 1814656840, 1816104145,
+  1816178925, 1820727381, 1821958888, 1823574314, 1823829083, 1824159037,
+  1825437894, 1848600826, 1854285018, 1854366938, 1854466380, 1854497001,
+  1854497008, 1865910331, 1866496199, 1867462756, 1871251689, 1872343590,
+  1873656984, 1874270021, 1874788501, 1884079398, 1884246821, 1884295780,
+  1889569526, 1890996553, 1891937366, 1898415413, 1900544002, 1903612236,
+  1903759600, 1905628916, 1905754853, 1906408542, 1906419001, 1906423097,
+  1907701479, 1909438149, 1910328970, 1910441770, 1910487243, 1910507338,
+  1910572893, 1915295948, 1915757815, 1916247343, 1916286197, 1917295176,
+  1917857531, 1921061206, 1922319046, 1922413292, 1922470745, 1922567078,
+  1922665052, 1922671417, 1922679386, 1922699851, 1924206934, 1924462384,
+  1924570799, 1924585254, 1924738716, 1932870919, 1932986153, 1933145837,
+  1933508940, 1934917372, 1935597338, 1937777860, 1941253366, 1941409583,
+  1941438085, 1941454586, 1942026440, 1965349396, 1965561677, 1966439670,
+  1966454567, 1972196486, 1972744939, 1972863609, 1972904522, 1972909592,
+  1972962123, 1974849131, 1982254612, 1983157559, 1983290011, 1983398182,
+  1983432389, 1987410233, 1988132214, 1988788535, 1990062797, 1991021879,
+  1991392548, 1991643278, 1999273799, 2000125224, 2000162011, 2001210183,
+  2001578182, 2001634459, 2001669450, 2001710299, 2001814704, 2001898808,
+  2004199576, 2004957380, 2005925890, 2006516551, 2007019632, 2007064812,
+  2008084807, 2008408414, 2009071951, 2009141482, 2010452700, 2015950026,
+  2016787611, 2016910397, 2018908874, 2023146024, 2024616088
 };
 staticJArray<int32_t,int32_t> nsHtml5AttributeName::ATTRIBUTE_HASHES = { ATTRIBUTE_HASHES_DATA, MOZ_ARRAY_LENGTH(ATTRIBUTE_HASHES_DATA) };
 void
 nsHtml5AttributeName::initializeStatics()
 {
   ALL_NO_NS = new int32_t[3];
   ALL_NO_NS[0] = kNameSpaceID_None;
   ALL_NO_NS[1] = kNameSpaceID_None;
@@ -1893,507 +1893,507 @@ nsHtml5AttributeName::initializeStatics(
     ALL_NO_NS, SAME_LOCAL(nsGkAtoms::dy), ALL_NO_PREFIX);
   ATTR_FY = new nsHtml5AttributeName(
     ALL_NO_NS, SAME_LOCAL(nsGkAtoms::fy), ALL_NO_PREFIX);
   ATTR_RY = new nsHtml5AttributeName(
     ALL_NO_NS, SAME_LOCAL(nsGkAtoms::ry), ALL_NO_PREFIX);
   ATTR_REFY = new nsHtml5AttributeName(
     ALL_NO_NS, SVG_DIFFERENT(nsGkAtoms::refy, nsGkAtoms::refY), ALL_NO_PREFIX);
   ATTRIBUTE_NAMES = new nsHtml5AttributeName*[491];
-  ATTRIBUTE_NAMES[0] = ATTR_ALT;
-  ATTRIBUTE_NAMES[1] = ATTR_DIR;
-  ATTRIBUTE_NAMES[2] = ATTR_DUR;
-  ATTRIBUTE_NAMES[3] = ATTR_END;
-  ATTRIBUTE_NAMES[4] = ATTR_FOR;
-  ATTRIBUTE_NAMES[5] = ATTR_IN2;
-  ATTRIBUTE_NAMES[6] = ATTR_LOW;
-  ATTRIBUTE_NAMES[7] = ATTR_MIN;
-  ATTRIBUTE_NAMES[8] = ATTR_MAX;
-  ATTRIBUTE_NAMES[9] = ATTR_REL;
-  ATTRIBUTE_NAMES[10] = ATTR_REV;
-  ATTRIBUTE_NAMES[11] = ATTR_SRC;
-  ATTRIBUTE_NAMES[12] = ATTR_D;
-  ATTRIBUTE_NAMES[13] = ATTR_R;
-  ATTRIBUTE_NAMES[14] = ATTR_X;
+  ATTRIBUTE_NAMES[0] = ATTR_ONCLICK;
+  ATTRIBUTE_NAMES[1] = ATTR_DATETIME;
+  ATTRIBUTE_NAMES[2] = ATTR_ONDRAGOVER;
+  ATTRIBUTE_NAMES[3] = ATTR_ARIA_SETSIZE;
+  ATTRIBUTE_NAMES[4] = ATTR_LANG;
+  ATTRIBUTE_NAMES[5] = ATTR_FLOOD_OPACITY;
+  ATTRIBUTE_NAMES[6] = ATTR_PATTERN;
+  ATTRIBUTE_NAMES[7] = ATTR_ARIA_DESCRIBEDBY;
+  ATTRIBUTE_NAMES[8] = ATTR_SPACING;
+  ATTRIBUTE_NAMES[9] = ATTR_ONBEFORECUT;
+  ATTRIBUTE_NAMES[10] = ATTR_LIMITINGCONEANGLE;
+  ATTRIBUTE_NAMES[11] = ATTR_ONINPUT;
+  ATTRIBUTE_NAMES[12] = ATTR_CLIP_PATH;
+  ATTRIBUTE_NAMES[13] = ATTR_SRCSET;
+  ATTRIBUTE_NAMES[14] = ATTR_VALUETYPE;
   ATTRIBUTE_NAMES[15] = ATTR_Y;
-  ATTRIBUTE_NAMES[16] = ATTR_Z;
-  ATTRIBUTE_NAMES[17] = ATTR_K1;
-  ATTRIBUTE_NAMES[18] = ATTR_X1;
-  ATTRIBUTE_NAMES[19] = ATTR_Y1;
-  ATTRIBUTE_NAMES[20] = ATTR_K2;
-  ATTRIBUTE_NAMES[21] = ATTR_X2;
-  ATTRIBUTE_NAMES[22] = ATTR_Y2;
-  ATTRIBUTE_NAMES[23] = ATTR_K3;
-  ATTRIBUTE_NAMES[24] = ATTR_K4;
-  ATTRIBUTE_NAMES[25] = ATTR_XML_SPACE;
-  ATTRIBUTE_NAMES[26] = ATTR_XML_LANG;
-  ATTRIBUTE_NAMES[27] = ATTR_XML_BASE;
-  ATTRIBUTE_NAMES[28] = ATTR_ARIA_GRAB;
-  ATTRIBUTE_NAMES[29] = ATTR_ARIA_VALUEMAX;
-  ATTRIBUTE_NAMES[30] = ATTR_ARIA_LABELLEDBY;
-  ATTRIBUTE_NAMES[31] = ATTR_ARIA_DESCRIBEDBY;
-  ATTRIBUTE_NAMES[32] = ATTR_ARIA_DISABLED;
-  ATTRIBUTE_NAMES[33] = ATTR_ARIA_CHECKED;
-  ATTRIBUTE_NAMES[34] = ATTR_ARIA_SELECTED;
-  ATTRIBUTE_NAMES[35] = ATTR_ARIA_DROPEFFECT;
-  ATTRIBUTE_NAMES[36] = ATTR_ARIA_REQUIRED;
-  ATTRIBUTE_NAMES[37] = ATTR_ARIA_EXPANDED;
-  ATTRIBUTE_NAMES[38] = ATTR_ARIA_PRESSED;
-  ATTRIBUTE_NAMES[39] = ATTR_ARIA_LEVEL;
-  ATTRIBUTE_NAMES[40] = ATTR_ARIA_CHANNEL;
-  ATTRIBUTE_NAMES[41] = ATTR_ARIA_HIDDEN;
-  ATTRIBUTE_NAMES[42] = ATTR_ARIA_SECRET;
-  ATTRIBUTE_NAMES[43] = ATTR_ARIA_POSINSET;
-  ATTRIBUTE_NAMES[44] = ATTR_ARIA_ATOMIC;
-  ATTRIBUTE_NAMES[45] = ATTR_ARIA_INVALID;
-  ATTRIBUTE_NAMES[46] = ATTR_ARIA_TEMPLATEID;
-  ATTRIBUTE_NAMES[47] = ATTR_ARIA_VALUEMIN;
-  ATTRIBUTE_NAMES[48] = ATTR_ARIA_MULTISELECTABLE;
-  ATTRIBUTE_NAMES[49] = ATTR_ARIA_CONTROLS;
-  ATTRIBUTE_NAMES[50] = ATTR_ARIA_MULTILINE;
-  ATTRIBUTE_NAMES[51] = ATTR_ARIA_READONLY;
-  ATTRIBUTE_NAMES[52] = ATTR_ARIA_OWNS;
-  ATTRIBUTE_NAMES[53] = ATTR_ARIA_ACTIVEDESCENDANT;
-  ATTRIBUTE_NAMES[54] = ATTR_ARIA_RELEVANT;
-  ATTRIBUTE_NAMES[55] = ATTR_ARIA_DATATYPE;
-  ATTRIBUTE_NAMES[56] = ATTR_ARIA_VALUENOW;
-  ATTRIBUTE_NAMES[57] = ATTR_ARIA_SORT;
-  ATTRIBUTE_NAMES[58] = ATTR_ARIA_AUTOCOMPLETE;
-  ATTRIBUTE_NAMES[59] = ATTR_ARIA_FLOWTO;
-  ATTRIBUTE_NAMES[60] = ATTR_ARIA_BUSY;
-  ATTRIBUTE_NAMES[61] = ATTR_ARIA_LIVE;
-  ATTRIBUTE_NAMES[62] = ATTR_ARIA_HASPOPUP;
-  ATTRIBUTE_NAMES[63] = ATTR_ARIA_SETSIZE;
-  ATTRIBUTE_NAMES[64] = ATTR_CLEAR;
-  ATTRIBUTE_NAMES[65] = ATTR_DISABLED;
-  ATTRIBUTE_NAMES[66] = ATTR_DEFAULT;
-  ATTRIBUTE_NAMES[67] = ATTR_DATA;
-  ATTRIBUTE_NAMES[68] = ATTR_EQUALCOLUMNS;
-  ATTRIBUTE_NAMES[69] = ATTR_EQUALROWS;
-  ATTRIBUTE_NAMES[70] = ATTR_HSPACE;
-  ATTRIBUTE_NAMES[71] = ATTR_ISMAP;
-  ATTRIBUTE_NAMES[72] = ATTR_LOCAL;
-  ATTRIBUTE_NAMES[73] = ATTR_LSPACE;
-  ATTRIBUTE_NAMES[74] = ATTR_MOVABLELIMITS;
-  ATTRIBUTE_NAMES[75] = ATTR_NOTATION;
-  ATTRIBUTE_NAMES[76] = ATTR_ONDATAAVAILABLE;
-  ATTRIBUTE_NAMES[77] = ATTR_ONPASTE;
-  ATTRIBUTE_NAMES[78] = ATTR_RSPACE;
-  ATTRIBUTE_NAMES[79] = ATTR_ROWALIGN;
-  ATTRIBUTE_NAMES[80] = ATTR_ROTATE;
-  ATTRIBUTE_NAMES[81] = ATTR_SEPARATOR;
-  ATTRIBUTE_NAMES[82] = ATTR_SEPARATORS;
-  ATTRIBUTE_NAMES[83] = ATTR_VSPACE;
-  ATTRIBUTE_NAMES[84] = ATTR_XCHANNELSELECTOR;
-  ATTRIBUTE_NAMES[85] = ATTR_YCHANNELSELECTOR;
-  ATTRIBUTE_NAMES[86] = ATTR_ENABLE_BACKGROUND;
-  ATTRIBUTE_NAMES[87] = ATTR_ONDBLCLICK;
-  ATTRIBUTE_NAMES[88] = ATTR_ONABORT;
-  ATTRIBUTE_NAMES[89] = ATTR_CALCMODE;
-  ATTRIBUTE_NAMES[90] = ATTR_CHECKED;
-  ATTRIBUTE_NAMES[91] = ATTR_FENCE;
-  ATTRIBUTE_NAMES[92] = ATTR_ONSCROLL;
-  ATTRIBUTE_NAMES[93] = ATTR_ONACTIVATE;
-  ATTRIBUTE_NAMES[94] = ATTR_OPACITY;
-  ATTRIBUTE_NAMES[95] = ATTR_SPACING;
-  ATTRIBUTE_NAMES[96] = ATTR_SPECULAREXPONENT;
-  ATTRIBUTE_NAMES[97] = ATTR_SPECULARCONSTANT;
-  ATTRIBUTE_NAMES[98] = ATTR_BORDER;
-  ATTRIBUTE_NAMES[99] = ATTR_ID;
-  ATTRIBUTE_NAMES[100] = ATTR_GRADIENTTRANSFORM;
-  ATTRIBUTE_NAMES[101] = ATTR_GRADIENTUNITS;
-  ATTRIBUTE_NAMES[102] = ATTR_HIDDEN;
-  ATTRIBUTE_NAMES[103] = ATTR_HEADERS;
-  ATTRIBUTE_NAMES[104] = ATTR_READONLY;
-  ATTRIBUTE_NAMES[105] = ATTR_RENDERING_INTENT;
-  ATTRIBUTE_NAMES[106] = ATTR_SEED;
-  ATTRIBUTE_NAMES[107] = ATTR_SRCDOC;
-  ATTRIBUTE_NAMES[108] = ATTR_STDDEVIATION;
-  ATTRIBUTE_NAMES[109] = ATTR_SANDBOX;
-  ATTRIBUTE_NAMES[110] = ATTR_WORD_SPACING;
-  ATTRIBUTE_NAMES[111] = ATTR_ACCENTUNDER;
-  ATTRIBUTE_NAMES[112] = ATTR_ACCEPT_CHARSET;
-  ATTRIBUTE_NAMES[113] = ATTR_ACCESSKEY;
-  ATTRIBUTE_NAMES[114] = ATTR_ACCENT;
-  ATTRIBUTE_NAMES[115] = ATTR_ACCEPT;
-  ATTRIBUTE_NAMES[116] = ATTR_BEVELLED;
-  ATTRIBUTE_NAMES[117] = ATTR_BASEFREQUENCY;
-  ATTRIBUTE_NAMES[118] = ATTR_BASELINE_SHIFT;
-  ATTRIBUTE_NAMES[119] = ATTR_BASEPROFILE;
-  ATTRIBUTE_NAMES[120] = ATTR_BASELINE;
-  ATTRIBUTE_NAMES[121] = ATTR_BASE;
-  ATTRIBUTE_NAMES[122] = ATTR_CODE;
-  ATTRIBUTE_NAMES[123] = ATTR_CODETYPE;
-  ATTRIBUTE_NAMES[124] = ATTR_CODEBASE;
-  ATTRIBUTE_NAMES[125] = ATTR_CITE;
-  ATTRIBUTE_NAMES[126] = ATTR_DEFER;
-  ATTRIBUTE_NAMES[127] = ATTR_DATETIME;
-  ATTRIBUTE_NAMES[128] = ATTR_DIRECTION;
-  ATTRIBUTE_NAMES[129] = ATTR_EDGEMODE;
-  ATTRIBUTE_NAMES[130] = ATTR_EDGE;
-  ATTRIBUTE_NAMES[131] = ATTR_FACE;
-  ATTRIBUTE_NAMES[132] = ATTR_INDEX;
-  ATTRIBUTE_NAMES[133] = ATTR_INTERCEPT;
-  ATTRIBUTE_NAMES[134] = ATTR_INTEGRITY;
-  ATTRIBUTE_NAMES[135] = ATTR_LINEBREAK;
-  ATTRIBUTE_NAMES[136] = ATTR_LABEL;
-  ATTRIBUTE_NAMES[137] = ATTR_LINETHICKNESS;
-  ATTRIBUTE_NAMES[138] = ATTR_MODE;
-  ATTRIBUTE_NAMES[139] = ATTR_NAME;
-  ATTRIBUTE_NAMES[140] = ATTR_NORESIZE;
-  ATTRIBUTE_NAMES[141] = ATTR_ONBEFOREUNLOAD;
-  ATTRIBUTE_NAMES[142] = ATTR_ONREPEAT;
-  ATTRIBUTE_NAMES[143] = ATTR_OBJECT;
-  ATTRIBUTE_NAMES[144] = ATTR_ONSELECT;
-  ATTRIBUTE_NAMES[145] = ATTR_ORDER;
-  ATTRIBUTE_NAMES[146] = ATTR_OTHER;
-  ATTRIBUTE_NAMES[147] = ATTR_ONRESET;
-  ATTRIBUTE_NAMES[148] = ATTR_ONREADYSTATECHANGE;
-  ATTRIBUTE_NAMES[149] = ATTR_ONMESSAGE;
-  ATTRIBUTE_NAMES[150] = ATTR_ONBEGIN;
-  ATTRIBUTE_NAMES[151] = ATTR_ONBEFOREPRINT;
-  ATTRIBUTE_NAMES[152] = ATTR_ORIENT;
-  ATTRIBUTE_NAMES[153] = ATTR_ORIENTATION;
-  ATTRIBUTE_NAMES[154] = ATTR_ONBEFORECOPY;
-  ATTRIBUTE_NAMES[155] = ATTR_ONSELECTSTART;
-  ATTRIBUTE_NAMES[156] = ATTR_ONBEFOREPASTE;
-  ATTRIBUTE_NAMES[157] = ATTR_ONKEYPRESS;
-  ATTRIBUTE_NAMES[158] = ATTR_ONKEYUP;
-  ATTRIBUTE_NAMES[159] = ATTR_ONBEFORECUT;
-  ATTRIBUTE_NAMES[160] = ATTR_ONKEYDOWN;
-  ATTRIBUTE_NAMES[161] = ATTR_ONRESIZE;
-  ATTRIBUTE_NAMES[162] = ATTR_REPEAT;
-  ATTRIBUTE_NAMES[163] = ATTR_REFERRERPOLICY;
-  ATTRIBUTE_NAMES[164] = ATTR_RULES;
-  ATTRIBUTE_NAMES[165] = ATTR_ROLE;
-  ATTRIBUTE_NAMES[166] = ATTR_REPEATCOUNT;
-  ATTRIBUTE_NAMES[167] = ATTR_REPEATDUR;
-  ATTRIBUTE_NAMES[168] = ATTR_SELECTED;
+  ATTRIBUTE_NAMES[16] = ATTR_ARIA_VALUEMIN;
+  ATTRIBUTE_NAMES[17] = ATTR_ROWALIGN;
+  ATTRIBUTE_NAMES[18] = ATTR_ACCENTUNDER;
+  ATTRIBUTE_NAMES[19] = ATTR_OBJECT;
+  ATTRIBUTE_NAMES[20] = ATTR_SIZE;
+  ATTRIBUTE_NAMES[21] = ATTR_MATHVARIANT;
+  ATTRIBUTE_NAMES[22] = ATTR_MARKERHEIGHT;
+  ATTRIBUTE_NAMES[23] = ATTR_PRIMITIVEUNITS;
+  ATTRIBUTE_NAMES[24] = ATTR_XMLNS;
+  ATTRIBUTE_NAMES[25] = ATTR_ONFOCUSOUT;
+  ATTRIBUTE_NAMES[26] = ATTR_SLOPE;
+  ATTRIBUTE_NAMES[27] = ATTR_COLS;
+  ATTRIBUTE_NAMES[28] = ATTR_FONTFAMILY;
+  ATTRIBUTE_NAMES[29] = ATTR_COLUMNALIGN;
+  ATTRIBUTE_NAMES[30] = ATTR_RX;
+  ATTRIBUTE_NAMES[31] = ATTR_MIN;
+  ATTRIBUTE_NAMES[32] = ATTR_K3;
+  ATTRIBUTE_NAMES[33] = ATTR_ARIA_LEVEL;
+  ATTRIBUTE_NAMES[34] = ATTR_ARIA_DATATYPE;
+  ATTRIBUTE_NAMES[35] = ATTR_ISMAP;
+  ATTRIBUTE_NAMES[36] = ATTR_ONDBLCLICK;
+  ATTRIBUTE_NAMES[37] = ATTR_HEADERS;
+  ATTRIBUTE_NAMES[38] = ATTR_BASEPROFILE;
+  ATTRIBUTE_NAMES[39] = ATTR_LINEBREAK;
+  ATTRIBUTE_NAMES[40] = ATTR_ONBEFOREPRINT;
+  ATTRIBUTE_NAMES[41] = ATTR_REPEATDUR;
+  ATTRIBUTE_NAMES[42] = ATTR_XREF;
+  ATTRIBUTE_NAMES[43] = ATTR_TARGET;
+  ATTRIBUTE_NAMES[44] = ATTR_ACTIONTYPE;
+  ATTRIBUTE_NAMES[45] = ATTR_SCRIPTSIZEMULTIPLIER;
+  ATTRIBUTE_NAMES[46] = ATTR_AMPLITUDE;
+  ATTRIBUTE_NAMES[47] = ATTR_AZIMUTH;
+  ATTRIBUTE_NAMES[48] = ATTR_ICON;
+  ATTRIBUTE_NAMES[49] = ATTR_TRANSFORM;
+  ATTRIBUTE_NAMES[50] = ATTR_COLOR_PROFILE;
+  ATTRIBUTE_NAMES[51] = ATTR_ONCONTEXTMENU;
+  ATTRIBUTE_NAMES[52] = ATTR_STROKE_MITERLIMIT;
+  ATTRIBUTE_NAMES[53] = ATTR_KEYPOINTS;
+  ATTRIBUTE_NAMES[54] = ATTR_CHAR;
+  ATTRIBUTE_NAMES[55] = ATTR_ONDRAGLEAVE;
+  ATTRIBUTE_NAMES[56] = ATTR_MAXSIZE;
+  ATTRIBUTE_NAMES[57] = ATTR_DEPTH;
+  ATTRIBUTE_NAMES[58] = ATTR_LETTER_SPACING;
+  ATTRIBUTE_NAMES[59] = ATTR_TEXT_ANCHOR;
+  ATTRIBUTE_NAMES[60] = ATTR_REQUIREDFEATURES;
+  ATTRIBUTE_NAMES[61] = ATTR_VIEWBOX;
+  ATTRIBUTE_NAMES[62] = ATTR_DY;
+  ATTRIBUTE_NAMES[63] = ATTR_END;
+  ATTRIBUTE_NAMES[64] = ATTR_SRC;
+  ATTRIBUTE_NAMES[65] = ATTR_Y1;
+  ATTRIBUTE_NAMES[66] = ATTR_XML_BASE;
+  ATTRIBUTE_NAMES[67] = ATTR_ARIA_DROPEFFECT;
+  ATTRIBUTE_NAMES[68] = ATTR_ARIA_POSINSET;
+  ATTRIBUTE_NAMES[69] = ATTR_ARIA_READONLY;
+  ATTRIBUTE_NAMES[70] = ATTR_ARIA_FLOWTO;
+  ATTRIBUTE_NAMES[71] = ATTR_DATA;
+  ATTRIBUTE_NAMES[72] = ATTR_NOTATION;
+  ATTRIBUTE_NAMES[73] = ATTR_VSPACE;
+  ATTRIBUTE_NAMES[74] = ATTR_FENCE;
+  ATTRIBUTE_NAMES[75] = ATTR_ID;
+  ATTRIBUTE_NAMES[76] = ATTR_SRCDOC;
+  ATTRIBUTE_NAMES[77] = ATTR_ACCEPT;
+  ATTRIBUTE_NAMES[78] = ATTR_CODETYPE;
+  ATTRIBUTE_NAMES[79] = ATTR_FACE;
+  ATTRIBUTE_NAMES[80] = ATTR_NAME;
+  ATTRIBUTE_NAMES[81] = ATTR_ONRESET;
+  ATTRIBUTE_NAMES[82] = ATTR_ONSELECTSTART;
+  ATTRIBUTE_NAMES[83] = ATTR_REFERRERPOLICY;
+  ATTRIBUTE_NAMES[84] = ATTR_STRETCHY;
+  ATTRIBUTE_NAMES[85] = ATTR_HREFLANG;
+  ATTRIBUTE_NAMES[86] = ATTR_DRAGGABLE;
+  ATTRIBUTE_NAMES[87] = ATTR_MARGINHEIGHT;
+  ATTRIBUTE_NAMES[88] = ATTR_HIGH;
+  ATTRIBUTE_NAMES[89] = ATTR_ONCHANGE;
+  ATTRIBUTE_NAMES[90] = ATTR_BEGIN;
+  ATTRIBUTE_NAMES[91] = ATTR_OPTIMUM;
+  ATTRIBUTE_NAMES[92] = ATTR_VISIBILITY;
+  ATTRIBUTE_NAMES[93] = ATTR_MARKERWIDTH;
+  ATTRIBUTE_NAMES[94] = ATTR_FILL_RULE;
+  ATTRIBUTE_NAMES[95] = ATTR_SCALE;
+  ATTRIBUTE_NAMES[96] = ATTR_FRAMESPACING;
+  ATTRIBUTE_NAMES[97] = ATTR_ZOOMANDPAN;
+  ATTRIBUTE_NAMES[98] = ATTR_ONUNLOAD;
+  ATTRIBUTE_NAMES[99] = ATTR_POINTSATY;
+  ATTRIBUTE_NAMES[100] = ATTR_XLINK_TITLE;
+  ATTRIBUTE_NAMES[101] = ATTR_AUTOPLAY;
+  ATTRIBUTE_NAMES[102] = ATTR_COLOR_INTERPOLATION_FILTERS;
+  ATTRIBUTE_NAMES[103] = ATTR_ONMOUSEWHEEL;
+  ATTRIBUTE_NAMES[104] = ATTR_ONMOUSEMOVE;
+  ATTRIBUTE_NAMES[105] = ATTR_STROKE_LINECAP;
+  ATTRIBUTE_NAMES[106] = ATTR_STROKE_OPACITY;
+  ATTRIBUTE_NAMES[107] = ATTR_GLYPH_ORIENTATION_VERTICAL;
+  ATTRIBUTE_NAMES[108] = ATTR_STEP;
+  ATTRIBUTE_NAMES[109] = ATTR_WRAP;
+  ATTRIBUTE_NAMES[110] = ATTR_NOWRAP;
+  ATTRIBUTE_NAMES[111] = ATTR_ONERROR;
+  ATTRIBUTE_NAMES[112] = ATTR_BIAS;
+  ATTRIBUTE_NAMES[113] = ATTR_CLASS;
+  ATTRIBUTE_NAMES[114] = ATTR_PRESERVEASPECTRATIO;
+  ATTRIBUTE_NAMES[115] = ATTR_CONTENTEDITABLE;
+  ATTRIBUTE_NAMES[116] = ATTR_FONTWEIGHT;
+  ATTRIBUTE_NAMES[117] = ATTR_FILTERUNITS;
+  ATTRIBUTE_NAMES[118] = ATTR_ONSTOP;
+  ATTRIBUTE_NAMES[119] = ATTR_STITCHTILES;
+  ATTRIBUTE_NAMES[120] = ATTR_WIDTH;
+  ATTRIBUTE_NAMES[121] = ATTR_INPUTMODE;
+  ATTRIBUTE_NAMES[122] = ATTR_REQUIREDEXTENSIONS;
+  ATTRIBUTE_NAMES[123] = ATTR_ELEVATION;
+  ATTRIBUTE_NAMES[124] = ATTR_DX;
+  ATTRIBUTE_NAMES[125] = ATTR_BY;
+  ATTRIBUTE_NAMES[126] = ATTR_RY;
+  ATTRIBUTE_NAMES[127] = ATTR_DIR;
+  ATTRIBUTE_NAMES[128] = ATTR_IN2;
+  ATTRIBUTE_NAMES[129] = ATTR_REL;
+  ATTRIBUTE_NAMES[130] = ATTR_R;
+  ATTRIBUTE_NAMES[131] = ATTR_K1;
+  ATTRIBUTE_NAMES[132] = ATTR_X2;
+  ATTRIBUTE_NAMES[133] = ATTR_XML_SPACE;
+  ATTRIBUTE_NAMES[134] = ATTR_ARIA_VALUEMAX;
+  ATTRIBUTE_NAMES[135] = ATTR_ARIA_CHECKED;
+  ATTRIBUTE_NAMES[136] = ATTR_ARIA_EXPANDED;
+  ATTRIBUTE_NAMES[137] = ATTR_ARIA_HIDDEN;
+  ATTRIBUTE_NAMES[138] = ATTR_ARIA_INVALID;
+  ATTRIBUTE_NAMES[139] = ATTR_ARIA_CONTROLS;
+  ATTRIBUTE_NAMES[140] = ATTR_ARIA_ACTIVEDESCENDANT;
+  ATTRIBUTE_NAMES[141] = ATTR_ARIA_SORT;
+  ATTRIBUTE_NAMES[142] = ATTR_ARIA_LIVE;
+  ATTRIBUTE_NAMES[143] = ATTR_DISABLED;
+  ATTRIBUTE_NAMES[144] = ATTR_EQUALROWS;
+  ATTRIBUTE_NAMES[145] = ATTR_LSPACE;
+  ATTRIBUTE_NAMES[146] = ATTR_ONPASTE;
+  ATTRIBUTE_NAMES[147] = ATTR_SEPARATOR;
+  ATTRIBUTE_NAMES[148] = ATTR_YCHANNELSELECTOR;
+  ATTRIBUTE_NAMES[149] = ATTR_CALCMODE;
+  ATTRIBUTE_NAMES[150] = ATTR_ONACTIVATE;
+  ATTRIBUTE_NAMES[151] = ATTR_SPECULARCONSTANT;
+  ATTRIBUTE_NAMES[152] = ATTR_GRADIENTUNITS;
+  ATTRIBUTE_NAMES[153] = ATTR_RENDERING_INTENT;
+  ATTRIBUTE_NAMES[154] = ATTR_SANDBOX;
+  ATTRIBUTE_NAMES[155] = ATTR_ACCESSKEY;
+  ATTRIBUTE_NAMES[156] = ATTR_BASEFREQUENCY;
+  ATTRIBUTE_NAMES[157] = ATTR_BASE;
+  ATTRIBUTE_NAMES[158] = ATTR_CITE;
+  ATTRIBUTE_NAMES[159] = ATTR_EDGEMODE;
+  ATTRIBUTE_NAMES[160] = ATTR_INTERCEPT;
+  ATTRIBUTE_NAMES[161] = ATTR_LINETHICKNESS;
+  ATTRIBUTE_NAMES[162] = ATTR_ONBEFOREUNLOAD;
+  ATTRIBUTE_NAMES[163] = ATTR_ORDER;
+  ATTRIBUTE_NAMES[164] = ATTR_ONMESSAGE;
+  ATTRIBUTE_NAMES[165] = ATTR_ORIENTATION;
+  ATTRIBUTE_NAMES[166] = ATTR_ONKEYPRESS;
+  ATTRIBUTE_NAMES[167] = ATTR_ONRESIZE;
+  ATTRIBUTE_NAMES[168] = ATTR_ROLE;
   ATTRIBUTE_NAMES[169] = ATTR_SIZES;
-  ATTRIBUTE_NAMES[170] = ATTR_SUPERSCRIPTSHIFT;
-  ATTRIBUTE_NAMES[171] = ATTR_STRETCHY;
-  ATTRIBUTE_NAMES[172] = ATTR_SCHEME;
-  ATTRIBUTE_NAMES[173] = ATTR_SPREADMETHOD;
-  ATTRIBUTE_NAMES[174] = ATTR_SELECTION;
-  ATTRIBUTE_NAMES[175] = ATTR_SIZE;
-  ATTRIBUTE_NAMES[176] = ATTR_TYPE;
-  ATTRIBUTE_NAMES[177] = ATTR_DIFFUSECONSTANT;
-  ATTRIBUTE_NAMES[178] = ATTR_HREF;
-  ATTRIBUTE_NAMES[179] = ATTR_HREFLANG;
-  ATTRIBUTE_NAMES[180] = ATTR_ONAFTERPRINT;
-  ATTRIBUTE_NAMES[181] = ATTR_PROFILE;
-  ATTRIBUTE_NAMES[182] = ATTR_SURFACESCALE;
-  ATTRIBUTE_NAMES[183] = ATTR_XREF;
-  ATTRIBUTE_NAMES[184] = ATTR_ALIGN;
-  ATTRIBUTE_NAMES[185] = ATTR_ALIGNMENT_BASELINE;
-  ATTRIBUTE_NAMES[186] = ATTR_ALIGNMENTSCOPE;
-  ATTRIBUTE_NAMES[187] = ATTR_DRAGGABLE;
-  ATTRIBUTE_NAMES[188] = ATTR_HEIGHT;
-  ATTRIBUTE_NAMES[189] = ATTR_IMAGE_RENDERING;
-  ATTRIBUTE_NAMES[190] = ATTR_LANGUAGE;
-  ATTRIBUTE_NAMES[191] = ATTR_LANG;
-  ATTRIBUTE_NAMES[192] = ATTR_LARGEOP;
-  ATTRIBUTE_NAMES[193] = ATTR_LONGDESC;
-  ATTRIBUTE_NAMES[194] = ATTR_LENGTHADJUST;
-  ATTRIBUTE_NAMES[195] = ATTR_MARGINHEIGHT;
-  ATTRIBUTE_NAMES[196] = ATTR_MARGINWIDTH;
-  ATTRIBUTE_NAMES[197] = ATTR_ORIGIN;
-  ATTRIBUTE_NAMES[198] = ATTR_PING;
-  ATTRIBUTE_NAMES[199] = ATTR_TARGET;
-  ATTRIBUTE_NAMES[200] = ATTR_TARGETX;
-  ATTRIBUTE_NAMES[201] = ATTR_TARGETY;
-  ATTRIBUTE_NAMES[202] = ATTR_ARCHIVE;
-  ATTRIBUTE_NAMES[203] = ATTR_HIGH;
-  ATTRIBUTE_NAMES[204] = ATTR_LIGHTING_COLOR;
-  ATTRIBUTE_NAMES[205] = ATTR_MATHBACKGROUND;
-  ATTRIBUTE_NAMES[206] = ATTR_METHOD;
-  ATTRIBUTE_NAMES[207] = ATTR_MATHVARIANT;
-  ATTRIBUTE_NAMES[208] = ATTR_MATHCOLOR;
-  ATTRIBUTE_NAMES[209] = ATTR_MATHSIZE;
-  ATTRIBUTE_NAMES[210] = ATTR_NOSHADE;
-  ATTRIBUTE_NAMES[211] = ATTR_ONCHANGE;
-  ATTRIBUTE_NAMES[212] = ATTR_PATHLENGTH;
-  ATTRIBUTE_NAMES[213] = ATTR_PATH;
-  ATTRIBUTE_NAMES[214] = ATTR_ALTIMG;
-  ATTRIBUTE_NAMES[215] = ATTR_ACTIONTYPE;
-  ATTRIBUTE_NAMES[216] = ATTR_ACTION;
-  ATTRIBUTE_NAMES[217] = ATTR_ACTIVE;
-  ATTRIBUTE_NAMES[218] = ATTR_ADDITIVE;
-  ATTRIBUTE_NAMES[219] = ATTR_BEGIN;
-  ATTRIBUTE_NAMES[220] = ATTR_DOMINANT_BASELINE;
-  ATTRIBUTE_NAMES[221] = ATTR_DIVISOR;
-  ATTRIBUTE_NAMES[222] = ATTR_DEFINITIONURL;
-  ATTRIBUTE_NAMES[223] = ATTR_LIMITINGCONEANGLE;
-  ATTRIBUTE_NAMES[224] = ATTR_MEDIA;
-  ATTRIBUTE_NAMES[225] = ATTR_MANIFEST;
-  ATTRIBUTE_NAMES[226] = ATTR_ONFINISH;
-  ATTRIBUTE_NAMES[227] = ATTR_OPTIMUM;
-  ATTRIBUTE_NAMES[228] = ATTR_RADIOGROUP;
-  ATTRIBUTE_NAMES[229] = ATTR_RADIUS;
-  ATTRIBUTE_NAMES[230] = ATTR_SCRIPTLEVEL;
-  ATTRIBUTE_NAMES[231] = ATTR_SCRIPTSIZEMULTIPLIER;
-  ATTRIBUTE_NAMES[232] = ATTR_SCRIPTMINSIZE;
-  ATTRIBUTE_NAMES[233] = ATTR_TABINDEX;
-  ATTRIBUTE_NAMES[234] = ATTR_VALIGN;
-  ATTRIBUTE_NAMES[235] = ATTR_VISIBILITY;
-  ATTRIBUTE_NAMES[236] = ATTR_BACKGROUND;
-  ATTRIBUTE_NAMES[237] = ATTR_LINK;
-  ATTRIBUTE_NAMES[238] = ATTR_MARKER_MID;
-  ATTRIBUTE_NAMES[239] = ATTR_MARKERHEIGHT;
-  ATTRIBUTE_NAMES[240] = ATTR_MARKER_END;
-  ATTRIBUTE_NAMES[241] = ATTR_MASK;
-  ATTRIBUTE_NAMES[242] = ATTR_MARKER_START;
-  ATTRIBUTE_NAMES[243] = ATTR_MARKERWIDTH;
-  ATTRIBUTE_NAMES[244] = ATTR_MASKUNITS;
-  ATTRIBUTE_NAMES[245] = ATTR_MARKERUNITS;
-  ATTRIBUTE_NAMES[246] = ATTR_MASKCONTENTUNITS;
-  ATTRIBUTE_NAMES[247] = ATTR_AMPLITUDE;
-  ATTRIBUTE_NAMES[248] = ATTR_CELLSPACING;
-  ATTRIBUTE_NAMES[249] = ATTR_CELLPADDING;
-  ATTRIBUTE_NAMES[250] = ATTR_DECLARE;
-  ATTRIBUTE_NAMES[251] = ATTR_FILL_RULE;
-  ATTRIBUTE_NAMES[252] = ATTR_FILL;
-  ATTRIBUTE_NAMES[253] = ATTR_FILL_OPACITY;
-  ATTRIBUTE_NAMES[254] = ATTR_MAXLENGTH;
-  ATTRIBUTE_NAMES[255] = ATTR_ONCLICK;
-  ATTRIBUTE_NAMES[256] = ATTR_ONBLUR;
-  ATTRIBUTE_NAMES[257] = ATTR_REPLACE;
-  ATTRIBUTE_NAMES[258] = ATTR_ROWLINES;
-  ATTRIBUTE_NAMES[259] = ATTR_SCALE;
-  ATTRIBUTE_NAMES[260] = ATTR_STYLE;
-  ATTRIBUTE_NAMES[261] = ATTR_TABLEVALUES;
-  ATTRIBUTE_NAMES[262] = ATTR_TITLE;
-  ATTRIBUTE_NAMES[263] = ATTR_AZIMUTH;
-  ATTRIBUTE_NAMES[264] = ATTR_FORMAT;
-  ATTRIBUTE_NAMES[265] = ATTR_FRAMEBORDER;
-  ATTRIBUTE_NAMES[266] = ATTR_FRAME;
-  ATTRIBUTE_NAMES[267] = ATTR_FRAMESPACING;
-  ATTRIBUTE_NAMES[268] = ATTR_FROM;
-  ATTRIBUTE_NAMES[269] = ATTR_FORM;
-  ATTRIBUTE_NAMES[270] = ATTR_PROMPT;
-  ATTRIBUTE_NAMES[271] = ATTR_PRIMITIVEUNITS;
-  ATTRIBUTE_NAMES[272] = ATTR_SYMMETRIC;
-  ATTRIBUTE_NAMES[273] = ATTR_SUMMARY;
-  ATTRIBUTE_NAMES[274] = ATTR_USEMAP;
-  ATTRIBUTE_NAMES[275] = ATTR_ZOOMANDPAN;
-  ATTRIBUTE_NAMES[276] = ATTR_ASYNC;
-  ATTRIBUTE_NAMES[277] = ATTR_ALINK;
-  ATTRIBUTE_NAMES[278] = ATTR_IN;
-  ATTRIBUTE_NAMES[279] = ATTR_ICON;
-  ATTRIBUTE_NAMES[280] = ATTR_KERNELMATRIX;
-  ATTRIBUTE_NAMES[281] = ATTR_KERNING;
-  ATTRIBUTE_NAMES[282] = ATTR_KERNELUNITLENGTH;
-  ATTRIBUTE_NAMES[283] = ATTR_ONUNLOAD;
-  ATTRIBUTE_NAMES[284] = ATTR_OPEN;
-  ATTRIBUTE_NAMES[285] = ATTR_ONINVALID;
-  ATTRIBUTE_NAMES[286] = ATTR_ONEND;
-  ATTRIBUTE_NAMES[287] = ATTR_ONINPUT;
-  ATTRIBUTE_NAMES[288] = ATTR_POINTER_EVENTS;
-  ATTRIBUTE_NAMES[289] = ATTR_POINTS;
-  ATTRIBUTE_NAMES[290] = ATTR_POINTSATX;
-  ATTRIBUTE_NAMES[291] = ATTR_POINTSATY;
-  ATTRIBUTE_NAMES[292] = ATTR_POINTSATZ;
-  ATTRIBUTE_NAMES[293] = ATTR_SPAN;
-  ATTRIBUTE_NAMES[294] = ATTR_STANDBY;
-  ATTRIBUTE_NAMES[295] = ATTR_TRANSFORM;
-  ATTRIBUTE_NAMES[296] = ATTR_VLINK;
-  ATTRIBUTE_NAMES[297] = ATTR_WHEN;
-  ATTRIBUTE_NAMES[298] = ATTR_XLINK_HREF;
-  ATTRIBUTE_NAMES[299] = ATTR_XLINK_TITLE;
-  ATTRIBUTE_NAMES[300] = ATTR_XLINK_ROLE;
-  ATTRIBUTE_NAMES[301] = ATTR_XLINK_ARCROLE;
-  ATTRIBUTE_NAMES[302] = ATTR_XMLNS_XLINK;
-  ATTRIBUTE_NAMES[303] = ATTR_XMLNS;
-  ATTRIBUTE_NAMES[304] = ATTR_XLINK_TYPE;
-  ATTRIBUTE_NAMES[305] = ATTR_XLINK_SHOW;
-  ATTRIBUTE_NAMES[306] = ATTR_XLINK_ACTUATE;
-  ATTRIBUTE_NAMES[307] = ATTR_AUTOPLAY;
-  ATTRIBUTE_NAMES[308] = ATTR_AUTOCOMPLETE;
-  ATTRIBUTE_NAMES[309] = ATTR_AUTOFOCUS;
-  ATTRIBUTE_NAMES[310] = ATTR_BGCOLOR;
-  ATTRIBUTE_NAMES[311] = ATTR_COLOR_PROFILE;
-  ATTRIBUTE_NAMES[312] = ATTR_COLOR_RENDERING;
-  ATTRIBUTE_NAMES[313] = ATTR_COLOR_INTERPOLATION;
-  ATTRIBUTE_NAMES[314] = ATTR_COLOR;
-  ATTRIBUTE_NAMES[315] = ATTR_COLOR_INTERPOLATION_FILTERS;
-  ATTRIBUTE_NAMES[316] = ATTR_ENCODING;
-  ATTRIBUTE_NAMES[317] = ATTR_EXPONENT;
-  ATTRIBUTE_NAMES[318] = ATTR_FLOOD_COLOR;
-  ATTRIBUTE_NAMES[319] = ATTR_FLOOD_OPACITY;
-  ATTRIBUTE_NAMES[320] = ATTR_LQUOTE;
-  ATTRIBUTE_NAMES[321] = ATTR_NUMOCTAVES;
-  ATTRIBUTE_NAMES[322] = ATTR_ONLOAD;
-  ATTRIBUTE_NAMES[323] = ATTR_ONMOUSEWHEEL;
-  ATTRIBUTE_NAMES[324] = ATTR_ONMOUSEENTER;
-  ATTRIBUTE_NAMES[325] = ATTR_ONMOUSEOVER;
-  ATTRIBUTE_NAMES[326] = ATTR_ONFOCUSIN;
-  ATTRIBUTE_NAMES[327] = ATTR_ONCONTEXTMENU;
-  ATTRIBUTE_NAMES[328] = ATTR_ONZOOM;
-  ATTRIBUTE_NAMES[329] = ATTR_ONCOPY;
-  ATTRIBUTE_NAMES[330] = ATTR_ONMOUSELEAVE;
-  ATTRIBUTE_NAMES[331] = ATTR_ONMOUSEMOVE;
-  ATTRIBUTE_NAMES[332] = ATTR_ONMOUSEUP;
-  ATTRIBUTE_NAMES[333] = ATTR_ONFOCUS;
-  ATTRIBUTE_NAMES[334] = ATTR_ONMOUSEOUT;
-  ATTRIBUTE_NAMES[335] = ATTR_ONFOCUSOUT;
-  ATTRIBUTE_NAMES[336] = ATTR_ONMOUSEDOWN;
-  ATTRIBUTE_NAMES[337] = ATTR_TO;
-  ATTRIBUTE_NAMES[338] = ATTR_RQUOTE;
-  ATTRIBUTE_NAMES[339] = ATTR_STROKE_LINECAP;
-  ATTRIBUTE_NAMES[340] = ATTR_STROKE_DASHARRAY;
-  ATTRIBUTE_NAMES[341] = ATTR_STROKE_DASHOFFSET;
-  ATTRIBUTE_NAMES[342] = ATTR_STROKE_LINEJOIN;
-  ATTRIBUTE_NAMES[343] = ATTR_STROKE_MITERLIMIT;
-  ATTRIBUTE_NAMES[344] = ATTR_STROKE;
-  ATTRIBUTE_NAMES[345] = ATTR_SCROLLING;
-  ATTRIBUTE_NAMES[346] = ATTR_STROKE_WIDTH;
-  ATTRIBUTE_NAMES[347] = ATTR_STROKE_OPACITY;
-  ATTRIBUTE_NAMES[348] = ATTR_COMPACT;
-  ATTRIBUTE_NAMES[349] = ATTR_CLIP;
-  ATTRIBUTE_NAMES[350] = ATTR_CLIP_RULE;
-  ATTRIBUTE_NAMES[351] = ATTR_CLIP_PATH;
-  ATTRIBUTE_NAMES[352] = ATTR_CLIPPATHUNITS;
-  ATTRIBUTE_NAMES[353] = ATTR_DISPLAY;
-  ATTRIBUTE_NAMES[354] = ATTR_DISPLAYSTYLE;
-  ATTRIBUTE_NAMES[355] = ATTR_GLYPH_ORIENTATION_VERTICAL;
-  ATTRIBUTE_NAMES[356] = ATTR_GLYPH_ORIENTATION_HORIZONTAL;
-  ATTRIBUTE_NAMES[357] = ATTR_GLYPHREF;
-  ATTRIBUTE_NAMES[358] = ATTR_HTTP_EQUIV;
-  ATTRIBUTE_NAMES[359] = ATTR_KEYPOINTS;
-  ATTRIBUTE_NAMES[360] = ATTR_LOOP;
-  ATTRIBUTE_NAMES[361] = ATTR_PROPERTY;
-  ATTRIBUTE_NAMES[362] = ATTR_SCOPED;
-  ATTRIBUTE_NAMES[363] = ATTR_STEP;
-  ATTRIBUTE_NAMES[364] = ATTR_SHAPE_RENDERING;
-  ATTRIBUTE_NAMES[365] = ATTR_SCOPE;
-  ATTRIBUTE_NAMES[366] = ATTR_SHAPE;
-  ATTRIBUTE_NAMES[367] = ATTR_SLOPE;
-  ATTRIBUTE_NAMES[368] = ATTR_STOP_COLOR;
-  ATTRIBUTE_NAMES[369] = ATTR_STOP_OPACITY;
-  ATTRIBUTE_NAMES[370] = ATTR_TEMPLATE;
-  ATTRIBUTE_NAMES[371] = ATTR_WRAP;
-  ATTRIBUTE_NAMES[372] = ATTR_ABBR;
-  ATTRIBUTE_NAMES[373] = ATTR_ATTRIBUTENAME;
-  ATTRIBUTE_NAMES[374] = ATTR_ATTRIBUTETYPE;
-  ATTRIBUTE_NAMES[375] = ATTR_CHAR;
-  ATTRIBUTE_NAMES[376] = ATTR_COORDS;
-  ATTRIBUTE_NAMES[377] = ATTR_CHAROFF;
-  ATTRIBUTE_NAMES[378] = ATTR_CHARSET;
-  ATTRIBUTE_NAMES[379] = ATTR_NOWRAP;
-  ATTRIBUTE_NAMES[380] = ATTR_NOHREF;
-  ATTRIBUTE_NAMES[381] = ATTR_ONDRAG;
-  ATTRIBUTE_NAMES[382] = ATTR_ONDRAGENTER;
-  ATTRIBUTE_NAMES[383] = ATTR_ONDRAGOVER;
-  ATTRIBUTE_NAMES[384] = ATTR_ONDRAGEND;
-  ATTRIBUTE_NAMES[385] = ATTR_ONDROP;
-  ATTRIBUTE_NAMES[386] = ATTR_ONDRAGDROP;
-  ATTRIBUTE_NAMES[387] = ATTR_ONERROR;
-  ATTRIBUTE_NAMES[388] = ATTR_OPERATOR;
-  ATTRIBUTE_NAMES[389] = ATTR_OVERFLOW;
-  ATTRIBUTE_NAMES[390] = ATTR_ONDRAGSTART;
-  ATTRIBUTE_NAMES[391] = ATTR_ONDRAGLEAVE;
-  ATTRIBUTE_NAMES[392] = ATTR_STARTOFFSET;
-  ATTRIBUTE_NAMES[393] = ATTR_START;
-  ATTRIBUTE_NAMES[394] = ATTR_AXIS;
-  ATTRIBUTE_NAMES[395] = ATTR_BIAS;
-  ATTRIBUTE_NAMES[396] = ATTR_COLSPAN;
-  ATTRIBUTE_NAMES[397] = ATTR_CLASSID;
-  ATTRIBUTE_NAMES[398] = ATTR_CROSSORIGIN;
-  ATTRIBUTE_NAMES[399] = ATTR_COLS;
-  ATTRIBUTE_NAMES[400] = ATTR_CURSOR;
-  ATTRIBUTE_NAMES[401] = ATTR_CLOSURE;
-  ATTRIBUTE_NAMES[402] = ATTR_CLOSE;
-  ATTRIBUTE_NAMES[403] = ATTR_CLASS;
-  ATTRIBUTE_NAMES[404] = ATTR_KEYSYSTEM;
-  ATTRIBUTE_NAMES[405] = ATTR_KEYSPLINES;
-  ATTRIBUTE_NAMES[406] = ATTR_LOWSRC;
-  ATTRIBUTE_NAMES[407] = ATTR_MAXSIZE;
-  ATTRIBUTE_NAMES[408] = ATTR_MINSIZE;
-  ATTRIBUTE_NAMES[409] = ATTR_OFFSET;
-  ATTRIBUTE_NAMES[410] = ATTR_PRESERVEALPHA;
-  ATTRIBUTE_NAMES[411] = ATTR_PRESERVEASPECTRATIO;
-  ATTRIBUTE_NAMES[412] = ATTR_ROWSPAN;
-  ATTRIBUTE_NAMES[413] = ATTR_ROWSPACING;
-  ATTRIBUTE_NAMES[414] = ATTR_ROWS;
-  ATTRIBUTE_NAMES[415] = ATTR_SRCSET;
-  ATTRIBUTE_NAMES[416] = ATTR_SUBSCRIPTSHIFT;
-  ATTRIBUTE_NAMES[417] = ATTR_VERSION;
-  ATTRIBUTE_NAMES[418] = ATTR_ALTTEXT;
-  ATTRIBUTE_NAMES[419] = ATTR_CONTENTEDITABLE;
-  ATTRIBUTE_NAMES[420] = ATTR_CONTROLS;
-  ATTRIBUTE_NAMES[421] = ATTR_CONTENT;
-  ATTRIBUTE_NAMES[422] = ATTR_CONTEXTMENU;
-  ATTRIBUTE_NAMES[423] = ATTR_DEPTH;
-  ATTRIBUTE_NAMES[424] = ATTR_ENCTYPE;
-  ATTRIBUTE_NAMES[425] = ATTR_FONT_STRETCH;
-  ATTRIBUTE_NAMES[426] = ATTR_FILTER;
-  ATTRIBUTE_NAMES[427] = ATTR_FONTWEIGHT;
-  ATTRIBUTE_NAMES[428] = ATTR_FONT_WEIGHT;
-  ATTRIBUTE_NAMES[429] = ATTR_FONTSTYLE;
-  ATTRIBUTE_NAMES[430] = ATTR_FONT_STYLE;
-  ATTRIBUTE_NAMES[431] = ATTR_FONTFAMILY;
-  ATTRIBUTE_NAMES[432] = ATTR_FONT_FAMILY;
-  ATTRIBUTE_NAMES[433] = ATTR_FONT_VARIANT;
-  ATTRIBUTE_NAMES[434] = ATTR_FONT_SIZE_ADJUST;
-  ATTRIBUTE_NAMES[435] = ATTR_FILTERUNITS;
-  ATTRIBUTE_NAMES[436] = ATTR_FONTSIZE;
-  ATTRIBUTE_NAMES[437] = ATTR_FONT_SIZE;
-  ATTRIBUTE_NAMES[438] = ATTR_KEYTIMES;
-  ATTRIBUTE_NAMES[439] = ATTR_LETTER_SPACING;
-  ATTRIBUTE_NAMES[440] = ATTR_LIST;
-  ATTRIBUTE_NAMES[441] = ATTR_MULTIPLE;
-  ATTRIBUTE_NAMES[442] = ATTR_RT;
-  ATTRIBUTE_NAMES[443] = ATTR_ONSTOP;
-  ATTRIBUTE_NAMES[444] = ATTR_ONSTART;
-  ATTRIBUTE_NAMES[445] = ATTR_POSTER;
-  ATTRIBUTE_NAMES[446] = ATTR_PATTERNTRANSFORM;
-  ATTRIBUTE_NAMES[447] = ATTR_PATTERN;
-  ATTRIBUTE_NAMES[448] = ATTR_PATTERNUNITS;
-  ATTRIBUTE_NAMES[449] = ATTR_PATTERNCONTENTUNITS;
-  ATTRIBUTE_NAMES[450] = ATTR_RESTART;
-  ATTRIBUTE_NAMES[451] = ATTR_STITCHTILES;
-  ATTRIBUTE_NAMES[452] = ATTR_SYSTEMLANGUAGE;
-  ATTRIBUTE_NAMES[453] = ATTR_TEXT_RENDERING;
-  ATTRIBUTE_NAMES[454] = ATTR_TEXT_DECORATION;
-  ATTRIBUTE_NAMES[455] = ATTR_TEXT_ANCHOR;
-  ATTRIBUTE_NAMES[456] = ATTR_TEXTLENGTH;
-  ATTRIBUTE_NAMES[457] = ATTR_TEXT;
-  ATTRIBUTE_NAMES[458] = ATTR_WRITING_MODE;
-  ATTRIBUTE_NAMES[459] = ATTR_WIDTH;
-  ATTRIBUTE_NAMES[460] = ATTR_ACCUMULATE;
-  ATTRIBUTE_NAMES[461] = ATTR_COLUMNSPAN;
-  ATTRIBUTE_NAMES[462] = ATTR_COLUMNLINES;
-  ATTRIBUTE_NAMES[463] = ATTR_COLUMNALIGN;
-  ATTRIBUTE_NAMES[464] = ATTR_COLUMNSPACING;
-  ATTRIBUTE_NAMES[465] = ATTR_COLUMNWIDTH;
-  ATTRIBUTE_NAMES[466] = ATTR_GROUPALIGN;
-  ATTRIBUTE_NAMES[467] = ATTR_INPUTMODE;
-  ATTRIBUTE_NAMES[468] = ATTR_ONSUBMIT;
-  ATTRIBUTE_NAMES[469] = ATTR_ONCUT;
-  ATTRIBUTE_NAMES[470] = ATTR_REQUIRED;
-  ATTRIBUTE_NAMES[471] = ATTR_REQUIREDFEATURES;
-  ATTRIBUTE_NAMES[472] = ATTR_RESULT;
-  ATTRIBUTE_NAMES[473] = ATTR_REQUIREDEXTENSIONS;
-  ATTRIBUTE_NAMES[474] = ATTR_VALUES;
-  ATTRIBUTE_NAMES[475] = ATTR_VALUETYPE;
-  ATTRIBUTE_NAMES[476] = ATTR_VALUE;
-  ATTRIBUTE_NAMES[477] = ATTR_ELEVATION;
-  ATTRIBUTE_NAMES[478] = ATTR_VIEWTARGET;
-  ATTRIBUTE_NAMES[479] = ATTR_VIEWBOX;
-  ATTRIBUTE_NAMES[480] = ATTR_CX;
-  ATTRIBUTE_NAMES[481] = ATTR_DX;
-  ATTRIBUTE_NAMES[482] = ATTR_FX;
-  ATTRIBUTE_NAMES[483] = ATTR_RX;
-  ATTRIBUTE_NAMES[484] = ATTR_REFX;
-  ATTRIBUTE_NAMES[485] = ATTR_BY;
-  ATTRIBUTE_NAMES[486] = ATTR_CY;
-  ATTRIBUTE_NAMES[487] = ATTR_DY;
-  ATTRIBUTE_NAMES[488] = ATTR_FY;
-  ATTRIBUTE_NAMES[489] = ATTR_RY;
-  ATTRIBUTE_NAMES[490] = ATTR_REFY;
+  ATTRIBUTE_NAMES[170] = ATTR_SPREADMETHOD;
+  ATTRIBUTE_NAMES[171] = ATTR_DIFFUSECONSTANT;
+  ATTRIBUTE_NAMES[172] = ATTR_PROFILE;
+  ATTRIBUTE_NAMES[173] = ATTR_ALIGNMENT_BASELINE;
+  ATTRIBUTE_NAMES[174] = ATTR_IMAGE_RENDERING;
+  ATTRIBUTE_NAMES[175] = ATTR_LONGDESC;
+  ATTRIBUTE_NAMES[176] = ATTR_ORIGIN;
+  ATTRIBUTE_NAMES[177] = ATTR_TARGETY;
+  ATTRIBUTE_NAMES[178] = ATTR_MATHBACKGROUND;
+  ATTRIBUTE_NAMES[179] = ATTR_MATHSIZE;
+  ATTRIBUTE_NAMES[180] = ATTR_PATH;
+  ATTRIBUTE_NAMES[181] = ATTR_ACTIVE;
+  ATTRIBUTE_NAMES[182] = ATTR_DIVISOR;
+  ATTRIBUTE_NAMES[183] = ATTR_MANIFEST;
+  ATTRIBUTE_NAMES[184] = ATTR_RADIUS;
+  ATTRIBUTE_NAMES[185] = ATTR_TABINDEX;
+  ATTRIBUTE_NAMES[186] = ATTR_LINK;
+  ATTRIBUTE_NAMES[187] = ATTR_MASK;
+  ATTRIBUTE_NAMES[188] = ATTR_MARKERUNITS;
+  ATTRIBUTE_NAMES[189] = ATTR_CELLPADDING;
+  ATTRIBUTE_NAMES[190] = ATTR_FILL_OPACITY;
+  ATTRIBUTE_NAMES[191] = ATTR_REPLACE;
+  ATTRIBUTE_NAMES[192] = ATTR_TABLEVALUES;
+  ATTRIBUTE_NAMES[193] = ATTR_FRAMEBORDER;
+  ATTRIBUTE_NAMES[194] = ATTR_FORM;
+  ATTRIBUTE_NAMES[195] = ATTR_SUMMARY;
+  ATTRIBUTE_NAMES[196] = ATTR_ALINK;
+  ATTRIBUTE_NAMES[197] = ATTR_KERNING;
+  ATTRIBUTE_NAMES[198] = ATTR_ONINVALID;
+  ATTRIBUTE_NAMES[199] = ATTR_POINTS;
+  ATTRIBUTE_NAMES[200] = ATTR_SPAN;
+  ATTRIBUTE_NAMES[201] = ATTR_WHEN;
+  ATTRIBUTE_NAMES[202] = ATTR_XLINK_ARCROLE;
+  ATTRIBUTE_NAMES[203] = ATTR_XLINK_SHOW;
+  ATTRIBUTE_NAMES[204] = ATTR_AUTOFOCUS;
+  ATTRIBUTE_NAMES[205] = ATTR_COLOR_INTERPOLATION;
+  ATTRIBUTE_NAMES[206] = ATTR_EXPONENT;
+  ATTRIBUTE_NAMES[207] = ATTR_NUMOCTAVES;
+  ATTRIBUTE_NAMES[208] = ATTR_ONMOUSEOVER;
+  ATTRIBUTE_NAMES[209] = ATTR_ONCOPY;
+  ATTRIBUTE_NAMES[210] = ATTR_ONFOCUS;
+  ATTRIBUTE_NAMES[211] = ATTR_TO;
+  ATTRIBUTE_NAMES[212] = ATTR_STROKE_DASHOFFSET;
+  ATTRIBUTE_NAMES[213] = ATTR_SCROLLING;
+  ATTRIBUTE_NAMES[214] = ATTR_CLIP;
+  ATTRIBUTE_NAMES[215] = ATTR_DISPLAY;
+  ATTRIBUTE_NAMES[216] = ATTR_GLYPHREF;
+  ATTRIBUTE_NAMES[217] = ATTR_PROPERTY;
+  ATTRIBUTE_NAMES[218] = ATTR_SCOPE;
+  ATTRIBUTE_NAMES[219] = ATTR_STOP_OPACITY;
+  ATTRIBUTE_NAMES[220] = ATTR_ATTRIBUTENAME;
+  ATTRIBUTE_NAMES[221] = ATTR_CHAROFF;
+  ATTRIBUTE_NAMES[222] = ATTR_ONDRAG;
+  ATTRIBUTE_NAMES[223] = ATTR_ONDROP;
+  ATTRIBUTE_NAMES[224] = ATTR_OVERFLOW;
+  ATTRIBUTE_NAMES[225] = ATTR_START;
+  ATTRIBUTE_NAMES[226] = ATTR_CLASSID;
+  ATTRIBUTE_NAMES[227] = ATTR_CLOSURE;
+  ATTRIBUTE_NAMES[228] = ATTR_KEYSPLINES;
+  ATTRIBUTE_NAMES[229] = ATTR_OFFSET;
+  ATTRIBUTE_NAMES[230] = ATTR_ROWSPACING;
+  ATTRIBUTE_NAMES[231] = ATTR_VERSION;
+  ATTRIBUTE_NAMES[232] = ATTR_CONTENT;
+  ATTRIBUTE_NAMES[233] = ATTR_FONT_STRETCH;
+  ATTRIBUTE_NAMES[234] = ATTR_FONTSTYLE;
+  ATTRIBUTE_NAMES[235] = ATTR_FONT_VARIANT;
+  ATTRIBUTE_NAMES[236] = ATTR_FONT_SIZE;
+  ATTRIBUTE_NAMES[237] = ATTR_MULTIPLE;
+  ATTRIBUTE_NAMES[238] = ATTR_POSTER;
+  ATTRIBUTE_NAMES[239] = ATTR_PATTERNCONTENTUNITS;
+  ATTRIBUTE_NAMES[240] = ATTR_TEXT_RENDERING;
+  ATTRIBUTE_NAMES[241] = ATTR_TEXT;
+  ATTRIBUTE_NAMES[242] = ATTR_COLUMNSPAN;
+  ATTRIBUTE_NAMES[243] = ATTR_COLUMNWIDTH;
+  ATTRIBUTE_NAMES[244] = ATTR_ONCUT;
+  ATTRIBUTE_NAMES[245] = ATTR_RESULT;
+  ATTRIBUTE_NAMES[246] = ATTR_VALUES;
+  ATTRIBUTE_NAMES[247] = ATTR_VALUE;
+  ATTRIBUTE_NAMES[248] = ATTR_VIEWTARGET;
+  ATTRIBUTE_NAMES[249] = ATTR_CX;
+  ATTRIBUTE_NAMES[250] = ATTR_FX;
+  ATTRIBUTE_NAMES[251] = ATTR_REFX;
+  ATTRIBUTE_NAMES[252] = ATTR_CY;
+  ATTRIBUTE_NAMES[253] = ATTR_FY;
+  ATTRIBUTE_NAMES[254] = ATTR_REFY;
+  ATTRIBUTE_NAMES[255] = ATTR_ALT;
+  ATTRIBUTE_NAMES[256] = ATTR_DUR;
+  ATTRIBUTE_NAMES[257] = ATTR_FOR;
+  ATTRIBUTE_NAMES[258] = ATTR_LOW;
+  ATTRIBUTE_NAMES[259] = ATTR_MAX;
+  ATTRIBUTE_NAMES[260] = ATTR_REV;
+  ATTRIBUTE_NAMES[261] = ATTR_D;
+  ATTRIBUTE_NAMES[262] = ATTR_X;
+  ATTRIBUTE_NAMES[263] = ATTR_Z;
+  ATTRIBUTE_NAMES[264] = ATTR_X1;
+  ATTRIBUTE_NAMES[265] = ATTR_K2;
+  ATTRIBUTE_NAMES[266] = ATTR_Y2;
+  ATTRIBUTE_NAMES[267] = ATTR_K4;
+  ATTRIBUTE_NAMES[268] = ATTR_XML_LANG;
+  ATTRIBUTE_NAMES[269] = ATTR_ARIA_GRAB;
+  ATTRIBUTE_NAMES[270] = ATTR_ARIA_LABELLEDBY;
+  ATTRIBUTE_NAMES[271] = ATTR_ARIA_DISABLED;
+  ATTRIBUTE_NAMES[272] = ATTR_ARIA_SELECTED;
+  ATTRIBUTE_NAMES[273] = ATTR_ARIA_REQUIRED;
+  ATTRIBUTE_NAMES[274] = ATTR_ARIA_PRESSED;
+  ATTRIBUTE_NAMES[275] = ATTR_ARIA_CHANNEL;
+  ATTRIBUTE_NAMES[276] = ATTR_ARIA_SECRET;
+  ATTRIBUTE_NAMES[277] = ATTR_ARIA_ATOMIC;
+  ATTRIBUTE_NAMES[278] = ATTR_ARIA_TEMPLATEID;
+  ATTRIBUTE_NAMES[279] = ATTR_ARIA_MULTISELECTABLE;
+  ATTRIBUTE_NAMES[280] = ATTR_ARIA_MULTILINE;
+  ATTRIBUTE_NAMES[281] = ATTR_ARIA_OWNS;
+  ATTRIBUTE_NAMES[282] = ATTR_ARIA_RELEVANT;
+  ATTRIBUTE_NAMES[283] = ATTR_ARIA_VALUENOW;
+  ATTRIBUTE_NAMES[284] = ATTR_ARIA_AUTOCOMPLETE;
+  ATTRIBUTE_NAMES[285] = ATTR_ARIA_BUSY;
+  ATTRIBUTE_NAMES[286] = ATTR_ARIA_HASPOPUP;
+  ATTRIBUTE_NAMES[287] = ATTR_CLEAR;
+  ATTRIBUTE_NAMES[288] = ATTR_DEFAULT;
+  ATTRIBUTE_NAMES[289] = ATTR_EQUALCOLUMNS;
+  ATTRIBUTE_NAMES[290] = ATTR_HSPACE;
+  ATTRIBUTE_NAMES[291] = ATTR_LOCAL;
+  ATTRIBUTE_NAMES[292] = ATTR_MOVABLELIMITS;
+  ATTRIBUTE_NAMES[293] = ATTR_ONDATAAVAILABLE;
+  ATTRIBUTE_NAMES[294] = ATTR_RSPACE;
+  ATTRIBUTE_NAMES[295] = ATTR_ROTATE;
+  ATTRIBUTE_NAMES[296] = ATTR_SEPARATORS;
+  ATTRIBUTE_NAMES[297] = ATTR_XCHANNELSELECTOR;
+  ATTRIBUTE_NAMES[298] = ATTR_ENABLE_BACKGROUND;
+  ATTRIBUTE_NAMES[299] = ATTR_ONABORT;
+  ATTRIBUTE_NAMES[300] = ATTR_CHECKED;
+  ATTRIBUTE_NAMES[301] = ATTR_ONSCROLL;
+  ATTRIBUTE_NAMES[302] = ATTR_OPACITY;
+  ATTRIBUTE_NAMES[303] = ATTR_SPECULAREXPONENT;
+  ATTRIBUTE_NAMES[304] = ATTR_BORDER;
+  ATTRIBUTE_NAMES[305] = ATTR_GRADIENTTRANSFORM;
+  ATTRIBUTE_NAMES[306] = ATTR_HIDDEN;
+  ATTRIBUTE_NAMES[307] = ATTR_READONLY;
+  ATTRIBUTE_NAMES[308] = ATTR_SEED;
+  ATTRIBUTE_NAMES[309] = ATTR_STDDEVIATION;
+  ATTRIBUTE_NAMES[310] = ATTR_WORD_SPACING;
+  ATTRIBUTE_NAMES[311] = ATTR_ACCEPT_CHARSET;
+  ATTRIBUTE_NAMES[312] = ATTR_ACCENT;
+  ATTRIBUTE_NAMES[313] = ATTR_BEVELLED;
+  ATTRIBUTE_NAMES[314] = ATTR_BASELINE_SHIFT;
+  ATTRIBUTE_NAMES[315] = ATTR_BASELINE;
+  ATTRIBUTE_NAMES[316] = ATTR_CODE;
+  ATTRIBUTE_NAMES[317] = ATTR_CODEBASE;
+  ATTRIBUTE_NAMES[318] = ATTR_DEFER;
+  ATTRIBUTE_NAMES[319] = ATTR_DIRECTION;
+  ATTRIBUTE_NAMES[320] = ATTR_EDGE;
+  ATTRIBUTE_NAMES[321] = ATTR_INDEX;
+  ATTRIBUTE_NAMES[322] = ATTR_INTEGRITY;
+  ATTRIBUTE_NAMES[323] = ATTR_LABEL;
+  ATTRIBUTE_NAMES[324] = ATTR_MODE;
+  ATTRIBUTE_NAMES[325] = ATTR_NORESIZE;
+  ATTRIBUTE_NAMES[326] = ATTR_ONREPEAT;
+  ATTRIBUTE_NAMES[327] = ATTR_ONSELECT;
+  ATTRIBUTE_NAMES[328] = ATTR_OTHER;
+  ATTRIBUTE_NAMES[329] = ATTR_ONREADYSTATECHANGE;
+  ATTRIBUTE_NAMES[330] = ATTR_ONBEGIN;
+  ATTRIBUTE_NAMES[331] = ATTR_ORIENT;
+  ATTRIBUTE_NAMES[332] = ATTR_ONBEFORECOPY;
+  ATTRIBUTE_NAMES[333] = ATTR_ONBEFOREPASTE;
+  ATTRIBUTE_NAMES[334] = ATTR_ONKEYUP;
+  ATTRIBUTE_NAMES[335] = ATTR_ONKEYDOWN;
+  ATTRIBUTE_NAMES[336] = ATTR_REPEAT;
+  ATTRIBUTE_NAMES[337] = ATTR_RULES;
+  ATTRIBUTE_NAMES[338] = ATTR_REPEATCOUNT;
+  ATTRIBUTE_NAMES[339] = ATTR_SELECTED;
+  ATTRIBUTE_NAMES[340] = ATTR_SUPERSCRIPTSHIFT;
+  ATTRIBUTE_NAMES[341] = ATTR_SCHEME;
+  ATTRIBUTE_NAMES[342] = ATTR_SELECTION;
+  ATTRIBUTE_NAMES[343] = ATTR_TYPE;
+  ATTRIBUTE_NAMES[344] = ATTR_HREF;
+  ATTRIBUTE_NAMES[345] = ATTR_ONAFTERPRINT;
+  ATTRIBUTE_NAMES[346] = ATTR_SURFACESCALE;
+  ATTRIBUTE_NAMES[347] = ATTR_ALIGN;
+  ATTRIBUTE_NAMES[348] = ATTR_ALIGNMENTSCOPE;
+  ATTRIBUTE_NAMES[349] = ATTR_HEIGHT;
+  ATTRIBUTE_NAMES[350] = ATTR_LANGUAGE;
+  ATTRIBUTE_NAMES[351] = ATTR_LARGEOP;
+  ATTRIBUTE_NAMES[352] = ATTR_LENGTHADJUST;
+  ATTRIBUTE_NAMES[353] = ATTR_MARGINWIDTH;
+  ATTRIBUTE_NAMES[354] = ATTR_PING;
+  ATTRIBUTE_NAMES[355] = ATTR_TARGETX;
+  ATTRIBUTE_NAMES[356] = ATTR_ARCHIVE;
+  ATTRIBUTE_NAMES[357] = ATTR_LIGHTING_COLOR;
+  ATTRIBUTE_NAMES[358] = ATTR_METHOD;
+  ATTRIBUTE_NAMES[359] = ATTR_MATHCOLOR;
+  ATTRIBUTE_NAMES[360] = ATTR_NOSHADE;
+  ATTRIBUTE_NAMES[361] = ATTR_PATHLENGTH;
+  ATTRIBUTE_NAMES[362] = ATTR_ALTIMG;
+  ATTRIBUTE_NAMES[363] = ATTR_ACTION;
+  ATTRIBUTE_NAMES[364] = ATTR_ADDITIVE;
+  ATTRIBUTE_NAMES[365] = ATTR_DOMINANT_BASELINE;
+  ATTRIBUTE_NAMES[366] = ATTR_DEFINITIONURL;
+  ATTRIBUTE_NAMES[367] = ATTR_MEDIA;
+  ATTRIBUTE_NAMES[368] = ATTR_ONFINISH;
+  ATTRIBUTE_NAMES[369] = ATTR_RADIOGROUP;
+  ATTRIBUTE_NAMES[370] = ATTR_SCRIPTLEVEL;
+  ATTRIBUTE_NAMES[371] = ATTR_SCRIPTMINSIZE;
+  ATTRIBUTE_NAMES[372] = ATTR_VALIGN;
+  ATTRIBUTE_NAMES[373] = ATTR_BACKGROUND;
+  ATTRIBUTE_NAMES[374] = ATTR_MARKER_MID;
+  ATTRIBUTE_NAMES[375] = ATTR_MARKER_END;
+  ATTRIBUTE_NAMES[376] = ATTR_MARKER_START;
+  ATTRIBUTE_NAMES[377] = ATTR_MASKUNITS;
+  ATTRIBUTE_NAMES[378] = ATTR_MASKCONTENTUNITS;
+  ATTRIBUTE_NAMES[379] = ATTR_CELLSPACING;
+  ATTRIBUTE_NAMES[380] = ATTR_DECLARE;
+  ATTRIBUTE_NAMES[381] = ATTR_FILL;
+  ATTRIBUTE_NAMES[382] = ATTR_MAXLENGTH;
+  ATTRIBUTE_NAMES[383] = ATTR_ONBLUR;
+  ATTRIBUTE_NAMES[384] = ATTR_ROWLINES;
+  ATTRIBUTE_NAMES[385] = ATTR_STYLE;
+  ATTRIBUTE_NAMES[386] = ATTR_TITLE;
+  ATTRIBUTE_NAMES[387] = ATTR_FORMAT;
+  ATTRIBUTE_NAMES[388] = ATTR_FRAME;
+  ATTRIBUTE_NAMES[389] = ATTR_FROM;
+  ATTRIBUTE_NAMES[390] = ATTR_PROMPT;
+  ATTRIBUTE_NAMES[391] = ATTR_SYMMETRIC;
+  ATTRIBUTE_NAMES[392] = ATTR_USEMAP;
+  ATTRIBUTE_NAMES[393] = ATTR_ASYNC;
+  ATTRIBUTE_NAMES[394] = ATTR_IN;
+  ATTRIBUTE_NAMES[395] = ATTR_KERNELMATRIX;
+  ATTRIBUTE_NAMES[396] = ATTR_KERNELUNITLENGTH;
+  ATTRIBUTE_NAMES[397] = ATTR_OPEN;
+  ATTRIBUTE_NAMES[398] = ATTR_ONEND;
+  ATTRIBUTE_NAMES[399] = ATTR_POINTER_EVENTS;
+  ATTRIBUTE_NAMES[400] = ATTR_POINTSATX;
+  ATTRIBUTE_NAMES[401] = ATTR_POINTSATZ;
+  ATTRIBUTE_NAMES[402] = ATTR_STANDBY;
+  ATTRIBUTE_NAMES[403] = ATTR_VLINK;
+  ATTRIBUTE_NAMES[404] = ATTR_XLINK_HREF;
+  ATTRIBUTE_NAMES[405] = ATTR_XLINK_ROLE;
+  ATTRIBUTE_NAMES[406] = ATTR_XMLNS_XLINK;
+  ATTRIBUTE_NAMES[407] = ATTR_XLINK_TYPE;
+  ATTRIBUTE_NAMES[408] = ATTR_XLINK_ACTUATE;
+  ATTRIBUTE_NAMES[409] = ATTR_AUTOCOMPLETE;
+  ATTRIBUTE_NAMES[410] = ATTR_BGCOLOR;
+  ATTRIBUTE_NAMES[411] = ATTR_COLOR_RENDERING;
+  ATTRIBUTE_NAMES[412] = ATTR_COLOR;
+  ATTRIBUTE_NAMES[413] = ATTR_ENCODING;
+  ATTRIBUTE_NAMES[414] = ATTR_FLOOD_COLOR;
+  ATTRIBUTE_NAMES[415] = ATTR_LQUOTE;
+  ATTRIBUTE_NAMES[416] = ATTR_ONLOAD;
+  ATTRIBUTE_NAMES[417] = ATTR_ONMOUSEENTER;
+  ATTRIBUTE_NAMES[418] = ATTR_ONFOCUSIN;
+  ATTRIBUTE_NAMES[419] = ATTR_ONZOOM;
+  ATTRIBUTE_NAMES[420] = ATTR_ONMOUSELEAVE;
+  ATTRIBUTE_NAMES[421] = ATTR_ONMOUSEUP;
+  ATTRIBUTE_NAMES[422] = ATTR_ONMOUSEOUT;
+  ATTRIBUTE_NAMES[423] = ATTR_ONMOUSEDOWN;
+  ATTRIBUTE_NAMES[424] = ATTR_RQUOTE;
+  ATTRIBUTE_NAMES[425] = ATTR_STROKE_DASHARRAY;
+  ATTRIBUTE_NAMES[426] = ATTR_STROKE_LINEJOIN;
+  ATTRIBUTE_NAMES[427] = ATTR_STROKE;
+  ATTRIBUTE_NAMES[428] = ATTR_STROKE_WIDTH;
+  ATTRIBUTE_NAMES[429] = ATTR_COMPACT;
+  ATTRIBUTE_NAMES[430] = ATTR_CLIP_RULE;
+  ATTRIBUTE_NAMES[431] = ATTR_CLIPPATHUNITS;
+  ATTRIBUTE_NAMES[432] = ATTR_DISPLAYSTYLE;
+  ATTRIBUTE_NAMES[433] = ATTR_GLYPH_ORIENTATION_HORIZONTAL;
+  ATTRIBUTE_NAMES[434] = ATTR_HTTP_EQUIV;
+  ATTRIBUTE_NAMES[435] = ATTR_LOOP;
+  ATTRIBUTE_NAMES[436] = ATTR_SCOPED;
+  ATTRIBUTE_NAMES[437] = ATTR_SHAPE_RENDERING;
+  ATTRIBUTE_NAMES[438] = ATTR_SHAPE;
+  ATTRIBUTE_NAMES[439] = ATTR_STOP_COLOR;
+  ATTRIBUTE_NAMES[440] = ATTR_TEMPLATE;
+  ATTRIBUTE_NAMES[441] = ATTR_ABBR;
+  ATTRIBUTE_NAMES[442] = ATTR_ATTRIBUTETYPE;
+  ATTRIBUTE_NAMES[443] = ATTR_COORDS;
+  ATTRIBUTE_NAMES[444] = ATTR_CHARSET;
+  ATTRIBUTE_NAMES[445] = ATTR_NOHREF;
+  ATTRIBUTE_NAMES[446] = ATTR_ONDRAGENTER;
+  ATTRIBUTE_NAMES[447] = ATTR_ONDRAGEND;
+  ATTRIBUTE_NAMES[448] = ATTR_ONDRAGDROP;
+  ATTRIBUTE_NAMES[449] = ATTR_OPERATOR;
+  ATTRIBUTE_NAMES[450] = ATTR_ONDRAGSTART;
+  ATTRIBUTE_NAMES[451] = ATTR_STARTOFFSET;
+  ATTRIBUTE_NAMES[452] = ATTR_AXIS;
+  ATTRIBUTE_NAMES[453] = ATTR_COLSPAN;
+  ATTRIBUTE_NAMES[454] = ATTR_CROSSORIGIN;
+  ATTRIBUTE_NAMES[455] = ATTR_CURSOR;
+  ATTRIBUTE_NAMES[456] = ATTR_CLOSE;
+  ATTRIBUTE_NAMES[457] = ATTR_KEYSYSTEM;
+  ATTRIBUTE_NAMES[458] = ATTR_LOWSRC;
+  ATTRIBUTE_NAMES[459] = ATTR_MINSIZE;
+  ATTRIBUTE_NAMES[460] = ATTR_PRESERVEALPHA;
+  ATTRIBUTE_NAMES[461] = ATTR_ROWSPAN;
+  ATTRIBUTE_NAMES[462] = ATTR_ROWS;
+  ATTRIBUTE_NAMES[463] = ATTR_SUBSCRIPTSHIFT;
+  ATTRIBUTE_NAMES[464] = ATTR_ALTTEXT;
+  ATTRIBUTE_NAMES[465] = ATTR_CONTROLS;
+  ATTRIBUTE_NAMES[466] = ATTR_CONTEXTMENU;
+  ATTRIBUTE_NAMES[467] = ATTR_ENCTYPE;
+  ATTRIBUTE_NAMES[468] = ATTR_FILTER;
+  ATTRIBUTE_NAMES[469] = ATTR_FONT_WEIGHT;
+  ATTRIBUTE_NAMES[470] = ATTR_FONT_STYLE;
+  ATTRIBUTE_NAMES[471] = ATTR_FONT_FAMILY;
+  ATTRIBUTE_NAMES[472] = ATTR_FONT_SIZE_ADJUST;
+  ATTRIBUTE_NAMES[473] = ATTR_FONTSIZE;
+  ATTRIBUTE_NAMES[474] = ATTR_KEYTIMES;
+  ATTRIBUTE_NAMES[475] = ATTR_LIST;
+  ATTRIBUTE_NAMES[476] = ATTR_RT;
+  ATTRIBUTE_NAMES[477] = ATTR_ONSTART;
+  ATTRIBUTE_NAMES[478] = ATTR_PATTERNTRANSFORM;
+  ATTRIBUTE_NAMES[479] = ATTR_PATTERNUNITS;
+  ATTRIBUTE_NAMES[480] = ATTR_RESTART;
+  ATTRIBUTE_NAMES[481] = ATTR_SYSTEMLANGUAGE;
+  ATTRIBUTE_NAMES[482] = ATTR_TEXT_DECORATION;
+  ATTRIBUTE_NAMES[483] = ATTR_TEXTLENGTH;
+  ATTRIBUTE_NAMES[484] = ATTR_WRITING_MODE;
+  ATTRIBUTE_NAMES[485] = ATTR_ACCUMULATE;
+  ATTRIBUTE_NAMES[486] = ATTR_COLUMNLINES;
+  ATTRIBUTE_NAMES[487] = ATTR_COLUMNSPACING;
+  ATTRIBUTE_NAMES[488] = ATTR_GROUPALIGN;
+  ATTRIBUTE_NAMES[489] = ATTR_ONSUBMIT;
+  ATTRIBUTE_NAMES[490] = ATTR_REQUIRED;
 }
 
 void
 nsHtml5AttributeName::releaseStatics()
 {
   delete[] ALL_NO_NS;
   delete[] XMLNS_NS;
   delete[] XML_NS;
--- a/parser/html/nsHtml5AttributeName.h
+++ b/parser/html/nsHtml5AttributeName.h
@@ -68,23 +68,43 @@ class nsHtml5AttributeName
     static nsIAtom** XMLNS_PREFIX;
     static nsIAtom** XLINK_PREFIX;
     static nsIAtom** XML_PREFIX;
     static nsIAtom** SVG_DIFFERENT(nsIAtom* name, nsIAtom* camel);
     static nsIAtom** MATH_DIFFERENT(nsIAtom* name, nsIAtom* camel);
     static nsIAtom** COLONIFIED_LOCAL(nsIAtom* name, nsIAtom* suffix);
   public:
     static nsIAtom** SAME_LOCAL(nsIAtom* name);
+    inline static int32_t levelOrderBinarySearch(jArray<int32_t, int32_t> data,
+                                                 int32_t key)
+    {
+      int32_t n = data.length;
+      int32_t i = 0;
+      while (i < n) {
+        int32_t val = data[i];
+        if (val < key) {
+          i = 2 * i + 2;
+        } else if (val > key) {
+          i = 2 * i + 1;
+        } else {
+          return i;
+        }
+      }
+      return -1;
+    }
+
     inline static nsHtml5AttributeName* nameByBuffer(char16_t* buf,
                                                      int32_t offset,
                                                      int32_t length,
                                                      nsHtml5AtomTable* interner)
     {
       uint32_t hash = nsHtml5AttributeName::bufToHash(buf, length);
-      int32_t index = nsHtml5AttributeName::ATTRIBUTE_HASHES.binarySearch(hash);
+      jArray<int32_t, int32_t> hashes;
+      hashes = nsHtml5AttributeName::ATTRIBUTE_HASHES;
+      int32_t index = levelOrderBinarySearch(hashes, hash);
       if (index < 0) {
         return nullptr;
       }
       nsHtml5AttributeName* attributeName =
         nsHtml5AttributeName::ATTRIBUTE_NAMES[index];
       nsIAtom* name = attributeName->getLocal(0);
       if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) {
         return nullptr;
--- a/parser/html/nsHtml5ElementName.cpp
+++ b/parser/html/nsHtml5ElementName.cpp
@@ -278,50 +278,50 @@ nsHtml5ElementName* nsHtml5ElementName::
 nsHtml5ElementName* nsHtml5ElementName::ELT_FECONVOLVEMATRIX = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_BODY = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_FEMORPHOLOGY = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_RUBY = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_SUMMARY = nullptr;
 nsHtml5ElementName* nsHtml5ElementName::ELT_TBODY = nullptr;
 nsHtml5ElementName** nsHtml5ElementName::ELEMENT_NAMES = 0;
 static int32_t const ELEMENT_HASHES_DATA[] = {
-  51434643,   51438659,   51961587,   52485715,   52486755,   52488851,
-  52490899,   55104723,   55110883,   56151587,   57206291,   57733651,
-  58773795,   59244545,   59768833,   59821379,   60345171,   60347747,
-  60352339,   60354131,   61395251,   61925907,   62390273,   62450211,
-  62973651,   63438849,   67108865,   67633153,   68681729,   69730305,
-  876609538,  893386754,  910163970,  926941186,  943718402,  960495618,
-  1679960596, 1682547543, 1686489160, 1686491348, 1689922072, 1699324759,
-  1703936002, 1715310660, 1730150402, 1730965751, 1732381397, 1733054663,
-  1733076167, 1733890180, 1736200310, 1737099991, 1738539010, 1740181637,
-  1747048757, 1747176599, 1747306711, 1747814436, 1747838298, 1748100148,
-  1748225318, 1748359220, 1749395095, 1749656156, 1749673195, 1749715159,
-  1749723735, 1749801286, 1749813541, 1749905526, 1749932347, 1751288021,
-  1751386406, 1752979652, 1753362711, 1755076808, 1755148615, 1756474198,
-  1756600614, 1756625221, 1757137429, 1757146773, 1757157700, 1757268168,
-  1763839627, 1766992520, 1782357526, 1783210839, 1783388497, 1783388498,
-  1786534215, 1790207270, 1797585096, 1798686984, 1803876550, 1803929812,
-  1803929861, 1805502724, 1805647874, 1806806678, 1807599880, 1818230786,
-  1818755074, 1853642948, 1854228692, 1854228698, 1854245076, 1857653029,
-  1864368130, 1868312196, 1870135298, 1870268949, 1873281026, 1874053333,
-  1874102998, 1881288348, 1881498736, 1881613047, 1881669634, 1884120164,
-  1887579800, 1889085973, 1898223949, 1898753862, 1899272519, 1900845386,
-  1902641154, 1903302038, 1904412884, 1905563974, 1906087319, 1906135367,
-  1907435316, 1907661127, 1907959605, 1914900309, 1919418370, 1925844629,
-  1932928296, 1934172497, 1935549734, 1938817026, 1939219752, 1941178676,
-  1941221172, 1963982850, 1965115924, 1965334268, 1966223078, 1967128578,
-  1967760215, 1967788867, 1967795910, 1967795958, 1968053806, 1968836118,
-  1971461414, 1971465813, 1971938532, 1973420034, 1982173479, 1982935782,
-  1983533124, 1983633431, 1986527234, 1988763672, 1990037800, 1998585858,
-  1998724870, 1999397992, 2001309869, 2001349704, 2001349720, 2001349736,
-  2001392795, 2001392796, 2001392798, 2001495140, 2003183333, 2004635806,
-  2005324101, 2005719336, 2005925890, 2006028454, 2006329158, 2006896969,
-  2006974466, 2007601444, 2007781534, 2008125638, 2008340774, 2008851557,
-  2008994116, 2021937364, 2051837468, 2060065124, 2068523853, 2068523856,
-  2070023911, 2083120164, 2085266636, 2091479332, 2092255447, 2092557349
+  1903302038, 1749656156, 2001349720, 893386754,  1803929812, 1971461414,
+  2007781534, 59821379,   1733054663, 1756625221, 1870268949, 1941178676,
+  1986527234, 2005324101, 2068523853, 55104723,   62450211,   1686491348,
+  1747176599, 1751288021, 1783210839, 1853642948, 1884120164, 1914900309,
+  1967788867, 1982173479, 1998724870, 2001392798, 2006329158, 2008994116,
+  2085266636, 52485715,   57733651,   60354131,   67633153,   960495618,
+  1715310660, 1737099991, 1748100148, 1749801286, 1755076808, 1757268168,
+  1790207270, 1806806678, 1857653029, 1881288348, 1898753862, 1906135367,
+  1934172497, 1965334268, 1968053806, 1971938532, 1983533124, 1990037800,
+  2001309869, 2001392795, 2003183333, 2005925890, 2006974466, 2008340774,
+  2051837468, 2070023911, 2092255447, 51438659,   52488851,   56151587,
+  59244545,   60347747,   61925907,   63438849,   69730305,   926941186,
+  1682547543, 1699324759, 1730965751, 1733890180, 1740181637, 1747814436,
+  1748359220, 1749715159, 1749905526, 1752979652, 1756474198, 1757146773,
+  1766992520, 1783388498, 1798686984, 1805502724, 1818230786, 1854228698,
+  1868312196, 1874053333, 1881613047, 1889085973, 1900845386, 1905563974,
+  1907661127, 1925844629, 1938817026, 1963982850, 1967128578, 1967795958,
+  1968836118, 1971465813, 1973420034, 1982935782, 1983633431, 1988763672,
+  1998585858, 1999397992, 2001349704, 2001349736, 2001392796, 2001495140,
+  2004635806, 2005719336, 2006028454, 2006896969, 2007601444, 2008125638,
+  2008851557, 2021937364, 2060065124, 2068523856, 2083120164, 2091479332,
+  2092557349, 51434643,   51961587,   52486755,   52490899,   55110883,
+  57206291,   58773795,   59768833,   60345171,   60352339,   61395251,
+  62390273,   62973651,   67108865,   68681729,   876609538,  910163970,
+  943718402,  1679960596, 1686489160, 1689922072, 1703936002, 1730150402,
+  1732381397, 1733076167, 1736200310, 1738539010, 1747048757, 1747306711,
+  1747838298, 1748225318, 1749395095, 1749673195, 1749723735, 1749813541,
+  1749932347, 1751386406, 1753362711, 1755148615, 1756600614, 1757137429,
+  1757157700, 1763839627, 1782357526, 1783388497, 1786534215, 1797585096,
+  1803876550, 1803929861, 1805647874, 1807599880, 1818755074, 1854228692,
+  1854245076, 1864368130, 1870135298, 1873281026, 1874102998, 1881498736,
+  1881669634, 1887579800, 1898223949, 1899272519, 1902641154, 1904412884,
+  1906087319, 1907435316, 1907959605, 1919418370, 1932928296, 1935549734,
+  1939219752, 1941221172, 1965115924, 1966223078, 1967760215, 1967795910
 };
 staticJArray<int32_t,int32_t> nsHtml5ElementName::ELEMENT_HASHES = { ELEMENT_HASHES_DATA, MOZ_ARRAY_LENGTH(ELEMENT_HASHES_DATA) };
 void
 nsHtml5ElementName::initializeStatics()
 {
   ELT_ANNOTATION_XML = new nsHtml5ElementName(
     nsGkAtoms::annotation_xml_,
     nsGkAtoms::annotation_xml_,
@@ -972,220 +972,220 @@ nsHtml5ElementName::initializeStatics()
         ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIALOG_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY |
       SPECIAL);
   ELT_TBODY =
     new nsHtml5ElementName(nsGkAtoms::tbody,
                            nsGkAtoms::tbody,
                            nsHtml5TreeBuilder::TBODY_OR_THEAD_OR_TFOOT |
                              SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG);
   ELEMENT_NAMES = new nsHtml5ElementName*[204];
-  ELEMENT_NAMES[0] = ELT_BIG;
-  ELEMENT_NAMES[1] = ELT_BDO;
-  ELEMENT_NAMES[2] = ELT_COL;
-  ELEMENT_NAMES[3] = ELT_DEL;
-  ELEMENT_NAMES[4] = ELT_DFN;
-  ELEMENT_NAMES[5] = ELT_DIR;
-  ELEMENT_NAMES[6] = ELT_DIV;
-  ELEMENT_NAMES[7] = ELT_IMG;
-  ELEMENT_NAMES[8] = ELT_INS;
-  ELEMENT_NAMES[9] = ELT_KBD;
-  ELEMENT_NAMES[10] = ELT_MAP;
-  ELEMENT_NAMES[11] = ELT_NAV;
-  ELEMENT_NAMES[12] = ELT_PRE;
-  ELEMENT_NAMES[13] = ELT_A;
-  ELEMENT_NAMES[14] = ELT_B;
-  ELEMENT_NAMES[15] = ELT_RTC;
-  ELEMENT_NAMES[16] = ELT_SUB;
-  ELEMENT_NAMES[17] = ELT_SVG;
-  ELEMENT_NAMES[18] = ELT_SUP;
-  ELEMENT_NAMES[19] = ELT_SET;
-  ELEMENT_NAMES[20] = ELT_USE;
-  ELEMENT_NAMES[21] = ELT_VAR;
-  ELEMENT_NAMES[22] = ELT_G;
-  ELEMENT_NAMES[23] = ELT_WBR;
-  ELEMENT_NAMES[24] = ELT_XMP;
-  ELEMENT_NAMES[25] = ELT_I;
-  ELEMENT_NAMES[26] = ELT_P;
-  ELEMENT_NAMES[27] = ELT_Q;
-  ELEMENT_NAMES[28] = ELT_S;
-  ELEMENT_NAMES[29] = ELT_U;
-  ELEMENT_NAMES[30] = ELT_H1;
-  ELEMENT_NAMES[31] = ELT_H2;
-  ELEMENT_NAMES[32] = ELT_H3;
-  ELEMENT_NAMES[33] = ELT_H4;
-  ELEMENT_NAMES[34] = ELT_H5;
+  ELEMENT_NAMES[0] = ELT_KEYGEN;
+  ELEMENT_NAMES[1] = ELT_FETURBULENCE;
+  ELEMENT_NAMES[2] = ELT_FRAMESET;
+  ELEMENT_NAMES[3] = ELT_H2;
+  ELEMENT_NAMES[4] = ELT_MATH;
+  ELEMENT_NAMES[5] = ELT_MARKER;
+  ELEMENT_NAMES[6] = ELT_RADIALGRADIENT;
+  ELEMENT_NAMES[7] = ELT_RTC;
+  ELEMENT_NAMES[8] = ELT_FEBLEND;
+  ELEMENT_NAMES[9] = ELT_STYLE;
+  ELEMENT_NAMES[10] = ELT_LABEL;
+  ELEMENT_NAMES[11] = ELT_SAMP;
+  ELEMENT_NAMES[12] = ELT_MS;
+  ELEMENT_NAMES[13] = ELT_MTEXT;
+  ELEMENT_NAMES[14] = ELT_FECOLORMATRIX;
+  ELEMENT_NAMES[15] = ELT_IMG;
+  ELEMENT_NAMES[16] = ELT_WBR;
+  ELEMENT_NAMES[17] = ELT_META;
+  ELEMENT_NAMES[18] = ELT_ARTICLE;
+  ELEMENT_NAMES[19] = ELT_IMAGE;
+  ELEMENT_NAMES[20] = ELT_FEFUNCG;
+  ELEMENT_NAMES[21] = ELT_LINK;
+  ELEMENT_NAMES[22] = ELT_FORM;
+  ELEMENT_NAMES[23] = ELT_AUDIO;
+  ELEMENT_NAMES[24] = ELT_FECOMPONENTTRANSFER;
+  ELEMENT_NAMES[25] = ELT_ADDRESS;
+  ELEMENT_NAMES[26] = ELT_APPLET;
+  ELEMENT_NAMES[27] = ELT_FEDISTANTLIGHT;
+  ELEMENT_NAMES[28] = ELT_OUTPUT;
+  ELEMENT_NAMES[29] = ELT_TEXT;
+  ELEMENT_NAMES[30] = ELT_FEMORPHOLOGY;
+  ELEMENT_NAMES[31] = ELT_DEL;
+  ELEMENT_NAMES[32] = ELT_NAV;
+  ELEMENT_NAMES[33] = ELT_SET;
+  ELEMENT_NAMES[34] = ELT_Q;
   ELEMENT_NAMES[35] = ELT_H6;
-  ELEMENT_NAMES[36] = ELT_AREA;
-  ELEMENT_NAMES[37] = ELT_FEFUNCA;
-  ELEMENT_NAMES[38] = ELT_METADATA;
-  ELEMENT_NAMES[39] = ELT_META;
-  ELEMENT_NAMES[40] = ELT_TEXTAREA;
-  ELEMENT_NAMES[41] = ELT_FEFUNCB;
-  ELEMENT_NAMES[42] = ELT_RB;
-  ELEMENT_NAMES[43] = ELT_DESC;
-  ELEMENT_NAMES[44] = ELT_DD;
-  ELEMENT_NAMES[45] = ELT_BGSOUND;
-  ELEMENT_NAMES[46] = ELT_EMBED;
-  ELEMENT_NAMES[47] = ELT_FEBLEND;
-  ELEMENT_NAMES[48] = ELT_FEFLOOD;
-  ELEMENT_NAMES[49] = ELT_HEAD;
-  ELEMENT_NAMES[50] = ELT_LEGEND;
-  ELEMENT_NAMES[51] = ELT_NOEMBED;
-  ELEMENT_NAMES[52] = ELT_TD;
-  ELEMENT_NAMES[53] = ELT_THEAD;
-  ELEMENT_NAMES[54] = ELT_ASIDE;
-  ELEMENT_NAMES[55] = ELT_ARTICLE;
-  ELEMENT_NAMES[56] = ELT_ANIMATE;
-  ELEMENT_NAMES[57] = ELT_BASE;
-  ELEMENT_NAMES[58] = ELT_BLOCKQUOTE;
-  ELEMENT_NAMES[59] = ELT_CODE;
-  ELEMENT_NAMES[60] = ELT_CIRCLE;
-  ELEMENT_NAMES[61] = ELT_CITE;
-  ELEMENT_NAMES[62] = ELT_ELLIPSE;
-  ELEMENT_NAMES[63] = ELT_FETURBULENCE;
-  ELEMENT_NAMES[64] = ELT_FEMERGENODE;
-  ELEMENT_NAMES[65] = ELT_FEIMAGE;
-  ELEMENT_NAMES[66] = ELT_FEMERGE;
-  ELEMENT_NAMES[67] = ELT_FETILE;
-  ELEMENT_NAMES[68] = ELT_FRAME;
-  ELEMENT_NAMES[69] = ELT_FIGURE;
-  ELEMENT_NAMES[70] = ELT_FECOMPOSITE;
-  ELEMENT_NAMES[71] = ELT_IMAGE;
-  ELEMENT_NAMES[72] = ELT_IFRAME;
-  ELEMENT_NAMES[73] = ELT_LINE;
-  ELEMENT_NAMES[74] = ELT_MARQUEE;
-  ELEMENT_NAMES[75] = ELT_POLYLINE;
-  ELEMENT_NAMES[76] = ELT_PICTURE;
-  ELEMENT_NAMES[77] = ELT_SOURCE;
-  ELEMENT_NAMES[78] = ELT_STRIKE;
-  ELEMENT_NAMES[79] = ELT_STYLE;
-  ELEMENT_NAMES[80] = ELT_TABLE;
-  ELEMENT_NAMES[81] = ELT_TITLE;
-  ELEMENT_NAMES[82] = ELT_TIME;
-  ELEMENT_NAMES[83] = ELT_TEMPLATE;
-  ELEMENT_NAMES[84] = ELT_ALTGLYPHDEF;
-  ELEMENT_NAMES[85] = ELT_GLYPHREF;
-  ELEMENT_NAMES[86] = ELT_DIALOG;
-  ELEMENT_NAMES[87] = ELT_FEFUNCG;
-  ELEMENT_NAMES[88] = ELT_FEDIFFUSELIGHTING;
-  ELEMENT_NAMES[89] = ELT_FESPECULARLIGHTING;
-  ELEMENT_NAMES[90] = ELT_LISTING;
-  ELEMENT_NAMES[91] = ELT_STRONG;
-  ELEMENT_NAMES[92] = ELT_ALTGLYPH;
-  ELEMENT_NAMES[93] = ELT_CLIPPATH;
-  ELEMENT_NAMES[94] = ELT_MGLYPH;
-  ELEMENT_NAMES[95] = ELT_MATH;
-  ELEMENT_NAMES[96] = ELT_MPATH;
-  ELEMENT_NAMES[97] = ELT_PATH;
-  ELEMENT_NAMES[98] = ELT_TH;
-  ELEMENT_NAMES[99] = ELT_SWITCH;
-  ELEMENT_NAMES[100] = ELT_TEXTPATH;
-  ELEMENT_NAMES[101] = ELT_LI;
-  ELEMENT_NAMES[102] = ELT_MI;
-  ELEMENT_NAMES[103] = ELT_LINK;
-  ELEMENT_NAMES[104] = ELT_MARK;
-  ELEMENT_NAMES[105] = ELT_MALIGNMARK;
-  ELEMENT_NAMES[106] = ELT_MASK;
-  ELEMENT_NAMES[107] = ELT_TRACK;
-  ELEMENT_NAMES[108] = ELT_DL;
-  ELEMENT_NAMES[109] = ELT_HTML;
-  ELEMENT_NAMES[110] = ELT_OL;
-  ELEMENT_NAMES[111] = ELT_LABEL;
-  ELEMENT_NAMES[112] = ELT_UL;
-  ELEMENT_NAMES[113] = ELT_SMALL;
-  ELEMENT_NAMES[114] = ELT_SYMBOL;
-  ELEMENT_NAMES[115] = ELT_ALTGLYPHITEM;
-  ELEMENT_NAMES[116] = ELT_ANIMATETRANSFORM;
-  ELEMENT_NAMES[117] = ELT_ACRONYM;
-  ELEMENT_NAMES[118] = ELT_EM;
-  ELEMENT_NAMES[119] = ELT_FORM;
-  ELEMENT_NAMES[120] = ELT_MENUITEM;
-  ELEMENT_NAMES[121] = ELT_PARAM;
-  ELEMENT_NAMES[122] = ELT_ANIMATEMOTION;
-  ELEMENT_NAMES[123] = ELT_BUTTON;
-  ELEMENT_NAMES[124] = ELT_CAPTION;
-  ELEMENT_NAMES[125] = ELT_FIGCAPTION;
-  ELEMENT_NAMES[126] = ELT_MN;
-  ELEMENT_NAMES[127] = ELT_KEYGEN;
-  ELEMENT_NAMES[128] = ELT_MAIN;
-  ELEMENT_NAMES[129] = ELT_OPTION;
-  ELEMENT_NAMES[130] = ELT_POLYGON;
-  ELEMENT_NAMES[131] = ELT_PATTERN;
-  ELEMENT_NAMES[132] = ELT_SPAN;
-  ELEMENT_NAMES[133] = ELT_SECTION;
-  ELEMENT_NAMES[134] = ELT_TSPAN;
-  ELEMENT_NAMES[135] = ELT_AUDIO;
-  ELEMENT_NAMES[136] = ELT_MO;
-  ELEMENT_NAMES[137] = ELT_VIDEO;
-  ELEMENT_NAMES[138] = ELT_COLGROUP;
-  ELEMENT_NAMES[139] = ELT_FEDISPLACEMENTMAP;
-  ELEMENT_NAMES[140] = ELT_HGROUP;
-  ELEMENT_NAMES[141] = ELT_RP;
-  ELEMENT_NAMES[142] = ELT_OPTGROUP;
-  ELEMENT_NAMES[143] = ELT_SAMP;
-  ELEMENT_NAMES[144] = ELT_STOP;
-  ELEMENT_NAMES[145] = ELT_BR;
-  ELEMENT_NAMES[146] = ELT_ABBR;
-  ELEMENT_NAMES[147] = ELT_ANIMATECOLOR;
-  ELEMENT_NAMES[148] = ELT_CENTER;
-  ELEMENT_NAMES[149] = ELT_HR;
-  ELEMENT_NAMES[150] = ELT_FEFUNCR;
-  ELEMENT_NAMES[151] = ELT_FECOMPONENTTRANSFER;
-  ELEMENT_NAMES[152] = ELT_FILTER;
-  ELEMENT_NAMES[153] = ELT_FOOTER;
-  ELEMENT_NAMES[154] = ELT_FEGAUSSIANBLUR;
-  ELEMENT_NAMES[155] = ELT_HEADER;
-  ELEMENT_NAMES[156] = ELT_MARKER;
-  ELEMENT_NAMES[157] = ELT_METER;
-  ELEMENT_NAMES[158] = ELT_NOBR;
-  ELEMENT_NAMES[159] = ELT_TR;
-  ELEMENT_NAMES[160] = ELT_ADDRESS;
-  ELEMENT_NAMES[161] = ELT_CANVAS;
-  ELEMENT_NAMES[162] = ELT_DEFS;
-  ELEMENT_NAMES[163] = ELT_DETAILS;
-  ELEMENT_NAMES[164] = ELT_MS;
-  ELEMENT_NAMES[165] = ELT_NOFRAMES;
-  ELEMENT_NAMES[166] = ELT_PROGRESS;
-  ELEMENT_NAMES[167] = ELT_DT;
-  ELEMENT_NAMES[168] = ELT_APPLET;
-  ELEMENT_NAMES[169] = ELT_BASEFONT;
-  ELEMENT_NAMES[170] = ELT_FOREIGNOBJECT;
-  ELEMENT_NAMES[171] = ELT_FIELDSET;
-  ELEMENT_NAMES[172] = ELT_FRAMESET;
-  ELEMENT_NAMES[173] = ELT_FEOFFSET;
-  ELEMENT_NAMES[174] = ELT_FESPOTLIGHT;
-  ELEMENT_NAMES[175] = ELT_FEPOINTLIGHT;
-  ELEMENT_NAMES[176] = ELT_FEDISTANTLIGHT;
-  ELEMENT_NAMES[177] = ELT_FONT;
-  ELEMENT_NAMES[178] = ELT_INPUT;
-  ELEMENT_NAMES[179] = ELT_LINEARGRADIENT;
-  ELEMENT_NAMES[180] = ELT_MTEXT;
-  ELEMENT_NAMES[181] = ELT_NOSCRIPT;
-  ELEMENT_NAMES[182] = ELT_RT;
-  ELEMENT_NAMES[183] = ELT_OBJECT;
-  ELEMENT_NAMES[184] = ELT_OUTPUT;
-  ELEMENT_NAMES[185] = ELT_PLAINTEXT;
-  ELEMENT_NAMES[186] = ELT_TT;
-  ELEMENT_NAMES[187] = ELT_RECT;
-  ELEMENT_NAMES[188] = ELT_RADIALGRADIENT;
-  ELEMENT_NAMES[189] = ELT_SELECT;
-  ELEMENT_NAMES[190] = ELT_SCRIPT;
-  ELEMENT_NAMES[191] = ELT_TFOOT;
-  ELEMENT_NAMES[192] = ELT_TEXT;
-  ELEMENT_NAMES[193] = ELT_MENU;
-  ELEMENT_NAMES[194] = ELT_FEDROPSHADOW;
-  ELEMENT_NAMES[195] = ELT_VIEW;
-  ELEMENT_NAMES[196] = ELT_FECOLORMATRIX;
-  ELEMENT_NAMES[197] = ELT_FECONVOLVEMATRIX;
-  ELEMENT_NAMES[198] = ELT_ISINDEX;
-  ELEMENT_NAMES[199] = ELT_BODY;
-  ELEMENT_NAMES[200] = ELT_FEMORPHOLOGY;
-  ELEMENT_NAMES[201] = ELT_RUBY;
-  ELEMENT_NAMES[202] = ELT_SUMMARY;
-  ELEMENT_NAMES[203] = ELT_TBODY;
+  ELEMENT_NAMES[36] = ELT_DESC;
+  ELEMENT_NAMES[37] = ELT_NOEMBED;
+  ELEMENT_NAMES[38] = ELT_CODE;
+  ELEMENT_NAMES[39] = ELT_FETILE;
+  ELEMENT_NAMES[40] = ELT_POLYLINE;
+  ELEMENT_NAMES[41] = ELT_TEMPLATE;
+  ELEMENT_NAMES[42] = ELT_STRONG;
+  ELEMENT_NAMES[43] = ELT_SWITCH;
+  ELEMENT_NAMES[44] = ELT_TRACK;
+  ELEMENT_NAMES[45] = ELT_ALTGLYPHITEM;
+  ELEMENT_NAMES[46] = ELT_BUTTON;
+  ELEMENT_NAMES[47] = ELT_PATTERN;
+  ELEMENT_NAMES[48] = ELT_FEDISPLACEMENTMAP;
+  ELEMENT_NAMES[49] = ELT_ANIMATECOLOR;
+  ELEMENT_NAMES[50] = ELT_FEGAUSSIANBLUR;
+  ELEMENT_NAMES[51] = ELT_NOBR;
+  ELEMENT_NAMES[52] = ELT_DEFS;
+  ELEMENT_NAMES[53] = ELT_PROGRESS;
+  ELEMENT_NAMES[54] = ELT_FOREIGNOBJECT;
+  ELEMENT_NAMES[55] = ELT_FESPOTLIGHT;
+  ELEMENT_NAMES[56] = ELT_INPUT;
+  ELEMENT_NAMES[57] = ELT_RT;
+  ELEMENT_NAMES[58] = ELT_TT;
+  ELEMENT_NAMES[59] = ELT_SCRIPT;
+  ELEMENT_NAMES[60] = ELT_FEDROPSHADOW;
+  ELEMENT_NAMES[61] = ELT_ISINDEX;
+  ELEMENT_NAMES[62] = ELT_SUMMARY;
+  ELEMENT_NAMES[63] = ELT_BDO;
+  ELEMENT_NAMES[64] = ELT_DIR;
+  ELEMENT_NAMES[65] = ELT_KBD;
+  ELEMENT_NAMES[66] = ELT_A;
+  ELEMENT_NAMES[67] = ELT_SVG;
+  ELEMENT_NAMES[68] = ELT_VAR;
+  ELEMENT_NAMES[69] = ELT_I;
+  ELEMENT_NAMES[70] = ELT_U;
+  ELEMENT_NAMES[71] = ELT_H4;
+  ELEMENT_NAMES[72] = ELT_FEFUNCA;
+  ELEMENT_NAMES[73] = ELT_FEFUNCB;
+  ELEMENT_NAMES[74] = ELT_BGSOUND;
+  ELEMENT_NAMES[75] = ELT_HEAD;
+  ELEMENT_NAMES[76] = ELT_THEAD;
+  ELEMENT_NAMES[77] = ELT_BASE;
+  ELEMENT_NAMES[78] = ELT_CITE;
+  ELEMENT_NAMES[79] = ELT_FEIMAGE;
+  ELEMENT_NAMES[80] = ELT_FIGURE;
+  ELEMENT_NAMES[81] = ELT_LINE;
+  ELEMENT_NAMES[82] = ELT_SOURCE;
+  ELEMENT_NAMES[83] = ELT_TITLE;
+  ELEMENT_NAMES[84] = ELT_GLYPHREF;
+  ELEMENT_NAMES[85] = ELT_FESPECULARLIGHTING;
+  ELEMENT_NAMES[86] = ELT_CLIPPATH;
+  ELEMENT_NAMES[87] = ELT_PATH;
+  ELEMENT_NAMES[88] = ELT_LI;
+  ELEMENT_NAMES[89] = ELT_MALIGNMARK;
+  ELEMENT_NAMES[90] = ELT_HTML;
+  ELEMENT_NAMES[91] = ELT_SMALL;
+  ELEMENT_NAMES[92] = ELT_ACRONYM;
+  ELEMENT_NAMES[93] = ELT_PARAM;
+  ELEMENT_NAMES[94] = ELT_FIGCAPTION;
+  ELEMENT_NAMES[95] = ELT_OPTION;
+  ELEMENT_NAMES[96] = ELT_SECTION;
+  ELEMENT_NAMES[97] = ELT_VIDEO;
+  ELEMENT_NAMES[98] = ELT_RP;
+  ELEMENT_NAMES[99] = ELT_BR;
+  ELEMENT_NAMES[100] = ELT_HR;
+  ELEMENT_NAMES[101] = ELT_FOOTER;
+  ELEMENT_NAMES[102] = ELT_HEADER;
+  ELEMENT_NAMES[103] = ELT_METER;
+  ELEMENT_NAMES[104] = ELT_TR;
+  ELEMENT_NAMES[105] = ELT_CANVAS;
+  ELEMENT_NAMES[106] = ELT_DETAILS;
+  ELEMENT_NAMES[107] = ELT_NOFRAMES;
+  ELEMENT_NAMES[108] = ELT_DT;
+  ELEMENT_NAMES[109] = ELT_BASEFONT;
+  ELEMENT_NAMES[110] = ELT_FIELDSET;
+  ELEMENT_NAMES[111] = ELT_FEOFFSET;
+  ELEMENT_NAMES[112] = ELT_FEPOINTLIGHT;
+  ELEMENT_NAMES[113] = ELT_FONT;
+  ELEMENT_NAMES[114] = ELT_LINEARGRADIENT;
+  ELEMENT_NAMES[115] = ELT_NOSCRIPT;
+  ELEMENT_NAMES[116] = ELT_OBJECT;
+  ELEMENT_NAMES[117] = ELT_PLAINTEXT;
+  ELEMENT_NAMES[118] = ELT_RECT;
+  ELEMENT_NAMES[119] = ELT_SELECT;
+  ELEMENT_NAMES[120] = ELT_TFOOT;
+  ELEMENT_NAMES[121] = ELT_MENU;
+  ELEMENT_NAMES[122] = ELT_VIEW;
+  ELEMENT_NAMES[123] = ELT_FECONVOLVEMATRIX;
+  ELEMENT_NAMES[124] = ELT_BODY;
+  ELEMENT_NAMES[125] = ELT_RUBY;
+  ELEMENT_NAMES[126] = ELT_TBODY;
+  ELEMENT_NAMES[127] = ELT_BIG;
+  ELEMENT_NAMES[128] = ELT_COL;
+  ELEMENT_NAMES[129] = ELT_DFN;
+  ELEMENT_NAMES[130] = ELT_DIV;
+  ELEMENT_NAMES[131] = ELT_INS;
+  ELEMENT_NAMES[132] = ELT_MAP;
+  ELEMENT_NAMES[133] = ELT_PRE;
+  ELEMENT_NAMES[134] = ELT_B;
+  ELEMENT_NAMES[135] = ELT_SUB;
+  ELEMENT_NAMES[136] = ELT_SUP;
+  ELEMENT_NAMES[137] = ELT_USE;
+  ELEMENT_NAMES[138] = ELT_G;
+  ELEMENT_NAMES[139] = ELT_XMP;
+  ELEMENT_NAMES[140] = ELT_P;
+  ELEMENT_NAMES[141] = ELT_S;
+  ELEMENT_NAMES[142] = ELT_H1;
+  ELEMENT_NAMES[143] = ELT_H3;
+  ELEMENT_NAMES[144] = ELT_H5;
+  ELEMENT_NAMES[145] = ELT_AREA;
+  ELEMENT_NAMES[146] = ELT_METADATA;
+  ELEMENT_NAMES[147] = ELT_TEXTAREA;
+  ELEMENT_NAMES[148] = ELT_RB;
+  ELEMENT_NAMES[149] = ELT_DD;
+  ELEMENT_NAMES[150] = ELT_EMBED;
+  ELEMENT_NAMES[151] = ELT_FEFLOOD;
+  ELEMENT_NAMES[152] = ELT_LEGEND;
+  ELEMENT_NAMES[153] = ELT_TD;
+  ELEMENT_NAMES[154] = ELT_ASIDE;
+  ELEMENT_NAMES[155] = ELT_ANIMATE;
+  ELEMENT_NAMES[156] = ELT_BLOCKQUOTE;
+  ELEMENT_NAMES[157] = ELT_CIRCLE;
+  ELEMENT_NAMES[158] = ELT_ELLIPSE;
+  ELEMENT_NAMES[159] = ELT_FEMERGENODE;
+  ELEMENT_NAMES[160] = ELT_FEMERGE;
+  ELEMENT_NAMES[161] = ELT_FRAME;
+  ELEMENT_NAMES[162] = ELT_FECOMPOSITE;
+  ELEMENT_NAMES[163] = ELT_IFRAME;
+  ELEMENT_NAMES[164] = ELT_MARQUEE;
+  ELEMENT_NAMES[165] = ELT_PICTURE;
+  ELEMENT_NAMES[166] = ELT_STRIKE;
+  ELEMENT_NAMES[167] = ELT_TABLE;
+  ELEMENT_NAMES[168] = ELT_TIME;
+  ELEMENT_NAMES[169] = ELT_ALTGLYPHDEF;
+  ELEMENT_NAMES[170] = ELT_DIALOG;
+  ELEMENT_NAMES[171] = ELT_FEDIFFUSELIGHTING;
+  ELEMENT_NAMES[172] = ELT_LISTING;
+  ELEMENT_NAMES[173] = ELT_ALTGLYPH;
+  ELEMENT_NAMES[174] = ELT_MGLYPH;
+  ELEMENT_NAMES[175] = ELT_MPATH;
+  ELEMENT_NAMES[176] = ELT_TH;
+  ELEMENT_NAMES[177] = ELT_TEXTPATH;
+  ELEMENT_NAMES[178] = ELT_MI;
+  ELEMENT_NAMES[179] = ELT_MARK;
+  ELEMENT_NAMES[180] = ELT_MASK;
+  ELEMENT_NAMES[181] = ELT_DL;
+  ELEMENT_NAMES[182] = ELT_OL;
+  ELEMENT_NAMES[183] = ELT_UL;
+  ELEMENT_NAMES[184] = ELT_SYMBOL;
+  ELEMENT_NAMES[185] = ELT_ANIMATETRANSFORM;
+  ELEMENT_NAMES[186] = ELT_EM;
+  ELEMENT_NAMES[187] = ELT_MENUITEM;
+  ELEMENT_NAMES[188] = ELT_ANIMATEMOTION;
+  ELEMENT_NAMES[189] = ELT_CAPTION;
+  ELEMENT_NAMES[190] = ELT_MN;
+  ELEMENT_NAMES[191] = ELT_MAIN;
+  ELEMENT_NAMES[192] = ELT_POLYGON;
+  ELEMENT_NAMES[193] = ELT_SPAN;
+  ELEMENT_NAMES[194] = ELT_TSPAN;
+  ELEMENT_NAMES[195] = ELT_MO;
+  ELEMENT_NAMES[196] = ELT_COLGROUP;
+  ELEMENT_NAMES[197] = ELT_HGROUP;
+  ELEMENT_NAMES[198] = ELT_OPTGROUP;
+  ELEMENT_NAMES[199] = ELT_STOP;
+  ELEMENT_NAMES[200] = ELT_ABBR;
+  ELEMENT_NAMES[201] = ELT_CENTER;
+  ELEMENT_NAMES[202] = ELT_FEFUNCR;
+  ELEMENT_NAMES[203] = ELT_FILTER;
 }
 
 void
 nsHtml5ElementName::releaseStatics()
 {
   delete ELT_ANNOTATION_XML;
   delete ELT_ISINDEX;
   delete ELT_BIG;
--- a/parser/html/nsHtml5ElementName.h
+++ b/parser/html/nsHtml5ElementName.h
@@ -89,24 +89,44 @@ public:
 
   inline int32_t getGroup() { return flags & nsHtml5ElementName::GROUP_MASK; }
 
   inline bool isInterned()
   {
     return !(flags & nsHtml5ElementName::NOT_INTERNED);
   }
 
+  inline static int32_t levelOrderBinarySearch(jArray<int32_t, int32_t> data,
+                                               int32_t key)
+  {
+    int32_t n = data.length;
+    int32_t i = 0;
+    while (i < n) {
+      int32_t val = data[i];
+      if (val < key) {
+        i = 2 * i + 2;
+      } else if (val > key) {
+        i = 2 * i + 1;
+      } else {
+        return i;
+      }
+    }
+    return -1;
+  }
+
   inline static nsHtml5ElementName* elementNameByBuffer(
     char16_t* buf,
     int32_t offset,
     int32_t length,
     nsHtml5AtomTable* interner)
   {
     uint32_t hash = nsHtml5ElementName::bufToHash(buf, length);
-    int32_t index = nsHtml5ElementName::ELEMENT_HASHES.binarySearch(hash);
+    jArray<int32_t, int32_t> hashes;
+    hashes = nsHtml5ElementName::ELEMENT_HASHES;
+    int32_t index = levelOrderBinarySearch(hashes, hash);
     if (index < 0) {
       return nullptr;
     } else {
       nsHtml5ElementName* elementName =
         nsHtml5ElementName::ELEMENT_NAMES[index];
       nsIAtom* name = elementName->name;
       if (!nsHtml5Portability::localEqualsBuffer(name, buf, offset, length)) {
         return nullptr;