]> source.dussan.org Git - vaadin-framework.git/commitdiff
Accept anything as pseudo function parameters (#10316) 45/445/2
authorHenri Sara <hesara@vaadin.com>
Fri, 30 Nov 2012 15:29:10 +0000 (17:29 +0200)
committerHenri Sara <hesara@vaadin.com>
Fri, 7 Dec 2012 11:01:56 +0000 (13:01 +0200)
Change-Id: Ib5aab4d4ca7de0fa7dc46a31f8d98740b302b7d3

theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj
theme-compiler/tests/resources/automatic/css/selector_types.css
theme-compiler/tests/resources/automatic/scss/selector_types.scss

index 843f08ee5c6e18077fa339790a27db7e0a76f3cc..d2575e376438507da033daac96d6570258bda5e3 100644 (file)
@@ -2311,44 +2311,9 @@ boolean isPseudoElement = false;
         }
         jj_consume_token(S);
       }
-      if (jj_2_5(2)) {
-        param = jj_consume_token(IDENT);
-                                           d = convertIdent(param.image);
-      } else {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case NUMBER:
-          param = jj_consume_token(NUMBER);
-                                 d = param.image;
-          break;
-        case LBRACKET:
-        case ANY:
-        case PARENT:
-        case DOT:
-        case COLON:
-        case INTERPOLATION:
-        case IDENT:
-        case HASH:
-          d = simple_selector(null, ' ');
-          break;
-        default:
-          jj_la1[93] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-      }
-      label_61:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case S:
-          ;
-          break;
-        default:
-          jj_la1[94] = jj_gen;
-          break label_61;
-        }
-        jj_consume_token(S);
-      }
+      d = skipStatementUntilRightParan();
       jj_consume_token(RPARAN);
+                  // accept anything between function and a right parenthesis
                   String f = convertIdent(n.image);
                   String colons = isPseudoElement ? "::" : ":";
                   String pseudofn = colons + f + d + ")";
@@ -2359,7 +2324,7 @@ boolean isPseudoElement = false;
                   }
       break;
     default:
-      jj_la1[95] = jj_gen;
+      jj_la1[93] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2389,15 +2354,15 @@ boolean isPseudoElement = false;
     try {
       name = variableName();
       jj_consume_token(COLON);
-      label_62:
+      label_61:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[96] = jj_gen;
-          break label_62;
+          jj_la1[94] = jj_gen;
+          break label_61;
         }
         jj_consume_token(S);
       }
@@ -2407,21 +2372,21 @@ boolean isPseudoElement = false;
         guarded = guarded();
         break;
       default:
-        jj_la1[97] = jj_gen;
+        jj_la1[95] = jj_gen;
         ;
       }
-      label_63:
+      label_62:
       while (true) {
         jj_consume_token(SEMICOLON);
-        label_64:
+        label_63:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case S:
             ;
             break;
           default:
-            jj_la1[98] = jj_gen;
-            break label_64;
+            jj_la1[96] = jj_gen;
+            break label_63;
           }
           jj_consume_token(S);
         }
@@ -2430,8 +2395,8 @@ boolean isPseudoElement = false;
           ;
           break;
         default:
-          jj_la1[99] = jj_gen;
-          break label_63;
+          jj_la1[97] = jj_gen;
+          break label_62;
         }
       }
                     documentHandler.variable(name, exp, guarded);
@@ -2466,7 +2431,7 @@ boolean isPseudoElement = false;
   Token n = null;
   String evaluator = "";
     jj_consume_token(IF_SYM);
-    label_65:
+    label_64:
     while (true) {
       n = booleanExpressionToken();
                                    evaluator += n.image;
@@ -2491,26 +2456,26 @@ boolean isPseudoElement = false;
         ;
         break;
       default:
-        jj_la1[100] = jj_gen;
-        break label_65;
+        jj_la1[98] = jj_gen;
+        break label_64;
       }
     }
     jj_consume_token(LBRACE);
-    label_66:
+    label_65:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[101] = jj_gen;
-        break label_66;
+        jj_la1[99] = jj_gen;
+        break label_65;
       }
       jj_consume_token(S);
     }
     documentHandler.startIfElseDirective();
     documentHandler.ifDirective(evaluator);
-    label_67:
+    label_66:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case LBRACKET:
@@ -2528,8 +2493,8 @@ boolean isPseudoElement = false;
         ;
         break;
       default:
-        jj_la1[102] = jj_gen;
-        break label_67;
+        jj_la1[100] = jj_gen;
+        break label_66;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case INCLUDE_SYM:
@@ -2555,33 +2520,33 @@ boolean isPseudoElement = false;
         styleRuleOrDeclarationOrNestedProperties();
         break;
       default:
-        jj_la1[103] = jj_gen;
+        jj_la1[101] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
     }
     jj_consume_token(RBRACE);
-    label_68:
+    label_67:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[104] = jj_gen;
-        break label_68;
+        jj_la1[102] = jj_gen;
+        break label_67;
       }
       jj_consume_token(S);
     }
-    label_69:
+    label_68:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case ELSE_SYM:
         ;
         break;
       default:
-        jj_la1[105] = jj_gen;
-        break label_69;
+        jj_la1[103] = jj_gen;
+        break label_68;
       }
       elseDirective();
     }
@@ -2592,22 +2557,22 @@ boolean isPseudoElement = false;
   String evaluator = "";
   Token n = null;
     jj_consume_token(ELSE_SYM);
-    label_70:
+    label_69:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[106] = jj_gen;
-        break label_70;
+        jj_la1[104] = jj_gen;
+        break label_69;
       }
       jj_consume_token(S);
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case IF:
       jj_consume_token(IF);
-      label_71:
+      label_70:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
@@ -2630,33 +2595,33 @@ boolean isPseudoElement = false;
           ;
           break;
         default:
-          jj_la1[107] = jj_gen;
-          break label_71;
+          jj_la1[105] = jj_gen;
+          break label_70;
         }
         n = booleanExpressionToken();
                                            if(n != null) evaluator += n.image;
       }
       break;
     default:
-      jj_la1[108] = jj_gen;
+      jj_la1[106] = jj_gen;
       ;
     }
     jj_consume_token(LBRACE);
-    label_72:
+    label_71:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[109] = jj_gen;
-        break label_72;
+        jj_la1[107] = jj_gen;
+        break label_71;
       }
       jj_consume_token(S);
     }
     if(!evaluator.trim().equals("")){ documentHandler.ifDirective(evaluator); }
     else{ documentHandler.elseDirective(); }
-    label_73:
+    label_72:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case LBRACKET:
@@ -2674,8 +2639,8 @@ boolean isPseudoElement = false;
         ;
         break;
       default:
-        jj_la1[110] = jj_gen;
-        break label_73;
+        jj_la1[108] = jj_gen;
+        break label_72;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case INCLUDE_SYM:
@@ -2701,21 +2666,21 @@ boolean isPseudoElement = false;
         styleRuleOrDeclarationOrNestedProperties();
         break;
       default:
-        jj_la1[111] = jj_gen;
+        jj_la1[109] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
     }
     jj_consume_token(RBRACE);
-    label_74:
+    label_73:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[112] = jj_gen;
-        break label_74;
+        jj_la1[110] = jj_gen;
+        break label_73;
       }
       jj_consume_token(S);
     }
@@ -2776,7 +2741,7 @@ boolean isPseudoElement = false;
       n = jj_consume_token(NOT_EQ);
       break;
     default:
-      jj_la1[113] = jj_gen;
+      jj_la1[111] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -2789,41 +2754,41 @@ boolean isPseudoElement = false;
   ArrayList<String> list = null;
   String listVariable = null;
     jj_consume_token(EACH_SYM);
-    label_75:
+    label_74:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[114] = jj_gen;
-        break label_75;
+        jj_la1[112] = jj_gen;
+        break label_74;
       }
       jj_consume_token(S);
     }
     var = jj_consume_token(VARIABLE);
-    label_76:
+    label_75:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[115] = jj_gen;
-        break label_76;
+        jj_la1[113] = jj_gen;
+        break label_75;
       }
       jj_consume_token(S);
     }
     jj_consume_token(EACH_IN);
-    label_77:
+    label_76:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[116] = jj_gen;
-        break label_77;
+        jj_la1[114] = jj_gen;
+        break label_76;
       }
       jj_consume_token(S);
     }
@@ -2837,24 +2802,24 @@ boolean isPseudoElement = false;
    documentHandler.startEachDirective(var.image, listVariable);
       break;
     default:
-      jj_la1[117] = jj_gen;
+      jj_la1[115] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
     jj_consume_token(LBRACE);
-    label_78:
+    label_77:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[118] = jj_gen;
-        break label_78;
+        jj_la1[116] = jj_gen;
+        break label_77;
       }
       jj_consume_token(S);
     }
-    label_79:
+    label_78:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case LBRACKET:
@@ -2872,16 +2837,16 @@ boolean isPseudoElement = false;
         ;
         break;
       default:
-        jj_la1[119] = jj_gen;
-        break label_79;
+        jj_la1[117] = jj_gen;
+        break label_78;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case INCLUDE_SYM:
         includeDirective();
         break;
       default:
-        jj_la1[120] = jj_gen;
-        if (jj_2_6(5)) {
+        jj_la1[118] = jj_gen;
+        if (jj_2_5(5)) {
           listModifyDirective();
         } else {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2905,7 +2870,7 @@ boolean isPseudoElement = false;
             styleRuleOrDeclarationOrNestedProperties();
             break;
           default:
-            jj_la1[121] = jj_gen;
+            jj_la1[119] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -2913,15 +2878,15 @@ boolean isPseudoElement = false;
       }
     }
     jj_consume_token(RBRACE);
-    label_80:
+    label_79:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[122] = jj_gen;
-        break label_80;
+        jj_la1[120] = jj_gen;
+        break label_79;
       }
       jj_consume_token(S);
     }
@@ -2932,53 +2897,53 @@ boolean isPseudoElement = false;
         ArrayList<String > strings = new ArrayList<String >();
         Token input;
     input = jj_consume_token(IDENT);
-    label_81:
+    label_80:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[123] = jj_gen;
-        break label_81;
+        jj_la1[121] = jj_gen;
+        break label_80;
       }
       jj_consume_token(S);
     }
           strings.add(input.image);
-    label_82:
+    label_81:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
         ;
         break;
       default:
-        jj_la1[124] = jj_gen;
-        break label_82;
+        jj_la1[122] = jj_gen;
+        break label_81;
       }
       jj_consume_token(COMMA);
-      label_83:
+      label_82:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[125] = jj_gen;
-          break label_83;
+          jj_la1[123] = jj_gen;
+          break label_82;
         }
         jj_consume_token(S);
       }
       input = jj_consume_token(IDENT);
                                                strings.add(input.image);
-      label_84:
+      label_83:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[126] = jj_gen;
-          break label_84;
+          jj_la1[124] = jj_gen;
+          break label_83;
         }
         jj_consume_token(S);
       }
@@ -2992,15 +2957,15 @@ boolean isPseudoElement = false;
     ArrayList<VariableNode> args = null;
     String body;
     jj_consume_token(MIXIN_SYM);
-    label_85:
+    label_84:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[127] = jj_gen;
-        break label_85;
+        jj_la1[125] = jj_gen;
+        break label_84;
       }
       jj_consume_token(S);
     }
@@ -3012,39 +2977,39 @@ boolean isPseudoElement = false;
       name = functionName();
       args = arglist();
       jj_consume_token(RPARAN);
-      label_86:
+      label_85:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[128] = jj_gen;
-          break label_86;
+          jj_la1[126] = jj_gen;
+          break label_85;
         }
         jj_consume_token(S);
       }
       break;
     default:
-      jj_la1[129] = jj_gen;
+      jj_la1[127] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
     jj_consume_token(LBRACE);
-    label_87:
+    label_86:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[130] = jj_gen;
-        break label_87;
+        jj_la1[128] = jj_gen;
+        break label_86;
       }
       jj_consume_token(S);
     }
      documentHandler.startMixinDirective(name, args);
-    label_88:
+    label_87:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case LBRACKET:
@@ -3066,8 +3031,8 @@ boolean isPseudoElement = false;
         ;
         break;
       default:
-        jj_la1[131] = jj_gen;
-        break label_88;
+        jj_la1[129] = jj_gen;
+        break label_87;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case INCLUDE_SYM:
@@ -3077,8 +3042,8 @@ boolean isPseudoElement = false;
         media();
         break;
       default:
-        jj_la1[132] = jj_gen;
-        if (jj_2_7(5)) {
+        jj_la1[130] = jj_gen;
+        if (jj_2_6(5)) {
           listModifyDirective();
         } else {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -3111,7 +3076,7 @@ boolean isPseudoElement = false;
             page();
             break;
           default:
-            jj_la1[133] = jj_gen;
+            jj_la1[131] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -3119,15 +3084,15 @@ boolean isPseudoElement = false;
       }
     }
     jj_consume_token(RBRACE);
-    label_89:
+    label_88:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[134] = jj_gen;
-        break label_89;
+        jj_la1[132] = jj_gen;
+        break label_88;
       }
       jj_consume_token(S);
     }
@@ -3139,26 +3104,26 @@ boolean isPseudoElement = false;
     VariableNode arg;
     boolean hasNonOptionalArgument = false;
     arg = mixinArg();
-    label_90:
+    label_89:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
         ;
         break;
       default:
-        jj_la1[135] = jj_gen;
-        break label_90;
+        jj_la1[133] = jj_gen;
+        break label_89;
       }
       jj_consume_token(COMMA);
-      label_91:
+      label_90:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[136] = jj_gen;
-          break label_91;
+          jj_la1[134] = jj_gen;
+          break label_90;
         }
         jj_consume_token(S);
       }
@@ -3199,45 +3164,45 @@ boolean isPseudoElement = false;
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COLON:
         jj_consume_token(COLON);
-        label_92:
+        label_91:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case S:
             ;
             break;
           default:
-            jj_la1[137] = jj_gen;
-            break label_92;
+            jj_la1[135] = jj_gen;
+            break label_91;
           }
           jj_consume_token(S);
         }
         first = nonVariableTerm(null);
         prev = first;
-        label_93:
+        label_92:
         while (true) {
-          if (jj_2_8(3)) {
+          if (jj_2_7(3)) {
             ;
           } else {
-            break label_93;
+            break label_92;
           }
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case COMMA:
             jj_consume_token(COMMA);
-            label_94:
+            label_93:
             while (true) {
               switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
               case S:
                 ;
                 break;
               default:
-                jj_la1[138] = jj_gen;
-                break label_94;
+                jj_la1[136] = jj_gen;
+                break label_93;
               }
               jj_consume_token(S);
             }
             break;
           default:
-            jj_la1[139] = jj_gen;
+            jj_la1[137] = jj_gen;
             ;
           }
           prev = nonVariableTerm(prev);
@@ -3249,13 +3214,13 @@ boolean isPseudoElement = false;
                  prev, variable.image);
         break;
       default:
-        jj_la1[140] = jj_gen;
+        jj_la1[138] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[141] = jj_gen;
+      jj_la1[139] = jj_gen;
       ;
     }
         VariableNode arg = new VariableNode(name, first, false);
@@ -3270,7 +3235,7 @@ boolean isPseudoElement = false;
     LexicalUnitImpl prev = null;
     first = term(null);
                          args.add(first); prev = first;
-    label_95:
+    label_94:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case PLUS:
@@ -3305,58 +3270,58 @@ boolean isPseudoElement = false;
         ;
         break;
       default:
-        jj_la1[142] = jj_gen;
-        break label_95;
+        jj_la1[140] = jj_gen;
+        break label_94;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COLON:
         jj_consume_token(COLON);
-        label_96:
+        label_95:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case S:
             ;
             break;
           default:
-            jj_la1[143] = jj_gen;
-            break label_96;
+            jj_la1[141] = jj_gen;
+            break label_95;
           }
           jj_consume_token(S);
         }
         break;
       default:
-        jj_la1[144] = jj_gen;
+        jj_la1[142] = jj_gen;
         ;
       }
       next = term(prev);
                                                                                               prev.setNextLexicalUnit(next); prev = next;
     }
-    label_97:
+    label_96:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
         ;
         break;
       default:
-        jj_la1[145] = jj_gen;
-        break label_97;
+        jj_la1[143] = jj_gen;
+        break label_96;
       }
       jj_consume_token(COMMA);
-      label_98:
+      label_97:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[146] = jj_gen;
-          break label_98;
+          jj_la1[144] = jj_gen;
+          break label_97;
         }
         jj_consume_token(S);
       }
       first = term(null);
                          args.add(first); prev = first;
-      label_99:
+      label_98:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case PLUS:
@@ -3391,27 +3356,27 @@ boolean isPseudoElement = false;
           ;
           break;
         default:
-          jj_la1[147] = jj_gen;
-          break label_99;
+          jj_la1[145] = jj_gen;
+          break label_98;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case COLON:
           jj_consume_token(COLON);
-          label_100:
+          label_99:
           while (true) {
             switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
             case S:
               ;
               break;
             default:
-              jj_la1[148] = jj_gen;
-              break label_100;
+              jj_la1[146] = jj_gen;
+              break label_99;
             }
             jj_consume_token(S);
           }
           break;
         default:
-          jj_la1[149] = jj_gen;
+          jj_la1[147] = jj_gen;
           ;
         }
         next = term(prev);
@@ -3426,15 +3391,15 @@ boolean isPseudoElement = false;
     String name;
     ArrayList<LexicalUnitImpl> args=null;
     jj_consume_token(INCLUDE_SYM);
-    label_101:
+    label_100:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[150] = jj_gen;
-        break label_101;
+        jj_la1[148] = jj_gen;
+        break label_100;
       }
       jj_consume_token(S);
     }
@@ -3455,22 +3420,22 @@ boolean isPseudoElement = false;
       jj_consume_token(RPARAN);
       break;
     default:
-      jj_la1[151] = jj_gen;
+      jj_la1[149] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
-    label_102:
+    label_101:
     while (true) {
       jj_consume_token(SEMICOLON);
-      label_103:
+      label_102:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[152] = jj_gen;
-          break label_103;
+          jj_la1[150] = jj_gen;
+          break label_102;
         }
         jj_consume_token(S);
       }
@@ -3479,8 +3444,8 @@ boolean isPseudoElement = false;
         ;
         break;
       default:
-        jj_la1[153] = jj_gen;
-        break label_102;
+        jj_la1[151] = jj_gen;
+        break label_101;
       }
     }
             documentHandler.includeDirective(name, args);
@@ -3494,11 +3459,11 @@ boolean isPseudoElement = false;
   }
 
   final public void listModifyDirective() throws ParseException {
-    if (jj_2_9(5)) {
+    if (jj_2_8(5)) {
       removeDirective();
-    } else if (jj_2_10(5)) {
+    } else if (jj_2_9(5)) {
       appendDirective();
-    } else if (jj_2_11(5)) {
+    } else if (jj_2_10(5)) {
       containsDirective();
     } else {
       jj_consume_token(-1);
@@ -3517,41 +3482,41 @@ boolean isPseudoElement = false;
         Token n = null;
     n = jj_consume_token(VARIABLE);
                     variable = n.image;
-    label_104:
+    label_103:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[154] = jj_gen;
-        break label_104;
+        jj_la1[152] = jj_gen;
+        break label_103;
       }
       jj_consume_token(S);
     }
     jj_consume_token(COLON);
-    label_105:
+    label_104:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[155] = jj_gen;
-        break label_105;
+        jj_la1[153] = jj_gen;
+        break label_104;
       }
       jj_consume_token(S);
     }
     jj_consume_token(APPEND);
-    label_106:
+    label_105:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[156] = jj_gen;
-        break label_106;
+        jj_la1[154] = jj_gen;
+        break label_105;
       }
       jj_consume_token(S);
     }
@@ -3561,19 +3526,19 @@ boolean isPseudoElement = false;
       jj_consume_token(RPARAN);
       break;
     default:
-      jj_la1[157] = jj_gen;
+      jj_la1[155] = jj_gen;
       ;
     }
     jj_consume_token(COMMA);
-    label_107:
+    label_106:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[158] = jj_gen;
-        break label_107;
+        jj_la1[156] = jj_gen;
+        break label_106;
       }
       jj_consume_token(S);
     }
@@ -3581,60 +3546,60 @@ boolean isPseudoElement = false;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case COMMA:
       jj_consume_token(COMMA);
-      label_108:
+      label_107:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[159] = jj_gen;
-          break label_108;
+          jj_la1[157] = jj_gen;
+          break label_107;
         }
         jj_consume_token(S);
       }
       n = jj_consume_token(IDENT);
                                      separator = n.image;
-      label_109:
+      label_108:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[160] = jj_gen;
-          break label_109;
+          jj_la1[158] = jj_gen;
+          break label_108;
         }
         jj_consume_token(S);
       }
       break;
     default:
-      jj_la1[161] = jj_gen;
+      jj_la1[159] = jj_gen;
       ;
     }
     jj_consume_token(RPARAN);
-    label_110:
+    label_109:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[162] = jj_gen;
-        break label_110;
+        jj_la1[160] = jj_gen;
+        break label_109;
       }
       jj_consume_token(S);
     }
     jj_consume_token(SEMICOLON);
-    label_111:
+    label_110:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[163] = jj_gen;
-        break label_111;
+        jj_la1[161] = jj_gen;
+        break label_110;
       }
       jj_consume_token(S);
     }
@@ -3652,41 +3617,41 @@ boolean isPseudoElement = false;
         Token n = null;
     n = jj_consume_token(VARIABLE);
                     variable = n.image;
-    label_112:
+    label_111:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[164] = jj_gen;
-        break label_112;
+        jj_la1[162] = jj_gen;
+        break label_111;
       }
       jj_consume_token(S);
     }
     jj_consume_token(COLON);
-    label_113:
+    label_112:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[165] = jj_gen;
-        break label_113;
+        jj_la1[163] = jj_gen;
+        break label_112;
       }
       jj_consume_token(S);
     }
     jj_consume_token(REMOVE);
-    label_114:
+    label_113:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[166] = jj_gen;
-        break label_114;
+        jj_la1[164] = jj_gen;
+        break label_113;
       }
       jj_consume_token(S);
     }
@@ -3696,19 +3661,19 @@ boolean isPseudoElement = false;
       jj_consume_token(RPARAN);
       break;
     default:
-      jj_la1[167] = jj_gen;
+      jj_la1[165] = jj_gen;
       ;
     }
     jj_consume_token(COMMA);
-    label_115:
+    label_114:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[168] = jj_gen;
-        break label_115;
+        jj_la1[166] = jj_gen;
+        break label_114;
       }
       jj_consume_token(S);
     }
@@ -3716,60 +3681,60 @@ boolean isPseudoElement = false;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case COMMA:
       jj_consume_token(COMMA);
-      label_116:
+      label_115:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[169] = jj_gen;
-          break label_116;
+          jj_la1[167] = jj_gen;
+          break label_115;
         }
         jj_consume_token(S);
       }
       n = jj_consume_token(IDENT);
                                      separator = n.image;
-      label_117:
+      label_116:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[170] = jj_gen;
-          break label_117;
+          jj_la1[168] = jj_gen;
+          break label_116;
         }
         jj_consume_token(S);
       }
       break;
     default:
-      jj_la1[171] = jj_gen;
+      jj_la1[169] = jj_gen;
       ;
     }
     jj_consume_token(RPARAN);
-    label_118:
+    label_117:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[172] = jj_gen;
-        break label_118;
+        jj_la1[170] = jj_gen;
+        break label_117;
       }
       jj_consume_token(S);
     }
     jj_consume_token(SEMICOLON);
-    label_119:
+    label_118:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[173] = jj_gen;
-        break label_119;
+        jj_la1[171] = jj_gen;
+        break label_118;
       }
       jj_consume_token(S);
     }
@@ -3787,41 +3752,41 @@ boolean isPseudoElement = false;
         Token n = null;
     n = jj_consume_token(VARIABLE);
                     variable = n.image;
-    label_120:
+    label_119:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[174] = jj_gen;
-        break label_120;
+        jj_la1[172] = jj_gen;
+        break label_119;
       }
       jj_consume_token(S);
     }
     jj_consume_token(COLON);
-    label_121:
+    label_120:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[175] = jj_gen;
-        break label_121;
+        jj_la1[173] = jj_gen;
+        break label_120;
       }
       jj_consume_token(S);
     }
     jj_consume_token(CONTAINS);
-    label_122:
+    label_121:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[176] = jj_gen;
-        break label_122;
+        jj_la1[174] = jj_gen;
+        break label_121;
       }
       jj_consume_token(S);
     }
@@ -3831,19 +3796,19 @@ boolean isPseudoElement = false;
       jj_consume_token(RPARAN);
       break;
     default:
-      jj_la1[177] = jj_gen;
+      jj_la1[175] = jj_gen;
       ;
     }
     jj_consume_token(COMMA);
-    label_123:
+    label_122:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[178] = jj_gen;
-        break label_123;
+        jj_la1[176] = jj_gen;
+        break label_122;
       }
       jj_consume_token(S);
     }
@@ -3851,60 +3816,60 @@ boolean isPseudoElement = false;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case COMMA:
       jj_consume_token(COMMA);
-      label_124:
+      label_123:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[179] = jj_gen;
-          break label_124;
+          jj_la1[177] = jj_gen;
+          break label_123;
         }
         jj_consume_token(S);
       }
       n = jj_consume_token(IDENT);
                                      separator = n.image;
-      label_125:
+      label_124:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[180] = jj_gen;
-          break label_125;
+          jj_la1[178] = jj_gen;
+          break label_124;
         }
         jj_consume_token(S);
       }
       break;
     default:
-      jj_la1[181] = jj_gen;
+      jj_la1[179] = jj_gen;
       ;
     }
     jj_consume_token(RPARAN);
-    label_126:
+    label_125:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[182] = jj_gen;
-        break label_126;
+        jj_la1[180] = jj_gen;
+        break label_125;
       }
       jj_consume_token(S);
     }
     jj_consume_token(SEMICOLON);
-    label_127:
+    label_126:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[183] = jj_gen;
-        break label_127;
+        jj_la1[181] = jj_gen;
+        break label_126;
       }
       jj_consume_token(S);
     }
@@ -4016,20 +3981,20 @@ boolean isPseudoElement = false;
                        exclusive = false;
       break;
     default:
-      jj_la1[184] = jj_gen;
+      jj_la1[182] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
     to = skipStatementUntilLeftBrace();
-    label_128:
+    label_127:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[185] = jj_gen;
-        break label_128;
+        jj_la1[183] = jj_gen;
+        break label_127;
       }
       jj_consume_token(S);
     }
@@ -4050,31 +4015,31 @@ boolean isPseudoElement = false;
   final public void extendDirective() throws ParseException {
  ArrayList<String> list;
     jj_consume_token(EXTEND_SYM);
-    label_129:
+    label_128:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[186] = jj_gen;
-        break label_129;
+        jj_la1[184] = jj_gen;
+        break label_128;
       }
       jj_consume_token(S);
     }
     list = selectorList();
-    label_130:
+    label_129:
     while (true) {
       jj_consume_token(SEMICOLON);
-      label_131:
+      label_130:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[187] = jj_gen;
-          break label_131;
+          jj_la1[185] = jj_gen;
+          break label_130;
         }
         jj_consume_token(S);
       }
@@ -4083,8 +4048,8 @@ boolean isPseudoElement = false;
         ;
         break;
       default:
-        jj_la1[188] = jj_gen;
-        break label_130;
+        jj_la1[186] = jj_gen;
+        break label_129;
       }
     }
      documentHandler.extendDirective(list);
@@ -4111,28 +4076,28 @@ boolean isPseudoElement = false;
 LexicalUnit exp;
     name = property();
     jj_consume_token(COLON);
-    label_132:
+    label_131:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[189] = jj_gen;
-        break label_132;
+        jj_la1[187] = jj_gen;
+        break label_131;
       }
       jj_consume_token(S);
     }
     jj_consume_token(LBRACE);
-    label_133:
+    label_132:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[190] = jj_gen;
-        break label_133;
+        jj_la1[188] = jj_gen;
+        break label_132;
       }
       jj_consume_token(S);
     }
@@ -4142,29 +4107,29 @@ LexicalUnit exp;
       declaration();
       break;
     default:
-      jj_la1[191] = jj_gen;
+      jj_la1[189] = jj_gen;
       ;
     }
-    label_134:
+    label_133:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SEMICOLON:
         ;
         break;
       default:
-        jj_la1[192] = jj_gen;
-        break label_134;
+        jj_la1[190] = jj_gen;
+        break label_133;
       }
       jj_consume_token(SEMICOLON);
-      label_135:
+      label_134:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[193] = jj_gen;
-          break label_135;
+          jj_la1[191] = jj_gen;
+          break label_134;
         }
         jj_consume_token(S);
       }
@@ -4173,21 +4138,21 @@ LexicalUnit exp;
         declaration();
         break;
       default:
-        jj_la1[194] = jj_gen;
+        jj_la1[192] = jj_gen;
         ;
       }
     }
     jj_consume_token(RBRACE);
       documentHandler.endNestedProperties(name);
-    label_136:
+    label_135:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[195] = jj_gen;
-        break label_136;
+        jj_la1[193] = jj_gen;
+        break label_135;
       }
       jj_consume_token(S);
     }
@@ -4198,7 +4163,7 @@ LexicalUnit exp;
  */
   final public void styleRuleOrDeclarationOrNestedProperties() throws ParseException {
     try {
-      if (jj_2_12(5)) {
+      if (jj_2_11(5)) {
         styleRule();
       } else {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4206,7 +4171,7 @@ LexicalUnit exp;
           declarationOrNestedProperties();
           break;
         default:
-          jj_la1[196] = jj_gen;
+          jj_la1[194] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -4250,15 +4215,15 @@ LexicalUnit exp;
       name = property();
        save = token;
       jj_consume_token(COLON);
-      label_137:
+      label_136:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[197] = jj_gen;
-          break label_137;
+          jj_la1[195] = jj_gen;
+          break label_136;
         }
         jj_consume_token(S);
       }
@@ -4297,7 +4262,7 @@ LexicalUnit exp;
           important = prio();
           break;
         default:
-          jj_la1[198] = jj_gen;
+          jj_la1[196] = jj_gen;
           ;
         }
          Token next = getToken(1);
@@ -4315,15 +4280,15 @@ LexicalUnit exp;
         break;
       case LBRACE:
         jj_consume_token(LBRACE);
-        label_138:
+        label_137:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case S:
             ;
             break;
           default:
-            jj_la1[199] = jj_gen;
-            break label_138;
+            jj_la1[197] = jj_gen;
+            break label_137;
           }
           jj_consume_token(S);
         }
@@ -4333,29 +4298,29 @@ LexicalUnit exp;
           declaration();
           break;
         default:
-          jj_la1[200] = jj_gen;
+          jj_la1[198] = jj_gen;
           ;
         }
-        label_139:
+        label_138:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case SEMICOLON:
             ;
             break;
           default:
-            jj_la1[201] = jj_gen;
-            break label_139;
+            jj_la1[199] = jj_gen;
+            break label_138;
           }
           jj_consume_token(SEMICOLON);
-          label_140:
+          label_139:
           while (true) {
             switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
             case S:
               ;
               break;
             default:
-              jj_la1[202] = jj_gen;
-              break label_140;
+              jj_la1[200] = jj_gen;
+              break label_139;
             }
             jj_consume_token(S);
           }
@@ -4364,27 +4329,27 @@ LexicalUnit exp;
             declaration();
             break;
           default:
-            jj_la1[203] = jj_gen;
+            jj_la1[201] = jj_gen;
             ;
           }
         }
         jj_consume_token(RBRACE);
-        label_141:
+        label_140:
         while (true) {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case S:
             ;
             break;
           default:
-            jj_la1[204] = jj_gen;
-            break label_141;
+            jj_la1[202] = jj_gen;
+            break label_140;
           }
           jj_consume_token(S);
         }
          documentHandler.endNestedProperties(name);
         break;
       default:
-        jj_la1[205] = jj_gen;
+        jj_la1[203] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4434,15 +4399,15 @@ LexicalUnit exp;
       name = property();
        save = token;
       jj_consume_token(COLON);
-      label_142:
+      label_141:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[206] = jj_gen;
-          break label_142;
+          jj_la1[204] = jj_gen;
+          break label_141;
         }
         jj_consume_token(S);
       }
@@ -4452,7 +4417,7 @@ LexicalUnit exp;
         important = prio();
         break;
       default:
-        jj_la1[207] = jj_gen;
+        jj_la1[205] = jj_gen;
         ;
       }
          documentHandler.property(name, exp, important);
@@ -4495,15 +4460,15 @@ LexicalUnit exp;
  */
   final public boolean prio() throws ParseException {
     jj_consume_token(IMPORTANT_SYM);
-    label_143:
+    label_142:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[208] = jj_gen;
-        break label_143;
+        jj_la1[206] = jj_gen;
+        break label_142;
       }
       jj_consume_token(S);
     }
@@ -4513,15 +4478,15 @@ LexicalUnit exp;
 
   final public boolean guarded() throws ParseException {
     jj_consume_token(GUARDED_SYM);
-    label_144:
+    label_143:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[209] = jj_gen;
-        break label_144;
+        jj_la1[207] = jj_gen;
+        break label_143;
       }
       jj_consume_token(S);
     }
@@ -4537,15 +4502,15 @@ LexicalUnit exp;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case DIV:
       n = jj_consume_token(DIV);
-      label_145:
+      label_144:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[210] = jj_gen;
-          break label_145;
+          jj_la1[208] = jj_gen;
+          break label_144;
         }
         jj_consume_token(S);
       }
@@ -4555,15 +4520,15 @@ LexicalUnit exp;
       break;
     case COMMA:
       n = jj_consume_token(COMMA);
-      label_146:
+      label_145:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[211] = jj_gen;
-          break label_146;
+          jj_la1[209] = jj_gen;
+          break label_145;
         }
         jj_consume_token(S);
       }
@@ -4572,7 +4537,7 @@ LexicalUnit exp;
                                                          prev);}
       break;
     default:
-      jj_la1[212] = jj_gen;
+      jj_la1[210] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4587,12 +4552,12 @@ LexicalUnit exp;
     char op;
     first = term(null);
                       res = first;
-    label_147:
+    label_146:
     while (true) {
-      if (jj_2_13(2)) {
+      if (jj_2_12(2)) {
         ;
       } else {
-        break label_147;
+        break label_146;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
@@ -4600,7 +4565,7 @@ LexicalUnit exp;
         res = operator(res);
         break;
       default:
-        jj_la1[213] = jj_gen;
+        jj_la1[211] = jj_gen;
         ;
       }
       res = term(res);
@@ -4623,7 +4588,7 @@ LexicalUnit exp;
         {if (true) return '+';}
       break;
     default:
-      jj_la1[214] = jj_gen;
+      jj_la1[212] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4671,7 +4636,7 @@ LexicalUnit exp;
       result = variableTerm(prev);
       break;
     default:
-      jj_la1[215] = jj_gen;
+      jj_la1[213] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -4722,7 +4687,7 @@ LexicalUnitImpl result = null;
         op = unaryOperator();
         break;
       default:
-        jj_la1[216] = jj_gen;
+        jj_la1[214] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4827,7 +4792,7 @@ LexicalUnitImpl result = null;
         result = function(op, prev);
         break;
       default:
-        jj_la1[217] = jj_gen;
+        jj_la1[215] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -4854,7 +4819,7 @@ LexicalUnitImpl result = null;
                    s+=".";
           break;
         default:
-          jj_la1[218] = jj_gen;
+          jj_la1[216] = jj_gen;
           ;
         }
         n = jj_consume_token(IDENT);
@@ -4901,25 +4866,25 @@ LexicalUnitImpl result = null;
         result = unicode(prev);
         break;
       default:
-        jj_la1[219] = jj_gen;
+        jj_la1[217] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
     default:
-      jj_la1[220] = jj_gen;
+      jj_la1[218] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
-    label_148:
+    label_147:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[221] = jj_gen;
-        break label_148;
+        jj_la1[219] = jj_gen;
+        break label_147;
       }
       jj_consume_token(S);
     }
@@ -4935,15 +4900,15 @@ LexicalUnitImpl result = null;
  Token n;
  LexicalUnit params = null;
     n = jj_consume_token(FUNCTION);
-    label_149:
+    label_148:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[222] = jj_gen;
-        break label_149;
+        jj_la1[220] = jj_gen;
+        break label_148;
       }
       jj_consume_token(S);
     }
@@ -4985,7 +4950,7 @@ LexicalUnitImpl result = null;
       params = expr();
       break;
     default:
-      jj_la1[223] = jj_gen;
+      jj_la1[221] = jj_gen;
       ;
     }
     jj_consume_token(RPARAN);
@@ -5456,15 +5421,15 @@ LexicalUnitImpl result = null;
  */
   final public void _parseRule() throws ParseException {
  String ret = null;
-    label_150:
+    label_149:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[224] = jj_gen;
-        break label_150;
+        jj_la1[222] = jj_gen;
+        break label_149;
       }
       jj_consume_token(S);
     }
@@ -5492,7 +5457,7 @@ LexicalUnitImpl result = null;
       fontFace();
       break;
     default:
-      jj_la1[225] = jj_gen;
+      jj_la1[223] = jj_gen;
       ret = skipStatement();
                     if ((ret == null) || (ret.length() == 0)) {
                         {if (true) return;}
@@ -5507,15 +5472,15 @@ LexicalUnitImpl result = null;
   }
 
   final public void _parseImportRule() throws ParseException {
-    label_151:
+    label_150:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[226] = jj_gen;
-        break label_151;
+        jj_la1[224] = jj_gen;
+        break label_150;
       }
       jj_consume_token(S);
     }
@@ -5523,15 +5488,15 @@ LexicalUnitImpl result = null;
   }
 
   final public void _parseMediaRule() throws ParseException {
-    label_152:
+    label_151:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[227] = jj_gen;
-        break label_152;
+        jj_la1[225] = jj_gen;
+        break label_151;
       }
       jj_consume_token(S);
     }
@@ -5539,15 +5504,15 @@ LexicalUnitImpl result = null;
   }
 
   final public void _parseDeclarationBlock() throws ParseException {
-    label_153:
+    label_152:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case S:
         ;
         break;
       default:
-        jj_la1[228] = jj_gen;
-        break label_153;
+        jj_la1[226] = jj_gen;
+        break label_152;
       }
       jj_consume_token(S);
     }
@@ -5556,29 +5521,29 @@ LexicalUnitImpl result = null;
       declaration();
       break;
     default:
-      jj_la1[229] = jj_gen;
+      jj_la1[227] = jj_gen;
       ;
     }
-    label_154:
+    label_153:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case SEMICOLON:
         ;
         break;
       default:
-        jj_la1[230] = jj_gen;
-        break label_154;
+        jj_la1[228] = jj_gen;
+        break label_153;
       }
       jj_consume_token(SEMICOLON);
-      label_155:
+      label_154:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[231] = jj_gen;
-          break label_155;
+          jj_la1[229] = jj_gen;
+          break label_154;
         }
         jj_consume_token(S);
       }
@@ -5587,7 +5552,7 @@ LexicalUnitImpl result = null;
         declaration();
         break;
       default:
-        jj_la1[232] = jj_gen;
+        jj_la1[230] = jj_gen;
         ;
       }
     }
@@ -5596,15 +5561,15 @@ LexicalUnitImpl result = null;
   final public ArrayList<String> _parseSelectors() throws ParseException {
   ArrayList<String> p = null;
     try {
-      label_156:
+      label_155:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case S:
           ;
           break;
         default:
-          jj_la1[233] = jj_gen;
-          break label_156;
+          jj_la1[231] = jj_gen;
+          break label_155;
         }
         jj_consume_token(S);
       }
@@ -5700,20 +5665,18 @@ LexicalUnitImpl result = null;
     finally { jj_save(11, xla); }
   }
 
-  private boolean jj_2_13(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_13(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(12, xla); }
+  private boolean jj_3R_310() {
+    if (jj_3R_269()) return true;
+    return false;
   }
 
-  private boolean jj_3R_230() {
-    if (jj_3R_252()) return true;
+  private boolean jj_3R_229() {
+    if (jj_3R_251()) return true;
     return false;
   }
 
-  private boolean jj_3R_286() {
-    if (jj_3R_280()) return true;
+  private boolean jj_3R_285() {
+    if (jj_3R_279()) return true;
     if (jj_scan_token(COLON)) return true;
     Token xsp;
     while (true) {
@@ -5721,57 +5684,52 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
-    if (jj_3R_311()) {
+    if (jj_3R_310()) {
     jj_scanpos = xsp;
-    if (jj_3R_312()) return true;
+    if (jj_3R_311()) return true;
     }
     return false;
   }
 
   private boolean jj_3_1() {
-    if (jj_3R_157()) return true;
+    if (jj_3R_156()) return true;
     return false;
   }
 
-  private boolean jj_3R_271() {
-    if (jj_3R_286()) return true;
+  private boolean jj_3R_270() {
+    if (jj_3R_285()) return true;
     return false;
   }
 
-  private boolean jj_3R_229() {
-    if (jj_3R_251()) return true;
+  private boolean jj_3R_228() {
+    if (jj_3R_250()) return true;
     return false;
   }
 
   private boolean jj_3_4() {
+    if (jj_3R_158()) return true;
     if (jj_3R_159()) return true;
-    if (jj_3R_160()) return true;
-    return false;
-  }
-
-  private boolean jj_3_6() {
-    if (jj_3R_157()) return true;
     return false;
   }
 
-  private boolean jj_3R_227() {
+  private boolean jj_3R_226() {
     if (jj_scan_token(COMMA)) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
-    if (jj_3R_226()) return true;
+    if (jj_3R_225()) return true;
     return false;
   }
 
-  private boolean jj_3_12() {
-    if (jj_3R_166()) return true;
+  private boolean jj_3_5() {
+    if (jj_3R_156()) return true;
     return false;
   }
 
-  private boolean jj_3R_226() {
-    if (jj_3R_160()) return true;
+  private boolean jj_3R_225() {
+    if (jj_3R_159()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
@@ -5784,37 +5742,42 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_256() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3_12()) {
-    jj_scanpos = xsp;
-    if (jj_3R_271()) return true;
-    }
+  private boolean jj_3_11() {
+    if (jj_3R_165()) return true;
     return false;
   }
 
-  private boolean jj_3R_261() {
+  private boolean jj_3R_255() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_11()) {
+    jj_scanpos = xsp;
     if (jj_3R_270()) return true;
+    }
     return false;
   }
 
-  private boolean jj_3R_181() {
-    if (jj_3R_226()) return true;
+  private boolean jj_3R_180() {
+    if (jj_3R_225()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_227()) { jj_scanpos = xsp; break; }
+      if (jj_3R_226()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
+  private boolean jj_3R_260() {
+    if (jj_3R_269()) return true;
+    return false;
+  }
+
   private boolean jj_3_2() {
-    if (jj_3R_157()) return true;
+    if (jj_3R_156()) return true;
     return false;
   }
 
-  private boolean jj_3R_245() {
+  private boolean jj_3R_244() {
     if (jj_scan_token(FUNCTION)) return true;
     Token xsp;
     while (true) {
@@ -5822,12 +5785,12 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
-    if (jj_3R_261()) jj_scanpos = xsp;
+    if (jj_3R_260()) jj_scanpos = xsp;
     if (jj_scan_token(RPARAN)) return true;
     return false;
   }
 
-  private boolean jj_3R_254() {
+  private boolean jj_3R_253() {
     if (jj_scan_token(EACH_SYM)) return true;
     Token xsp;
     while (true) {
@@ -5843,28 +5806,20 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_225() {
-    if (jj_3R_249()) return true;
-    return false;
-  }
-
   private boolean jj_3R_224() {
     if (jj_3R_248()) return true;
     return false;
   }
 
-  private boolean jj_3R_223() {
-    if (jj_3R_247()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_182() {
+  private boolean jj_3R_181() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_228()) {
+    if (jj_3R_227()) {
     jj_scanpos = xsp;
     if (jj_3_2()) {
     jj_scanpos = xsp;
+    if (jj_3R_228()) {
+    jj_scanpos = xsp;
     if (jj_3R_229()) {
     jj_scanpos = xsp;
     if (jj_3R_230()) {
@@ -5873,11 +5828,9 @@ LexicalUnitImpl result = null;
     jj_scanpos = xsp;
     if (jj_3R_232()) {
     jj_scanpos = xsp;
-    if (jj_3R_233()) {
-    jj_scanpos = xsp;
     if (jj_3_3()) {
     jj_scanpos = xsp;
-    if (jj_3R_234()) return true;
+    if (jj_3R_233()) return true;
     }
     }
     }
@@ -5889,13 +5842,23 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_228() {
-    if (jj_3R_250()) return true;
+  private boolean jj_3R_227() {
+    if (jj_3R_249()) return true;
     return false;
   }
 
-  private boolean jj_3R_166() {
-    if (jj_3R_181()) return true;
+  private boolean jj_3R_223() {
+    if (jj_3R_247()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_222() {
+    if (jj_3R_246()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_165() {
+    if (jj_3R_180()) return true;
     if (jj_scan_token(LBRACE)) return true;
     Token xsp;
     while (true) {
@@ -5904,7 +5867,7 @@ LexicalUnitImpl result = null;
     }
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_182()) { jj_scanpos = xsp; break; }
+      if (jj_3R_181()) { jj_scanpos = xsp; break; }
     }
     if (jj_scan_token(RBRACE)) return true;
     while (true) {
@@ -5914,28 +5877,28 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_269() {
+  private boolean jj_3R_268() {
     if (jj_scan_token(SEMICOLON)) return true;
     return false;
   }
 
-  private boolean jj_3R_253() {
+  private boolean jj_3R_252() {
     if (jj_scan_token(EXTEND_SYM)) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
-    if (jj_3R_181()) return true;
-    if (jj_3R_269()) return true;
+    if (jj_3R_180()) return true;
+    if (jj_3R_268()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_269()) { jj_scanpos = xsp; break; }
+      if (jj_3R_268()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_279() {
+  private boolean jj_3R_278() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(75)) {
@@ -5990,7 +5953,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_282() {
+  private boolean jj_3R_281() {
     if (jj_scan_token(FUNCTION)) return true;
     Token xsp;
     while (true) {
@@ -6000,7 +5963,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_280() {
+  private boolean jj_3R_279() {
     if (jj_scan_token(IDENT)) return true;
     Token xsp;
     while (true) {
@@ -6010,7 +5973,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_257() {
+  private boolean jj_3R_256() {
     if (jj_scan_token(VARIABLE)) return true;
     Token xsp;
     while (true) {
@@ -6020,41 +5983,56 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_246() {
+  private boolean jj_3R_245() {
     if (jj_scan_token(DOT)) return true;
     return false;
   }
 
-  private boolean jj_3R_222() {
+  private boolean jj_3R_221() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_246()) jj_scanpos = xsp;
+    if (jj_3R_245()) jj_scanpos = xsp;
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_221() {
-    if (jj_scan_token(STRING)) return true;
+  private boolean jj_3R_193() {
+    if (jj_scan_token(S)) return true;
     return false;
   }
 
   private boolean jj_3R_220() {
-    if (jj_3R_245()) return true;
+    if (jj_scan_token(STRING)) return true;
     return false;
   }
 
-  private boolean jj_3R_180() {
+  private boolean jj_3R_192() {
+    if (jj_scan_token(DOT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_219() {
+    if (jj_3R_244()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_191() {
+    if (jj_scan_token(EQ)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_179() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_220()) {
+    jj_scanpos = xsp;
     if (jj_3R_221()) {
     jj_scanpos = xsp;
     if (jj_3R_222()) {
     jj_scanpos = xsp;
     if (jj_3R_223()) {
     jj_scanpos = xsp;
-    if (jj_3R_224()) {
-    jj_scanpos = xsp;
-    if (jj_3R_225()) return true;
+    if (jj_3R_224()) return true;
     }
     }
     }
@@ -6062,71 +6040,46 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_194() {
-    if (jj_scan_token(S)) return true;
+  private boolean jj_3R_190() {
+    if (jj_scan_token(RPARAN)) return true;
     return false;
   }
 
-  private boolean jj_3R_193() {
-    if (jj_scan_token(DOT)) return true;
+  private boolean jj_3R_189() {
+    if (jj_scan_token(FUNCTION)) return true;
     return false;
   }
 
-  private boolean jj_3R_192() {
-    if (jj_scan_token(EQ)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_191() {
-    if (jj_scan_token(RPARAN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_190() {
-    if (jj_scan_token(FUNCTION)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_262() {
-    if (jj_3R_279()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_189() {
+  private boolean jj_3R_188() {
     if (jj_scan_token(COLON)) return true;
     return false;
   }
 
-  private boolean jj_3R_188() {
+  private boolean jj_3R_187() {
     if (jj_scan_token(INTERPOLATION)) return true;
     return false;
   }
 
-  private boolean jj_3R_187() {
+  private boolean jj_3R_186() {
     if (jj_scan_token(NUMBER)) return true;
     return false;
   }
 
-  private boolean jj_3R_250() {
-    if (jj_scan_token(IF_SYM)) return true;
-    Token xsp;
-    if (jj_3R_262()) return true;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_262()) { jj_scanpos = xsp; break; }
-    }
-    if (jj_scan_token(LBRACE)) return true;
+  private boolean jj_3R_261() {
+    if (jj_3R_278()) return true;
     return false;
   }
 
-  private boolean jj_3R_186() {
+  private boolean jj_3R_185() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_169() {
+  private boolean jj_3R_168() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_185()) {
+    jj_scanpos = xsp;
     if (jj_3R_186()) {
     jj_scanpos = xsp;
     if (jj_3R_187()) {
@@ -6141,9 +6094,7 @@ LexicalUnitImpl result = null;
     jj_scanpos = xsp;
     if (jj_3R_192()) {
     jj_scanpos = xsp;
-    if (jj_3R_193()) {
-    jj_scanpos = xsp;
-    if (jj_3R_194()) return true;
+    if (jj_3R_193()) return true;
     }
     }
     }
@@ -6155,22 +6106,29 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_219() {
-    if (jj_scan_token(DIMEN)) return true;
+  private boolean jj_3R_249() {
+    if (jj_scan_token(IF_SYM)) return true;
+    Token xsp;
+    if (jj_3R_261()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_261()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(LBRACE)) return true;
     return false;
   }
 
   private boolean jj_3R_218() {
-    if (jj_scan_token(KHZ)) return true;
+    if (jj_scan_token(DIMEN)) return true;
     return false;
   }
 
   private boolean jj_3R_217() {
-    if (jj_scan_token(HZ)) return true;
+    if (jj_scan_token(KHZ)) return true;
     return false;
   }
 
-  private boolean jj_3R_158() {
+  private boolean jj_3R_157() {
     if (jj_scan_token(MICROSOFT_RULE)) return true;
     Token xsp;
     while (true) {
@@ -6178,47 +6136,47 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     if (jj_scan_token(COLON)) return true;
-    if (jj_3R_169()) return true;
+    if (jj_3R_168()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_169()) { jj_scanpos = xsp; break; }
+      if (jj_3R_168()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_240() {
+  private boolean jj_3R_239() {
     if (jj_scan_token(SIBLING)) return true;
     return false;
   }
 
   private boolean jj_3R_216() {
-    if (jj_scan_token(MS)) return true;
+    if (jj_scan_token(HZ)) return true;
     return false;
   }
 
-  private boolean jj_3R_239() {
+  private boolean jj_3R_238() {
     if (jj_scan_token(PRECEDES)) return true;
     return false;
   }
 
   private boolean jj_3R_215() {
-    if (jj_scan_token(SECOND)) return true;
+    if (jj_scan_token(MS)) return true;
     return false;
   }
 
-  private boolean jj_3R_238() {
+  private boolean jj_3R_237() {
     if (jj_scan_token(PLUS)) return true;
     return false;
   }
 
-  private boolean jj_3R_195() {
+  private boolean jj_3R_194() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_238()) {
+    if (jj_3R_237()) {
     jj_scanpos = xsp;
-    if (jj_3R_239()) {
+    if (jj_3R_238()) {
     jj_scanpos = xsp;
-    if (jj_3R_240()) return true;
+    if (jj_3R_239()) return true;
     }
     }
     while (true) {
@@ -6229,16 +6187,16 @@ LexicalUnitImpl result = null;
   }
 
   private boolean jj_3R_214() {
-    if (jj_scan_token(GRAD)) return true;
+    if (jj_scan_token(SECOND)) return true;
     return false;
   }
 
   private boolean jj_3R_213() {
-    if (jj_scan_token(RAD)) return true;
+    if (jj_scan_token(GRAD)) return true;
     return false;
   }
 
-  private boolean jj_3R_172() {
+  private boolean jj_3R_171() {
     if (jj_scan_token(SIBLING)) return true;
     Token xsp;
     while (true) {
@@ -6248,7 +6206,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_171() {
+  private boolean jj_3R_170() {
     if (jj_scan_token(PRECEDES)) return true;
     Token xsp;
     while (true) {
@@ -6259,35 +6217,35 @@ LexicalUnitImpl result = null;
   }
 
   private boolean jj_3R_212() {
-    if (jj_scan_token(DEG)) return true;
+    if (jj_scan_token(RAD)) return true;
     return false;
   }
 
-  private boolean jj_3R_173() {
+  private boolean jj_3R_172() {
     if (jj_scan_token(S)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_195()) jj_scanpos = xsp;
+    if (jj_3R_194()) jj_scanpos = xsp;
     return false;
   }
 
-  private boolean jj_3R_159() {
+  private boolean jj_3R_158() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_169()) {
+    jj_scanpos = xsp;
     if (jj_3R_170()) {
     jj_scanpos = xsp;
     if (jj_3R_171()) {
     jj_scanpos = xsp;
-    if (jj_3R_172()) {
-    jj_scanpos = xsp;
-    if (jj_3R_173()) return true;
+    if (jj_3R_172()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_170() {
+  private boolean jj_3R_169() {
     if (jj_scan_token(PLUS)) return true;
     Token xsp;
     while (true) {
@@ -6298,87 +6256,94 @@ LexicalUnitImpl result = null;
   }
 
   private boolean jj_3R_211() {
-    if (jj_scan_token(EXS)) return true;
+    if (jj_scan_token(DEG)) return true;
     return false;
   }
 
   private boolean jj_3R_210() {
-    if (jj_scan_token(EMS)) return true;
+    if (jj_scan_token(EXS)) return true;
     return false;
   }
 
   private boolean jj_3R_209() {
+    if (jj_scan_token(EMS)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_208() {
     if (jj_scan_token(PX)) return true;
     return false;
   }
 
-  private boolean jj_3R_255() {
-    if (jj_3R_257()) return true;
+  private boolean jj_3R_254() {
+    if (jj_3R_256()) return true;
     if (jj_scan_token(COLON)) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
-    if (jj_3R_270()) return true;
+    if (jj_3R_269()) return true;
     return false;
   }
 
-  private boolean jj_3R_208() {
+  private boolean jj_3R_207() {
     if (jj_scan_token(IN)) return true;
     return false;
   }
 
-  private boolean jj_3R_207() {
+  private boolean jj_3R_206() {
     if (jj_scan_token(PC)) return true;
     return false;
   }
 
-  private boolean jj_3R_206() {
+  private boolean jj_3R_205() {
     if (jj_scan_token(MM)) return true;
     return false;
   }
 
-  private boolean jj_3R_205() {
+  private boolean jj_3R_204() {
     if (jj_scan_token(CM)) return true;
     return false;
   }
 
-  private boolean jj_3R_204() {
+  private boolean jj_3R_203() {
     if (jj_scan_token(PT)) return true;
     return false;
   }
 
-  private boolean jj_3R_203() {
+  private boolean jj_3R_202() {
     if (jj_scan_token(PERCENTAGE)) return true;
     return false;
   }
 
-  private boolean jj_3R_185() {
-    if (jj_3R_237()) return true;
+  private boolean jj_3R_184() {
+    if (jj_3R_236()) return true;
     return false;
   }
 
-  private boolean jj_3R_202() {
+  private boolean jj_3R_201() {
     if (jj_scan_token(NUMBER)) return true;
     return false;
   }
 
-  private boolean jj_3R_201() {
-    if (jj_3R_244()) return true;
+  private boolean jj_3R_200() {
+    if (jj_3R_243()) return true;
     return false;
   }
 
-  private boolean jj_3R_197() {
+  private boolean jj_3R_196() {
     if (jj_scan_token(HASH)) return true;
     return false;
   }
 
-  private boolean jj_3R_179() {
+  private boolean jj_3R_178() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_201()) jj_scanpos = xsp;
+    if (jj_3R_200()) jj_scanpos = xsp;
     xsp = jj_scanpos;
+    if (jj_3R_201()) {
+    jj_scanpos = xsp;
     if (jj_3R_202()) {
     jj_scanpos = xsp;
     if (jj_3R_203()) {
@@ -6413,9 +6378,7 @@ LexicalUnitImpl result = null;
     jj_scanpos = xsp;
     if (jj_3R_218()) {
     jj_scanpos = xsp;
-    if (jj_3R_219()) {
-    jj_scanpos = xsp;
-    if (jj_3R_220()) return true;
+    if (jj_3R_219()) return true;
     }
     }
     }
@@ -6437,12 +6400,12 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_162() {
+  private boolean jj_3R_161() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_179()) {
+    if (jj_3R_178()) {
     jj_scanpos = xsp;
-    if (jj_3R_180()) return true;
+    if (jj_3R_179()) return true;
     }
     while (true) {
       xsp = jj_scanpos;
@@ -6451,131 +6414,104 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_316() {
-    if (jj_3R_160()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_300() {
-    if (jj_scan_token(IDENT)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_315() {
-    if (jj_scan_token(NUMBER)) return true;
-    return false;
-  }
-
-  private boolean jj_3_5() {
+  private boolean jj_3R_299() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_247() {
-    if (jj_scan_token(HASH)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_301() {
+  private boolean jj_3R_300() {
     if (jj_scan_token(FUNCTION)) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
-    xsp = jj_scanpos;
-    if (jj_3_5()) {
-    jj_scanpos = xsp;
-    if (jj_3R_315()) {
-    jj_scanpos = xsp;
-    if (jj_3R_316()) return true;
-    }
-    }
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
-    }
-    if (jj_scan_token(RPARAN)) return true;
+    if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
     return false;
   }
 
-  private boolean jj_3R_237() {
-    if (jj_3R_257()) return true;
+  private boolean jj_3R_246() {
+    if (jj_scan_token(HASH)) return true;
     return false;
   }
 
-  private boolean jj_3R_184() {
-    if (jj_3R_162()) return true;
+  private boolean jj_3R_236() {
+    if (jj_3R_256()) return true;
     return false;
   }
 
-  private boolean jj_3R_168() {
+  private boolean jj_3R_183() {
+    if (jj_3R_161()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_167() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_184()) {
+    if (jj_3R_183()) {
     jj_scanpos = xsp;
-    if (jj_3R_185()) return true;
+    if (jj_3R_184()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_248() {
+  private boolean jj_3R_247() {
     if (jj_scan_token(URL)) return true;
     return false;
   }
 
-  private boolean jj_3R_167() {
-    if (jj_3R_183()) return true;
+  private boolean jj_3R_166() {
+    if (jj_3R_182()) return true;
     return false;
   }
 
-  private boolean jj_3R_299() {
+  private boolean jj_3R_298() {
     if (jj_scan_token(COLON)) return true;
     return false;
   }
 
-  private boolean jj_3R_260() {
+  private boolean jj_3R_259() {
     if (jj_scan_token(PLUS)) return true;
     return false;
   }
 
-  private boolean jj_3R_244() {
+  private boolean jj_3R_198() {
+    if (jj_scan_token(COLON)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_259()) {
+    if (jj_3R_298()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_299()) {
     jj_scanpos = xsp;
-    if (jj_3R_260()) return true;
+    if (jj_3R_300()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_259() {
-    if (jj_scan_token(MINUS)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_199() {
-    if (jj_scan_token(COLON)) return true;
+  private boolean jj_3R_243() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_299()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_300()) {
+    if (jj_3R_258()) {
     jj_scanpos = xsp;
-    if (jj_3R_301()) return true;
+    if (jj_3R_259()) return true;
     }
     return false;
   }
 
-  private boolean jj_3_13() {
+  private boolean jj_3R_258() {
+    if (jj_scan_token(MINUS)) return true;
+    return false;
+  }
+
+  private boolean jj_3_12() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_167()) jj_scanpos = xsp;
-    if (jj_3R_168()) return true;
+    if (jj_3R_166()) jj_scanpos = xsp;
+    if (jj_3R_167()) return true;
     return false;
   }
 
-  private boolean jj_3R_165() {
+  private boolean jj_3R_164() {
     if (jj_scan_token(VARIABLE)) return true;
     Token xsp;
     while (true) {
@@ -6596,27 +6532,27 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_270() {
-    if (jj_3R_168()) return true;
+  private boolean jj_3R_269() {
+    if (jj_3R_167()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3_13()) { jj_scanpos = xsp; break; }
+      if (jj_3_12()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3_11() {
-    if (jj_3R_165()) return true;
+  private boolean jj_3_10() {
+    if (jj_3R_164()) return true;
     return false;
   }
 
-  private boolean jj_3R_249() {
+  private boolean jj_3R_248() {
     if (jj_scan_token(UNICODERANGE)) return true;
     return false;
   }
 
-  private boolean jj_3R_236() {
+  private boolean jj_3R_235() {
     if (jj_scan_token(COMMA)) return true;
     Token xsp;
     while (true) {
@@ -6626,22 +6562,22 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_265() {
-    if (jj_3R_281()) return true;
+  private boolean jj_3R_264() {
+    if (jj_3R_280()) return true;
     return false;
   }
 
-  private boolean jj_3R_183() {
+  private boolean jj_3R_182() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_235()) {
+    if (jj_3R_234()) {
     jj_scanpos = xsp;
-    if (jj_3R_236()) return true;
+    if (jj_3R_235()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_235() {
+  private boolean jj_3R_234() {
     if (jj_scan_token(DIV)) return true;
     Token xsp;
     while (true) {
@@ -6651,7 +6587,7 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_163() {
+  private boolean jj_3R_162() {
     if (jj_scan_token(VARIABLE)) return true;
     Token xsp;
     while (true) {
@@ -6672,52 +6608,62 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3_10() {
-    if (jj_3R_164()) return true;
+  private boolean jj_3_9() {
+    if (jj_3R_163()) return true;
     return false;
   }
 
-  private boolean jj_3R_324() {
+  private boolean jj_3R_321() {
     if (jj_scan_token(STRING)) return true;
     return false;
   }
 
-  private boolean jj_3R_267() {
-    if (jj_scan_token(SEMICOLON)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_322() {
+  private boolean jj_3R_319() {
     if (jj_scan_token(STARMATCH)) return true;
     return false;
   }
 
-  private boolean jj_3R_323() {
+  private boolean jj_3R_320() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_321() {
+  private boolean jj_3R_318() {
     if (jj_scan_token(DOLLARMATCH)) return true;
     return false;
   }
 
-  private boolean jj_3R_320() {
+  private boolean jj_3R_266() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_317() {
     if (jj_scan_token(CARETMATCH)) return true;
     return false;
   }
 
-  private boolean jj_3R_319() {
+  private boolean jj_3R_316() {
     if (jj_scan_token(DASHMATCH)) return true;
     return false;
   }
 
-  private boolean jj_3R_318() {
+  private boolean jj_3R_315() {
     if (jj_scan_token(INCLUDES)) return true;
     return false;
   }
 
-  private boolean jj_3R_164() {
+  private boolean jj_3R_272() {
+    if (jj_scan_token(INTERPOLATION)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_314() {
+    if (jj_scan_token(EQ)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_163() {
     if (jj_scan_token(VARIABLE)) return true;
     Token xsp;
     while (true) {
@@ -6738,30 +6684,20 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_273() {
-    if (jj_scan_token(INTERPOLATION)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_317() {
-    if (jj_scan_token(EQ)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_306() {
+  private boolean jj_3R_305() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_317()) {
+    if (jj_3R_314()) {
     jj_scanpos = xsp;
-    if (jj_3R_318()) {
+    if (jj_3R_315()) {
     jj_scanpos = xsp;
-    if (jj_3R_319()) {
+    if (jj_3R_316()) {
     jj_scanpos = xsp;
-    if (jj_3R_320()) {
+    if (jj_3R_317()) {
     jj_scanpos = xsp;
-    if (jj_3R_321()) {
+    if (jj_3R_318()) {
     jj_scanpos = xsp;
-    if (jj_3R_322()) return true;
+    if (jj_3R_319()) return true;
     }
     }
     }
@@ -6772,9 +6708,9 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
-    if (jj_3R_323()) {
+    if (jj_3R_320()) {
     jj_scanpos = xsp;
-    if (jj_3R_324()) return true;
+    if (jj_3R_321()) return true;
     }
     while (true) {
       xsp = jj_scanpos;
@@ -6783,12 +6719,12 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_285() {
+  private boolean jj_3R_284() {
     if (jj_scan_token(COMMA)) return true;
     return false;
   }
 
-  private boolean jj_3R_200() {
+  private boolean jj_3R_199() {
     if (jj_scan_token(LBRACKET)) return true;
     Token xsp;
     while (true) {
@@ -6801,17 +6737,17 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
-    if (jj_3R_306()) jj_scanpos = xsp;
+    if (jj_3R_305()) jj_scanpos = xsp;
     if (jj_scan_token(RBRACKET)) return true;
     return false;
   }
 
-  private boolean jj_3R_234() {
-    if (jj_3R_256()) return true;
+  private boolean jj_3R_233() {
+    if (jj_3R_255()) return true;
     return false;
   }
 
-  private boolean jj_3R_284() {
+  private boolean jj_3R_283() {
     if (jj_scan_token(IDENT)) return true;
     Token xsp;
     while (true) {
@@ -6821,109 +6757,109 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_314() {
+  private boolean jj_3R_313() {
     if (jj_scan_token(INTERPOLATION)) return true;
     return false;
   }
 
-  private boolean jj_3R_264() {
-    if (jj_3R_257()) return true;
+  private boolean jj_3R_263() {
+    if (jj_3R_256()) return true;
     return false;
   }
 
-  private boolean jj_3R_157() {
+  private boolean jj_3R_242() {
+    if (jj_scan_token(PARENT)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_156() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3_9()) {
+    if (jj_3_8()) {
     jj_scanpos = xsp;
-    if (jj_3_10()) {
+    if (jj_3_9()) {
     jj_scanpos = xsp;
-    if (jj_3_11()) return true;
+    if (jj_3_10()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3_9() {
-    if (jj_3R_163()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_243() {
-    if (jj_scan_token(PARENT)) return true;
+  private boolean jj_3_8() {
+    if (jj_3R_162()) return true;
     return false;
   }
 
-  private boolean jj_3R_242() {
+  private boolean jj_3R_241() {
     if (jj_scan_token(ANY)) return true;
     return false;
   }
 
-  private boolean jj_3R_268() {
-    if (jj_3R_284()) return true;
+  private boolean jj_3R_267() {
+    if (jj_3R_283()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_285()) { jj_scanpos = xsp; break; }
+      if (jj_3R_284()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_281() {
-    if (jj_scan_token(INTERPOLATION)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_266() {
-    if (jj_3R_282()) return true;
-    if (jj_3R_283()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_258() {
+  private boolean jj_3R_257() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_272()) {
+    if (jj_3R_271()) {
     jj_scanpos = xsp;
-    if (jj_3R_273()) return true;
+    if (jj_3R_272()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_272() {
+  private boolean jj_3R_271() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_196() {
+  private boolean jj_3R_280() {
+    if (jj_scan_token(INTERPOLATION)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_195() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_241()) {
+    if (jj_3R_240()) {
     jj_scanpos = xsp;
-    if (jj_3R_242()) {
+    if (jj_3R_241()) {
     jj_scanpos = xsp;
-    if (jj_3R_243()) return true;
+    if (jj_3R_242()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_241() {
+  private boolean jj_3R_240() {
     Token xsp;
-    if (jj_3R_258()) return true;
+    if (jj_3R_257()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_258()) { jj_scanpos = xsp; break; }
+      if (jj_3R_257()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_263() {
-    if (jj_3R_280()) return true;
+  private boolean jj_3R_265() {
+    if (jj_3R_281()) return true;
+    if (jj_3R_282()) return true;
     return false;
   }
 
-  private boolean jj_3R_251() {
+  private boolean jj_3R_262() {
+    if (jj_3R_279()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_250() {
     if (jj_scan_token(INCLUDE_SYM)) return true;
     Token xsp;
     while (true) {
@@ -6931,108 +6867,108 @@ LexicalUnitImpl result = null;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
+    if (jj_3R_262()) {
+    jj_scanpos = xsp;
     if (jj_3R_263()) {
     jj_scanpos = xsp;
     if (jj_3R_264()) {
     jj_scanpos = xsp;
-    if (jj_3R_265()) {
-    jj_scanpos = xsp;
-    if (jj_3R_266()) return true;
+    if (jj_3R_265()) return true;
     }
     }
     }
-    if (jj_3R_267()) return true;
+    if (jj_3R_266()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_267()) { jj_scanpos = xsp; break; }
+      if (jj_3R_266()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_310() {
-    if (jj_3R_199()) return true;
+  private boolean jj_3R_309() {
+    if (jj_3R_198()) return true;
     return false;
   }
 
-  private boolean jj_3R_313() {
+  private boolean jj_3R_312() {
     if (jj_scan_token(IDENT)) return true;
     return false;
   }
 
-  private boolean jj_3R_294() {
+  private boolean jj_3R_293() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_313()) {
+    if (jj_3R_312()) {
     jj_scanpos = xsp;
-    if (jj_3R_314()) return true;
+    if (jj_3R_313()) return true;
     }
     return false;
   }
 
-  private boolean jj_3R_308() {
-    if (jj_3R_198()) return true;
+  private boolean jj_3R_307() {
+    if (jj_3R_197()) return true;
     return false;
   }
 
-  private boolean jj_3R_252() {
+  private boolean jj_3R_251() {
     if (jj_scan_token(MEDIA_SYM)) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
       if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
     }
-    if (jj_3R_268()) return true;
+    if (jj_3R_267()) return true;
     if (jj_scan_token(LBRACE)) return true;
     return false;
   }
 
   private boolean jj_3_3() {
-    if (jj_3R_158()) return true;
+    if (jj_3R_157()) return true;
     return false;
   }
 
-  private boolean jj_3R_305() {
-    if (jj_3R_199()) return true;
+  private boolean jj_3R_304() {
+    if (jj_3R_198()) return true;
     return false;
   }
 
-  private boolean jj_3R_303() {
-    if (jj_3R_198()) return true;
+  private boolean jj_3R_302() {
+    if (jj_3R_197()) return true;
     return false;
   }
 
-  private boolean jj_3R_293() {
-    if (jj_3R_199()) return true;
+  private boolean jj_3R_292() {
+    if (jj_3R_198()) return true;
     return false;
   }
 
-  private boolean jj_3R_198() {
+  private boolean jj_3R_197() {
     if (jj_scan_token(DOT)) return true;
     Token xsp;
-    if (jj_3R_294()) return true;
+    if (jj_3R_293()) return true;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_294()) { jj_scanpos = xsp; break; }
+      if (jj_3R_293()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_298() {
-    if (jj_3R_199()) return true;
+  private boolean jj_3R_297() {
+    if (jj_3R_198()) return true;
     return false;
   }
 
-  private boolean jj_3R_296() {
-    if (jj_3R_198()) return true;
+  private boolean jj_3R_295() {
+    if (jj_3R_197()) return true;
     return false;
   }
 
-  private boolean jj_3R_283() {
-    if (jj_3R_168()) return true;
+  private boolean jj_3R_282() {
+    if (jj_3R_167()) return true;
     return false;
   }
 
-  private boolean jj_3R_161() {
+  private boolean jj_3R_160() {
     if (jj_scan_token(COMMA)) return true;
     Token xsp;
     while (true) {
@@ -7042,233 +6978,233 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_233() {
-    if (jj_3R_255()) return true;
+  private boolean jj_3R_232() {
+    if (jj_3R_254()) return true;
     return false;
   }
 
-  private boolean jj_3R_309() {
-    if (jj_3R_200()) return true;
+  private boolean jj_3R_308() {
+    if (jj_3R_199()) return true;
     return false;
   }
 
-  private boolean jj_3R_307() {
-    if (jj_3R_197()) return true;
+  private boolean jj_3R_306() {
+    if (jj_3R_196()) return true;
     return false;
   }
 
-  private boolean jj_3R_278() {
+  private boolean jj_3R_277() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_306()) {
+    jj_scanpos = xsp;
     if (jj_3R_307()) {
     jj_scanpos = xsp;
     if (jj_3R_308()) {
     jj_scanpos = xsp;
-    if (jj_3R_309()) {
-    jj_scanpos = xsp;
-    if (jj_3R_310()) return true;
+    if (jj_3R_309()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3_8() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_161()) jj_scanpos = xsp;
-    if (jj_3R_162()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_302() {
-    if (jj_3R_197()) return true;
+  private boolean jj_3R_301() {
+    if (jj_3R_196()) return true;
     return false;
   }
 
-  private boolean jj_3R_277() {
+  private boolean jj_3R_276() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_301()) {
+    jj_scanpos = xsp;
     if (jj_3R_302()) {
     jj_scanpos = xsp;
     if (jj_3R_303()) {
     jj_scanpos = xsp;
-    if (jj_3R_304()) {
-    jj_scanpos = xsp;
-    if (jj_3R_305()) return true;
+    if (jj_3R_304()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_290() {
-    if (jj_3R_199()) return true;
+  private boolean jj_3R_289() {
+    if (jj_3R_198()) return true;
     return false;
   }
 
-  private boolean jj_3R_304() {
-    if (jj_3R_200()) return true;
+  private boolean jj_3_7() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_160()) jj_scanpos = xsp;
+    if (jj_3R_161()) return true;
     return false;
   }
 
-  private boolean jj_3R_295() {
-    if (jj_3R_197()) return true;
+  private boolean jj_3R_303() {
+    if (jj_3R_199()) return true;
     return false;
   }
 
-  private boolean jj_3R_276() {
+  private boolean jj_3R_294() {
+    if (jj_3R_196()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_275() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_294()) {
+    jj_scanpos = xsp;
     if (jj_3R_295()) {
     jj_scanpos = xsp;
     if (jj_3R_296()) {
     jj_scanpos = xsp;
-    if (jj_3R_297()) {
-    jj_scanpos = xsp;
-    if (jj_3R_298()) return true;
+    if (jj_3R_297()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3R_292() {
-    if (jj_3R_200()) return true;
+  private boolean jj_3R_291() {
+    if (jj_3R_199()) return true;
     return false;
   }
 
-  private boolean jj_3R_297() {
-    if (jj_3R_200()) return true;
+  private boolean jj_3R_296() {
+    if (jj_3R_199()) return true;
     return false;
   }
 
-  private boolean jj_3R_291() {
-    if (jj_3R_198()) return true;
+  private boolean jj_3R_290() {
+    if (jj_3R_197()) return true;
     return false;
   }
 
-  private boolean jj_3R_288() {
-    if (jj_3R_198()) return true;
+  private boolean jj_3R_287() {
+    if (jj_3R_197()) return true;
     return false;
   }
 
-  private boolean jj_3R_275() {
+  private boolean jj_3R_274() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_291()) {
+    if (jj_3R_290()) {
     jj_scanpos = xsp;
-    if (jj_3R_292()) {
+    if (jj_3R_291()) {
     jj_scanpos = xsp;
-    if (jj_3R_293()) return true;
+    if (jj_3R_292()) return true;
     }
     }
     return false;
   }
 
-  private boolean jj_3R_232() {
-    if (jj_3R_254()) return true;
+  private boolean jj_3R_231() {
+    if (jj_3R_253()) return true;
     return false;
   }
 
-  private boolean jj_3R_178() {
-    if (jj_3R_200()) return true;
+  private boolean jj_3R_177() {
+    if (jj_3R_199()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_278()) { jj_scanpos = xsp; break; }
+      if (jj_3R_277()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_312() {
-    if (jj_scan_token(LBRACE)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_177() {
-    if (jj_3R_199()) return true;
+  private boolean jj_3R_176() {
+    if (jj_3R_198()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_277()) { jj_scanpos = xsp; break; }
+      if (jj_3R_276()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_289() {
-    if (jj_3R_200()) return true;
+  private boolean jj_3R_288() {
+    if (jj_3R_199()) return true;
     return false;
   }
 
-  private boolean jj_3R_176() {
-    if (jj_3R_198()) return true;
+  private boolean jj_3R_311() {
+    if (jj_scan_token(LBRACE)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_175() {
+    if (jj_3R_197()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_276()) { jj_scanpos = xsp; break; }
+      if (jj_3R_275()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_287() {
-    if (jj_3R_197()) return true;
+  private boolean jj_3R_286() {
+    if (jj_3R_196()) return true;
     return false;
   }
 
-  private boolean jj_3R_175() {
-    if (jj_3R_197()) return true;
+  private boolean jj_3R_174() {
+    if (jj_3R_196()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_275()) { jj_scanpos = xsp; break; }
+      if (jj_3R_274()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_274() {
+  private boolean jj_3R_273() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_286()) {
+    jj_scanpos = xsp;
     if (jj_3R_287()) {
     jj_scanpos = xsp;
     if (jj_3R_288()) {
     jj_scanpos = xsp;
-    if (jj_3R_289()) {
-    jj_scanpos = xsp;
-    if (jj_3R_290()) return true;
+    if (jj_3R_289()) return true;
     }
     }
     }
     return false;
   }
 
-  private boolean jj_3_7() {
-    if (jj_3R_157()) return true;
+  private boolean jj_3_6() {
+    if (jj_3R_156()) return true;
     return false;
   }
 
-  private boolean jj_3R_174() {
-    if (jj_3R_196()) return true;
+  private boolean jj_3R_173() {
+    if (jj_3R_195()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_274()) { jj_scanpos = xsp; break; }
+      if (jj_3R_273()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  private boolean jj_3R_160() {
+  private boolean jj_3R_159() {
     Token xsp;
     xsp = jj_scanpos;
+    if (jj_3R_173()) {
+    jj_scanpos = xsp;
     if (jj_3R_174()) {
     jj_scanpos = xsp;
     if (jj_3R_175()) {
     jj_scanpos = xsp;
     if (jj_3R_176()) {
     jj_scanpos = xsp;
-    if (jj_3R_177()) {
-    jj_scanpos = xsp;
-    if (jj_3R_178()) return true;
+    if (jj_3R_177()) return true;
     }
     }
     }
@@ -7276,13 +7212,8 @@ LexicalUnitImpl result = null;
     return false;
   }
 
-  private boolean jj_3R_231() {
-    if (jj_3R_253()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_311() {
-    if (jj_3R_270()) return true;
+  private boolean jj_3R_230() {
+    if (jj_3R_252()) return true;
     return false;
   }
 
@@ -7296,7 +7227,7 @@ LexicalUnitImpl result = null;
   private Token jj_scanpos, jj_lastpos;
   private int jj_la;
   private int jj_gen;
-  final private int[] jj_la1 = new int[234];
+  final private int[] jj_la1 = new int[232];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -7308,18 +7239,18 @@ LexicalUnitImpl result = null;
       jj_la1_init_3();
    }
    private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0x0,0xc02,0xc02,0x0,0xc00,0x2,0x2,0x2,0x0,0xd0000000,0xc00,0x2,0xc00,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0xd3f45400,0xd3f45400,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x3f45400,0x2,0x2,0x2,0x3100000,0x2,0x3100000,0x3100002,0x2,0x80002,0x80002,0x2,0x2,0x2,0x2,0x2,0xd0000000,0x0,0x0,0xd0000000,0x2,0x400000,0x2,0x2,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0xd0000000,0x0,0x0,0x0,0x0,0xc0000000,0x2,0x2,0xfc000,0x2,0x0,0x2,0xfc000,0x0,0x2,0xd0000000,0x2,0x0,0x2,0x0,0x2,0x800000,0x4d380002,0x2,0xd0000000,0xd0000000,0x2,0x0,0x2,0x4d380002,0x0,0x2,0xd0000000,0xd0000000,0x2,0x4d380002,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x0,0xd0000000,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x0,0xd0000000,0x2,0x400000,0x2,0x2,0x2,0x400000,0x0,0x0,0x300000,0x2,0x0,0x400000,0x2,0x300000,0x2,0x0,0x2,0x0,0x2,0x800000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x0,0x2,0x2,0x2,0x800000,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x0,0x2,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x301000,0x2,0x0,0x2,0x2,0x2,0x2,0x8400000,0x8400000,0x300000,0x300000,0x300000,0x0,0x0,0x0,0x300000,0x2,0x2,0x300000,0x2,0xd0000000,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,};
+      jj_la1_0 = new int[] {0x0,0xc02,0xc02,0x0,0xc00,0x2,0x2,0x2,0x0,0xd0000000,0xc00,0x2,0xc00,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0xd3f45400,0xd3f45400,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x3f45400,0x2,0x2,0x2,0x3100000,0x2,0x3100000,0x3100002,0x2,0x80002,0x80002,0x2,0x2,0x2,0x2,0x2,0xd0000000,0x0,0x0,0xd0000000,0x2,0x400000,0x2,0x2,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0xd0000000,0x0,0x0,0x0,0x0,0xc0000000,0x2,0x2,0xfc000,0x2,0x0,0x2,0xfc000,0x0,0x2,0x0,0x2,0x0,0x2,0x800000,0x4d380002,0x2,0xd0000000,0xd0000000,0x2,0x0,0x2,0x4d380002,0x0,0x2,0xd0000000,0xd0000000,0x2,0x4d380002,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x0,0xd0000000,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x0,0xd0000000,0x2,0x400000,0x2,0x2,0x2,0x400000,0x0,0x0,0x300000,0x2,0x0,0x400000,0x2,0x300000,0x2,0x0,0x2,0x0,0x2,0x800000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x0,0x2,0x2,0x2,0x800000,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x0,0x2,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x301000,0x2,0x0,0x2,0x2,0x2,0x2,0x8400000,0x8400000,0x300000,0x300000,0x300000,0x0,0x0,0x0,0x300000,0x2,0x2,0x300000,0x2,0xd0000000,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,};
    }
    private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x50600181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x381,0x381,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x185,0x185,0x0,0x0,0x0,0x0,0x0,0x50400181,0x40000000,0x10400000,0x181,0x0,0x0,0x0,0x0,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x181,0x100,0x100,0x100,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x181,0x0,0x0,0x0,0x0,0x0,0x0,0x7e,0x0,0x400181,0x400181,0x0,0x80000000,0x0,0x7e,0x0,0x0,0x400181,0x400181,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x400181,0x400000,0x181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x50400181,0x400000,0x50000181,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x81,0x0,0x80,0x0,0x0,0x81,0x0,0x80,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0xc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x0,0x181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x50600181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x381,0x381,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x185,0x185,0x0,0x0,0x0,0x0,0x0,0x50400181,0x40000000,0x10400000,0x181,0x0,0x0,0x0,0x0,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x181,0x100,0x100,0x100,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x7e,0x0,0x400181,0x400181,0x0,0x80000000,0x0,0x7e,0x0,0x0,0x400181,0x400181,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x400181,0x400000,0x181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x50400181,0x400000,0x50000181,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x81,0x0,0x80,0x0,0x0,0x81,0x0,0x80,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0xc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x0,0x181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_2() {
-      jj_la1_2 = new int[] {0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x800,0xa0000880,0x0,0x0,0x0,0x0,0x440,0x0,0x80,0x0,0x0,0x0,0xe00015c0,0xe00015c0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0xc0001540,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180,0x180,0x0,0x0,0x0,0x0,0x0,0xa0000889,0x0,0x80000801,0x20000080,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x0,0x0,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000080,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x20000180,0x0,0x80,0x0,0x20,0x0,0x0,0x980,0x0,0xa0000881,0xa0000881,0x0,0x0,0x0,0x980,0x10,0x0,0xa0000881,0xa0000881,0x0,0x980,0x0,0x0,0x0,0x880,0x0,0xa0000881,0x0,0xa0000881,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xa0000881,0x80000000,0x20000881,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x3ffffdc0,0x0,0x0,0x0,0x0,0x3ffffdc0,0x0,0x0,0x0,0x880,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x80,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x3ffffdc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ffffdc0,0x0,0x1ffff100,0x0,0x200004c0,0x3ffff5c0,0x0,0x0,0x3ffffdc0,0x0,0xe0000080,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,};
+      jj_la1_2 = new int[] {0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x800,0xa0000880,0x0,0x0,0x0,0x0,0x440,0x0,0x80,0x0,0x0,0x0,0xe00015c0,0xe00015c0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0xc0001540,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180,0x180,0x0,0x0,0x0,0x0,0x0,0xa0000889,0x0,0x80000801,0x20000080,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x0,0x0,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000080,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x80,0x0,0x20,0x0,0x0,0x980,0x0,0xa0000881,0xa0000881,0x0,0x0,0x0,0x980,0x10,0x0,0xa0000881,0xa0000881,0x0,0x980,0x0,0x0,0x0,0x880,0x0,0xa0000881,0x0,0xa0000881,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xa0000881,0x80000000,0x20000881,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x3ffffdc0,0x0,0x0,0x0,0x0,0x3ffffdc0,0x0,0x0,0x0,0x880,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x80,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x3ffffdc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ffffdc0,0x0,0x1ffff100,0x0,0x200004c0,0x3ffff5c0,0x0,0x0,0x3ffffdc0,0x0,0xe0000080,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,};
    }
    private static void jj_la1_init_3() {
-      jj_la1_3 = new int[] {0x1,0x8,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x6,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401f,0xc401f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x6,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x0,0x0,0x0,0x44000,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x40000,0x0,0x4000,0x44000,0x0,0x0,0x44000,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_3 = new int[] {0x1,0x8,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x6,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401f,0xc401f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x6,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x0,0x0,0x0,0x44000,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x40000,0x0,0x4000,0x44000,0x0,0x0,0x44000,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
-  final private JJCalls[] jj_2_rtns = new JJCalls[13];
+  final private JJCalls[] jj_2_rtns = new JJCalls[12];
   private boolean jj_rescan = false;
   private int jj_gc = 0;
 
@@ -7329,7 +7260,7 @@ LexicalUnitImpl result = null;
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 234; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 232; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7339,7 +7270,7 @@ LexicalUnitImpl result = null;
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 234; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 232; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7349,7 +7280,7 @@ LexicalUnitImpl result = null;
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 234; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 232; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7359,7 +7290,7 @@ LexicalUnitImpl result = null;
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 234; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 232; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7476,7 +7407,7 @@ LexicalUnitImpl result = null;
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 234; i++) {
+    for (int i = 0; i < 232; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {
@@ -7521,7 +7452,7 @@ LexicalUnitImpl result = null;
 
   private void jj_rescan_token() {
     jj_rescan = true;
-    for (int i = 0; i < 13; i++) {
+    for (int i = 0; i < 12; i++) {
     try {
       JJCalls p = jj_2_rtns[i];
       do {
@@ -7540,7 +7471,6 @@ LexicalUnitImpl result = null;
             case 9: jj_3_10(); break;
             case 10: jj_3_11(); break;
             case 11: jj_3_12(); break;
-            case 12: jj_3_13(); break;
           }
         }
         p = p.next;
index a816a276b94a0fd5b7f4378935f3c96601b92b25..dfb12de6d63ee605a8160c2c6337cd06f9e30e3f 100644 (file)
@@ -1314,12 +1314,9 @@ boolean isPseudoElement = false;
                }
            }
        }
-         | ( n=<FUNCTION> ( <S> )* (
-             LOOKAHEAD(2) param=<IDENT> { d = convertIdent(param.image); }
-             | param=<NUMBER> { d = param.image; }
-             | d=simple_selector(null, ' ')
-             ) ( <S> )* ")" 
+         | ( n=<FUNCTION> ( <S> )* d=skipStatementUntilRightParan() <RPARAN>
                  {
+                 // accept anything between function and a right parenthesis
                  String f = convertIdent(n.image);
                  String colons = isPseudoElement ? "::" : ":";
                  String pseudofn = colons + f + d + ")";
index b0f98c92673fa02a584c60bba994ed807225c291..0125ef67700dd2f886010f369afa7c1c30fbed65 100644 (file)
@@ -22,6 +22,22 @@ attrib .attrib {
        type: pseudo-class;
 }
 
+.pseudo:nth-child(10n-1) {
+       type: pseudo-class;
+}
+
+.pseudo:nth-child(odd), .pseudo:nth-child(even) {
+       type: pseudo-class;
+}
+
+.pseudo:nth-child(2n+1), .pseudo:nth-child(4n+3), .pseudo:nth-child(0n+5), .pseudo:nth-child(n) {
+       type: pseudo-class;
+}
+
+.pseudo:nth-child(+3n - 2), .pseudo:nth-child(-n+ 6), .pseudo:nth-child(+6) {
+       type: pseudo-class;
+}
+
 .pseudo:lang(fr) {
        type: pseudo-class;
 }
index b0f98c92673fa02a584c60bba994ed807225c291..331318d4d634f0e26fc2e33a419938b723a706b9 100644 (file)
@@ -22,6 +22,23 @@ attrib .attrib {
        type: pseudo-class;
 }
 
+.pseudo:nth-child(10n-1) {
+       type: pseudo-class;
+}
+
+.pseudo:nth-child(odd), .pseudo:nth-child(even) {
+       type: pseudo-class;
+}
+
+.pseudo:nth-child(2n+1), .pseudo:nth-child(4n+3), .pseudo:nth-child(0n+5), .pseudo:nth-child(n) {
+       type: pseudo-class;
+}
+
+// whitespace
+.pseudo:nth-child( +3n - 2 ), .pseudo:nth-child( -n+ 6), .pseudo:nth-child( +6 ) {
+       type: pseudo-class;
+}
+
 .pseudo:lang(fr) {
        type: pseudo-class;
 }