Fix the "extra space in TypePad blogs" Emerson problem by adding the ability to...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Aug 2004 19:04:54 +0000 (19:04 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Aug 2004 19:04:54 +0000 (19:04 +0000)
Also added support for explicitly preventing margin collapsing.

        Reviewed by mjs

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::isSelfCollapsingBlock):
        (khtml::RenderBlock::layoutBlockChildren):
        * khtml/rendering/render_style.cpp:
        (StyleSurroundData::StyleSurroundData):
        (StyleSurroundData::operator==):
        (RenderStyle::diff):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::RenderStyle::marginTopCollapse):
        (khtml::RenderStyle::marginBottomCollapse):
        (khtml::RenderStyle::setMarginTopCollapse):
        (khtml::RenderStyle::setMarginBottomCollapse):
        (khtml::RenderStyle::initialMarginTopCollapse):
        (khtml::RenderStyle::initialMarginBottomCollapse):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7362 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 files changed:
WebCore/ChangeLog-2005-08-23
WebCore/khtml/css/cssparser.cpp
WebCore/khtml/css/cssproperties.c
WebCore/khtml/css/cssproperties.h
WebCore/khtml/css/cssproperties.in
WebCore/khtml/css/cssstyleselector.cpp
WebCore/khtml/css/cssvalues.c
WebCore/khtml/css/cssvalues.h
WebCore/khtml/css/cssvalues.in
WebCore/khtml/rendering/render_block.cpp
WebCore/khtml/rendering/render_style.cpp
WebCore/khtml/rendering/render_style.h

index 612032d382b5810194fb8cfe07cbfb5052123ce0..c235c46ab16691a1ab6d9bb7ab76d444382e2722 100644 (file)
@@ -1,3 +1,40 @@
+2004-08-25  David Hyatt  <hyatt@apple.com>
+
+       Fix the "extra space in TypePad blogs" Emerson problem by adding the ability to collapse away margins.
+       Also added support for explicitly preventing margin collapsing.
+       
+        Reviewed by mjs
+
+        * khtml/css/cssparser.cpp:
+        (CSSParser::parseValue):
+        * khtml/css/cssproperties.c:
+        (hash_prop):
+        (findProp):
+        * khtml/css/cssproperties.h:
+        * khtml/css/cssproperties.in:
+        * khtml/css/cssstyleselector.cpp:
+        (khtml::CSSStyleSelector::applyProperty):
+        * khtml/css/cssvalues.c:
+        (hash_val):
+        (findValue):
+        * khtml/css/cssvalues.h:
+        * khtml/css/cssvalues.in:
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::isSelfCollapsingBlock):
+        (khtml::RenderBlock::layoutBlockChildren):
+        * khtml/rendering/render_style.cpp:
+        (StyleSurroundData::StyleSurroundData):
+        (StyleSurroundData::operator==):
+        (RenderStyle::diff):
+        * khtml/rendering/render_style.h:
+        (khtml::):
+        (khtml::RenderStyle::marginTopCollapse):
+        (khtml::RenderStyle::marginBottomCollapse):
+        (khtml::RenderStyle::setMarginTopCollapse):
+        (khtml::RenderStyle::setMarginBottomCollapse):
+        (khtml::RenderStyle::initialMarginTopCollapse):
+        (khtml::RenderStyle::initialMarginBottomCollapse):
+
 2004-08-24  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by Hyatt
index 86ce8bd5cb87c67a5902490b3ab9b7cfd3b9694c..9317a02c54e24907492e39d7c5a9e022ed52af0a 100644 (file)
@@ -1136,6 +1136,28 @@ bool CSSParser::parseValue( int propId, bool important )
         if (id == CSS_VAL_CLIP || id == CSS_VAL_ELLIPSIS)
             valid_primitive = true;
         break;
+    case CSS_PROP__KHTML_MARGIN_COLLAPSE: {
+        const int properties[2] = { CSS_PROP__KHTML_MARGIN_TOP_COLLAPSE,
+            CSS_PROP__KHTML_MARGIN_BOTTOM_COLLAPSE };
+        int num = valueList->numValues;
+        if (num == 1) {
+            if (!parseValue(properties[0], important)) return false;
+            CSSValueImpl* value = parsedProperties[numParsedProperties-1]->value();
+            addProperty(properties[1], value, important);
+            return true;
+        }
+        else if (num == 2) {
+            if (!parseValue(properties[0], important)) return false;
+            if (!parseValue(properties[1], important)) return false;
+            return true;
+        }
+        return false;
+    }
+    case CSS_PROP__KHTML_MARGIN_TOP_COLLAPSE:
+    case CSS_PROP__KHTML_MARGIN_BOTTOM_COLLAPSE:
+        if (id == CSS_VAL_COLLAPSE || id == CSS_VAL_SEPARATE || id == CSS_VAL_DISCARD)
+            valid_primitive = true;
+        break;
     // End of CSS3 properties
 
 #if APPLE_CHANGES
index 500cb99b2aa86e887ad6f1de49090096ec6a0cae..24eb42dbb9fdfae549a32041a4347272f9f32dcf 100644 (file)
@@ -7,7 +7,7 @@ struct props {
     const char *name;
     int id;
 };
-/* maximum key range = 1312, duplicates = 0 */
+/* maximum key range = 1772, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -21,32 +21,32 @@ hash_prop (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317,    0, 1317, 1317, 1317, 1317,
-      1317,    0, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317,   15,   10,    0,
-         0,    0,  185,   50,    0,    0,    0,   10,    0,   10,
-       360,    0,  100,  105,    0,   25,    0,   10,   25,  225,
-       250,  355,    5, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
-      1317, 1317, 1317, 1317, 1317, 1317
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777,    0, 1777, 1777, 1777, 1777,
+      1777,   10, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777,    5,   20,    0,
+         0,    0,  185,  135,    0,    0,   10,  120,    0,   20,
+       445,    0,   90,   30,    0,   15,    0,  140,   25,  335,
+       340,   85,    0, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777,
+      1777, 1777, 1777, 1777, 1777, 1777
     };
   register int hval = len;
 
@@ -130,277 +130,326 @@ findProp (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 136,
+      TOTAL_KEYWORDS = 139,
       MIN_WORD_LENGTH = 3,
       MAX_WORD_LENGTH = 32,
       MIN_HASH_VALUE = 5,
-      MAX_HASH_VALUE = 1316
+      MAX_HASH_VALUE = 1776
     };
 
   static const struct props wordlist_prop[] =
     {
       {"color", CSS_PROP_COLOR},
-      {"border", CSS_PROP_BORDER},
       {"clear", CSS_PROP_CLEAR},
+      {"size", CSS_PROP_SIZE},
+      {"border", CSS_PROP_BORDER},
       {"border-color", CSS_PROP_BORDER_COLOR},
       {"bottom", CSS_PROP_BOTTOM},
-      {"size", CSS_PROP_SIZE},
-      {"cursor", CSS_PROP_CURSOR},
       {"border-bottom", CSS_PROP_BORDER_BOTTOM},
       {"border-bottom-color", CSS_PROP_BORDER_BOTTOM_COLOR},
-      {"right", CSS_PROP_RIGHT},
-      {"height", CSS_PROP_HEIGHT},
-      {"border-right", CSS_PROP_BORDER_RIGHT},
-      {"border-right-color", CSS_PROP_BORDER_RIGHT_COLOR},
-      {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR},
-      {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
       {"top", CSS_PROP_TOP},
       {"clip", CSS_PROP_CLIP},
       {"border-top", CSS_PROP_BORDER_TOP},
-      {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR},
+      {"list-style", CSS_PROP_LIST_STYLE},
       {"border-top-color", CSS_PROP_BORDER_TOP_COLOR},
-      {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
-      {"quotes", CSS_PROP_QUOTES},
+      {"border-style", CSS_PROP_BORDER_STYLE},
+      {"right", CSS_PROP_RIGHT},
+      {"height", CSS_PROP_HEIGHT},
       {"border-collapse", CSS_PROP_BORDER_COLLAPSE},
-      {"page", CSS_PROP_PAGE},
-      {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE},
-      {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
+      {"visibility", CSS_PROP_VISIBILITY},
+      {"cursor", CSS_PROP_CURSOR},
+      {"border-right", CSS_PROP_BORDER_RIGHT},
+      {"border-right-color", CSS_PROP_BORDER_RIGHT_COLOR},
+      {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
+      {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR},
+      {"opacity", CSS_PROP_OPACITY},
       {"left", CSS_PROP_LEFT},
+      {"quotes", CSS_PROP_QUOTES},
       {"float", CSS_PROP_FLOAT},
+      {"display", CSS_PROP_DISPLAY},
+      {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR},
       {"border-left", CSS_PROP_BORDER_LEFT},
+      {"empty-cells", CSS_PROP_EMPTY_CELLS},
       {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR},
+      {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
+      {"page", CSS_PROP_PAGE},
+      {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR},
+      {"table-layout", CSS_PROP_TABLE_LAYOUT},
+      {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
+      {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
+      {"list-style-type", CSS_PROP_LIST_STYLE_TYPE},
+      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
+      {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
+      {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
       {"width", CSS_PROP_WIDTH},
+      {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE},
       {"border-width", CSS_PROP_BORDER_WIDTH},
-      {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR},
-      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
-      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
-      {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
       {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR},
-      {"max-height", CSS_PROP_MAX_HEIGHT},
+      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
       {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR},
-      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
-      {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
+      {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
       {"direction", CSS_PROP_DIRECTION},
+      {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
       {"white-space", CSS_PROP_WHITE_SPACE},
-      {"outline", CSS_PROP_OUTLINE},
-      {"outline-color", CSS_PROP_OUTLINE_COLOR},
-      {"unicode-bidi", CSS_PROP_UNICODE_BIDI},
-      {"border-style", CSS_PROP_BORDER_STYLE},
-      {"counter-reset", CSS_PROP_COUNTER_RESET},
-      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
-      {"list-style", CSS_PROP_LIST_STYLE},
+      {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
+      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
+      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
+      {"max-height", CSS_PROP_MAX_HEIGHT},
+      {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
+      {"overflow", CSS_PROP_OVERFLOW},
+      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
+      {"position", CSS_PROP_POSITION},
+      {"orphans", CSS_PROP_ORPHANS},
+      {"caption-side", CSS_PROP_CAPTION_SIDE},
       {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
-      {"table-layout", CSS_PROP_TABLE_LAYOUT},
-      {"-khtml-box-pack", CSS_PROP__KHTML_BOX_PACK},
       {"line-height", CSS_PROP_LINE_HEIGHT},
-      {"visibility", CSS_PROP_VISIBILITY},
-      {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
+      {"outline", CSS_PROP_OUTLINE},
+      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
+      {"outline-color", CSS_PROP_OUTLINE_COLOR},
+      {"-khtml-user-modify", CSS_PROP__KHTML_USER_MODIFY},
       {"min-height", CSS_PROP_MIN_HEIGHT},
-      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
       {"margin", CSS_PROP_MARGIN},
-      {"overflow", CSS_PROP_OVERFLOW},
-      {"-khtml-flow-mode", CSS_PROP__KHTML_FLOW_MODE},
-      {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
-      {"background", CSS_PROP_BACKGROUND},
-      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
-      {"background-color", CSS_PROP_BACKGROUND_COLOR},
-      {"opacity", CSS_PROP_OPACITY},
+      {"counter-reset", CSS_PROP_COUNTER_RESET},
+      {"unicode-bidi", CSS_PROP_UNICODE_BIDI},
       {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
-      {"widows", CSS_PROP_WIDOWS},
-      {"position", CSS_PROP_POSITION},
-      {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
-      {"margin-right", CSS_PROP_MARGIN_RIGHT},
-      {"empty-cells", CSS_PROP_EMPTY_CELLS},
-      {"display", CSS_PROP_DISPLAY},
-      {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
-      {"orphans", CSS_PROP_ORPHANS},
-      {"max-width", CSS_PROP_MAX_WIDTH},
-      {"caption-side", CSS_PROP_CAPTION_SIDE},
-      {"text-shadow", CSS_PROP_TEXT_SHADOW},
+      {"font", CSS_PROP_FONT},
+      {"font-size", CSS_PROP_FONT_SIZE},
+      {"font-stretch", CSS_PROP_FONT_STRETCH},
+      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
       {"padding", CSS_PROP_PADDING},
-      {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
+      {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
+      {"widows", CSS_PROP_WIDOWS},
+      {"-khtml-flow-mode", CSS_PROP__KHTML_FLOW_MODE},
+      {"outline-style", CSS_PROP_OUTLINE_STYLE},
+      {"letter-spacing", CSS_PROP_LETTER_SPACING},
       {"margin-top", CSS_PROP_MARGIN_TOP},
-      {"background-image", CSS_PROP_BACKGROUND_IMAGE},
-      {"font", CSS_PROP_FONT},
+      {"text-shadow", CSS_PROP_TEXT_SHADOW},
+      {"max-width", CSS_PROP_MAX_WIDTH},
+      {"border-spacing", CSS_PROP_BORDER_SPACING},
       {"padding-bottom", CSS_PROP_PADDING_BOTTOM},
-      {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
-      {"letter-spacing", CSS_PROP_LETTER_SPACING},
+      {"-khtml-box-pack", CSS_PROP__KHTML_BOX_PACK},
       {"-apple-text-size-adjust", CSS_PROP__APPLE_TEXT_SIZE_ADJUST},
-      {"border-spacing", CSS_PROP_BORDER_SPACING},
-      {"font-stretch", CSS_PROP_FONT_STRETCH},
-      {"font-size", CSS_PROP_FONT_SIZE},
-      {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
-      {"padding-right", CSS_PROP_PADDING_RIGHT},
-      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
-      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
-      {"min-width", CSS_PROP_MIN_WIDTH},
-      {"outline-width", CSS_PROP_OUTLINE_WIDTH},
+      {"font-style", CSS_PROP_FONT_STYLE},
+      {"margin-right", CSS_PROP_MARGIN_RIGHT},
+      {"-apple-line-clamp", CSS_PROP__APPLE_LINE_CLAMP},
+      {"padding-top", CSS_PROP_PADDING_TOP},
       {"z-index", CSS_PROP_Z_INDEX},
-      {"-khtml-user-modify", CSS_PROP__KHTML_USER_MODIFY},
       {"margin-left", CSS_PROP_MARGIN_LEFT},
-      {"padding-top", CSS_PROP_PADDING_TOP},
+      {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
       {"text-decoration", CSS_PROP_TEXT_DECORATION},
+      {"min-width", CSS_PROP_MIN_WIDTH},
+      {"text-decoration-color", CSS_PROP_TEXT_DECORATION_COLOR},
+      {"padding-right", CSS_PROP_PADDING_RIGHT},
       {"font-size-adjust", CSS_PROP_FONT_SIZE_ADJUST},
+      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
+      {"padding-left", CSS_PROP_PADDING_LEFT},
+      {"background", CSS_PROP_BACKGROUND},
+      {"-khtml-margin-collapse", CSS_PROP__KHTML_MARGIN_COLLAPSE},
+      {"background-color", CSS_PROP_BACKGROUND_COLOR},
       {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION},
-      {"text-decoration-color", CSS_PROP_TEXT_DECORATION_COLOR},
+      {"content", CSS_PROP_CONTENT},
+      {"text-overflow", CSS_PROP_TEXT_OVERFLOW},
       {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING},
+      {"-khtml-margin-bottom-collapse", CSS_PROP__KHTML_MARGIN_BOTTOM_COLLAPSE},
+      {"outline-width", CSS_PROP_OUTLINE_WIDTH},
+      {"text-align", CSS_PROP_TEXT_ALIGN},
+      {"font-family", CSS_PROP_FONT_FAMILY},
       {"-khtml-box-orient", CSS_PROP__KHTML_BOX_ORIENT},
       {"-khtml-box-direction", CSS_PROP__KHTML_BOX_DIRECTION},
+      {"-khtml-margin-top-collapse", CSS_PROP__KHTML_MARGIN_TOP_COLLAPSE},
       {"-khtml-box-lines", CSS_PROP__KHTML_BOX_LINES},
-      {"text-align", CSS_PROP_TEXT_ALIGN},
-      {"text-overflow", CSS_PROP_TEXT_OVERFLOW},
-      {"-apple-line-clamp", CSS_PROP__APPLE_LINE_CLAMP},
-      {"-khtml-box-align", CSS_PROP__KHTML_BOX_ALIGN},
-      {"padding-left", CSS_PROP_PADDING_LEFT},
-      {"content", CSS_PROP_CONTENT},
-      {"-khtml-box-flex", CSS_PROP__KHTML_BOX_FLEX},
-      {"outline-style", CSS_PROP_OUTLINE_STYLE},
+      {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
       {"outline-offset", CSS_PROP_OUTLINE_OFFSET},
+      {"text-transform", CSS_PROP_TEXT_TRANSFORM},
       {"word-spacing", CSS_PROP_WORD_SPACING},
-      {"-khtml-binding", CSS_PROP__KHTML_BINDING},
+      {"-khtml-box-flex", CSS_PROP__KHTML_BOX_FLEX},
+      {"background-image", CSS_PROP_BACKGROUND_IMAGE},
+      {"-khtml-box-align", CSS_PROP__KHTML_BOX_ALIGN},
       {"font-weight", CSS_PROP_FONT_WEIGHT},
+      {"font-variant", CSS_PROP_FONT_VARIANT},
+      {"-khtml-binding", CSS_PROP__KHTML_BINDING},
+      {"text-indent", CSS_PROP_TEXT_INDENT},
+      {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
+      {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING},
       {"-khtml-box-ordinal-group", CSS_PROP__KHTML_BOX_ORDINAL_GROUP},
-      {"text-transform", CSS_PROP_TEXT_TRANSFORM},
-      {"list-style-type", CSS_PROP_LIST_STYLE_TYPE},
       {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
       {"-khtml-box-flex-group", CSS_PROP__KHTML_BOX_FLEX_GROUP},
-      {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
-      {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
-      {"font-style", CSS_PROP_FONT_STYLE},
       {"background-position", CSS_PROP_BACKGROUND_POSITION},
-      {"font-variant", CSS_PROP_FONT_VARIANT},
-      {"text-indent", CSS_PROP_TEXT_INDENT},
-      {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING},
       {"counter-increment", CSS_PROP_COUNTER_INCREMENT},
-      {"font-family", CSS_PROP_FONT_FAMILY},
-      {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X},
-      {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y}
+      {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y},
+      {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X}
     };
 
   static const short lookup[] =
     {
        -1,  -1,  -1,  -1,  -1,   0,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,   1,  -1,  -1,  -1,
-        2,  -1,   3,  -1,  -1,  -1,   4,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,   5,  -1,  -1,  -1,  -1,  -1,
-       -1,   6,  -1,   7,  -1,  -1,  -1,  -1,  -1,   8,
-       -1,  -1,  -1,  -1,  -1,   9,  10,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  11,  -1,  -1,  -1,  -1,  -1,  12,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  13,  -1,  14,  -1,
-       -1,  -1,  -1,  15,  16,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       17,  -1,  -1,  18,  -1,  -1,  19,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  20,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  21,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  22,  -1,  -1,  -1,  23,
-       -1,  -1,  -1,  -1,  24,  25,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  26,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  27,  28,  -1,  -1,  -1,
-       -1,  -1,  29,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       30,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  31,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       32,  -1,  -1,  -1,  33,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  34,  -1,  35,  -1,  -1,  -1,  -1,
-       -1,  36,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  37,  -1,  38,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  39,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  40,  -1,  -1,  41,
-       -1,  -1,  -1,  -1,  -1,  -1,  42,  43,  -1,  -1,
-       -1,  -1,  -1,  44,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  45,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  46,  -1,  -1,  -1,  -1,  -1,  47,  -1,
-       -1,  -1,  48,  -1,  -1,  49,  50,  51,  -1,  -1,
-       52,  53,  -1,  -1,  -1,  54,  -1,  -1,  -1,  55,
-       56,  -1,  -1,  -1,  -1,  -1,  -1,  57,  -1,  -1,
-       -1,  58,  -1,  59,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  60,  -1,  61,  -1,
-       -1,  -1,  -1,  -1,  -1,  62,  -1,  -1,  63,  -1,
-       -1,  64,  -1,  -1,  -1,  -1,  -1,  65,  -1,  66,
-       -1,  67,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  68,  -1,  -1,  69,  70,  -1,  -1,
-       -1,  71,  72,  -1,  -1,  -1,  73,  74,  -1,  75,
-       -1,  -1,  76,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  77,  -1,  -1,  -1,
-       -1,  -1,  78,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  79,  80,  81,  -1,  -1,  82,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  83,
-       84,  -1,  -1,  -1,  85,  -1,  -1,  -1,  86,  -1,
-       -1,  -1,  -1,  -1,  87,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  88,  -1,  89,  -1,  -1,  90,  91,  -1,
+        1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   2,
+       -1,  -1,  -1,  -1,  -1,  -1,   3,  -1,  -1,  -1,
+       -1,  -1,   4,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,   5,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,   6,  -1,  -1,  -1,  -1,  -1,   7,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,   8,   9,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       10,  -1,  -1,  -1,  -1,  11,  12,  -1,  -1,  -1,
+       -1,  -1,  13,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       14,  15,  -1,  -1,  -1,  16,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  17,  -1,  -1,  -1,  -1,
+       -1,  18,  -1,  -1,  -1,  -1,  -1,  19,  -1,  -1,
+       -1,  -1,  -1,  20,  -1,  -1,  -1,  -1,  -1,  21,
+       -1,  -1,  -1,  -1,  -1,  -1,  22,  23,  -1,  24,
+       -1,  25,  -1,  -1,  -1,  26,  -1,  -1,  -1,  -1,
+       -1,  -1,  27,  -1,  -1,  -1,  -1,  -1,  28,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  29,  -1,  -1,  -1,
+       -1,  30,  31,  -1,  -1,  -1,  32,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  33,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       34,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  35,  -1,  -1,
+       -1,  -1,  -1,  36,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  37,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  38,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  39,  -1,  -1,  -1,  -1,  -1,  40,  -1,
+       -1,  -1,  -1,  -1,  -1,  41,  -1,  -1,  -1,  -1,
+       42,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  43,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  44,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  45,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  46,  -1,  -1,  47,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  48,  -1,  -1,  49,  50,  51,  -1,  -1,  -1,
+       52,  53,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  54,  -1,
+       55,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  56,  -1,  -1,  -1,
+       -1,  -1,  -1,  57,  -1,  -1,  -1,  58,  59,  -1,
+       -1,  -1,  60,  -1,  -1,  -1,  -1,  61,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  62,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  63,  64,  -1,  -1,  -1,  -1,  65,  66,  -1,
+       -1,  -1,  -1,  67,  -1,  -1,  -1,  -1,  -1,  -1,
+       68,  69,  -1,  70,  -1,  -1,  -1,  71,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  72,
+       -1,  -1,  -1,  -1,  73,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  74,  -1,  -1,  75,  76,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  77,  -1,  78,  -1,  -1,  -1,  -1,  -1,
+       -1,  79,  -1,  -1,  -1,  -1,  80,  -1,  81,  -1,
+       -1,  -1,  -1,  -1,  82,  83,  84,  -1,  -1,  85,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  86,  -1,  -1,  -1,  -1,  87,
+       88,  -1,  -1,  89,  -1,  -1,  -1,  -1,  -1,  -1,
+       90,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  91,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  92,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  93,  -1,  94,  -1,  -1,  -1,  95,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  93,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  94,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  95,  -1,  -1,  96,  97,  -1,  -1,  -1,  98,
+       -1,  99,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1, 100,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 101,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  96,  97,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  98,  -1,  -1,  -1,  -1,  99,  -1,  -1,  -1,
-      100, 101,  -1,  -1,  -1, 102, 103,  -1,  -1,  -1,
-      104,  -1,  -1,  -1,  -1,  -1,  -1, 105,  -1,  -1,
-      106,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 102,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 107,  -1,  -1,  -1, 108,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 109,  -1,
+       -1,  -1, 103,  -1,  -1, 104,  -1, 105,  -1,  -1,
+       -1, 106,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1, 107,  -1, 108, 109,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 110,  -1,  -1,
-       -1, 111, 112,  -1,  -1,  -1,  -1, 113,  -1,  -1,
-      114,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+      110,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1, 111,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1, 112,  -1, 113, 114,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1, 115,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 116,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 117,  -1,  -1,
+       -1,  -1, 115,  -1,  -1, 116,  -1,  -1,  -1,  -1,
+       -1, 117,  -1,  -1,  -1,  -1, 118, 119,  -1,  -1,
+       -1,  -1,  -1,  -1, 120,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1, 118,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 119,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 120,
+       -1,  -1,  -1,  -1, 121,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 122,  -1,  -1,
+      123, 124,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 125,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 126,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 127,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 121,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 122, 123,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 124,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 125,
-       -1,  -1,  -1,  -1, 126,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 127,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 128,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 129,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 130,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 131,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 129,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 130,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 131,  -1,  -1,  -1,  -1,  -1,  -1, 132,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 132,  -1,  -1,
        -1, 133,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 134,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1, 135,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 136,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 137,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 134,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
@@ -410,7 +459,7 @@ findProp (register const char *str, register unsigned int len)
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 135
+       -1,  -1,  -1,  -1,  -1,  -1, 138
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -498,6 +547,9 @@ static const char * const propertyList[] = {
 "margin-right", 
 "margin-bottom", 
 "margin-left", 
+"-khtml-margin-collapse", 
+"-khtml-margin-top-collapse", 
+"-khtml-margin-bottom-collapse", 
 "-khtml-marquee", 
 "-khtml-marquee-direction", 
 "-khtml-marquee-increment", 
index 9eeeb7cbab19a96a22dbdd3fad24881b47a3ba04..065da037d382bd8d1086a32d1884c8b5e91a5f6c 100644 (file)
 #define CSS_PROP_MARGIN_RIGHT 62
 #define CSS_PROP_MARGIN_BOTTOM 63
 #define CSS_PROP_MARGIN_LEFT 64
-#define CSS_PROP__KHTML_MARQUEE 65
-#define CSS_PROP__KHTML_MARQUEE_DIRECTION 66
-#define CSS_PROP__KHTML_MARQUEE_INCREMENT 67
-#define CSS_PROP__KHTML_MARQUEE_REPETITION 68
-#define CSS_PROP__KHTML_MARQUEE_SPEED 69
-#define CSS_PROP__KHTML_MARQUEE_STYLE 70
-#define CSS_PROP_MAX_HEIGHT 71
-#define CSS_PROP_MAX_WIDTH 72
-#define CSS_PROP_MIN_HEIGHT 73
-#define CSS_PROP_MIN_WIDTH 74
-#define CSS_PROP_OPACITY 75
-#define CSS_PROP_ORPHANS 76
-#define CSS_PROP_OUTLINE_COLOR 77
-#define CSS_PROP_OUTLINE_OFFSET 78
-#define CSS_PROP_OUTLINE_STYLE 79
-#define CSS_PROP_OUTLINE_WIDTH 80
-#define CSS_PROP_OVERFLOW 81
-#define CSS_PROP_PADDING_TOP 82
-#define CSS_PROP_PADDING_RIGHT 83
-#define CSS_PROP_PADDING_BOTTOM 84
-#define CSS_PROP_PADDING_LEFT 85
-#define CSS_PROP_PAGE 86
-#define CSS_PROP_PAGE_BREAK_AFTER 87
-#define CSS_PROP_PAGE_BREAK_BEFORE 88
-#define CSS_PROP_PAGE_BREAK_INSIDE 89
-#define CSS_PROP_POSITION 90
-#define CSS_PROP_QUOTES 91
-#define CSS_PROP_RIGHT 92
-#define CSS_PROP_SIZE 93
-#define CSS_PROP_TABLE_LAYOUT 94
-#define CSS_PROP_TEXT_ALIGN 95
-#define CSS_PROP_TEXT_DECORATION 96
-#define CSS_PROP_TEXT_DECORATION_COLOR 97
-#define CSS_PROP_TEXT_INDENT 98
-#define CSS_PROP_TEXT_OVERFLOW 99
-#define CSS_PROP_TEXT_SHADOW 100
-#define CSS_PROP_TEXT_TRANSFORM 101
-#define CSS_PROP__APPLE_TEXT_SIZE_ADJUST 102
-#define CSS_PROP_TOP 103
-#define CSS_PROP_UNICODE_BIDI 104
-#define CSS_PROP__KHTML_USER_DRAG 105
-#define CSS_PROP__KHTML_USER_MODIFY 106
-#define CSS_PROP__KHTML_USER_SELECT 107
-#define CSS_PROP_VERTICAL_ALIGN 108
-#define CSS_PROP_VISIBILITY 109
-#define CSS_PROP_WHITE_SPACE 110
-#define CSS_PROP_WIDOWS 111
-#define CSS_PROP_WIDTH 112
-#define CSS_PROP_WORD_SPACING 113
-#define CSS_PROP_Z_INDEX 114
-#define CSS_PROP_BACKGROUND 115
-#define CSS_PROP_BORDER 116
-#define CSS_PROP_BORDER_COLOR 117
-#define CSS_PROP_BORDER_STYLE 118
-#define CSS_PROP_BORDER_TOP 119
-#define CSS_PROP_BORDER_RIGHT 120
-#define CSS_PROP_BORDER_BOTTOM 121
-#define CSS_PROP_BORDER_LEFT 122
-#define CSS_PROP_BORDER_WIDTH 123
-#define CSS_PROP_FONT 124
-#define CSS_PROP_LIST_STYLE 125
-#define CSS_PROP_MARGIN 126
-#define CSS_PROP_OUTLINE 127
-#define CSS_PROP_PADDING 128
-#define CSS_PROP_SCROLLBAR_FACE_COLOR 129
-#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 130
-#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 131
-#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 132
-#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 133
-#define CSS_PROP_SCROLLBAR_TRACK_COLOR 134
-#define CSS_PROP_SCROLLBAR_ARROW_COLOR 135
-#define CSS_PROP__KHTML_FLOW_MODE 136
+#define CSS_PROP__KHTML_MARGIN_COLLAPSE 65
+#define CSS_PROP__KHTML_MARGIN_TOP_COLLAPSE 66
+#define CSS_PROP__KHTML_MARGIN_BOTTOM_COLLAPSE 67
+#define CSS_PROP__KHTML_MARQUEE 68
+#define CSS_PROP__KHTML_MARQUEE_DIRECTION 69
+#define CSS_PROP__KHTML_MARQUEE_INCREMENT 70
+#define CSS_PROP__KHTML_MARQUEE_REPETITION 71
+#define CSS_PROP__KHTML_MARQUEE_SPEED 72
+#define CSS_PROP__KHTML_MARQUEE_STYLE 73
+#define CSS_PROP_MAX_HEIGHT 74
+#define CSS_PROP_MAX_WIDTH 75
+#define CSS_PROP_MIN_HEIGHT 76
+#define CSS_PROP_MIN_WIDTH 77
+#define CSS_PROP_OPACITY 78
+#define CSS_PROP_ORPHANS 79
+#define CSS_PROP_OUTLINE_COLOR 80
+#define CSS_PROP_OUTLINE_OFFSET 81
+#define CSS_PROP_OUTLINE_STYLE 82
+#define CSS_PROP_OUTLINE_WIDTH 83
+#define CSS_PROP_OVERFLOW 84
+#define CSS_PROP_PADDING_TOP 85
+#define CSS_PROP_PADDING_RIGHT 86
+#define CSS_PROP_PADDING_BOTTOM 87
+#define CSS_PROP_PADDING_LEFT 88
+#define CSS_PROP_PAGE 89
+#define CSS_PROP_PAGE_BREAK_AFTER 90
+#define CSS_PROP_PAGE_BREAK_BEFORE 91
+#define CSS_PROP_PAGE_BREAK_INSIDE 92
+#define CSS_PROP_POSITION 93
+#define CSS_PROP_QUOTES 94
+#define CSS_PROP_RIGHT 95
+#define CSS_PROP_SIZE 96
+#define CSS_PROP_TABLE_LAYOUT 97
+#define CSS_PROP_TEXT_ALIGN 98
+#define CSS_PROP_TEXT_DECORATION 99
+#define CSS_PROP_TEXT_DECORATION_COLOR 100
+#define CSS_PROP_TEXT_INDENT 101
+#define CSS_PROP_TEXT_OVERFLOW 102
+#define CSS_PROP_TEXT_SHADOW 103
+#define CSS_PROP_TEXT_TRANSFORM 104
+#define CSS_PROP__APPLE_TEXT_SIZE_ADJUST 105
+#define CSS_PROP_TOP 106
+#define CSS_PROP_UNICODE_BIDI 107
+#define CSS_PROP__KHTML_USER_DRAG 108
+#define CSS_PROP__KHTML_USER_MODIFY 109
+#define CSS_PROP__KHTML_USER_SELECT 110
+#define CSS_PROP_VERTICAL_ALIGN 111
+#define CSS_PROP_VISIBILITY 112
+#define CSS_PROP_WHITE_SPACE 113
+#define CSS_PROP_WIDOWS 114
+#define CSS_PROP_WIDTH 115
+#define CSS_PROP_WORD_SPACING 116
+#define CSS_PROP_Z_INDEX 117
+#define CSS_PROP_BACKGROUND 118
+#define CSS_PROP_BORDER 119
+#define CSS_PROP_BORDER_COLOR 120
+#define CSS_PROP_BORDER_STYLE 121
+#define CSS_PROP_BORDER_TOP 122
+#define CSS_PROP_BORDER_RIGHT 123
+#define CSS_PROP_BORDER_BOTTOM 124
+#define CSS_PROP_BORDER_LEFT 125
+#define CSS_PROP_BORDER_WIDTH 126
+#define CSS_PROP_FONT 127
+#define CSS_PROP_LIST_STYLE 128
+#define CSS_PROP_MARGIN 129
+#define CSS_PROP_OUTLINE 130
+#define CSS_PROP_PADDING 131
+#define CSS_PROP_SCROLLBAR_FACE_COLOR 132
+#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 133
+#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 134
+#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 135
+#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 136
+#define CSS_PROP_SCROLLBAR_TRACK_COLOR 137
+#define CSS_PROP_SCROLLBAR_ARROW_COLOR 138
+#define CSS_PROP__KHTML_FLOW_MODE 139
 
 #define CSS_PROP_MAX CSS_PROP_Z_INDEX
-#define CSS_PROP_TOTAL 137
+#define CSS_PROP_TOTAL 140
 #endif
 
index 44bd3ead69a27ce79fa6291e64b1ca9555eda9be..4f863827e55fefdaac49ea9c3642c74d50720530 100644 (file)
@@ -76,6 +76,9 @@ margin-top
 margin-right
 margin-bottom
 margin-left
+-khtml-margin-collapse
+-khtml-margin-top-collapse
+-khtml-margin-bottom-collapse
 -khtml-marquee
 -khtml-marquee-direction
 -khtml-marquee-increment
index 53a02aa5135f8724205281e678c7a932747e1a12..9378a77d907ade30c095a2bd6fa0245717618317 100644 (file)
@@ -2257,9 +2257,14 @@ void CSSStyleSelector::applyProperty( int id, DOM::CSSValueImpl *value )
         break;
     }
     case CSS_PROP_BORDER_SPACING: {
-        if(value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setHorizontalBorderSpacing(parentStyle->horizontalBorderSpacing());
-        style->setVerticalBorderSpacing(parentStyle->verticalBorderSpacing());
+        if (isInherit) {
+            style->setHorizontalBorderSpacing(parentStyle->horizontalBorderSpacing());
+            style->setVerticalBorderSpacing(parentStyle->verticalBorderSpacing());
+        }
+        else if (isInitial) {
+            style->setHorizontalBorderSpacing(0);
+            style->setVerticalBorderSpacing(0);
+        }
         break;
     }
     case CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING: {
@@ -3642,6 +3647,51 @@ void CSSStyleSelector::applyProperty( int id, DOM::CSSValueImpl *value )
         style->setTextOverflow(primitiveValue->getIdent() == CSS_VAL_ELLIPSIS);
         break;
     }
+    case CSS_PROP__KHTML_MARGIN_COLLAPSE: {
+        if (isInherit) {
+            style->setMarginTopCollapse(parentStyle->marginTopCollapse());
+            style->setMarginBottomCollapse(parentStyle->marginBottomCollapse());
+        }
+        else if (isInitial) {
+            style->setMarginTopCollapse(MCOLLAPSE);
+            style->setMarginBottomCollapse(MCOLLAPSE);
+        }
+        break;
+    }
+    case CSS_PROP__KHTML_MARGIN_TOP_COLLAPSE: {
+        HANDLE_INHERIT_AND_INITIAL(marginTopCollapse, MarginTopCollapse)
+        if (!primitiveValue || !primitiveValue->getIdent()) return;
+        EMarginCollapse val;
+        switch (primitiveValue->getIdent()) {
+            case CSS_VAL_SEPARATE:
+                val = MSEPARATE;
+                break;
+            case CSS_VAL_DISCARD:
+                val = MDISCARD;
+                break;
+            default:
+                val = MCOLLAPSE;
+        }
+        style->setMarginTopCollapse(val);
+        break;
+    }
+    case CSS_PROP__KHTML_MARGIN_BOTTOM_COLLAPSE: {
+        HANDLE_INHERIT_AND_INITIAL(marginBottomCollapse, MarginBottomCollapse)
+        if (!primitiveValue || !primitiveValue->getIdent()) return;
+        EMarginCollapse val;
+        switch (primitiveValue->getIdent()) {
+            case CSS_VAL_SEPARATE:
+                val = MSEPARATE;
+                break;
+            case CSS_VAL_DISCARD:
+                val = MDISCARD;
+                break;
+            default:
+                val = MCOLLAPSE;
+        }
+        style->setMarginBottomCollapse(val);
+        break;
+    }
 
 #if APPLE_CHANGES
     // Apple-specific changes.  Do not merge these properties into KHTML.
index 5a48bcf1b859fb181574d134a1893fac80104000..b5e0af556f71dd0fa0f6835117f2c033397e2b93 100644 (file)
@@ -7,7 +7,7 @@ struct css_value {
     const char *name;
     int id;
 };
-/* maximum key range = 3474, duplicates = 1 */
+/* maximum key range = 2626, duplicates = 1 */
 
 #ifdef __GNUC__
 __inline
@@ -21,32 +21,32 @@ hash_val (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474,   15, 3474, 3474,    0,    5,
-        10,   15,   20,   25,   30,   35,   40,    0, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474,    0,   83,    3,
-       470,  225,   75,  245,  310,   35,    0,  240,    0,  143,
-        55,   33,  105,    0,  165,   10,    0,  480,  178,  380,
-       313,   50,  155, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474,
-      3474, 3474, 3474, 3474, 3474, 3474
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626,   15, 2626, 2626,    0,    5,
+        10,   15,   20,   25,   30,   35,   40,    0, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626,    0,  240,  490,
+         3,  225,   45,  370,  230,   35,    5,  425,    0,  305,
+        55,    8,   18,    0,  165,   10,    0,  195,  370,  378,
+        18,  440,  365, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
+      2626, 2626, 2626, 2626, 2626, 2626
     };
   register int hval = 0;
 
@@ -110,11 +110,11 @@ findValue (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 262,
+      TOTAL_KEYWORDS = 263,
       MIN_WORD_LENGTH = 2,
       MAX_WORD_LENGTH = 22,
       MIN_HASH_VALUE = 0,
-      MAX_HASH_VALUE = 3473
+      MAX_HASH_VALUE = 2625
     };
 
   static const struct css_value wordlist_value[] =
@@ -125,262 +125,263 @@ findValue (register const char *str, register unsigned int len)
       {"300", CSS_VAL_300},
       {"400", CSS_VAL_400},
       {"500", CSS_VAL_500},
+      {"top", CSS_VAL_TOP},
       {"600", CSS_VAL_600},
       {"700", CSS_VAL_700},
       {"800", CSS_VAL_800},
-      {"static", CSS_VAL_STATIC},
-      {"italic", CSS_VAL_ITALIC},
       {"fast", CSS_VAL_FAST},
-      {"icon", CSS_VAL_ICON},
-      {"top", CSS_VAL_TOP},
-      {"clip", CSS_VAL_CLIP},
-      {"small", CSS_VAL_SMALL},
+      {"solid", CSS_VAL_SOLID},
       {"initial", CSS_VAL_INITIAL},
       {"ltr", CSS_VAL_LTR},
       {"rtl", CSS_VAL_RTL},
       {"start", CSS_VAL_START},
-      {"fantasy", CSS_VAL_FANTASY},
-      {"scroll", CSS_VAL_SCROLL},
-      {"cross", CSS_VAL_CROSS},
+      {"aqua", CSS_VAL_AQUA},
+      {"auto", CSS_VAL_AUTO},
+      {"loud", CSS_VAL_LOUD},
+      {"up", CSS_VAL_UP},
       {"teal", CSS_VAL_TEAL},
-      {"caption", CSS_VAL_CAPTION},
-      {"navy", CSS_VAL_NAVY},
-      {"small-caps", CSS_VAL_SMALL_CAPS},
-      {"compact", CSS_VAL_COMPACT},
-      {"bottom", CSS_VAL_BOTTOM},
+      {"dotted", CSS_VAL_DOTTED},
+      {"text", CSS_VAL_TEXT},
+      {"bold", CSS_VAL_BOLD},
       {"left", CSS_VAL_LEFT},
-      {"crop", CSS_VAL_CROP},
-      {"table", CSS_VAL_TABLE},
-      {"inset", CSS_VAL_INSET},
-      {"black", CSS_VAL_BLACK},
-      {"block", CSS_VAL_BLOCK},
-      {"none", CSS_VAL_NONE},
-      {"collapse", CSS_VAL_COLLAPSE},
-      {"intrinsic", CSS_VAL_INTRINSIC},
-      {"normal", CSS_VAL_NORMAL},
-      {"small-caption", CSS_VAL_SMALL_CAPTION},
+      {"slide", CSS_VAL_SLIDE},
+      {"end", CSS_VAL_END},
+      {"text-top", CSS_VAL_TEXT_TOP},
+      {"hand", CSS_VAL_HAND},
+      {"small", CSS_VAL_SMALL},
       {"thin", CSS_VAL_THIN},
-      {"lime", CSS_VAL_LIME},
-      {"inline", CSS_VAL_INLINE},
-      {"blink", CSS_VAL_BLINK},
-      {"wait", CSS_VAL_WAIT},
+      {"inset", CSS_VAL_INSET},
+      {"fixed", CSS_VAL_FIXED},
       {"ellipsis", CSS_VAL_ELLIPSIS},
-      {"slow", CSS_VAL_SLOW},
-      {"both", CSS_VAL_BOTH},
-      {"maroon", CSS_VAL_MAROON},
-      {"circle", CSS_VAL_CIRCLE},
-      {"always", CSS_VAL_ALWAYS},
-      {"scrollbar", CSS_VAL_SCROLLBAR},
-      {"gray", CSS_VAL_GRAY},
-      {"list-item", CSS_VAL_LIST_ITEM},
-      {"olive", CSS_VAL_OLIVE},
-      {"aqua", CSS_VAL_AQUA},
+      {"none", CSS_VAL_NONE},
       {"x-small", CSS_VAL_X_SMALL},
       {"mix", CSS_VAL_MIX},
-      {"pre", CSS_VAL_PRE},
+      {"inside", CSS_VAL_INSIDE},
+      {"xx-small", CSS_VAL_XX_SMALL},
+      {"infotext", CSS_VAL_INFOTEXT},
       {"portrait", CSS_VAL_PORTRAIT},
+      {"red", CSS_VAL_RED},
+      {"slow", CSS_VAL_SLOW},
+      {"inline", CSS_VAL_INLINE},
+      {"pre", CSS_VAL_PRE},
+      {"wait", CSS_VAL_WAIT},
+      {"avoid", CSS_VAL_AVOID},
+      {"outset", CSS_VAL_OUTSET},
+      {"down", CSS_VAL_DOWN},
+      {"sub", CSS_VAL_SUB},
+      {"ahead", CSS_VAL_AHEAD},
+      {"table", CSS_VAL_TABLE},
+      {"default", CSS_VAL_DEFAULT},
+      {"dashed", CSS_VAL_DASHED},
+      {"help", CSS_VAL_HELP},
+      {"outside", CSS_VAL_OUTSIDE},
+      {"both", CSS_VAL_BOTH},
       {"serif", CSS_VAL_SERIF},
-      {"auto", CSS_VAL_AUTO},
+      {"inline-axis", CSS_VAL_INLINE_AXIS},
       {"infinite", CSS_VAL_INFINITE},
+      {"hide", CSS_VAL_HIDE},
+      {"pointer", CSS_VAL_POINTER},
+      {"run-in", CSS_VAL_RUN_IN},
+      {"normal", CSS_VAL_NORMAL},
+      {"static", CSS_VAL_STATIC},
       {"disc", CSS_VAL_DISC},
-      {"above", CSS_VAL_ABOVE},
-      {"katakana", CSS_VAL_KATAKANA},
-      {"text", CSS_VAL_TEXT},
-      {"smaller", CSS_VAL_SMALLER},
-      {"solid", CSS_VAL_SOLID},
-      {"table-cell", CSS_VAL_TABLE_CELL},
-      {"table-caption", CSS_VAL_TABLE_CAPTION},
-      {"capitalize", CSS_VAL_CAPITALIZE},
-      {"visible", CSS_VAL_VISIBLE},
-      {"single", CSS_VAL_SINGLE},
-      {"sub", CSS_VAL_SUB},
-      {"move", CSS_VAL_MOVE},
-      {"up", CSS_VAL_UP},
-      {"bold", CSS_VAL_BOLD},
-      {"thick", CSS_VAL_THICK},
+      {"maroon", CSS_VAL_MAROON},
+      {"clip", CSS_VAL_CLIP},
+      {"expanded", CSS_VAL_EXPANDED},
+      {"fantasy", CSS_VAL_FANTASY},
+      {"hidden", CSS_VAL_HIDDEN},
+      {"italic", CSS_VAL_ITALIC},
+      {"bottom", CSS_VAL_BOTTOM},
+      {"lime", CSS_VAL_LIME},
       {"sans-serif", CSS_VAL_SANS_SERIF},
-      {"vertical", CSS_VAL_VERTICAL},
-      {"monospace", CSS_VAL_MONOSPACE},
-      {"silver", CSS_VAL_SILVER},
-      {"pointer", CSS_VAL_POINTER},
-      {"level", CSS_VAL_LEVEL},
-      {"baseline", CSS_VAL_BASELINE},
-      {"large", CSS_VAL_LARGE},
-      {"help", CSS_VAL_HELP},
-      {"min-intrinsic", CSS_VAL_MIN_INTRINSIC},
-      {"justify", CSS_VAL_JUSTIFY},
-      {"overlay", CSS_VAL_OVERLAY},
-      {"invert", CSS_VAL_INVERT},
-      {"alternate", CSS_VAL_ALTERNATE},
-      {"activecaption", CSS_VAL_ACTIVECAPTION},
-      {"center", CSS_VAL_CENTER},
-      {"armenian", CSS_VAL_ARMENIAN},
-      {"grey", CSS_VAL_GREY},
-      {"yellow", CSS_VAL_YELLOW},
-      {"text-top", CSS_VAL_TEXT_TOP},
-      {"stretch", CSS_VAL_STRETCH},
-      {"avoid", CSS_VAL_AVOID},
-      {"repeat", CSS_VAL_REPEAT},
-      {"below", CSS_VAL_BELOW},
-      {"orange", CSS_VAL_ORANGE},
-      {"inline-table", CSS_VAL_INLINE_TABLE},
-      {"separate", CSS_VAL_SEPARATE},
-      {"crosshair", CSS_VAL_CROSSHAIR},
-      {"block-axis", CSS_VAL_BLOCK_AXIS},
-      {"show", CSS_VAL_SHOW},
-      {"infotext", CSS_VAL_INFOTEXT},
+      {"middle", CSS_VAL_MIDDLE},
+      {"icon", CSS_VAL_ICON},
+      {"square", CSS_VAL_SQUARE},
+      {"caption", CSS_VAL_CAPTION},
+      {"super", CSS_VAL_SUPER},
+      {"purple", CSS_VAL_PURPLE},
       {"nowrap", CSS_VAL_NOWRAP},
-      {"slide", CSS_VAL_SLIDE},
-      {"outset", CSS_VAL_OUTSET},
-      {"end", CSS_VAL_END},
-      {"right", CSS_VAL_RIGHT},
-      {"inactivecaption", CSS_VAL_INACTIVECAPTION},
+      {"list-item", CSS_VAL_LIST_ITEM},
+      {"show", CSS_VAL_SHOW},
+      {"repeat", CSS_VAL_REPEAT},
       {"status-bar", CSS_VAL_STATUS_BAR},
-      {"captiontext", CSS_VAL_CAPTIONTEXT},
-      {"inline-axis", CSS_VAL_INLINE_AXIS},
-      {"inline-block", CSS_VAL_INLINE_BLOCK},
-      {"transparent", CSS_VAL_TRANSPARENT},
-      {"repeat-y", CSS_VAL_REPEAT_Y},
-      {"horizontal", CSS_VAL_HORIZONTAL},
+      {"olive", CSS_VAL_OLIVE},
+      {"bolder", CSS_VAL_BOLDER},
+      {"separate", CSS_VAL_SEPARATE},
+      {"unfurl", CSS_VAL_UNFURL},
       {"blue", CSS_VAL_BLUE},
-      {"xx-small", CSS_VAL_XX_SMALL},
-      {"larger", CSS_VAL_LARGER},
-      {"lower", CSS_VAL_LOWER},
-      {"run-in", CSS_VAL_RUN_IN},
-      {"hiragana", CSS_VAL_HIRAGANA},
-      {"no-repeat", CSS_VAL_NO_REPEAT},
-      {"inherit", CSS_VAL_INHERIT},
-      {"relative", CSS_VAL_RELATIVE},
-      {"inside", CSS_VAL_INSIDE},
+      {"repeat-x", CSS_VAL_REPEAT_X},
+      {"alternate", CSS_VAL_ALTERNATE},
+      {"double", CSS_VAL_DOUBLE},
+      {"scroll", CSS_VAL_SCROLL},
       {"absolute", CSS_VAL_ABSOLUTE},
-      {"hand", CSS_VAL_HAND},
-      {"s-resize", CSS_VAL_S_RESIZE},
-      {"text-bottom", CSS_VAL_TEXT_BOTTOM},
+      {"crop", CSS_VAL_CROP},
+      {"cross", CSS_VAL_CROSS},
+      {"transparent", CSS_VAL_TRANSPARENT},
+      {"single", CSS_VAL_SINGLE},
       {"oblique", CSS_VAL_OBLIQUE},
-      {"red", CSS_VAL_RED},
-      {"landscape", CSS_VAL_LANDSCAPE},
-      {"element", CSS_VAL_ELEMENT},
-      {"decimal", CSS_VAL_DECIMAL},
-      {"groove", CSS_VAL_GROOVE},
-      {"square", CSS_VAL_SQUARE},
-      {"n-resize", CSS_VAL_N_RESIZE},
-      {"table-row", CSS_VAL_TABLE_ROW},
+      {"smaller", CSS_VAL_SMALLER},
+      {"discard", CSS_VAL_DISCARD},
+      {"no-repeat", CSS_VAL_NO_REPEAT},
+      {"upper-latin", CSS_VAL_UPPER_LATIN},
+      {"justify", CSS_VAL_JUSTIFY},
+      {"buttontext", CSS_VAL_BUTTONTEXT},
+      {"inherit", CSS_VAL_INHERIT},
+      {"open-quote", CSS_VAL_OPEN_QUOTE},
+      {"collapse", CSS_VAL_COLLAPSE},
+      {"blink", CSS_VAL_BLINK},
+      {"large", CSS_VAL_LARGE},
+      {"forwards", CSS_VAL_FORWARDS},
+      {"lower", CSS_VAL_LOWER},
+      {"multiple", CSS_VAL_MULTIPLE},
       {"menu", CSS_VAL_MENU},
+      {"baseline", CSS_VAL_BASELINE},
+      {"x-large", CSS_VAL_X_LARGE},
+      {"ridge", CSS_VAL_RIDGE},
+      {"right", CSS_VAL_RIGHT},
+      {"landscape", CSS_VAL_LANDSCAPE},
+      {"silver", CSS_VAL_SILVER},
+      {"wider", CSS_VAL_WIDER},
+      {"xx-large", CSS_VAL_XX_LARGE},
+      {"text-bottom", CSS_VAL_TEXT_BOTTOM},
+      {"level", CSS_VAL_LEVEL},
+      {"orange", CSS_VAL_ORANGE},
+      {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE},
+      {"always", CSS_VAL_ALWAYS},
+      {"armenian", CSS_VAL_ARMENIAN},
+      {"above", CSS_VAL_ABOVE},
+      {"small-caps", CSS_VAL_SMALL_CAPS},
+      {"captiontext", CSS_VAL_CAPTIONTEXT},
+      {"invert", CSS_VAL_INVERT},
+      {"below", CSS_VAL_BELOW},
+      {"hiragana", CSS_VAL_HIRAGANA},
+      {"window", CSS_VAL_WINDOW},
+      {"navy", CSS_VAL_NAVY},
+      {"horizontal", CSS_VAL_HORIZONTAL},
+      {"white", CSS_VAL_WHITE},
+      {"intrinsic", CSS_VAL_INTRINSIC},
       {"lower-latin", CSS_VAL_LOWER_LATIN},
+      {"upper-alpha", CSS_VAL_UPPER_ALPHA},
+      {"inline-table", CSS_VAL_INLINE_TABLE},
+      {"katakana", CSS_VAL_KATAKANA},
+      {"move", CSS_VAL_MOVE},
+      {"read-only", CSS_VAL_READ_ONLY},
+      {"visible", CSS_VAL_VISIBLE},
+      {"ultra-expanded", CSS_VAL_ULTRA_EXPANDED},
+      {"larger", CSS_VAL_LARGER},
+      {"small-caption", CSS_VAL_SMALL_CAPTION},
+      {"underline", CSS_VAL_UNDERLINE},
+      {"extra-expanded", CSS_VAL_EXTRA_EXPANDED},
+      {"gray", CSS_VAL_GRAY},
+      {"embed", CSS_VAL_EMBED},
       {"fuchsia", CSS_VAL_FUCHSIA},
+      {"relative", CSS_VAL_RELATIVE},
+      {"menutext", CSS_VAL_MENUTEXT},
+      {"lighter", CSS_VAL_LIGHTER},
+      {"table-row", CSS_VAL_TABLE_ROW},
+      {"element", CSS_VAL_ELEMENT},
+      {"lower-alpha", CSS_VAL_LOWER_ALPHA},
       {"green", CSS_VAL_GREEN},
+      {"s-resize", CSS_VAL_S_RESIZE},
+      {"yellow", CSS_VAL_YELLOW},
+      {"decimal", CSS_VAL_DECIMAL},
+      {"medium", CSS_VAL_MEDIUM},
+      {"condensed", CSS_VAL_CONDENSED},
+      {"scrollbar", CSS_VAL_SCROLLBAR},
       {"overline", CSS_VAL_OVERLINE},
-      {"down", CSS_VAL_DOWN},
-      {"white", CSS_VAL_WHITE},
-      {"buttonface", CSS_VAL_BUTTONFACE},
-      {"x-large", CSS_VAL_X_LARGE},
-      {"bolder", CSS_VAL_BOLDER},
-      {"lighter", CSS_VAL_LIGHTER},
-      {"loud", CSS_VAL_LOUD},
-      {"super", CSS_VAL_SUPER},
-      {"multiple", CSS_VAL_MULTIPLE},
+      {"table-caption", CSS_VAL_TABLE_CAPTION},
+      {"repeat-y", CSS_VAL_REPEAT_Y},
+      {"n-resize", CSS_VAL_N_RESIZE},
+      {"windowtext", CSS_VAL_WINDOWTEXT},
+      {"crosshair", CSS_VAL_CROSSHAIR},
+      {"marquee", CSS_VAL_MARQUEE},
+      {"monospace", CSS_VAL_MONOSPACE},
+      {"stretch", CSS_VAL_STRETCH},
+      {"buttonshadow", CSS_VAL_BUTTONSHADOW},
+      {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
+      {"groove", CSS_VAL_GROOVE},
+      {"black", CSS_VAL_BLACK},
+      {"center", CSS_VAL_CENTER},
+      {"narrower", CSS_VAL_NARROWER},
+      {"block", CSS_VAL_BLOCK},
+      {"capitalize", CSS_VAL_CAPITALIZE},
+      {"upper-roman", CSS_VAL_UPPER_ROMAN},
+      {"close-quote", CSS_VAL_CLOSE_QUOTE},
+      {"thick", CSS_VAL_THICK},
+      {"-khtml-auto", CSS_VAL__KHTML_AUTO},
+      {"table-cell", CSS_VAL_TABLE_CELL},
+      {"grey", CSS_VAL_GREY},
+      {"overlay", CSS_VAL_OVERLAY},
+      {"read-write", CSS_VAL_READ_WRITE},
       {"graytext", CSS_VAL_GRAYTEXT},
       {"georgian", CSS_VAL_GEORGIAN},
-      {"ahead", CSS_VAL_AHEAD},
-      {"read-only", CSS_VAL_READ_ONLY},
+      {"-khtml-text", CSS_VAL__KHTML_TEXT},
+      {"block-axis", CSS_VAL_BLOCK_AXIS},
+      {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE},
+      {"higher", CSS_VAL_HIGHER},
+      {"-khtml-box", CSS_VAL__KHTML_BOX},
+      {"buttonface", CSS_VAL_BUTTONFACE},
       {"-khtml-left", CSS_VAL__KHTML_LEFT},
-      {"close-quote", CSS_VAL_CLOSE_QUOTE},
-      {"table-column", CSS_VAL_TABLE_COLUMN},
-      {"hide", CSS_VAL_HIDE},
-      {"lowercase", CSS_VAL_LOWERCASE},
-      {"repeat-x", CSS_VAL_REPEAT_X},
-      {"-khtml-link", CSS_VAL__KHTML_LINK},
       {"e-resize", CSS_VAL_E_RESIZE},
       {"se-resize", CSS_VAL_SE_RESIZE},
-      {"purple", CSS_VAL_PURPLE},
-      {"katakana-iroha", CSS_VAL_KATAKANA_IROHA},
-      {"cursive", CSS_VAL_CURSIVE},
+      {"vertical", CSS_VAL_VERTICAL},
+      {"min-intrinsic", CSS_VAL_MIN_INTRINSIC},
+      {"hiragana-iroha", CSS_VAL_HIRAGANA_IROHA},
+      {"compact", CSS_VAL_COMPACT},
       {"ne-resize", CSS_VAL_NE_RESIZE},
-      {"fixed", CSS_VAL_FIXED},
-      {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE},
-      {"ridge", CSS_VAL_RIDGE},
-      {"embed", CSS_VAL_EMBED},
-      {"-khtml-box", CSS_VAL__KHTML_BOX},
-      {"open-quote", CSS_VAL_OPEN_QUOTE},
-      {"upper-latin", CSS_VAL_UPPER_LATIN},
-      {"narrower", CSS_VAL_NARROWER},
-      {"buttontext", CSS_VAL_BUTTONTEXT},
+      {"lower-roman", CSS_VAL_LOWER_ROMAN},
+      {"uppercase", CSS_VAL_UPPERCASE},
+      {"katakana-iroha", CSS_VAL_KATAKANA_IROHA},
       {"reverse", CSS_VAL_REVERSE},
-      {"dotted", CSS_VAL_DOTTED},
+      {"circle", CSS_VAL_CIRCLE},
       {"w-resize", CSS_VAL_W_RESIZE},
-      {"lower-roman", CSS_VAL_LOWER_ROMAN},
-      {"sw-resize", CSS_VAL_SW_RESIZE},
-      {"lower-alpha", CSS_VAL_LOWER_ALPHA},
-      {"-khtml-auto", CSS_VAL__KHTML_AUTO},
-      {"marquee", CSS_VAL_MARQUEE},
-      {"default", CSS_VAL_DEFAULT},
-      {"outside", CSS_VAL_OUTSIDE},
-      {"unfurl", CSS_VAL_UNFURL},
-      {"-khtml-text", CSS_VAL__KHTML_TEXT},
-      {"nw-resize", CSS_VAL_NW_RESIZE},
-      {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE},
-      {"wider", CSS_VAL_WIDER},
-      {"xx-large", CSS_VAL_XX_LARGE},
-      {"higher", CSS_VAL_HIGHER},
-      {"double", CSS_VAL_DOUBLE},
-      {"forwards", CSS_VAL_FORWARDS},
-      {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT},
       {"message-box", CSS_VAL_MESSAGE_BOX},
-      {"uppercase", CSS_VAL_UPPERCASE},
-      {"middle", CSS_VAL_MIDDLE},
-      {"backwards", CSS_VAL_BACKWARDS},
-      {"window", CSS_VAL_WINDOW},
-      {"-khtml-body", CSS_VAL__KHTML_BODY},
-      {"hiragana-iroha", CSS_VAL_HIRAGANA_IROHA},
-      {"appworkspace", CSS_VAL_APPWORKSPACE},
+      {"sw-resize", CSS_VAL_SW_RESIZE},
+      {"ultra-condensed", CSS_VAL_ULTRA_CONDENSED},
       {"hebrew", CSS_VAL_HEBREW},
-      {"-khtml-center", CSS_VAL__KHTML_CENTER},
-      {"menutext", CSS_VAL_MENUTEXT},
-      {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
-      {"-khtml-right", CSS_VAL__KHTML_RIGHT},
-      {"dashed", CSS_VAL_DASHED},
+      {"nw-resize", CSS_VAL_NW_RESIZE},
+      {"threedshadow", CSS_VAL_THREEDSHADOW},
+      {"cursive", CSS_VAL_CURSIVE},
+      {"extra-condensed", CSS_VAL_EXTRA_CONDENSED},
       {"highlight", CSS_VAL_HIGHLIGHT},
-      {"upper-roman", CSS_VAL_UPPER_ROMAN},
-      {"-khtml-activelink", CSS_VAL__KHTML_ACTIVELINK},
-      {"medium", CSS_VAL_MEDIUM},
-      {"upper-alpha", CSS_VAL_UPPER_ALPHA},
-      {"condensed", CSS_VAL_CONDENSED},
-      {"hidden", CSS_VAL_HIDDEN},
-      {"-khtml-inline-box", CSS_VAL__KHTML_INLINE_BOX},
-      {"activeborder", CSS_VAL_ACTIVEBORDER},
-      {"inactiveborder", CSS_VAL_INACTIVEBORDER},
-      {"read-write", CSS_VAL_READ_WRITE},
-      {"threedface", CSS_VAL_THREEDFACE},
-      {"underline", CSS_VAL_UNDERLINE},
-      {"background", CSS_VAL_BACKGROUND},
-      {"buttonshadow", CSS_VAL_BUTTONSHADOW},
-      {"expanded", CSS_VAL_EXPANDED},
+      {"lowercase", CSS_VAL_LOWERCASE},
+      {"-khtml-link", CSS_VAL__KHTML_LINK},
+      {"bidi-override", CSS_VAL_BIDI_OVERRIDE},
       {"line-through", CSS_VAL_LINE_THROUGH},
-      {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC},
-      {"windowtext", CSS_VAL_WINDOWTEXT},
-      {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP},
-      {"lower-greek", CSS_VAL_LOWER_GREEK},
-      {"table-row-group", CSS_VAL_TABLE_ROW_GROUP},
+      {"table-column", CSS_VAL_TABLE_COLUMN},
+      {"inline-block", CSS_VAL_INLINE_BLOCK},
       {"windowframe", CSS_VAL_WINDOWFRAME},
-      {"infobackground", CSS_VAL_INFOBACKGROUND},
+      {"threedface", CSS_VAL_THREEDFACE},
+      {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
       {"semi-condensed", CSS_VAL_SEMI_CONDENSED},
+      {"-khtml-inline-box", CSS_VAL__KHTML_INLINE_BOX},
+      {"-khtml-body", CSS_VAL__KHTML_BODY},
+      {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP},
+      {"backwards", CSS_VAL_BACKWARDS},
+      {"activecaption", CSS_VAL_ACTIVECAPTION},
       {"highlighttext", CSS_VAL_HIGHLIGHTTEXT},
-      {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP},
-      {"bidi-override", CSS_VAL_BIDI_OVERRIDE},
-      {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT},
-      {"ultra-condensed", CSS_VAL_ULTRA_CONDENSED},
-      {"extra-condensed", CSS_VAL_EXTRA_CONDENSED},
-      {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
+      {"appworkspace", CSS_VAL_APPWORKSPACE},
+      {"-khtml-right", CSS_VAL__KHTML_RIGHT},
+      {"table-row-group", CSS_VAL_TABLE_ROW_GROUP},
+      {"inactivecaption", CSS_VAL_INACTIVECAPTION},
       {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE},
-      {"decimal-leading-zero", CSS_VAL_DECIMAL_LEADING_ZERO},
-      {"ultra-expanded", CSS_VAL_ULTRA_EXPANDED},
-      {"extra-expanded", CSS_VAL_EXTRA_EXPANDED},
-      {"threedshadow", CSS_VAL_THREEDSHADOW},
-      {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
+      {"activeborder", CSS_VAL_ACTIVEBORDER},
+      {"background", CSS_VAL_BACKGROUND},
+      {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT},
+      {"inactiveborder", CSS_VAL_INACTIVEBORDER},
+      {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT},
+      {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW},
+      {"infobackground", CSS_VAL_INFOBACKGROUND},
       {"table-header-group", CSS_VAL_TABLE_HEADER_GROUP},
-      {"threedhighlight", CSS_VAL_THREEDHIGHLIGHT},
       {"threedlightshadow", CSS_VAL_THREEDLIGHTSHADOW},
-      {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW}
+      {"-khtml-center", CSS_VAL__KHTML_CENTER},
+      {"lower-greek", CSS_VAL_LOWER_GREEK},
+      {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP},
+      {"threedhighlight", CSS_VAL_THREEDHIGHLIGHT},
+      {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
+      {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC},
+      {"decimal-leading-zero", CSS_VAL_DECIMAL_LEADING_ZERO},
+      {"-khtml-activelink", CSS_VAL__KHTML_ACTIVELINK}
     };
 
   static const short lookup[] =
@@ -388,351 +389,231 @@ findValue (register const char *str, register unsigned int len)
          0,   -1,   -1,   -1,   -1,    1,   -1,   -1,
         -1,   -1,    2,   -1,   -1,   -1,   -1,    3,
         -1,   -1,   -1,   -1,    4,   -1,   -1,   -1,
-        -1,    5,   -1,   -1,   -1,   -1,    6,   -1,
-        -1,   -1,   -1,    7,   -1,   -1,   -1,   -1,
-         8,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,    5,    6,   -1,   -1,   -1,    7,   -1,
+        -1,   -1,   -1,    8,   -1,   -1,   -1,   -1,
          9,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   10,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   11,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   10,
+        11,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   12,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   13,   -1,   -1,   -1,   -1,   14,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   15,   -1,   -1,   -1,   -1,   -1,   -1,
-        16,   -1,   -1,   -1,   -1, -429, -245,   -2,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   19,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   20,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   21,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   22,   -1,   -1,
-        -1,   23,   -1,   -1,   -1,   -1,   -1,   24,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        12,   -1,   -1,   -1,   -1, -430, -250,   -2,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   15,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   25,   -1,   -1,   26,   27,
-        -1,   -1,   -1,   -1,   28,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   29,   -1,   -1,   -1,
-        -1,   -1,   30,   -1,   31,   -1,   -1,   -1,
+        -1,   -1,   -1,   16,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   17,   -1,   -1,   18,   -1,
+        -1,   -1,   -1,   -1,   -1,   19,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   32,   33,   -1,
+        -1,   20,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   21,
+        -1,   -1,   -1,   22,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   23,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   24,   -1,
+        -1,   25,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   26,   27,   -1,   -1,   -1,
+        28,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   29,   -1,   -1,   -1,   -1,
+        30,   -1,   -1,   -1,   -1,   31,   32,   -1,
+        -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   34,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        35,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        36,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   37,   -1,   -1,   38,   -1,   -1,   39,
-        40,   -1,   -1,   41,   -1,   42,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   43,   -1,   44,
-        -1,   -1,   -1,   -1,   45,   -1,   -1,   46,
-        -1,   -1,   47,   -1,   -1,   48,   -1,   49,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        50,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   51,   52,   -1,   -1,   53,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   54,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        55,   56,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   57,   -1,   -1,   -1,   58,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
-        -1,   -1,   -1,   -1,   -1,   -1,   60,   -1,
-        -1,   61,   -1,   62,   -1,   -1,   63,   64,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   65,
-        -1,   -1,   66,   -1,   -1,   -1,   -1,   67,
-        -1,   -1,   -1,   -1,   68,   -1,   -1,   69,
-        -1,   -1,   70,   -1,   -1,   -1,   71,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   72,   -1,
-        -1,   -1,   73,   -1,   -1,   74,   -1,   -1,
-        -1,   -1,   -1,   75,   -1,   -1,   -1,   -1,
-        -1,   76,   77,   -1,   78,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        79,   -1,   -1,   -1,   -1,   -1,   80,   81,
-        -1,   -1,   -1,   -1,   -1,   82,   -1,   -1,
-        -1,   -1,   83,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   84,   -1,   -1,   -1,
-        -1,   85,   -1,   86,   -1,   -1,   -1,   -1,
-        87,   88,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   89,   90,   -1,   -1,   -1,   -1,
-        -1,   -1,   91,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   92,   -1,
-        93,   94,   -1,   -1,   -1,   -1,   95,   -1,
-        -1,   -1,   -1,   -1,   -1,   96,   -1,   -1,
-        97,   -1,   -1,   98,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   99,   -1,   -1,  100,   -1,   -1,   -1,
-       101,  102,   -1,  103,   -1,   -1,   -1,   -1,
-       104,   -1,  105,  106,  107,  108,   -1,   -1,
-       109,   -1,  110,   -1,  111,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  112,   -1,  113,   -1,
-        -1,   -1,   -1,  114,   -1,   -1,   -1,   -1,
-        -1,   -1,  115,  116,   -1,   -1,   -1,   -1,
-        -1,  117,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  118,  119,  120,   -1,   -1,   -1,
-        -1,  121,  122,   -1,  123,   -1,   -1,   -1,
-        -1,   -1,  124,   -1,   -1,   -1,   -1,   -1,
-       125,   -1,   -1,  126,   -1,  127,   -1,   -1,
-        -1,   -1,  128,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  129,
-        -1,  130,   -1,   -1,  131,   -1,  132,  133,
-        -1,   -1,   -1,  134,   -1,   -1,   -1,   -1,
-       135,   -1,   -1,   -1,   -1,  136,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       137,   -1,   -1,   -1,  138,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  139,   -1,   -1,   -1,
-        -1,  140,   -1,   -1,  141,   -1,   -1,  142,
-       143,   -1,   -1,   -1,   -1,  144,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  145,   -1,  146,
-        -1,   -1,   -1,   -1,  147,   -1,   -1,   -1,
-        -1,  148,   -1,  149,  150,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  151,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  152,   -1,
-        -1,   -1,  153,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  154,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       155,   -1,   -1,   -1,  156,   -1,   -1,  157,
-        -1,  158,   -1,   -1,  159,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  160,   -1,
-        -1,   -1,   -1,  161,   -1,  162,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  163,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  164,
-       165,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  166,   -1,   -1,
-       167,  168,   -1,   -1,   -1,   -1,   -1,   -1,
-       169,   -1,   -1,   -1,   -1,  170,   -1,  171,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  172,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       173,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  174,   -1,   -1,
-       175,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  176,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  177,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  178,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  179,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   35,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   36,   -1,
+        -1,   -1,   -1,   37,   -1,   -1,   38,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   39,   -1,   -1,   -1,   -1,   40,
+        -1,   41,   -1,   -1,   42,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   43,   -1,   -1,
+        44,   -1,   -1,   -1,   -1,   45,   -1,   -1,
+        46,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   47,   -1,
+        -1,   -1,   -1,   -1,   48,   49,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   50,   -1,   -1,   -1,   -1,   -1,
+        -1,   51,   -1,   -1,   52,   -1,   -1,   53,
+        -1,   54,   -1,   -1,   55,   -1,   56,   -1,
+        57,   -1,   -1,   58,   -1,   59,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   60,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   61,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   63,   -1,   64,
+        -1,   -1,   65,   -1,   -1,   66,   -1,   67,
+        -1,   -1,   -1,   68,   -1,   -1,   69,   70,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        71,   72,   -1,   -1,   -1,   73,   -1,   -1,
+        -1,   -1,   74,   75,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   76,   -1,   -1,   -1,
+        -1,   -1,   -1,   77,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   78,   -1,
+        -1,   -1,   -1,   -1,   -1,   79,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   80,   -1,   -1,
+        81,   82,   83,   -1,   -1,   -1,   -1,   -1,
+        -1,   84,   -1,   85,   -1,   -1,   86,   -1,
+        -1,   87,   -1,   88,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   89,
+        -1,   -1,   -1,   -1,   90,   -1,   -1,   -1,
+        -1,   -1,   91,   -1,   -1,   -1,   92,   93,
+        -1,   94,   -1,   -1,   -1,   -1,   95,   -1,
+        -1,   96,   -1,   97,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   98,   -1,   99,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  100,
+        -1,  101,  102,   -1,   -1,   -1,   -1,  103,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  104,   -1,
+        -1,   -1,  105,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  106,   -1,   -1,
+        -1,  107,   -1,   -1,   -1,  108,   -1,  109,
+        -1,   -1,   -1,  110,   -1,   -1,   -1,   -1,
+       111,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  112,   -1,
+       113,   -1,  114,   -1,  115,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  116,   -1,
+        -1,  117,   -1,   -1,   -1,   -1,  118,   -1,
+       119,  120,   -1,   -1,   -1,  121,  122,   -1,
+        -1,   -1,   -1,  123,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  124,  125,   -1,   -1,  126,
+        -1,   -1,   -1,  127,  128,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       129,   -1,   -1,  130,   -1,   -1,   -1,   -1,
+       131,  132,  133,  134,   -1,   -1,   -1,  135,
+        -1,  136,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  137,  138,   -1,  139,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       140,  141,   -1,   -1,  142,  143,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  144,   -1,   -1,  145,   -1,   -1,  146,
+        -1,   -1,   -1,  147,   -1,   -1,   -1,   -1,
+        -1,   -1,  148,   -1,   -1,  149,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       150,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  151,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  152,   -1,   -1,   -1,   -1,  153,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  154,   -1,
+        -1,   -1,   -1,   -1,   -1,  155,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  156,   -1,   -1,  157,
+        -1,  158,   -1,   -1,   -1,   -1,   -1,  159,
+        -1,   -1,   -1,  160,   -1,   -1,   -1,  161,
+       162,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  163,  164,   -1,   -1,   -1,   -1,
+        -1,   -1,  165,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  166,   -1,   -1,   -1,
+        -1,   -1,  167,   -1,   -1,   -1,  168,   -1,
+        -1,   -1,   -1,  169,   -1,   -1,  170,   -1,
+       171,   -1,   -1,   -1,   -1,   -1,   -1,  172,
+        -1,   -1,   -1,   -1,  173,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  174,   -1,  175,   -1,   -1,   -1,  176,
+       177,   -1,   -1,   -1,   -1,   -1,   -1,  178,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  179,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,  180,   -1,   -1,   -1,   -1,   -1,
-       181,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  182,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  183,   -1,   -1,  184,  185,   -1,   -1,
-        -1,  186,   -1,   -1,   -1,   -1,  187,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  188,   -1,   -1,   -1,  189,   -1,
-        -1,   -1,   -1,   -1,  190,   -1,   -1,   -1,
+        -1,   -1,   -1,  181,   -1,   -1,   -1,   -1,
+       182,  183,   -1,  184,   -1,   -1,   -1,   -1,
+       185,  186,   -1,   -1,   -1,   -1,   -1,   -1,
+       187,   -1,   -1,   -1,  188,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  191,   -1,   -1,  192,   -1,  193,   -1,
+        -1,  189,   -1,  190,   -1,   -1,   -1,   -1,
+       191,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       192,   -1,   -1,  193,   -1,   -1,   -1,   -1,
+        -1,   -1,  194,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  195,   -1,   -1,   -1,
+        -1,  196,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  197,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  198,  199,
+       200,   -1,  201,   -1,  202,   -1,   -1,   -1,
+        -1,  203,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  204,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  205,   -1,   -1,
+        -1,   -1,  206,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  194,   -1,   -1,  195,   -1,  196,
-        -1,   -1,   -1,   -1,   -1,  197,   -1,   -1,
-        -1,  198,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  199,  200,  201,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  207,   -1,   -1,  208,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  202,  203,   -1,   -1,   -1,   -1,
-        -1,   -1,  204,   -1,  205,   -1,  206,   -1,
+       209,   -1,   -1,   -1,  210,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  207,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  211,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  212,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  208,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  209,
-        -1,  210,   -1,   -1,   -1,   -1,   -1,  211,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       212,   -1,   -1,  213,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  214,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  215,   -1,   -1,   -1,
+        -1,  213,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  214,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  215,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  216,   -1,  217,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  218,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  219,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  216,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  220,   -1,   -1,   -1,  221,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  217,   -1,   -1,
+        -1,   -1,  222,   -1,   -1,   -1,   -1,   -1,
+        -1,  223,   -1,   -1,  224,  225,   -1,   -1,
+        -1,  226,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  218,   -1,
-        -1,   -1,   -1,   -1,   -1,  219,   -1,   -1,
-        -1,   -1,  220,  221,   -1,   -1,  222,   -1,
-       223,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  224,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  225,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  226,   -1,   -1,
         -1,   -1,   -1,   -1,  227,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  228,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       228,   -1,   -1,   -1,   -1,  229,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  230,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  231,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       232,   -1,   -1,   -1,   -1,   -1,  233,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       229,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       230,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  231,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  232,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  233,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  234,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  235,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       234,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  235,   -1,   -1,   -1,
         -1,  236,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  237,   -1,   -1,   -1,
-        -1,   -1,   -1,  238,   -1,   -1,   -1,   -1,
-        -1,  239,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  240,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       241,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  242,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  243,   -1,  244,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  245,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       246,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  247,   -1,
-        -1,   -1,   -1,   -1,   -1,  248,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  249,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       250,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  251,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       252,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  253,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  254,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  255,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  237,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  238,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  257,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  239,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  240,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  241,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  258,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  242,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  243,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       244,   -1,   -1,  245,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -745,32 +626,42 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  259,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  246,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  247,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  248,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       249,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  250,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  251,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  252,   -1,
+        -1,   -1,   -1,  253,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       254,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  255,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  256,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -783,12 +674,14 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,
+       257,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  258,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  259,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -807,8 +700,10 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  260,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  261,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -819,7 +714,7 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  261
+        -1,  262
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -1120,6 +1015,7 @@ static const char * const valueList[] = {
 "min-intrinsic", 
 "clip", 
 "ellipsis", 
+"discard", 
     0
 };
 DOMString getValueName(unsigned short id)
index 8480adea6d2cebd1aaf99b3da386f1fb771d893f..643b7bb4ed05c8f5f162af68f84dd39de71a55e1 100644 (file)
@@ -271,7 +271,8 @@ DOM::DOMString getValueName(unsigned short id);
 #define CSS_VAL_MIN_INTRINSIC 260
 #define CSS_VAL_CLIP 261
 #define CSS_VAL_ELLIPSIS 262
+#define CSS_VAL_DISCARD 263
 
-#define CSS_VAL_TOTAL 263
+#define CSS_VAL_TOTAL 264
 #endif
 
index 3781e84d68b0662d0f9123cb5e324654b37f4d4e..ce5bff7f96309f7c7d2d354c8e18b320e4d29e01 100644 (file)
@@ -393,3 +393,10 @@ min-intrinsic
 #
 clip
 ellipsis
+
+#
+# CSS_PROP__KHTML_MARGIN_COLLAPSE
+#
+# collapse
+# separate
+discard
index 21f9676534d07b30de46974d93058b3a9895522d..382e09fcc7799e15ea057579d28e0df138ab17d6 100644 (file)
@@ -335,9 +335,11 @@ bool RenderBlock::isSelfCollapsingBlock() const
     // (b) are a table,
     // (c) have border/padding,
     // (d) have a min-height
+    // (e) have specified that one of our margins can't collapse using a CSS extension
     if (m_height > 0 ||
         isTable() || (borderBottom() + paddingBottom() + borderTop() + paddingTop()) != 0 ||
-        style()->minHeight().value > 0)
+        style()->minHeight().value > 0 || 
+        style()->marginTopCollapse() == MSEPARATE || style()->marginBottomCollapse() == MSEPARATE)
         return false;
 
     // If the height is 0 or auto, then whether or not we are a self-collapsing block depends
@@ -569,7 +571,7 @@ void RenderBlock::layoutBlockChildren( bool relayoutChildren )
     // value when it comes time to check against the bottom border/padding.
     bool canCollapseWithChildren = !isCanvas() && !isRoot() && !isPositioned() &&
         !isFloating() && !isTableCell() && !hasOverflowClip() && !isInlineBlockOrInlineTable();
-    bool canCollapseTopWithChildren = canCollapseWithChildren && (m_height == 0);
+    bool canCollapseTopWithChildren = canCollapseWithChildren && (m_height == 0) && style()->marginTopCollapse() != MSEPARATE;
 
     // If any height other than auto is specified in CSS, then we don't collapse our bottom
     // margins with our children's margins.  To do otherwise would be to risk odd visual
@@ -577,11 +579,12 @@ void RenderBlock::layoutBlockChildren( bool relayoutChildren )
     // with it.  We also don't collapse if we had any bottom border/padding (represented by
     // |toAdd|).
     bool canCollapseBottomWithChildren = canCollapseWithChildren && (toAdd == 0) &&
-        (style()->height().isVariable() && style()->height().value == 0);
+        (style()->height().isVariable() && style()->height().value == 0) && style()->marginBottomCollapse() != MSEPARATE;
     
     // Whether or not we are a quirky container, i.e., do we collapse away top and bottom
     // margins in our container.
-    bool quirkContainer = isTableCell() || isBody();
+    bool quirkContainer = isTableCell() || isBody() || style()->marginTopCollapse() == MDISCARD ||
+                          style()->marginBottomCollapse() == MDISCARD;
 
     // This flag tracks whether the child should collapse with the top margins of the block.
     // It can remain set through multiple iterations as long as we keep encountering
@@ -771,6 +774,10 @@ void RenderBlock::layoutBlockChildren( bool relayoutChildren )
         // Try to guess our correct y position.  In most cases this guess will
         // be correct.  Only if we're wrong (when we compute the real y position)
         // will we have to relayout.
+        if (child->style()->marginTopCollapse() == MSEPARATE) {
+            topMarginContributor = false;
+            prevPosMargin = prevNegMargin = 0;
+        }
         int yPosEstimate = m_height;
         if (prevBlock) {
             yPosEstimate += kMax(prevBlock->collapsedMarginBottom(), child->marginTop());
@@ -829,7 +836,7 @@ void RenderBlock::layoutBlockChildren( bool relayoutChildren )
             
             // See if the top margin is quirky. We only care if this child has
             // margins that will collapse with us.
-            bool topQuirk = child->isTopMarginQuirk();
+            bool topQuirk = child->isTopMarginQuirk() || style()->marginTopCollapse() == MDISCARD;
 
             if (canCollapseTopWithChildren && topMarginContributor && !clearOccurred) {
                 // This child is collapsing with the top of the
@@ -891,10 +898,13 @@ void RenderBlock::layoutBlockChildren( bool relayoutChildren )
                     ypos = m_height + collapsedTopPos - collapsedTopNeg;
             }
             else {
-                if (!topMarginContributor ||
+                if (child->style()->marginTopCollapse() == MSEPARATE) {
+                    m_height += (prevPosMargin - prevNegMargin) + child->marginTop();
+                    ypos = m_height;
+                }
+                else if (!topMarginContributor ||
                     (!canCollapseTopWithChildren
-                     && (strictMode || !quirkContainer || !topChildQuirk)
-                     )) {
+                     && (strictMode || !quirkContainer || !topChildQuirk))) {
                     // We're collapsing with a previous sibling's margins and not
                     // with the top of the block.
                     int absPos = prevPosMargin > posTop ? prevPosMargin : posTop;
@@ -903,11 +913,12 @@ void RenderBlock::layoutBlockChildren( bool relayoutChildren )
                     m_height += collapsedMargin;
                     ypos = m_height;
                 }
+
                 prevPosMargin = child->maxBottomMargin(true);
                 prevNegMargin = child->maxBottomMargin(false);
 
                 if (prevPosMargin-prevNegMargin) {
-                    bottomChildQuirk = child->isBottomMarginQuirk();
+                    bottomChildQuirk = child->isBottomMarginQuirk() || style()->marginBottomCollapse() == MDISCARD;
                 }
 
                 selfCollapsingBlockClearedFloat = false;
@@ -1036,6 +1047,12 @@ void RenderBlock::layoutBlockChildren( bool relayoutChildren )
         child->setPos(chPos, child->yPos());
 
         m_height += child->height();
+        
+        if (child->style()->marginBottomCollapse() == MSEPARATE) {
+            m_height += child->marginBottom();
+            prevPosMargin = prevNegMargin = 0;
+        }
+        
         int overflowDelta = child->overflowHeight(false) - child->height();
         if (m_height + overflowDelta > m_overflowHeight)
             m_overflowHeight = m_height + overflowDelta;
index 319b41e5ee94f496b99bf15df7341503a5fa7bea..795ac32506c77577f33a009bc88bd55851be06f7 100644 (file)
@@ -35,21 +35,22 @@ using DOM::DOMStringImpl;
 using DOM::DOMString;
 
 StyleSurroundData::StyleSurroundData()
-    : margin( Fixed ), padding( Variable )
+    : margin( Fixed ), padding( Variable ), marginTopCollapse(MCOLLAPSE), marginBottomCollapse(MCOLLAPSE)
 {
 }
 
 StyleSurroundData::StyleSurroundData(const StyleSurroundData& o )
     : Shared<StyleSurroundData>(),
       offset( o.offset ), margin( o.margin ), padding( o.padding ),
-      border( o.border )
+      border( o.border ), marginTopCollapse(o.marginTopCollapse), marginBottomCollapse(o.marginBottomCollapse)
 {
 }
 
 bool StyleSurroundData::operator==(const StyleSurroundData& o) const
 {
     return offset==o.offset && margin==o.margin &&
-       padding==o.padding && border==o.border;
+       padding==o.padding && border==o.border && marginTopCollapse == o.marginTopCollapse &&
+        marginBottomCollapse == o.marginBottomCollapse;
 }
 
 StyleBoxData::StyleBoxData()
@@ -540,6 +541,8 @@ RenderStyle::Diff RenderStyle::diff( const RenderStyle *other ) const
     if ( *box.get() != *other->box.get() ||
          !(surround->margin == other->surround->margin) ||
          !(surround->padding == other->surround->padding) ||
+         surround->marginTopCollapse != other->surround->marginTopCollapse ||
+         surround->marginBottomCollapse != other->surround->marginBottomCollapse ||
          *css3NonInheritedData->flexibleBox.get() != *other->css3NonInheritedData->flexibleBox.get() ||
 #if APPLE_CHANGES
          (css3NonInheritedData->lineClamp != other->css3NonInheritedData->lineClamp) ||
index 001d5534b171c23917b540f8e40c5953417f7254..8b849dec4940d603d83e393ea3c134fa1ffe7aa6 100644 (file)
@@ -284,6 +284,8 @@ public:
 
 };
 
+enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD };
+
 class StyleSurroundData : public Shared<StyleSurroundData>
 {
 public:
@@ -299,6 +301,8 @@ public:
     LengthBox margin;
     LengthBox padding;
     BorderData border;
+    EMarginCollapse marginTopCollapse : 2;
+    EMarginCollapse marginBottomCollapse : 2;
 };
 
 
@@ -1108,6 +1112,8 @@ public:
     EUserDrag userDrag() const { return css3NonInheritedData->userDrag; }
     EUserSelect userSelect() const { return css3NonInheritedData->userSelect; }
     bool textOverflow() const { return css3NonInheritedData->textOverflow; }
+    EMarginCollapse marginTopCollapse() const { return surround->marginTopCollapse; }
+    EMarginCollapse marginBottomCollapse() const { return surround->marginBottomCollapse; }
     // End CSS3 Getters
 
 #if APPLE_CHANGES
@@ -1288,6 +1294,8 @@ public:
     void setUserDrag(EUserDrag d) { SET_VAR(css3NonInheritedData, userDrag, d); }
     void setUserSelect(EUserSelect s) { SET_VAR(css3NonInheritedData, userSelect, s); }
     void setTextOverflow(bool b) { SET_VAR(css3NonInheritedData, textOverflow, b); }
+    void setMarginTopCollapse(EMarginCollapse c) { SET_VAR(surround, marginTopCollapse, c); }
+    void setMarginBottomCollapse(EMarginCollapse c) { SET_VAR(surround, marginBottomCollapse, c); }
     // End CSS3 Setters
    
 #if APPLE_CHANGES
@@ -1395,6 +1403,8 @@ public:
     static EUserDrag initialUserDrag() { return DRAG_AUTO; }
     static EUserSelect initialUserSelect() { return SELECT_AUTO; }
     static bool initialTextOverflow() { return false; }
+    static EMarginCollapse initialMarginTopCollapse() { return MCOLLAPSE; }
+    static EMarginCollapse initialMarginBottomCollapse() { return MCOLLAPSE; }
 
 #if APPLE_CHANGES
     // Keep these at the end.