Accept missing semicolon after do-while statement.
authorErik Verbruggen <erik.verbruggen@digia.com>
Thu, 22 Nov 2012 08:39:22 +0000 (09:39 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Mon, 26 Nov 2012 19:19:35 +0000 (20:19 +0100)
Although not valid according to ECMA 5.1, both JSC and V8 accept a
missing semicolon after a do-while loop. (Both JSC and V8 do not do this
through automatic semicolon insertion, but handle it as a special case.)

Change-Id: Iff2b07b894564740d2dcbf9b1d46bc279d30b9e3
Reviewed-by: Alan Alpert <aalpert@rim.com>
src/qml/qml/parser/parser.pri
src/qml/qml/parser/qqmljs.g
src/qml/qml/parser/qqmljsgrammar.cpp
src/qml/qml/parser/qqmljsgrammar_p.h
src/qml/qml/parser/qqmljsparser.cpp
src/qml/qml/parser/qqmljsparser_p.h
tests/auto/qml/qqmlecmascript/data/compatibilitySemicolon.qml [new file with mode: 0644]
tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
tools/qmlmin/main.cpp

index 7dba8bc..e5b8ae2 100644 (file)
@@ -17,3 +17,6 @@ SOURCES += \
     $$PWD/qqmljsgrammar.cpp \
     $$PWD/qqmljslexer.cpp \
     $$PWD/qqmljsparser.cpp \
+
+OTHER_FILES += \
+    $$PWD/qqmljs.g
index e71ad63..a32123f 100644 (file)
@@ -23,7 +23,7 @@
 
 %parser         QQmlJSGrammar
 %decl           qqmljsparser_p.h
-%impl           qdeclarativejsparser.cpp
+%impl           qqmljsparser.cpp
 %expect         2
 %expect-rr      2
 
@@ -60,6 +60,7 @@
 %token T_RESERVED_WORD "reserved word"
 %token T_MULTILINE_STRING_LITERAL "multiline string literal"
 %token T_COMMENT "comment"
+%token T_COMPATIBILITY_SEMICOLON
 
 --- context keywords.
 %token T_PUBLIC "public"
 //
 
 //
-// This file is automatically generated from qmljs.g.
-// Changes will be lost.
+//  W A R N I N G
+//  -------------
+//
+// This file is automatically generated from qqmljs.g.
+// Changes should be made to that file, not here. Any change to this file will
+// be lost!
+//
+// To regenerate this file, run:
+//    qlalr --no-debug --no-lines --qt qqmljs.g
 //
 
-#ifndef QDECLARATIVEJSPARSER_P_H
-#define QDECLARATIVEJSPARSER_P_H
+#ifndef QQMLJSPARSER_P_H
+#define QQMLJSPARSER_P_H
 
 #include "qqmljsglobal_p.h"
 #include "qqmljsgrammar_p.h"
@@ -383,8 +391,15 @@ protected:
 #include <QVarLengthArray>
 
 //
-// This file is automatically generated from qmljs.g.
-// Changes will be lost.
+//  W A R N I N G
+//  -------------
+//
+// This file is automatically generated from qqmljs.g.
+// Changes should be made to that file, not here. Any change to this file will
+// be lost!
+//
+// To regenerate this file, run:
+//    qlalr --no-debug --no-lines --qt qqmljs.g
 //
 
 using namespace QQmlJS;
@@ -2425,6 +2440,7 @@ case $rule_number: {
 
 
 IterationStatement: T_DO Statement T_WHILE T_LPAREN Expression T_RPAREN T_AUTOMATIC_SEMICOLON ;  -- automatic semicolon
+IterationStatement: T_DO Statement T_WHILE T_LPAREN Expression T_RPAREN T_COMPATIBILITY_SEMICOLON ;  -- for JSC/V8 compatibility
 IterationStatement: T_DO Statement T_WHILE T_LPAREN Expression T_RPAREN T_SEMICOLON ;
 /.
 case $rule_number: {
@@ -2889,7 +2905,8 @@ PropertyNameAndValueListOpt: PropertyNameAndValueList ;
         const int errorState = state_stack[tos];
 
         // automatic insertion of `;'
-        if (yytoken != -1 && t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken)) {
+        if (yytoken != -1 && ((t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken))
+                              || t_action(errorState, T_COMPATIBILITY_SEMICOLON))) {
             SavedToken &tk = token_buffer[0];
             tk.token = yytoken;
             tk.dval = yylval;
@@ -3014,5 +3031,5 @@ QT_QML_END_NAMESPACE
 
 
 
-#endif // QDECLARATIVEJSPARSER_P_H
+#endif // QQMLJSPARSER_P_H
 :/
index 6f011ad..7000786 100644 (file)
@@ -3,7 +3,7 @@
 ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
 ** Contact: http://www.qt-project.org/legal
 **
-** This file is part of the QtCore module of the Qt Toolkit.
+** This file is part of the Qt Toolkit.
 **
 ** $QT_BEGIN_LICENSE:LGPL$
 ** Commercial License Usage
@@ -53,46 +53,46 @@ const char *const QQmlJSGrammar::spell [] = {
   "||", "+", "+=", "++", "?", "}", "]", "%", "%=", "return", 
   ")", ";", 0, "*", "*=", "string literal", "property", "signal", "readonly", "switch", 
   "this", "throw", "~", "try", "typeof", "var", "void", "while", "with", "^", 
-  "^=", "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "comment", "public"
-  "import", "as", "on", 0, 0, 0, 0, 0, 0, 0, 
-  0, 0};
+  "^=", "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "comment", 0
+  "public", "import", "as", "on", 0, 0, 0, 0, 0, 0, 
+  0, 0, 0};
 
 const short QQmlJSGrammar::lhs [] = {
-  102, 102, 102, 102, 102, 102, 103, 109, 109, 112
-  112, 114, 113, 113, 113, 113, 113, 113, 113, 113
-  116, 111, 110, 119, 119, 120, 120, 121, 121, 118
-  107, 107, 107, 107, 123, 123, 123, 123, 123, 123
-  123, 107, 131, 131, 131, 132, 132, 133, 133, 107
-  107, 107, 107, 107, 107, 107, 107, 107, 107, 107
-  107, 107, 107, 107, 107, 107, 117, 117, 117, 117
-  117, 136, 136, 136, 136, 136, 136, 136, 136, 136
-  136, 136, 136, 136, 136, 136, 136, 136, 136, 122
-  138, 138, 138, 138, 137, 137, 140, 140, 142, 142
-  142, 142, 142, 142, 143, 143, 143, 143, 143, 143
-  143, 143, 143, 143, 143, 143, 143, 143, 143, 143
-  143, 143, 143, 143, 143, 143, 143, 143, 143, 143
-  143, 143, 143, 143, 143, 144, 144, 115, 115, 115
-  115, 115, 147, 147, 148, 148, 148, 148, 146, 146
-  149, 149, 150, 150, 151, 151, 151, 152, 152, 152
-  152, 152, 152, 152, 152, 152, 152, 153, 153, 153
-  153, 154, 154, 154, 155, 155, 155, 155, 156, 156
-  156, 156, 156, 156, 156, 157, 157, 157, 157, 157
-  157, 158, 158, 158, 158, 158, 159, 159, 159, 159
-  159, 160, 160, 161, 161, 162, 162, 163, 163, 164
-  164, 165, 165, 166, 166, 167, 167, 168, 168, 169
-  169, 170, 170, 171, 171, 141, 141, 172, 172, 173
-  173, 173, 173, 173, 173, 173, 173, 173, 173, 173
-  173, 105, 105, 174, 174, 175, 175, 176, 176, 104
-  104, 104, 104, 104, 104, 104, 104, 104, 104, 104
-  104, 104, 104, 104, 124, 185, 185, 184, 184, 135
-  135, 186, 186, 187, 187, 189, 189, 188, 190, 193
-  191, 191, 194, 192, 192, 125, 126, 126, 127, 127
-  177, 177, 177, 177, 177, 177, 177, 178, 178, 178
-  178, 179, 179, 179, 179, 180, 180, 128, 129, 195
-  195, 198, 198, 196, 196, 199, 197, 181, 181, 181
-  182, 182, 130, 130, 130, 200, 201, 183, 183, 134, 
-  145, 205, 205, 202, 202, 203, 203, 206, 108, 108
-  207, 207, 106, 106, 204, 204, 139, 139, 208};
+  103, 103, 103, 103, 103, 103, 104, 110, 110, 113
+  113, 115, 114, 114, 114, 114, 114, 114, 114, 114
+  117, 112, 111, 120, 120, 121, 121, 122, 122, 119
+  108, 108, 108, 108, 124, 124, 124, 124, 124, 124
+  124, 108, 132, 132, 132, 133, 133, 134, 134, 108
+  108, 108, 108, 108, 108, 108, 108, 108, 108, 108
+  108, 108, 108, 108, 108, 108, 118, 118, 118, 118
+  118, 137, 137, 137, 137, 137, 137, 137, 137, 137
+  137, 137, 137, 137, 137, 137, 137, 137, 137, 123
+  139, 139, 139, 139, 138, 138, 141, 141, 143, 143
+  143, 143, 143, 143, 144, 144, 144, 144, 144, 144
+  144, 144, 144, 144, 144, 144, 144, 144, 144, 144
+  144, 144, 144, 144, 144, 144, 144, 144, 144, 144
+  144, 144, 144, 144, 144, 145, 145, 116, 116, 116
+  116, 116, 148, 148, 149, 149, 149, 149, 147, 147
+  150, 150, 151, 151, 152, 152, 152, 153, 153, 153
+  153, 153, 153, 153, 153, 153, 153, 154, 154, 154
+  154, 155, 155, 155, 156, 156, 156, 156, 157, 157
+  157, 157, 157, 157, 157, 158, 158, 158, 158, 158
+  158, 159, 159, 159, 159, 159, 160, 160, 160, 160
+  160, 161, 161, 162, 162, 163, 163, 164, 164, 165
+  165, 166, 166, 167, 167, 168, 168, 169, 169, 170
+  170, 171, 171, 172, 172, 142, 142, 173, 173, 174
+  174, 174, 174, 174, 174, 174, 174, 174, 174, 174
+  174, 106, 106, 175, 175, 176, 176, 177, 177, 105
+  105, 105, 105, 105, 105, 105, 105, 105, 105, 105
+  105, 105, 105, 105, 125, 186, 186, 185, 185, 136
+  136, 187, 187, 188, 188, 190, 190, 189, 191, 194
+  192, 192, 195, 193, 193, 126, 127, 127, 128, 128
+  178, 178, 178, 178, 178, 178, 178, 178, 179, 179
+  179, 179, 180, 180, 180, 180, 181, 181, 129, 130
+  196, 196, 199, 199, 197, 197, 200, 198, 182, 182
+  182, 183, 183, 131, 131, 131, 201, 202, 184, 184, 
+  135, 146, 206, 206, 203, 203, 204, 204, 207, 109
+  109, 208, 208, 107, 107, 205, 205, 140, 140, 209};
 
 const short QQmlJSGrammar::rhs [] = {
   2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 
@@ -124,18 +124,18 @@ const short QQmlJSGrammar::rhs [] = {
   1, 1, 1, 1, 3, 1, 2, 0, 1, 3, 
   3, 1, 1, 1, 3, 1, 3, 2, 2, 2, 
   0, 1, 2, 0, 1, 1, 2, 2, 7, 5, 
-  7, 7, 5, 9, 10, 7, 8, 2, 2, 3
-  3, 2, 2, 3, 3, 3, 3, 5, 5, 3
-  5, 1, 2, 0, 1, 4, 3, 3, 3, 3, 
-  3, 3, 3, 3, 4, 5, 2, 2, 2, 8
-  8, 1, 3, 0, 1, 0, 1, 1, 1, 1, 
-  1, 2, 1, 1, 0, 1, 0, 1, 2};
+  7, 7, 7, 5, 9, 10, 7, 8, 2, 2
+  3, 3, 2, 2, 3, 3, 3, 3, 5, 5
+  3, 5, 1, 2, 0, 1, 4, 3, 3, 3, 
+  3, 3, 3, 3, 3, 4, 5, 2, 2, 2
+  8, 8, 1, 3, 0, 1, 0, 1, 1, 1, 
+  1, 1, 2, 1, 1, 0, 1, 0, 1, 2};
 
 const short QQmlJSGrammar::action_default [] = {
   0, 0, 22, 0, 0, 0, 22, 0, 175, 242, 
   206, 214, 210, 154, 226, 202, 3, 139, 73, 155, 
   218, 222, 143, 172, 153, 158, 138, 192, 179, 0, 
-  80, 81, 76, 345, 67, 347, 0, 0, 0, 0, 
+  80, 81, 76, 346, 67, 348, 0, 0, 0, 0, 
   78, 0, 0, 74, 77, 71, 0, 0, 68, 70, 
   69, 79, 72, 0, 75, 0, 0, 168, 0, 0, 
   155, 174, 157, 156, 0, 0, 0, 170, 171, 169, 
@@ -150,347 +150,348 @@ const short QQmlJSGrammar::action_default [] = {
   0, 239, 232, 230, 237, 238, 236, 235, 241, 234, 
   233, 231, 240, 227, 0, 215, 0, 0, 219, 0, 
   0, 223, 0, 0, 149, 141, 0, 140, 0, 145, 
-  159, 0, 346, 334, 335, 0, 332, 0, 333, 0, 
-  336, 250, 257, 256, 264, 252, 0, 253, 337, 0, 
-  344, 254, 255, 260, 258, 341, 338, 343, 261, 0, 
-  272, 0, 0, 0, 0, 345, 67, 0, 347, 68, 
+  159, 0, 347, 335, 336, 0, 333, 0, 334, 0, 
+  337, 250, 257, 256, 264, 252, 0, 253, 338, 0, 
+  345, 254, 255, 260, 258, 342, 339, 344, 261, 0, 
+  272, 0, 0, 0, 0, 346, 67, 0, 348, 68, 
   244, 286, 69, 0, 0, 0, 273, 0, 0, 262, 
-  263, 0, 251, 259, 287, 288, 331, 342, 0, 302
-  303, 304, 305, 0, 298, 299, 300, 301, 328, 329
-  0, 0, 0, 0, 0, 291, 292, 248, 246, 208
-  216, 212, 228, 204, 249, 0, 155, 220, 224, 197
-  186, 0, 0, 205, 0, 0, 0, 0, 198, 0
-  0, 0, 0, 0, 190, 188, 191, 189, 187, 200
-  199, 201, 0, 213, 0, 209, 0, 247, 155, 0
-  229, 244, 245, 0, 244, 0, 0, 294, 0, 0, 
-  0, 296, 0, 217, 0, 0, 221, 0, 0, 225
-  284, 0, 276, 285, 279, 0, 283, 0, 244, 277
-  0, 244, 0, 0, 295, 0, 0, 0, 297, 346
-  334, 0, 0, 336, 0, 330, 0, 320, 0, 0, 
-  0, 290, 0, 289, 0, 348, 0, 104, 266, 269
-  0, 105, 272, 108, 133, 110, 111, 76, 115, 116
-  67, 117, 120, 74, 77, 68, 244, 69, 79, 123
-  72, 125, 75, 127, 128, 273, 130, 131, 135, 0
-  97, 0, 0, 99, 103, 101, 88, 100, 102, 0
-  98, 87, 267, 265, 143, 144, 149, 0, 142, 0
-  319, 0, 306, 307, 0, 318, 0, 0, 0, 309
-  314, 312, 315, 0, 0, 313, 314, 0, 310, 0
-  311, 268, 317, 0, 268, 316, 0, 321, 322, 0
-  268, 323, 324, 0, 0, 325, 0, 0, 0, 326
-  327, 161, 160, 0, 0, 0, 293, 0, 0, 0, 
-  308, 281, 274, 0, 282, 278, 0, 280, 270, 0, 
-  271, 275, 91, 0, 0, 95, 82, 0, 84, 93
-  0, 85, 94, 96, 86, 92, 83, 0, 89, 165
-  163, 167, 164, 162, 166, 339, 6, 340, 4, 2
-  65, 90, 0, 0, 68, 70, 69, 31, 5, 0
-  66, 0, 45, 44, 43, 0, 0, 58, 0, 59
-  35, 36, 37, 38, 40, 41, 62, 39, 0, 45
-  0, 0, 0, 0, 0, 54, 0, 55, 0, 0, 
-  26, 0, 0, 63, 27, 0, 30, 28, 24, 0
-  29, 25, 0, 56, 0, 57, 143, 0, 60, 64
-  0, 0, 0, 0, 61, 0, 52, 46, 53, 47
-  0, 0, 0, 0, 49, 0, 50, 51, 48, 0
-  0, 143, 268, 0, 0, 42, 105, 272, 108, 133
-  110, 111, 76, 115, 116, 67, 117, 120, 74, 77
-  68, 244, 69, 79, 123, 72, 125, 75, 127, 128
-  273, 130, 131, 135, 0, 32, 33, 0, 34, 8
-  0, 10, 0, 9, 0, 1, 21, 12, 0, 13
-  0, 14, 0, 19, 20, 0, 15, 16, 0, 17
-  18, 11, 23, 7, 349};
+  263, 0, 251, 259, 287, 288, 332, 343, 0, 303
+  304, 305, 306, 0, 299, 300, 301, 302, 329, 330
+  0, 0, 0, 0, 0, 291, 292, 293, 248, 246
+  208, 216, 212, 228, 204, 249, 0, 155, 220, 224
+  197, 186, 0, 0, 205, 0, 0, 0, 0, 198
+  0, 0, 0, 0, 0, 190, 188, 191, 189, 187
+  200, 199, 201, 0, 213, 0, 209, 0, 247, 155
+  0, 229, 244, 245, 0, 244, 0, 0, 295, 0, 
+  0, 0, 297, 0, 217, 0, 0, 221, 0, 0
+  225, 284, 0, 276, 285, 279, 0, 283, 0, 244
+  277, 0, 244, 0, 0, 296, 0, 0, 0, 298
+  347, 335, 0, 0, 337, 0, 331, 0, 321, 0, 
+  0, 0, 290, 0, 289, 0, 349, 0, 104, 266
+  269, 0, 105, 272, 108, 133, 110, 111, 76, 115
+  116, 67, 117, 120, 74, 77, 68, 244, 69, 79
+  123, 72, 125, 75, 127, 128, 273, 130, 131, 135
+  0, 97, 0, 0, 99, 103, 101, 88, 100, 102
+  0, 98, 87, 267, 265, 143, 144, 149, 0, 142
+  0, 320, 0, 307, 308, 0, 319, 0, 0, 0
+  310, 315, 313, 316, 0, 0, 314, 315, 0, 311
+  0, 312, 268, 318, 0, 268, 317, 0, 322, 323
+  0, 268, 324, 325, 0, 0, 326, 0, 0, 0
+  327, 328, 161, 160, 0, 0, 0, 294, 0, 0, 
+  0, 309, 281, 274, 0, 282, 278, 0, 280, 270, 
+  0, 271, 275, 91, 0, 0, 95, 82, 0, 84
+  93, 0, 85, 94, 96, 86, 92, 83, 0, 89
+  165, 163, 167, 164, 162, 166, 340, 6, 341, 4
+  2, 65, 90, 0, 0, 68, 70, 69, 31, 5
+  0, 66, 0, 45, 44, 43, 0, 0, 58, 0
+  59, 35, 36, 37, 38, 40, 41, 62, 39, 0
+  45, 0, 0, 0, 0, 0, 54, 0, 55, 0, 
+  0, 26, 0, 0, 63, 27, 0, 30, 28, 24
+  0, 29, 25, 0, 56, 0, 57, 143, 0, 60
+  64, 0, 0, 0, 0, 61, 0, 52, 46, 53
+  47, 0, 0, 0, 0, 49, 0, 50, 51, 48
+  0, 0, 143, 268, 0, 0, 42, 105, 272, 108
+  133, 110, 111, 76, 115, 116, 67, 117, 120, 74
+  77, 68, 244, 69, 79, 123, 72, 125, 75, 127
+  128, 273, 130, 131, 135, 0, 32, 33, 0, 34
+  8, 0, 10, 0, 9, 0, 1, 21, 12, 0
+  13, 0, 14, 0, 19, 20, 0, 15, 16, 0
+  17, 18, 11, 23, 7, 350};
 
 const short QQmlJSGrammar::goto_default [] = {
-  7, 625, 207, 196, 205, 508, 496, 624, 643, 495
-  623, 621, 626, 22, 622, 18, 507, 549, 539, 546
-  541, 526, 191, 195, 197, 201, 233, 208, 230, 530
-  570, 569, 200, 232, 26, 474, 473, 356, 355, 9, 
-  354, 357, 107, 17, 145, 24, 13, 144, 19, 25, 
-  57, 23, 8, 28, 27, 269, 15, 263, 10, 259
-  12, 261, 11, 260, 20, 267, 21, 268, 14, 262
-  258, 299, 411, 264, 265, 202, 193, 192, 204, 203, 
-  229, 194, 360, 359, 231, 463, 462, 321, 322, 465
-  324, 464, 323, 419, 423, 426, 422, 421, 441, 442
+  7, 626, 207, 196, 205, 509, 497, 625, 644, 496
+  624, 622, 627, 22, 623, 18, 508, 550, 540, 547
+  542, 527, 191, 195, 197, 201, 233, 208, 230, 531
+  571, 570, 200, 232, 26, 475, 474, 357, 356, 9, 
+  355, 358, 107, 17, 145, 24, 13, 144, 19, 25, 
+  57, 23, 8, 28, 27, 270, 15, 264, 10, 260
+  12, 262, 11, 261, 20, 268, 21, 269, 14, 263
+  259, 300, 412, 265, 266, 202, 193, 192, 204, 203, 
+  229, 194, 361, 360, 231, 464, 463, 322, 323, 466
+  325, 465, 324, 420, 424, 427, 423, 422, 442, 443
   185, 199, 181, 184, 198, 206, 0};
 
 const short QQmlJSGrammar::action_index [] = {
-  404, 1275, 2411, 2411, 2509, 1000, 68, 92, 90, -102
-  88, 62, 60, 256, -102, 298, 86, -102, -102, 638
-  83, 134, 172, 219, -102, -102, -102, 454, 194, 1275
-  -102, -102, -102, 381, -102, 2215, 1555, 1275, 1275, 1275
-  -102, 790, 1275, -102, -102, -102, 1275, 1275, -102, -102
-  -102, -102, -102, 1275, -102, 1275, 1275, -102, 1275, 1275
-  102, 217, -102, -102, 1275, 1275, 1275, -102, -102, -102
-  204, 1275, 304, 1275, 1275, 1275, 1275, 539, 1275, 1275
-  1275, 1275, 1275, 1275, 308, 1275, 1275, 1275, 103, 131
-  135, 308, 210, 225, 216, 308, 444, 390, 434, 1275
-  82, 1275, 100, 2117, 1275, 1275, -102, -102, -102, -102
-  -102, -102, -102, -102, -102, -102, -102, -102, -102, -102
-  -102, -102, -102, -102, -102, -102, -102, -102, -102, -102
-  -102, -102, -102, -102, -102, -102, -102, -102, -102, -102
-  139, 1275, -102, -102, 91, 10, -102, 1275, -102, -102
-  1275, -102, -102, -102, -102, -102, -102, -102, -102, -102
-  -102, -102, -102, -102, 1275, 26, 1275, 1275, 69, 66
-  1275, -102, 2117, 1275, 1275, -102, 97, -102, 44, -102
-  -102, 67, -102, 297, 78, 24, -102, 291, -102, 36
-  2411, -102, -102, -102, -102, -102, 234, -102, -102, 12
-  -102, -102, -102, -102, -102, -102, 2411, -102, -102, 464
-  -102, 461, 115, 2509, 42, 381, 58, 46, 2705, 70
-  1275, -102, 74, 57, 1275, 65, -102, 59, 61, -102
-  -102, 367, -102, -102, -102, -102, -102, -102, 106, -102
-  -102, -102, -102, 87, -102, -102, -102, -102, -102, -102
-  56, 55, 1275, 99, 84, -102, -102, 1461, -102, 75
-  48, 52, -102, 306, 72, 53, 579, 77, 110, 370
-  230, 381, 1275, 286, 1275, 1275, 1275, 1275, 380, 1275
-  1275, 1275, 1275, 1275, 184, 169, 166, 190, 198, 460
-  363, 353, 1275, 50, 1275, 63, 1275, -102, 638, 1275
-  -102, 1275, 64, 39, 1275, 30, 2509, -102, 1275, 173
-  2509, -102, 1275, 79, 1275, 1275, 81, 80, 1275, -102
-  71, 149, 32, -102, -102, 1275, -102, 381, 1275, -102
-  73, 1275, 76, 2509, -102, 1275, 142, 2509, -102, -16
-  381, -42, -12, 2411, -39, -102, 2509, -102, 1275, 154
-  2509, 14, 2509, -102, 20, 16, -32, -102, -102, 2509
-  -51, 519, -4, 511, 136, 1275, 2509, -2, -35, 395, 
-  -1, -27, 908, 4, 6, -102, 1370, -102, 0, -36
-  27, 1275, 47, 22, 1275, 45, 1275, 21, 17, 1275, 
-  -102, 2313, 144, -102, -102, -102, -102, -102, -102, 1275
-  -102, -102, -102, -102, 274, -102, 1275, -21, -102, 2509
-  -102, 138, -102, -102, 2509, -102, 1275, 132, 5, -102
-  40, -102, 41, 101, 1275, -102, 38, 34, -102, -38
-  -102, 2509, -102, 105, 2509, -102, 245, -102, -102, 96
-  2509, 11, -102, -7, -11, -102, 352, 8, 18, -102
-  -102, -102, -102, 1275, 129, 2509, -102, 1275, 130, 2509
-  -102, 49, -102, 226, -102, -102, 1275, -102, -102, 362
-  -102, -102, -102, 107, 1837, -102, -102, 1649, -102, -102
-  1743, -102, -102, -102, -102, -102, -102, 114, -102, -102
-  -102, -102, -102, -102, -102, -102, -102, 2411, -102, -102
-  -102, 94, 9, 818, 189, -10, 31, -102, -102, 223, 
-  -102, 191, -102, -102, -102, 300, 178, -102, 1928, -102
-  -102, -102, -102, -102, -102, -102, -102, -102, 257, -25
-  381, 195, -22, 305, 240, -102, -6, -102, 818, 127
-  -102, -18, 818, -102, -102, 1184, -102, -102, -102, 1092
-  -102, -102, 237, -102, 1928, -102, 294, -8, -102, -102
-  176, 381, 19, 1928, -102, 165, -102, 174, -102, 2
-  -52, 381, 183, 381, -102, 117, -102, -102, -102, 2019
-  880, 285, 2607, 1555, 3, -102, 522, 35, 453, 108
-  1275, 2509, 51, 23, 475, 54, -17, 700, 7, 43, 
-  -102, 1370, -102, 28, -3, 33, 1275, 37, 15, 1275
-  25, 1275, 1, 13, 124, -102, -102, 29, -102, -102
-  728, -102, 250, -43, 627, -102, -102, 231, 372, -102
-  222, -102, 111, -102, -102, 381, -102, -102, 104, -102
-  -102, -102, -102, -102, -102
+  425, 1471, 2619, 2619, 2718, 1193, 69, 100, 86, -103
+  97, 62, 60, 236, -103, 278, 93, -103, -103, 609
+  83, 117, 266, 184, -103, -103, -103, 514, 179, 1471
+  -103, -103, -103, 392, -103, 2421, 1754, 1471, 1471, 1471
+  -103, 1001, 1471, -103, -103, -103, 1471, 1471, -103, -103
+  -103, -103, -103, 1471, -103, 1471, 1471, -103, 1471, 1471
+  115, 169, -103, -103, 1471, 1471, 1471, -103, -103, -103
+  152, 1471, 286, 1471, 1471, 1471, 1471, 562, 1471, 1471
+  1471, 1471, 1471, 1471, 198, 1471, 1471, 1471, 87, 122
+  138, 212, 197, 183, 227, 265, 562, 504, 472, 1471
+  79, 1471, 102, 2322, 1471, 1471, -103, -103, -103, -103
+  -103, -103, -103, -103, -103, -103, -103, -103, -103, -103
+  -103, -103, -103, -103, -103, -103, -103, -103, -103, -103
+  -103, -103, -103, -103, -103, -103, -103, -103, -103, -103
+  132, 1471, -103, -103, 94, 11, -103, 1471, -103, -103
+  1471, -103, -103, -103, -103, -103, -103, -103, -103, -103
+  -103, -103, -103, -103, 1471, 31, 1471, 1471, 67, 68
+  1471, -103, 2322, 1471, 1471, -103, 98, -103, 39, -103
+  -103, 61, -103, 296, 66, 30, -103, 376, -103, 35
+  2619, -103, -103, -103, -103, -103, 237, -103, -103, 21
+  -103, -103, -103, -103, -103, -103, 2619, -103, -103, 513
+  -103, 541, 114, 2718, 36, 422, 59, 42, 2916, 75
+  1471, -103, 77, 53, 1471, 63, -103, 57, 58, -103
+  -103, 407, -103, -103, -103, -103, -103, -103, 80, -103
+  -103, -103, -103, 82, -103, -103, -103, -103, -103, -103
+  52, 51, 1471, 96, 200, -103, -103, -103, 1659, -103
+  76, 44, 46, -103, 298, 73, 48, 736, 78, 95
+  363, 233, 347, 1471, 303, 1471, 1471, 1471, 1471, 402
+  1471, 1471, 1471, 1471, 1471, 248, 189, 159, 167, 174
+  482, 482, 444, 1471, 7, 1471, 64, 1471, -103, 627
+  1471, -103, 1471, 65, 34, 1471, 54, 2718, -103, 1471
+  140, 2718, -103, 1471, 74, 1471, 1471, 81, 84, 1471
+  -103, 71, 116, 33, -103, -103, 1471, -103, 313, 1471
+  -103, 70, 1471, 72, 2718, -103, 1471, 234, 2718, -103
+  -16, 324, -42, -12, 2619, -39, -103, 2718, -103, 1471
+  151, 2718, 12, 2718, -103, 20, 16, -32, -103, -103
+  2718, -52, 521, -2, 505, 129, 1471, 2718, -5, -35, 
+  497, 2, -24, 819, 6, 3, -103, 1567, -103, -1
+  -36, 26, 1471, 47, 22, 1471, 45, 1471, 17, 15, 
+  1471, -103, 2520, 49, -103, -103, -103, -103, -103, -103
+  1471, -103, -103, -103, -103, 322, -103, 1471, -25, -103
+  2718, -103, 118, -103, -103, 2718, -103, 1471, 112, 8
+  -103, 40, -103, 41, 106, 1471, -103, 38, 32, -103
+  -38, -103, 2718, -103, 104, 2718, -103, 247, -103, -103
+  99, 2718, -6, -103, -10, -18, -103, 387, 10, 9
+  -103, -103, -103, -103, 1471, 125, 2718, -103, 1471, 127
+  2718, -103, -13, -103, 187, -103, -103, 1471, -103, -103
+  398, -103, -103, -103, 110, 2039, -103, -103, 1849, -103
+  -103, 1944, -103, -103, -103, -103, -103, -103, 105, -103
+  -103, -103, -103, -103, -103, -103, -103, -103, 2619, -103
+  -103, -103, 113, -7, 1009, 145, -8, 19, -103, -103, 
+  186, -103, 178, -103, -103, -103, 356, 226, -103, 2131
+  -103, -103, -103, -103, -103, -103, -103, -103, -103, 322
+  -26, 364, 205, 43, 316, 206, -103, -3, -103, 1009
+  107, -103, -11, 827, -103, -103, 1379, -103, -103, -103
+  1286, -103, -103, 195, -103, 2131, -103, 305, -4, -103
+  -103, 209, 379, 18, 2131, -103, 182, -103, 199, -103
+  0, -53, 306, 154, 284, -103, 108, -103, -103, -103
+  2223, 918, 300, 2817, 1754, 5, -103, 549, 139, 636
+  114, 1471, 2718, 50, 24, 463, 55, -17, 910, 23, 
+  56, -103, 1567, -103, 27, 1, 29, 1471, 37, 14
+  1471, 25, 1471, 4, 13, 126, -103, -103, 28, -103
+  -103, 1100, -103, 267, -41, 714, -103, -103, 121, 301
+  -103, 215, -103, 91, -103, -103, 336, -103, -103, 89
+  -103, -103, -103, -103, -103, -103
 
-  -107, 9, -103, 2, 5, 266, 1, -107, -107, -107, 
-  -107, -107, -107, -107, -107, -107, -107, -107, -107, -39
-  -107, -107, -107, -107, -107, -107, -107, -107, -107, 86, 
-  -107, -107, -107, 8, -107, -107, -22, 19, 71, 174, 
-  -107, 186, 171, -107, -107, -107, 184, 178, -107, -107, 
-  -107, -107, -107, 144, -107, 124, 150, -107, 165, 161
-  -107, -107, -107, -107, 156, 160, 157, -107, -107, -107, 
-  -107, 147, -107, 142, 135, 179, 166, -107, 177, 170
-  117, 72, 134, 92, -107, 75, 94, 66, -107, -107, 
-  -107, -107, -107, -107, -107, -107, -107, -107, -107, 181
-  -107, 106, -107, 143, 78, 55, -107, -107, -107, -107, 
+  -107, 12, -95, 3, 6, 275, 2, -107, -107, -107, 
+  -107, -107, -107, -107, -107, -107, -107, -107, -107, -37
+  -107, -107, -107, -107, -107, -107, -107, -107, -107, 96, 
+  -107, -107, -107, 8, -107, -107, -17, 24, 95, 74, 
+  -107, 85, 175, -107, -107, -107, 172, 168, -107, -107, 
+  -107, -107, -107, 169, -107, 165, 164, -107, 156, 176
+  -107, -107, -107, -107, 182, 178, 112, -107, -107, -107, 
+  -107, 121, -107, 144, 118, 116, 117, -107, 108, 133
+  134, 137, 143, 152, -107, 147, 141, 136, -107, -107, 
+  -107, -107, -107, -107, -107, -107, -107, -107, -107, 107
+  -107, 173, -107, 153, 84, 56, -107, -107, -107, -107, 
   -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
   -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
   -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
-  -107, -5, -107, -107, -107, -107, -107, 54, -107, -107, 
-  51, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
-  -107, -107, -107, -107, 114, -107, 113, 38, -107, -107, 
-  41, -107, 231, 63, 112, -107, -107, -107, -107, -107, 
-  -107, -107, -107, 30, -107, -107, -107, 52, -107, -107, 
+  -107, 36, -107, -107, -107, -107, -107, 30, -107, -107, 
+  0, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
+  -107, -107, -107, -107, 79, -107, 99, 44, -107, -107, 
+  46, -107, 194, 70, 64, -107, -107, -107, -107, -107, 
+  -107, -107, -107, 29, -107, -107, -107, 65, -107, -107, 
   -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
-  -107, -107, -107, -107, -107, -107, 36, -107, -107, 45
-  -107, 42, -107, 40, -107, 80, -107, -107, 77, -107, 
-  88, -107, -107, -107, 83, 74, -107, -107, -107, -107, 
-  -107, -10, -107, -107, -107, -107, -107, -107, -107, -107, 
+  -107, -107, -107, -107, -107, -107, 80, -107, -107, 51
+  -107, 48, -107, 40, -107, 34, -107, -107, 86, -107, 
+  88, -107, -107, -107, 78, 60, -107, -107, -107, -107, 
+  -107, -6, -107, -107, -107, -107, -107, -107, -107, -107, 
   -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
-  -107, -107, 23, -107, -107, -107, -107, 100, -107, -107, 
+  -107, -107, 21, -107, -107, -107, -107, -107, 104, -107, 
   -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
-  -107, 4, 223, -107, 230, 236, 222, 205, -107, 127, 
-  125, 115, 96, 102, -107, -107, -107, -107, -107, -107, 
-  -107, -107, 234, -107, 215, -107, 199, -107, -107, 197, 
-  -107, 190, -107, -107, 163, -107, 90, -107, 0, -107
-  -1, -107, 203, -107, 189, 211, -107, -107, 195, -107
-  -107, -107, -107, -107, -107, 191, -107, 98, 119, -107
-  -107, 95, -107, 81, -107, 79, -107, 82, -107, -107, 
-  101, -107, -107, -16, -107, -107, 53, -107, 46, -107
-  57, -107, 59, -107, -107, -107, -107, -107, -107, 35
-  -107, 33, -107, 39, -107, 89, 67, -107, -107, 58
-  -107, -107, 84, -107, -107, -107, 73, -107, -107, -107, 
-  -107, 65, -107, 43, 93, -107, 109, -107, -107, 49
-  -107, 47, -107, -107, -107, -107, -107, -107, -107, 50
-  -107, -107, -107, -107, -107, -107, 108, -107, -107, 61
-  -107, -107, -107, -107, 62, -107, 68, -107, -107, -107, 
-  -107, -107, -23, -107, 69, -107, -19, -107, -107, -107, 
-  -107, 97, -107, -107, 99, -107, -107, -107, -107, -107, 
-  60, -61, -107, -107, 34, -107, 37, -107, 29, -107, 
-  -107, -107, -107, 32, -107, 76, -107, 44, -107, 56
-  -107, -107, -107, -107, -107, -107, 31, -107, -107, 116
-  -107, -107, -107, -107, -6, -107, -107, 70, -107, -107, 
-  64, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
-  -107, -107, -107, -107, -107, -107, -107, 193, -107, -107, 
-  -107, -107, -107, 7, -107, -107, -107, -107, -107, -107, 
-  -107, -20, -107, -107, -107, -7, -107, -107, 290, -107, 
+  -107, -107, 16, 201, -107, 202, 224, 223, 215, -107, 
+  67, 73, 75, 59, 106, -107, -107, -107, -107, -107, 
+  -107, -107, -107, 185, -107, 208, -107, 233, -107, -107, 
+  234, -107, 203, -107, -107, 299, -107, 90, -107, -2
+  -107, 11, -107, 181, -107, 200, 192, -107, -107, 189
+  -107, -107, -107, -107, -107, -107, 199, -107, 123, 131
+  -107, -107, 111, -107, 77, -107, 87, -107, 195, -107, 
+  -107, 110, -107, -107, -50, -107, -107, 39, -107, 42
+  -107, 63, -107, 66, -107, -107, -107, -107, -107, -107
+  68, -107, 43, -107, 47, -107, 92, 35, -107, -107
+  31, -107, -107, 105, -107, -107, -107, 94, -107, -107, 
+  -107, -107, 71, -107, 54, 101, -107, 89, -107, -107
+  55, -107, 49, -107, -107, -107, -107, -107, -107, -107
+  38, -107, -107, -107, -107, -107, -107, 114, -107, -107
+  76, -107, -107, -107, -107, 91, -107, 93, -107, -107, 
+  -107, -107, -107, -57, -107, 50, -107, -44, -107, -107, 
+  -107, -107, 98, -107, -107, 97, -107, -107, -107, -107, 
+  -107, 52, -42, -107, -107, 45, -107, 41, -107, 37, 
+  -107, -107, -107, -107, 57, -107, 53, -107, 58, -107
+  62, -107, -107, -107, -107, -107, -107, 9, -107, -107
+  187, -107, -107, -107, -107, 33, -107, -107, 139, -107, 
+  -107, 32, -107, -107, -107, -107, -107, -107, -107, -107, 
+  -107, -107, -107, -107, -107, -107, -107, -107, 82, -107, 
+  -107, -107, -107, -107, -11, -107, -107, -107, -107, -107, 
+  -107, -107, -25, -107, -107, -107, -9, -107, -107, 297, 
   -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, 
-  -2, -25, -107, -15, -107, -107, -107, -107, 172, -107
-  -107, -107, 287, -107, -107, 288, -107, -107, -107, 291
-  -107, -107, -107, -107, 336, -107, -107, 20, -107, -107, 
-  15, 3, -107, 304, -107, -107, -107, 24, -107, -107, 
-  -107, 28, 21, 26, -107, -107, -107, -107, -107, 320
-  104, -107, 13, 381, -3, -107, 6, -107, 10, -107
-  167, 22, -107, -107, 12, -107, -107, 87, -107, -107, 
-  -107, 25, -107, -107, -107, -107, 11, -107, 14, 85, 
-  -107, 121, -107, -107, -107, -107, -107, 27, -107, -107, 
-  17, -107, -107, 18, 91, -107, -107, -107, 16, -107
-  -107, -107, -107, -107, -107, -4, -107, -107, -107, -107, 
-  -107, -107, -107, -107, -107};
+  -107, -3, -26, -107, -10, -107, -107, -107, -107, 160
+  -107, -107, -107, 120, -107, -107, 279, -107, -107, -107
+  285, -107, -107, -107, -107, 329, -107, -107, 17, -107, 
+  -107, -13, 14, -107, 385, -107, -107, -107, 23, -107, 
+  -107, -107, 28, 18, 20, -107, -107, -107, -107, -107
+  313, 188, -107, 26, 267, 7, -107, 5, -107, -1
+  -107, 69, 19, -107, -107, 10, -107, -107, 103, -107, 
+  -107, -107, 27, -107, -107, -107, -107, 15, -107, -5, 
+  61, -107, 81, -107, -107, -107, -107, -107, 13, -107, 
+  -107, 25, -107, -107, 22, 119, -107, -107, -107, 4
+  -107, -107, -107, -107, -107, -107, -15, -107, -107, -107, 
+  -107, -107, -107, -107, -107, -107};
 
 const short QQmlJSGrammar::action_info [] = {
-  416, 257, 533, -132, 403, -113, 346, -102, 575, 348, 
-  572, -121, 531, -103, -121, 545, 345, 430, 342, 348, 
-  340, 343, 440, 401, 391, 545, 563, 389, 538, 446, 
-  352, 444, -129, 416, -124, -102, 545, 453, 420, 408, 
-  -124, 431, -132, 424, -126, 424, 424, 620, 440, 457, 
-  -103, 440, -129, 457, -126, 440, 560, 453, -113, 257, 
-  565, 346, 545, 335, 272, 346, 466, 236, 448, 190, 
-  149, 164, 141, 170, 99, 511, 272, 409, 257, 312, 
-  296, 414, 348, 312, 189, 164, 187, 318, 325, 71, 
-  306, 252, 644, 416, 141, 453, 292, 457, 440, 147, 
-  304, 71, 443, 183, 179, 141, 0, 141, 0, 172, 
-  99, 427, 434, 141, 301, 477, 444, 0, 0, 0, 
-  0, 0, 141, 0, 0, 0, 0, 292, 173, 294, 
-  58, 294, 542, 251, 331, 542, 333, 141, 141, 101, 
-  141, 59, 0, 58, 62, 256, 255, 141, 247, 246, 
-  141, 399, 0, 177, 59, 63, 428, 327, 620, 254, 
-  314, 101, 141, 478, 315, 640, 639, 242, 241, 249, 
-  248, 58, 634, 633, 488, 58, 249, 248, 577, 576, 
-  615, 141, 59, 543, 166, 518, 59, 172, 167, 455, 
-  459, 85, 418, 86, 85, 142, 86, 249, 248, 413, 
-  412, 567, 337, 512, 87, 512, 173, 87, 174, 85, 
-  328, 86, 512, 0, 350, 85, 64, 86, 529, 85, 
-  512, 86, 87, 85, 512, 86, 568, 566, 87, 64, 
-  579, 64, 87, 310, 469, 85, 87, 86, 0, 519, 
-  517, 85, 141, 86, 554, 0, 172, 536, 87, 514, 
-  85, 514, 86, 141, 87, 85, 545, 86, 514, 0, 
-  513, 65, 513, 87, 514, 173, 514, 66, 87, 513, 
-  514, 103, 172, 0, 65, 513, 65, 513, 0, 0, 
-  66, 513, 66, 637, 636, 0, 0, 470, 468, 172, 
-  104, 173, 105, 406, 0, 235, 234, 630, 555, 553, 
-  172, 537, 535, 0, 274, 275, 438, 437, 173, 172, 
-  406, 631, 629, 635, 0, 580, 73, 74, -90, 173, 
-  34, 174, 73, 74, 274, 275, 34, -90, 173, 34, 
-  174, 276, 277, 85, 34, 86, 0, 0, 0, 0, 
-  0, 628, 0, 75, 76, 0, 87, 0, 0, 75, 
-  76, 276, 277, 0, 0, 0, 0, 48, 50, 49, 
-  0, 0, 0, 48, 50, 49, 48, 50, 49, 0, 
-  0, 48, 50, 49, 0, 0, 279, 280, 0, 0, 
-  0, 34, 0, 45, 0, 281, 279, 280, 282, 45, 
-  283, 34, 45, 279, 280, 281, 34, 45, 282, 0, 
-  283, 34, 281, 279, 280, 282, 0, 283, 0, 0, 
-  34, 0, 281, 78, 79, 282, 0, 283, 48, 50, 
-  49, 80, 81, 0, 34, 82, 0, 83, 48, 50, 
-  49, -345, 0, 48, 50, 49, 0, 0, 48, 50, 
-  49, 0, 0, 0, 45, 0, 0, 48, 50, 49, 
-  0, 0, 0, 0, 45, 0, 0, 78, 79, 45, 
-  0, 48, 50, 49, 45, 80, 81, 78, 79, 82, 
-  0, 83, 0, 45, 0, 80, 81, 78, 79, 82, 
-  0, 83, 34, 279, 280, 80, 81, 45, 0, 82, 
-  34, 83, 281, 34, 0, 282, 0, 283, 6, 5, 
-  4, 1, 3, 2, 34, 0, 0, 0, 0, 0, 
-  0, -345, 0, 0, 245, 244, 0, 0, 0, 48, 
-  50, 49, 245, 244, 0, 240, 239, 48, 50, 49, 
-  48, 50, 49, 0, 0, 0, 0, 0, 0, 0, 
-  34, 48, 50, 49, 0, 45, 0, 0, 34, 0, 
-  0, 34, 0, 45, 0, 0, 45, 0, 0, 0, 
-  0, 0, 78, 79, 0, 0, 0, 45, 0, 0, 
-  80, 81, 245, 244, 82, 0, 83, 48, 50, 49, 
-  240, 239, 151, 240, 239, 48, 50, 49, 48, 50, 
-  49, 0, 152, 0, 0, 0, 153, 0, 0, 0, 
-  0, 0, 0, 45, 0, 154, 0, 155, 0, 0, 
-  308, 45, 0, 0, 45, 0, 0, 0, 156, 0, 
-  157, 62, 0, 0, 0, 0, 0, 0, 158, 0, 
-  0, 159, 63, 0, 0, 0, 0, 160, 0, 30, 
-  31, 151, 0, 161, 0, 0, 0, 0, 0, 33, 
-  0, 152, 0, 0, 0, 153, 34, 0, 0, 162, 
-  35, 36, 0, 37, 154, 0, 155, 0, 0, 0, 
-  503, 0, 0, 0, 44, 0, 0, 156, 0, 157, 
-  62, 0, 0, 0, 0, 0, 0, 158, 0, 0, 
-  159, 63, 51, 48, 50, 49, 160, 52, 0, 0, 
-  0, 0, 161, 0, 0, 0, 0, 0, 43, 54, 
-  32, 0, 30, 31, 40, 0, 0, 0, 162, 45, 
-  0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 
-  0, 0, 0, 35, 36, 0, 37, 0, 0, 0, 
-  30, 31, 0, 41, 0, 0, 0, 44, 0, 0, 
-  33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 
-  0, 35, 36, 0, 37, 51, 48, 50, 49, 0, 
-  52, 503, 0, 0, 0, 44, 0, 0, 0, 0, 
-  0, 43, 54, 32, 0, 0, 0, 40, 0, 0, 
-  0, 0, 45, 51, 48, 50, 49, 0, 52, 0, 
-  0, 0, 30, 31, 0, 0, 0, 0, 0, 43, 
-  54, 32, 33, 0, 0, 40, 0, 0, 0, 34, 
-  45, 0, 0, 35, 36, 0, 37, 0, 0, 0, 
-  30, 31, 0, 41, 0, 0, 0, 44, 0, 0, 
-  33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 
-  0, 35, 36, 0, 37, 51, 48, 50, 49, 0, 
-  52, 503, 0, 0, 0, 44, 0, 0, 0, 0, 
-  0, 43, 54, 32, 0, 0, 0, 40, 0, 0, 
-  0, 0, 45, 51, 48, 50, 49, 0, 52, 0, 
-  0, 0, 30, 31, 0, 0, 0, 0, 0, 43, 
-  54, 32, 33, 0, 0, 40, 0, 0, 0, 34, 
-  45, 0, 0, 35, 36, 0, 37, 0, 0, 0, 
-  30, 31, 0, 503, 0, 0, 0, 44, 0, 0, 
-  33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 
-  0, 35, 36, 0, 37, 51, 48, 50, 49, 0, 
-  52, 41, 0, 0, 0, 44, 0, 0, 0, 0, 
-  0, 43, 54, 32, 0, 0, 0, 40, 0, 0, 
-  0, 0, 45, 51, 48, 50, 49, 0, 52, 0, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 
-  54, 32, 0, 0, 0, 40, 0, 0, 0, 0, 
-  45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  502, 0, 30, 31, 0, 0, 0, 0, 0, 0, 
-  0, 0, 215, 0, 0, 0, 0, 0, 0, 34, 
-  0, 0, 0, 35, 36, 0, 37, 0, 0, 0, 
-  0, 0, 0, 503, 0, 0, 0, 44, 0, 0, 
+  417, 258, -113, 404, 467, -132, -102, 576, 573, 347, 
+  -103, 532, 349, -121, 445, 441, 346, 431, 343, 349, 
+  341, 344, 546, 402, 392, 564, 447, 390, 353, 546, 
+  -121, 539, -129, -124, -102, 409, -124, 417, 546, 432, 
+  454, 421, 441, 425, -126, 425, 425, 441, 566, 458, 
+  621, 458, -129, 454, -126, 441, 400, -113, 561, 512, 
+  258, 546, 347, -103, 336, 273, 347, 534, 190, 164, 
+  449, 149, 258, 141, 187, 170, 236, 273, 349, 99, 
+  313, 297, 410, 313, 415, 164, 295, 252, 326, 417, 
+  189, 319, 293, 454, 458, 305, 441, 183, 71, 179, 
+  645, 141, 147, 71, 141, 444, 141, 0, 0, 302, 
+  99, 435, 141, 141, 307, 543, 428, 0, 478, 445, 
+  141, 0, 293, 0, 328, 295, 58, 58, 172, 251, 
+  0, 332, 334, 141, 543, 141, 172, 59, 59, 101, 
+  141, 242, 241, 247, 246, 315, -132, 173, 141, 316, 
+  641, 640, 635, 634, 177, 173, 254, 62, 101, 141, 
+  621, 429, 58, 544, 64, 489, 479, 166, 63, 578, 
+  577, 167, 419, 59, 530, 249, 248, 329, 58, 414, 
+  413, 64, 616, 513, 85, 456, 86, 460, 142, 59, 
+  249, 248, 85, 580, 86, 470, 64, 87, 0, 85, 
+  311, 86, 555, 0, 85, 87, 86, 513, 85, 65, 
+  86, 351, 87, 537, 85, 66, 86, 87, 568, 546, 
+  515, 87, 85, 85, 86, 86, 65, 87, 513, 515, 
+  0, 514, 66, 519, 513, 87, 87, 85, 513, 86, 
+  514, 65, 141, 569, 567, 141, 0, 66, 471, 469, 
+  87, 103, 85, 515, 86, 141, 556, 554, 85, 0, 
+  86, 257, 255, 0, 514, 87, 0, 538, 536, 0, 
+  104, 87, 105, 85, 515, 86, 638, 637, 0, 581, 
+  515, 172, 0, 0, 515, 514, 87, 520, 518, 256, 
+  85, 514, 86, 0, 338, 514, 73, 74, 235, 234, 
+  173, 0, 174, 87, 73, 74, 0, 636, 439, 438, 
+  0, 0, 0, 34, 631, 172, 275, 276, 0, 0, 
+  172, 275, 276, 75, 76, 34, 0, 0, 632, 630, 
+  34, 75, 76, -90, 173, 34, 174, 172, -90, 173, 
+  0, 174, 34, 277, 278, 34, 0, 0, 277, 278, 
+  48, 50, 49, 34, 0, 0, 173, 0, 407, 629, 
+  0, 0, 48, 50, 49, 34, 0, 48, 50, 49, 
+  0, 0, 48, 50, 49, 0, 34, 45, 0, 48, 
+  50, 49, 48, 50, 49, 34, 280, 281, 0, 45, 
+  48, 50, 49, 34, 45, 282, 0, 0, 283, 45, 
+  284, 0, 48, 50, 49, 34, 45, 0, 34, 45, 
+  0, 0, 0, 48, 50, 49, 34, 45, 0, 0, 
+  0, 34, 48, 50, 49, 280, 281, 34, 0, 45, 
+  48, 50, 49, 0, 282, 0, 34, 283, 0, 284, 
+  45, 0, 48, 50, 49, 48, 50, 49, 0, 45, 
+  0, 34, 0, 48, 50, 49, 0, 45, 48, 50, 
+  49, 0, 0, 0, 48, 50, 49, 280, 281, 45, 
+  0, 0, 45, 48, 50, 49, 282, 0, 0, 283, 
+  45, 284, 0, 0, 0, 45, 0, 0, 48, 50, 
+  49, 45, 34, 0, 0, 78, 79, 0, 0, -346, 
+  45, 0, 0, 80, 81, 280, 281, 82, 0, 83, 
+  0, 0, 0, 0, 282, 45, 0, 283, 0, 284, 
+  6, 5, 4, 1, 3, 2, 34, 78, 79, 48, 
+  50, 49, 0, -346, 34, 80, 81, 78, 79, 82, 
+  0, 83, 34, 0, 0, 80, 81, 0, 0, 82, 
+  34, 83, 0, 0, 0, 0, 45, 0, 0, 0, 
+  0, 0, 0, 48, 50, 49, 245, 244, 0, 0, 
+  34, 48, 50, 49, 240, 239, 0, 0, 34, 48, 
+  50, 49, 240, 239, 0, 78, 79, 48, 50, 49, 
+  45, 0, 0, 80, 81, 0, 0, 82, 45, 83, 
+  0, 0, 245, 244, 0, 0, 45, 48, 50, 49, 
+  240, 239, 151, 0, 45, 48, 50, 49, 0, 0, 
+  0, 0, 152, 0, 0, 0, 153, 0, 0, 0, 
+  151, 0, 0, 0, 45, 154, 0, 155, 0, 0, 
+  152, 0, 45, 0, 153, 0, 0, 0, 156, 0, 
+  157, 62, 0, 154, 0, 155, 0, 0, 158, 0, 
+  0, 159, 63, 0, 0, 34, 156, 160, 157, 62, 
+  0, 0, 0, 161, 0, 0, 158, 0, 0, 159, 
+  63, 0, 0, 0, 0, 160, 0, 0, 0, 162, 
+  0, 161, 0, 0, 0, 0, 0, 245, 244, 0, 
+  0, 0, 48, 50, 49, 0, 0, 162, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 51, 504, 506, 505, 0, 
-  52, 0, 0, 0, 0, 226, 0, 0, 0, 0, 
-  0, 43, 54, 32, 210, 0, 0, 40, 0, 0, 
-  0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 502, 0, 30, 31, 0, 0, 0, 0, 
-  0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 
-  0, 34, 0, 0, 0, 35, 36, 0, 37, 0, 
-  0, 0, 0, 0, 0, 503, 0, 0, 0, 44, 
-  0, 0, 0, 0, 0, 0, 0, 550, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 51, 504, 506, 
-  505, 0, 52, 0, 0, 0, 0, 226, 0, 0, 
-  0, 0, 0, 43, 54, 32, 210, 0, 0, 40, 
-  0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 502, 0, 30, 31, 0, 0, 
-  0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 
-  0, 0, 0, 34, 0, 0, 0, 35, 36, 0, 
-  37, 0, 0, 0, 0, 0, 0, 503, 0, 0, 
-  0, 44, 0, 0, 0, 0, 0, 0, 0, 547, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 
-  504, 506, 505, 0, 52, 0, 0, 0, 0, 226, 
-  0, 0, 0, 0, 0, 43, 54, 32, 210, 0, 
-  0, 40, 0, 0, 0, 0, 45, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 29, 30, 31, 0, 
-  0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 
-  0, 0, 0, 0, 34, 0, 0, 0, 35, 36, 
-  0, 37, 0, 0, 0, 38, 0, 39, 41, 42, 
-  0, 0, 44, 0, 0, 0, 46, 0, 47, 0, 
+  0, 0, 0, 0, 0, 0, 30, 31, 0, 45, 
+  0, 0, 0, 0, 0, 0, 33, 0, 0, 151, 
+  0, 0, 0, 34, 0, 0, 0, 35, 36, 152, 
+  37, 0, 0, 153, 0, 0, 0, 504, 0, 0, 
+  0, 44, 154, 0, 155, 0, 0, 309, 0, 0, 
+  0, 0, 0, 0, 0, 156, 0, 157, 62, 51, 
+  48, 50, 49, 0, 52, 158, 0, 0, 159, 63, 
+  0, 0, 0, 0, 160, 43, 54, 32, 0, 0, 
+  161, 40, 0, 0, 0, 0, 0, 45, 0, 0, 
+  0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  51, 48, 50, 49, 0, 52, 0, 53, 0, 55, 
-  0, 56, 0, 0, 0, 0, 43, 54, 32, 0, 
-  0, 0, 40, 0, 0, 0, 0, 45, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, -122, 0, 0, 
-  0, 29, 30, 31, 0, 0, 0, 0, 0, 0, 
+  0, 30, 31, 0, 0, 0, 0, 0, 0, 30, 
+  31, 33, 0, 0, 0, 0, 0, 0, 34, 33, 
+  0, 0, 35, 36, 0, 37, 34, 0, 0, 0, 
+  35, 36, 41, 37, 0, 0, 44, 0, 0, 0, 
+  504, 0, 0, 0, 44, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 51, 48, 50, 49, 0, 52, 
+  0, 0, 51, 48, 50, 49, 0, 52, 0, 0, 
+  43, 54, 32, 0, 0, 0, 40, 0, 43, 54, 
+  32, 0, 45, 0, 40, 0, 0, 0, 0, 0, 
+  45, 0, 30, 31, 0, 0, 0, 0, 0, 0, 
+  30, 31, 33, 0, 0, 0, 0, 0, 0, 34, 
+  33, 0, 0, 35, 36, 0, 37, 34, 0, 0, 
+  0, 35, 36, 41, 37, 0, 0, 44, 0, 0, 
+  0, 504, 0, 0, 0, 44, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 51, 48, 50, 49, 0, 
+  52, 0, 0, 51, 48, 50, 49, 0, 52, 0, 
+  0, 43, 54, 32, 0, 0, 0, 40, 0, 43, 
+  54, 32, 0, 45, 0, 40, 0, 0, 0, 0, 
+  0, 45, 0, 30, 31, 0, 0, 0, 0, 0, 
+  0, 30, 31, 33, 0, 0, 0, 0, 0, 0, 
+  34, 33, 0, 0, 35, 36, 0, 37, 34, 0, 
+  0, 0, 35, 36, 41, 37, 0, 0, 44, 0, 
+  0, 0, 504, 0, 0, 0, 44, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 51, 48, 50, 49, 
+  0, 52, 0, 0, 51, 48, 50, 49, 0, 52, 
+  0, 0, 43, 54, 32, 0, 0, 0, 40, 0, 
+  43, 54, 32, 0, 45, 0, 40, 0, 0, 0, 
+  0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 30, 31, 0, 0, 0, 0, 0, 0, 
   0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 
   0, 0, 0, 35, 36, 0, 37, 0, 0, 0, 
-  38, 0, 39, 41, 42, 0, 0, 44, 0, 0, 
-  0, 46, 0, 47, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 504, 0, 0, 0, 44, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 51, 48, 50, 49, 0, 
-  52, 0, 53, 0, 55, 0, 56, 0, 0, 0, 
+  52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 43, 54, 32, 0, 0, 0, 40, 0, 0, 
+  0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 503, 0, 30, 31, 0, 0, 0, 
+  0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 
+  0, 0, 34, 0, 0, 0, 35, 36, 0, 37, 
+  0, 0, 0, 0, 0, 0, 504, 0, 0, 0, 
+  44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 51, 505, 
+  507, 506, 0, 52, 0, 0, 0, 0, 226, 0, 
+  0, 0, 0, 0, 43, 54, 32, 210, 0, 0, 
+  40, 0, 0, 0, 0, 0, 45, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 503, 0, 30, 31, 
+  0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 
+  0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 
+  36, 0, 37, 0, 0, 0, 0, 0, 0, 504, 
+  0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 
+  0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 51, 505, 507, 506, 0, 52, 0, 0, 0, 
+  0, 226, 0, 0, 0, 0, 0, 43, 54, 32, 
+  210, 0, 0, 40, 0, 0, 0, 0, 0, 45, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 503, 
+  0, 30, 31, 0, 0, 0, 0, 0, 0, 0, 
+  0, 215, 0, 0, 0, 0, 0, 0, 34, 0, 
+  0, 0, 35, 36, 0, 37, 0, 0, 0, 0, 
+  0, 0, 504, 0, 0, 0, 44, 0, 0, 0, 
+  0, 0, 0, 0, 548, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 51, 505, 507, 506, 0, 52, 
+  0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 
+  43, 54, 32, 210, 0, 0, 40, 0, 0, 0, 
   0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 
   0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 
@@ -498,351 +499,392 @@ const short QQmlJSGrammar::action_info [] = {
   0, 38, 0, 39, 41, 42, 0, 0, 44, 0, 
   0, 0, 46, 0, 47, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 51, 48, 50, 49, 
-  0, 52, 0, 53, 0, 55, 271, 56, 0, 0, 
+  0, 52, 0, 53, 0, 55, 0, 56, 0, 0, 
   0, 0, 43, 54, 32, 0, 0, 0, 40, 0, 
-  0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 475, 0, 0, 29, 30, 31, 0, 
-  0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 
-  0, 0, 0, 0, 34, 0, 0, 0, 35, 36, 
-  0, 37, 0, 0, 0, 38, 0, 39, 41, 42, 
-  0, 0, 44, 0, 0, 0, 46, 0, 47, 0, 
-  0, 476, 0, 0, 0, 0, 0, 0, 0, 0, 
-  51, 48, 50, 49, 0, 52, 0, 53, 0, 55, 
-  0, 56, 0, 0, 0, 0, 43, 54, 32, 0, 
-  0, 0, 40, 0, 0, 0, 0, 45, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 475, 0, 0, 
-  29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 
-  0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 
-  0, 0, 35, 36, 0, 37, 0, 0, 0, 38, 
-  0, 39, 41, 42, 0, 0, 44, 0, 0, 0, 
-  46, 0, 47, 0, 0, 481, 0, 0, 0, 0, 
-  0, 0, 0, 0, 51, 48, 50, 49, 0, 52, 
-  0, 53, 0, 55, 0, 56, 0, 0, 0, 0, 
-  43, 54, 32, 0, 0, 0, 40, 0, 0, 0, 
-  0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 483, 0, 0, 29, 30, 31, 0, 0, 0, 
-  0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 
-  0, 0, 34, 0, 0, 0, 35, 36, 0, 37, 
-  0, 0, 0, 38, 0, 39, 41, 42, 0, 0, 
-  44, 0, 0, 0, 46, 0, 47, 0, 0, 484, 
-  0, 0, 0, 0, 0, 0, 0, 0, 51, 48, 
-  50, 49, 0, 52, 0, 53, 0, 55, 0, 56, 
-  0, 0, 0, 0, 43, 54, 32, 0, 0, 0, 
-  40, 0, 0, 0, 0, 45, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 483, 0, 0, 29, 30, 
+  0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, -122, 0, 0, 0, 29, 30, 
   31, 0, 0, 0, 0, 0, 0, 0, 0, 33, 
   0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 
   35, 36, 0, 37, 0, 0, 0, 38, 0, 39, 
   41, 42, 0, 0, 44, 0, 0, 0, 46, 0, 
-  47, 0, 0, 486, 0, 0, 0, 0, 0, 0, 
+  47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 51, 48, 50, 49, 0, 52, 0, 53, 
   0, 55, 0, 56, 0, 0, 0, 0, 43, 54, 
-  32, 0, 0, 0, 40, 0, 0, 0, 0, 45, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 
-  30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 
-  33, 0, 0, 0, 0, 0, 0, 34, 217, 0, 
-  0, 218, 36, 0, 37, 0, 0, 0, 38, 0, 
-  39, 41, 42, 0, 0, 44, 0, 0, 0, 46, 
-  0, 47, 0, 0, 0, 0, 0, 0, 0, 221, 
-  0, 0, 0, 51, 48, 50, 49, 223, 52, 0, 
-  53, 225, 55, 0, 56, 0, 228, 0, 0, 43, 
-  54, 32, 0, 0, 0, 40, 0, 0, 0, 0, 
+  32, 0, 0, 0, 40, 0, 0, 0, 0, 0, 
   45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 
-  0, 33, 0, 0, 0, 0, 0, 0, 34, 217
-  0, 0, 582, 583, 0, 37, 0, 0, 0, 38, 
+  0, 33, 0, 0, 0, 0, 0, 0, 34, 0
+  0, 0, 35, 36, 0, 37, 0, 0, 0, 38, 
   0, 39, 41, 42, 0, 0, 44, 0, 0, 0, 
   46, 0, 47, 0, 0, 0, 0, 0, 0, 0, 
-  221, 0, 0, 0, 51, 48, 50, 49, 223, 52, 
-  0, 53, 225, 55, 0, 56, 0, 228, 0, 0, 
+  0, 0, 0, 0, 51, 48, 50, 49, 0, 52, 
+  0, 53, 0, 55, 272, 56, 0, 0, 0, 0, 
   43, 54, 32, 0, 0, 0, 40, 0, 0, 0, 
-  0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 109, 110, 111, 0, 0, 113, 115, 116, 0, 
-  0, 117, 0, 118, 0, 0, 0, 120, 121, 122, 
-  0, 0, 0, 0, 0, 0, 34, 123, 124, 125, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 
-  0, 0, 0, 48, 50, 49, 130, 131, 132, 0, 
-  134, 135, 136, 137, 138, 139, 0, 0, 127, 133, 
-  119, 112, 114, 128, 0, 0, 0, 0, 0, 45, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 
-  110, 111, 0, 0, 113, 115, 116, 0, 0, 117, 
-  0, 118, 0, 0, 0, 120, 121, 122, 0, 0, 
-  0, 0, 0, 0, 393, 123, 124, 125, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 
-  0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 
-  398, 395, 397, 0, 130, 131, 132, 0, 134, 135, 
-  136, 137, 138, 139, 0, 0, 127, 133, 119, 112, 
-  114, 128, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 109, 110, 111, 
-  0, 0, 113, 115, 116, 0, 0, 117, 0, 118, 
-  0, 0, 0, 120, 121, 122, 0, 0, 0, 0, 
-  0, 0, 393, 123, 124, 125, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 
-  394, 0, 0, 0, 0, 0, 0, 0, 396, 0, 
-  0, 0, 129, 0, 0, 0, 0, 0, 398, 395, 
-  397, 0, 130, 131, 132, 0, 134, 135, 136, 137, 
-  138, 139, 0, 0, 127, 133, 119, 112, 114, 128, 
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 209, 0, 0, 0, 0, 
-  211, 0, 29, 30, 31, 213, 0, 0, 0, 0, 
-  0, 0, 214, 215, 0, 0, 0, 0, 0, 0, 
-  216, 217, 0, 0, 218, 36, 0, 37, 0, 0, 
+  0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 476, 0, 0, 29, 30, 31, 0, 0, 
+  0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 
+  0, 0, 0, 34, 0, 0, 0, 35, 36, 0, 
+  37, 0, 0, 0, 38, 0, 39, 41, 42, 0, 
+  0, 44, 0, 0, 0, 46, 0, 47, 0, 0, 
+  477, 0, 0, 0, 0, 0, 0, 0, 0, 51, 
+  48, 50, 49, 0, 52, 0, 53, 0, 55, 0, 
+  56, 0, 0, 0, 0, 43, 54, 32, 0, 0, 
+  0, 40, 0, 0, 0, 0, 0, 45, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 476, 0, 0, 
+  29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 
+  0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 
+  0, 0, 35, 36, 0, 37, 0, 0, 0, 38, 
+  0, 39, 41, 42, 0, 0, 44, 0, 0, 0, 
+  46, 0, 47, 0, 0, 482, 0, 0, 0, 0, 
+  0, 0, 0, 0, 51, 48, 50, 49, 0, 52, 
+  0, 53, 0, 55, 0, 56, 0, 0, 0, 0, 
+  43, 54, 32, 0, 0, 0, 40, 0, 0, 0, 
+  0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 484, 0, 0, 29, 30, 31, 0, 0, 
+  0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 
+  0, 0, 0, 34, 0, 0, 0, 35, 36, 0, 
+  37, 0, 0, 0, 38, 0, 39, 41, 42, 0, 
+  0, 44, 0, 0, 0, 46, 0, 47, 0, 0, 
+  485, 0, 0, 0, 0, 0, 0, 0, 0, 51, 
+  48, 50, 49, 0, 52, 0, 53, 0, 55, 0, 
+  56, 0, 0, 0, 0, 43, 54, 32, 0, 0, 
+  0, 40, 0, 0, 0, 0, 0, 45, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 484, 0, 0, 
+  29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 
+  0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 
+  0, 0, 35, 36, 0, 37, 0, 0, 0, 38, 
+  0, 39, 41, 42, 0, 0, 44, 0, 0, 0, 
+  46, 0, 47, 0, 0, 487, 0, 0, 0, 0, 
+  0, 0, 0, 0, 51, 48, 50, 49, 0, 52, 
+  0, 53, 0, 55, 0, 56, 0, 0, 0, 0, 
+  43, 54, 32, 0, 0, 0, 40, 0, 0, 0, 
+  0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 
+  0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 
+  34, 217, 0, 0, 218, 36, 0, 37, 0, 0, 
   0, 38, 0, 39, 41, 42, 0, 0, 44, 0, 
   0, 0, 46, 0, 47, 0, 0, 0, 0, 0, 
-  220, 0, 221, 0, 0, 0, 51, 219, 222, 49, 
-  223, 52, 224, 53, 225, 55, 226, 56, 227, 228, 
-  0, 0, 43, 54, 32, 210, 212, 0, 40, 0, 
-  0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 
+  0, 0, 221, 0, 0, 0, 51, 48, 50, 49, 
+  223, 52, 0, 53, 225, 55, 0, 56, 0, 228, 
+  0, 0, 43, 54, 32, 0, 0, 0, 40, 0, 
+  0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 29, 30, 31, 0, 0, 0, 
+  0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 
+  0, 0, 34, 217, 0, 0, 583, 584, 0, 37, 
+  0, 0, 0, 38, 0, 39, 41, 42, 0, 0, 
+  44, 0, 0, 0, 46, 0, 47, 0, 0, 0, 
+  0, 0, 0, 0, 221, 0, 0, 0, 51, 48, 
+  50, 49, 223, 52, 0, 53, 225, 55, 0, 56, 
+  0, 228, 0, 0, 43, 54, 32, 0, 0, 0, 
+  40, 0, 0, 0, 0, 0, 45, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 109, 110, 111, 0, 
+  0, 113, 115, 116, 0, 0, 117, 0, 118, 0, 
+  0, 0, 120, 121, 122, 0, 0, 0, 0, 0, 
+  0, 34, 123, 124, 125, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 129, 0, 0, 0, 0, 0, 0, 48, 50, 
+  49, 130, 131, 132, 0, 134, 135, 136, 137, 138, 
+  139, 0, 0, 127, 133, 119, 112, 114, 128, 0, 
+  0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 109, 110, 111, 0, 0, 
+  113, 115, 116, 0, 0, 117, 0, 118, 0, 0, 
+  0, 120, 121, 122, 0, 0, 0, 0, 0, 0, 
+  394, 123, 124, 125, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 126, 0, 0, 0, 395, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  129, 0, 0, 0, 0, 0, 399, 396, 398, 0, 
+  130, 131, 132, 0, 134, 135, 136, 137, 138, 139, 
+  0, 0, 127, 133, 119, 112, 114, 128, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 109, 110, 111, 0, 0, 113, 
+  115, 116, 0, 0, 117, 0, 118, 0, 0, 0, 
+  120, 121, 122, 0, 0, 0, 0, 0, 0, 394, 
+  123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 126, 0, 0, 0, 395, 0, 0, 
+  0, 0, 0, 0, 0, 397, 0, 0, 0, 129, 
+  0, 0, 0, 0, 0, 399, 396, 398, 0, 130, 
+  131, 132, 0, 134, 135, 136, 137, 138, 139, 0, 
+  0, 127, 133, 119, 112, 114, 128, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 209, 0, 0, 0, 0, 211, 0, 
   29, 30, 31, 213, 0, 0, 0, 0, 0, 0, 
-  214, 33, 0, 0, 0, 0, 0, 0, 216, 217, 
+  214, 215, 0, 0, 0, 0, 0, 0, 216, 217, 
   0, 0, 218, 36, 0, 37, 0, 0, 0, 38, 
   0, 39, 41, 42, 0, 0, 44, 0, 0, 0, 
   46, 0, 47, 0, 0, 0, 0, 0, 220, 0, 
   221, 0, 0, 0, 51, 219, 222, 49, 223, 52, 
   224, 53, 225, 55, 226, 56, 227, 228, 0, 0, 
   43, 54, 32, 210, 212, 0, 40, 0, 0, 0, 
+  0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 209, 0, 0, 0, 0, 211, 0, 29, 
+  30, 31, 213, 0, 0, 0, 0, 0, 0, 214, 
+  33, 0, 0, 0, 0, 0, 0, 216, 217, 0, 
+  0, 218, 36, 0, 37, 0, 0, 0, 38, 0, 
+  39, 41, 42, 0, 0, 44, 0, 0, 0, 46, 
+  0, 47, 0, 0, 0, 0, 0, 220, 0, 221, 
+  0, 0, 0, 51, 219, 222, 49, 223, 52, 224, 
+  53, 225, 55, 226, 56, 227, 228, 0, 0, 43, 
+  54, 32, 210, 212, 0, 40, 0, 0, 0, 0, 
   0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 586, 110, 111, 0, 0, 588, 115, 590, 30, 
-  31, 591, 0, 118, 0, 0, 0, 120, 593, 594
-  0, 0, 0, 0, 0, 0, 595, 596, 124, 125, 
+  0, 587, 110, 111, 0, 0, 589, 115, 591, 30, 
+  31, 592, 0, 118, 0, 0, 0, 120, 594, 595
+  0, 0, 0, 0, 0, 0, 596, 597, 124, 125, 
   218, 36, 0, 37, 0, 0, 0, 38, 0, 39, 
-  597, 42, 0, 0, 599, 0, 0, 0, 46, 0, 
-  47, 0, 0, 0, 0, 0, 601, 0, 221, 0, 
-  0, 0, 603, 600, 602, 49, 604, 605, 606, 53, 
-  608, 609, 610, 611, 612, 613, 0, 0, 598, 607
-  592, 587, 589, 128, 40, 0, 0, 0, 0, 45
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 361
-  110, 111, 0, 0, 363, 115, 365, 30, 31, 366
-  0, 118, 0, 0, 0, 120, 368, 369, 0, 0, 
-  0, 0, 0, 0, 370, 371, 124, 125, 218, 36
-  0, 37, 0, 0, 0, 38, 0, 39, 372, 42
-  0, 0, 374, 0, 0, 0, 46, 0, 47, 0
-  -268, 0, 0, 0, 376, 0, 221, 0, 0, 0, 
-  378, 375, 377, 49, 379, 380, 381, 53, 383, 384, 
-  385, 386, 387, 388, 0, 0, 373, 382, 367, 362
-  364, 128, 40, 0, 0, 0, 0, 45, 0, 0
-  0, 0, 0, 0, 0, 0, 0, 
+  598, 42, 0, 0, 600, 0, 0, 0, 46, 0, 
+  47, 0, 0, 0, 0, 0, 602, 0, 221, 0, 
+  0, 0, 604, 601, 603, 49, 605, 606, 607, 53, 
+  609, 610, 611, 612, 613, 614, 0, 0, 599, 608
+  593, 588, 590, 128, 40, 0, 0, 0, 0, 0
+  45, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  362, 110, 111, 0, 0, 364, 115, 366, 30, 31
+  367, 0, 118, 0, 0, 0, 120, 369, 370, 0, 
+  0, 0, 0, 0, 0, 371, 372, 124, 125, 218
+  36, 0, 37, 0, 0, 0, 38, 0, 39, 373
+  42, 0, 0, 375, 0, 0, 0, 46, 0, 47
+  0, -268, 0, 0, 0, 377, 0, 221, 0, 0, 
+  0, 379, 376, 378, 49, 380, 381, 382, 53, 384, 
+  385, 386, 387, 388, 389, 0, 0, 374, 383, 368
+  363, 365, 128, 40, 0, 0, 0, 0, 0, 45
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 
 
-  534, 311, 497, 309, 532, 461, 498, 499, 516, 515, 
-  619, 638, 16, 552, 436, 358, 616, 472, 562, 320, 
-  528, 238, 487, 182, 250, 243, 253, 182, 302, 641, 
-  627, 632, 150, 485, 143, 454, 439, 402, 445, 559, 
-  237, 574, 250, 578, 561, 186, 618, 458, 238, 349, 
-  573, 449, 447, 571, 243, 347, 450, 243, 460, 351, 
-  238, 353, 358, 410, 415, 439, 176, 188, 436, 250, 
-  467, 417, 433, 182, 425, 429, 302, 169, 456, 358, 
-  171, 140, 336, 334, 338, 344, 436, 392, 390, 400, 
-  163, 302, 307, 148, 146, 339, 439, 404, 302, 358, 
-  404, 358, 0, 482, 501, 480, 0, 642, 0, 479, 
-  0, 0, 0, 320, 60, 0, 186, 501, 90, 60, 
-  60, 489, 302, 60, 617, 93, 0, 88, 0, 405, 
-  0, 461, 405, 60, 60, 451, 180, 60, 0, 180, 
-  60, 60, 60, 451, 60, 95, 89, 146, 266, 287, 
-  60, 146, 407, 270, 60, 288, 178, 60, 106, 452, 
-  0, 60, 60, 60, 102, 60, 302, 332, 286, 60, 
-  92, 452, 60, 60, 451, 60, 165, 168, 285, 432, 
-  284, 435, 60, 60, 108, 501, 329, 94, 540, 96, 
-  60, 330, 60, 302, 494, 60, 77, 237, 60, 404, 
-  452, 341, 471, 72, 60, 60, 67, 69, 60, 60, 
-  68, 0, 70, 60, 60, 60, 61, 180, 60, 60, 
-  98, 491, 60, 91, 490, 60, 60, 60, 493, 60, 
-  84, 405, 60, 97, 492, 305, 0, 60, 0, 298, 
-  0, 100, 270, 298, 270, 298, 106, 298, 270, 0, 
-  270, 60, 270, 60, 316, 0, 270, 0, 270, 298, 
-  291, 326, 303, 60, 270, 319, 313, 300, 270, 297, 
-  60, 60, 108, 175, 295, 270, 270, 290, 60, 501, 
-  273, 317, 60, 270, 60, 278, 509, 270, 0, 270, 
-  0, 289, 0, 548, 0, 293, 551, 0, 500, 510, 
-  501, 501, 0, 544, 501, 0, 0, 0, 509, 0, 
-  0, 509, 520, 521, 522, 523, 527, 524, 525, 0, 
-  500, 510, 0, 500, 510, 564, 520, 521, 522, 523, 
-  527, 524, 525, 581, 0, 0, 0, 0, 0, 0, 
-  584, 585, 520, 521, 522, 523, 527, 524, 525, 556, 
-  0, 0, 0, 0, 0, 0, 557, 558, 520, 521, 
-  522, 523, 527, 524, 525, 0, 0, 0, 0, 0, 
+  639, 310, 529, 533, 516, 535, 517, 499, 500, 462, 
+  498, 620, 553, 312, 243, 16, 562, 440, 437, 633, 
+  238, 250, 473, 182, 253, 182, 617, 488, 359, 563, 
+  303, 321, 619, 642, 150, 575, 560, 250, 628, 163, 
+  426, 348, 250, 579, 186, 350, 182, 574, 468, 340, 
+  430, 345, 572, 434, 359, 457, 448, 446, 238, 450, 
+  455, 459, 243, 243, 461, 352, 238, 451, 354, 148, 
+  403, 483, 486, 176, 437, 143, 440, 401, 411, 335, 
+  188, 437, 440, 169, 237, 171, 237, 140, 359, 393, 
+  337, 303, 308, 416, 391, 146, 418, 303, 405, 359, 
+  359, 0, 0, 146, 0, 0, 0, 60, 178, 60, 
+  0, 452, 288, 0, 303, 60, 405, 60, 405, 180, 
+  285, 60, 60, 60, 491, 186, 286, 60, 287, 60, 
+  406, 453, 502, 502, 303, 643, 545, 60, 321, 453, 
+  60, 165, 180, 60, 60, 490, 180, 60, 406, 60, 
+  406, 452, 267, 146, 60, 60, 60, 271, 408, 289, 
+  60, 84, 69, 168, 60, 60, 60, 100, 106, 60, 
+  97, 98, 96, 502, 481, 0, 541, 72, 480, 436, 
+  433, 60, 60, 333, 60, 60, 91, 92, 90, 60, 
+  93, 60, 60, 89, 108, 60, 94, 339, 77, 88, 
+  60, 502, 462, 331, 60, 95, 303, 61, 618, 106, 
+  342, 330, 60, 60, 453, 452, 60, 60, 494, 495, 
+  60, 60, 493, 60, 60, 492, 60, 70, 68, 60, 
+  60, 102, 67, 60, 271, 108, 175, 299, 271, 0, 
+  299, 0, 271, 0, 314, 271, 294, 299, 60, 60, 
+  60, 0, 271, 271, 271, 271, 60, 279, 274, 320, 
+  0, 271, 318, 60, 0, 317, 0, 296, 271, 327, 
+  292, 60, 60, 472, 0, 304, 271, 271, 291, 290, 
+  557, 299, 299, 541, 549, 615, 271, 271, 502, 0, 
+  552, 0, 502, 0, 0, 510, 0, 0, 502, 510, 
+  0, 0, 303, 298, 301, 510, 473, 501, 511, 0, 
+  0, 501, 511, 0, 0, 0, 0, 501, 511, 521, 
+  522, 523, 524, 528, 525, 526, 582, 0, 0, 0, 
+  0, 0, 0, 585, 586, 521, 522, 523, 524, 528, 
+  525, 526, 557, 0, 0, 0, 0, 0, 0, 558, 
+  559, 521, 522, 523, 524, 528, 525, 526, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 556, 0, 0, 540, 0, 614, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0, 0, 0, 0, 0, 565, 521, 522, 523, 
+  524, 528, 525, 526, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-  0, 0, 0, 0, 0, 0, 0, 0};
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+  0, 0};
 
 const short QQmlJSGrammar::action_check [] = {
-  36, 36, 24, 7, 55, 7, 7, 7, 60, 36, 
-  8, 7, 37, 7, 7, 33, 55, 55, 60, 36, 
-  36, 33, 33, 55, 8, 33, 7, 7, 34, 36, 
-  16, 20, 7, 36, 7, 7, 33, 36, 33, 60, 
-  7, 7, 7, 5, 7, 5, 5, 90, 33, 36, 
-  7, 33, 7, 36, 7, 33, 66, 36, 7, 36, 
-  29, 7, 33, 31, 1, 7, 17, 55, 60, 33, 
-  60, 2, 8, 7, 48, 66, 1, 7, 36, 2, 
-  8, 7, 36, 2, 60, 2, 8, 7, 17, 1, 
-  60, 36, 0, 36, 8, 36, 48, 36, 33, 8, 
-  61, 1, 6, 36, 60, 8, -1, 8, -1, 15, 
-  48, 10, 7, 8, 61, 8, 20, -1, -1, -1, 
-  -1, -1, 8, -1, -1, -1, -1, 48, 34, 79, 
-  40, 79, 8, 77, 61, 8, 60, 8, 8, 79, 
-  8, 51, -1, 40, 42, 61, 62, 8, 61, 62, 
-  8, 7, -1, 56, 51, 53, 55, 8, 90, 60, 
-  50, 79, 8, 56, 54, 61, 62, 61, 62, 61, 
-  62, 40, 61, 62, 60, 40, 61, 62, 61, 62, 
-  56, 8, 51, 56, 50, 7, 51, 15, 54, 60, 
-  60, 25, 60, 27, 25, 56, 27, 61, 62, 61, 
-  62, 36, 60, 29, 38, 29, 34, 38, 36, 25, 
-  61, 27, 29, -1, 60, 25, 12, 27, 29, 25, 
-  29, 27, 38, 25, 29, 27, 61, 62, 38, 12, 
-  7, 12, 38, 60, 8, 25, 38, 27, -1, 61, 
-  62, 25, 8, 27, 7, -1, 15, 7, 38, 75, 
-  25, 75, 27, 8, 38, 25, 33, 27, 75, -1, 
-  86, 57, 86, 38, 75, 34, 75, 63, 38, 86, 
-  75, 15, 15, -1, 57, 86, 57, 86, -1, -1, 
-  63, 86, 63, 61, 62, -1, -1, 61, 62, 15, 
-  34, 34, 36, 36, -1, 61, 62, 47, 61, 62, 
-  15, 61, 62, -1, 18, 19, 61, 62, 34, 15, 
-  36, 61, 62, 91, -1, 92, 18, 19, 33, 34, 
-  29, 36, 18, 19, 18, 19, 29, 33, 34, 29, 
-  36, 45, 46, 25, 29, 27, -1, -1, -1, -1, 
-  -1, 91, -1, 45, 46, -1, 38, -1, -1, 45, 
-  46, 45, 46, -1, -1, -1, -1, 66, 67, 68, 
-  -1, -1, -1, 66, 67, 68, 66, 67, 68, -1, 
-  -1, 66, 67, 68, -1, -1, 23, 24, -1, -1, 
-  -1, 29, -1, 92, -1, 32, 23, 24, 35, 92, 
-  37, 29, 92, 23, 24, 32, 29, 92, 35, -1, 
-  37, 29, 32, 23, 24, 35, -1, 37, -1, -1, 
-  29, -1, 32, 23, 24, 35, -1, 37, 66, 67, 
-  68, 31, 32, -1, 29, 35, -1, 37, 66, 67, 
-  68, 36, -1, 66, 67, 68, -1, -1, 66, 67, 
-  68, -1, -1, -1, 92, -1, -1, 66, 67, 68, 
-  -1, -1, -1, -1, 92, -1, -1, 23, 24, 92, 
-  -1, 66, 67, 68, 92, 31, 32, 23, 24, 35, 
-  -1, 37, -1, 92, -1, 31, 32, 23, 24, 35, 
-  -1, 37, 29, 23, 24, 31, 32, 92, -1, 35, 
-  29, 37, 32, 29, -1, 35, -1, 37, 94, 95, 
-  96, 97, 98, 99, 29, -1, -1, -1, -1, -1, 
-  -1, 36, -1, -1, 61, 62, -1, -1, -1, 66, 
-  67, 68, 61, 62, -1, 61, 62, 66, 67, 68, 
-  66, 67, 68, -1, -1, -1, -1, -1, -1, -1, 
-  29, 66, 67, 68, -1, 92, -1, -1, 29, -1, 
-  -1, 29, -1, 92, -1, -1, 92, -1, -1, -1, 
-  -1, -1, 23, 24, -1, -1, -1, 92, -1, -1, 
-  31, 32, 61, 62, 35, -1, 37, 66, 67, 68, 
-  61, 62, 3, 61, 62, 66, 67, 68, 66, 67, 
-  68, -1, 13, -1, -1, -1, 17, -1, -1, -1, 
-  -1, -1, -1, 92, -1, 26, -1, 28, -1, -1, 
-  31, 92, -1, -1, 92, -1, -1, -1, 39, -1, 
-  41, 42, -1, -1, -1, -1, -1, -1, 49, -1, 
-  -1, 52, 53, -1, -1, -1, -1, 58, -1, 12, 
-  13, 3, -1, 64, -1, -1, -1, -1, -1, 22, 
-  -1, 13, -1, -1, -1, 17, 29, -1, -1, 80, 
-  33, 34, -1, 36, 26, -1, 28, -1, -1, -1, 
-  43, -1, -1, -1, 47, -1, -1, 39, -1, 41, 
-  42, -1, -1, -1, -1, -1, -1, 49, -1, -1, 
-  52, 53, 65, 66, 67, 68, 58, 70, -1, -1, 
-  -1, -1, 64, -1, -1, -1, -1, -1, 81, 82, 
-  83, -1, 12, 13, 87, -1, -1, -1, 80, 92, 
-  -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, 
-  -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, 
-  12, 13, -1, 43, -1, -1, -1, 47, -1, -1, 
-  22, -1, -1, -1, -1, -1, -1, 29, -1, -1, 
-  -1, 33, 34, -1, 36, 65, 66, 67, 68, -1, 
-  70, 43, -1, -1, -1, 47, -1, -1, -1, -1, 
-  -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, 
-  -1, -1, 92, 65, 66, 67, 68, -1, 70, -1, 
-  -1, -1, 12, 13, -1, -1, -1, -1, -1, 81, 
-  82, 83, 22, -1, -1, 87, -1, -1, -1, 29, 
-  92, -1, -1, 33, 34, -1, 36, -1, -1, -1, 
-  12, 13, -1, 43, -1, -1, -1, 47, -1, -1, 
-  22, -1, -1, -1, -1, -1, -1, 29, -1, -1, 
-  -1, 33, 34, -1, 36, 65, 66, 67, 68, -1, 
-  70, 43, -1, -1, -1, 47, -1, -1, -1, -1, 
-  -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, 
-  -1, -1, 92, 65, 66, 67, 68, -1, 70, -1, 
-  -1, -1, 12, 13, -1, -1, -1, -1, -1, 81, 
-  82, 83, 22, -1, -1, 87, -1, -1, -1, 29, 
-  92, -1, -1, 33, 34, -1, 36, -1, -1, -1, 
-  12, 13, -1, 43, -1, -1, -1, 47, -1, -1, 
-  22, -1, -1, -1, -1, -1, -1, 29, -1, -1, 
-  -1, 33, 34, -1, 36, 65, 66, 67, 68, -1, 
-  70, 43, -1, -1, -1, 47, -1, -1, -1, -1, 
-  -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, 
-  -1, -1, 92, 65, 66, 67, 68, -1, 70, -1, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, 
-  82, 83, -1, -1, -1, 87, -1, -1, -1, -1, 
-  92, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  10, -1, 12, 13, -1, -1, -1, -1, -1, -1, 
-  -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, 
-  -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, 
-  -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, 
+  36, 36, 7, 55, 17, 7, 7, 60, 8, 7, 
+  7, 37, 36, 7, 20, 33, 55, 55, 60, 36, 
+  36, 33, 33, 55, 8, 7, 36, 7, 16, 33, 
+  7, 34, 7, 7, 7, 60, 7, 36, 33, 7, 
+  36, 33, 33, 5, 7, 5, 5, 33, 29, 36, 
+  91, 36, 7, 36, 7, 33, 7, 7, 66, 66, 
+  36, 33, 7, 7, 31, 1, 7, 24, 33, 2, 
+  60, 60, 36, 8, 8, 7, 55, 1, 36, 48, 
+  2, 8, 7, 2, 7, 2, 79, 36, 17, 36, 
+  60, 7, 48, 36, 36, 61, 33, 36, 1, 60, 
+  0, 8, 8, 1, 8, 6, 8, -1, -1, 61, 
+  48, 7, 8, 8, 60, 8, 10, -1, 8, 20, 
+  8, -1, 48, -1, 8, 79, 40, 40, 15, 77, 
+  -1, 61, 60, 8, 8, 8, 15, 51, 51, 79, 
+  8, 61, 62, 61, 62, 50, 7, 34, 8, 54, 
+  61, 62, 61, 62, 56, 34, 60, 42, 79, 8, 
+  91, 55, 40, 56, 12, 60, 56, 50, 53, 61, 
+  62, 54, 60, 51, 29, 61, 62, 61, 40, 61, 
+  62, 12, 56, 29, 25, 60, 27, 60, 56, 51, 
+  61, 62, 25, 7, 27, 8, 12, 38, -1, 25, 
+  60, 27, 7, -1, 25, 38, 27, 29, 25, 57, 
+  27, 60, 38, 7, 25, 63, 27, 38, 36, 33, 
+  75, 38, 25, 25, 27, 27, 57, 38, 29, 75, 
+  -1, 86, 63, 7, 29, 38, 38, 25, 29, 27, 
+  86, 57, 8, 61, 62, 8, -1, 63, 61, 62, 
+  38, 15, 25, 75, 27, 8, 61, 62, 25, -1, 
+  27, 61, 62, -1, 86, 38, -1, 61, 62, -1, 
+  34, 38, 36, 25, 75, 27, 61, 62, -1, 93, 
+  75, 15, -1, -1, 75, 86, 38, 61, 62, 89, 
+  25, 86, 27, -1, 60, 86, 18, 19, 61, 62, 
+  34, -1, 36, 38, 18, 19, -1, 92, 61, 62, 
+  -1, -1, -1, 29, 47, 15, 18, 19, -1, -1, 
+  15, 18, 19, 45, 46, 29, -1, -1, 61, 62, 
+  29, 45, 46, 33, 34, 29, 36, 15, 33, 34, 
+  -1, 36, 29, 45, 46, 29, -1, -1, 45, 46, 
+  66, 67, 68, 29, -1, -1, 34, -1, 36, 92, 
+  -1, -1, 66, 67, 68, 29, -1, 66, 67, 68, 
+  -1, -1, 66, 67, 68, -1, 29, 93, -1, 66, 
+  67, 68, 66, 67, 68, 29, 23, 24, -1, 93, 
+  66, 67, 68, 29, 93, 32, -1, -1, 35, 93, 
+  37, -1, 66, 67, 68, 29, 93, -1, 29, 93, 
+  -1, -1, -1, 66, 67, 68, 29, 93, -1, -1, 
+  -1, 29, 66, 67, 68, 23, 24, 29, -1, 93, 
+  66, 67, 68, -1, 32, -1, 29, 35, -1, 37, 
+  93, -1, 66, 67, 68, 66, 67, 68, -1, 93, 
+  -1, 29, -1, 66, 67, 68, -1, 93, 66, 67, 
+  68, -1, -1, -1, 66, 67, 68, 23, 24, 93, 
+  -1, -1, 93, 66, 67, 68, 32, -1, -1, 35, 
+  93, 37, -1, -1, -1, 93, -1, -1, 66, 67, 
+  68, 93, 29, -1, -1, 23, 24, -1, -1, 36, 
+  93, -1, -1, 31, 32, 23, 24, 35, -1, 37, 
+  -1, -1, -1, -1, 32, 93, -1, 35, -1, 37, 
+  95, 96, 97, 98, 99, 100, 29, 23, 24, 66, 
+  67, 68, -1, 36, 29, 31, 32, 23, 24, 35, 
+  -1, 37, 29, -1, -1, 31, 32, -1, -1, 35, 
+  29, 37, -1, -1, -1, -1, 93, -1, -1, -1, 
+  -1, -1, -1, 66, 67, 68, 61, 62, -1, -1, 
+  29, 66, 67, 68, 61, 62, -1, -1, 29, 66, 
+  67, 68, 61, 62, -1, 23, 24, 66, 67, 68, 
+  93, -1, -1, 31, 32, -1, -1, 35, 93, 37, 
+  -1, -1, 61, 62, -1, -1, 93, 66, 67, 68, 
+  61, 62, 3, -1, 93, 66, 67, 68, -1, -1, 
+  -1, -1, 13, -1, -1, -1, 17, -1, -1, -1, 
+  3, -1, -1, -1, 93, 26, -1, 28, -1, -1, 
+  13, -1, 93, -1, 17, -1, -1, -1, 39, -1, 
+  41, 42, -1, 26, -1, 28, -1, -1, 49, -1, 
+  -1, 52, 53, -1, -1, 29, 39, 58, 41, 42, 
+  -1, -1, -1, 64, -1, -1, 49, -1, -1, 52, 
+  53, -1, -1, -1, -1, 58, -1, -1, -1, 80, 
+  -1, 64, -1, -1, -1, -1, -1, 61, 62, -1, 
+  -1, -1, 66, 67, 68, -1, -1, 80, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, 
-  70, -1, -1, -1, -1, 75, -1, -1, -1, -1, 
-  -1, 81, 82, 83, 84, -1, -1, 87, -1, -1, 
-  -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, 10, -1, 12, 13, -1, -1, -1, -1, 
-  -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, 
-  -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, 
-  -1, -1, -1, -1, -1, 43, -1, -1, -1, 47, 
-  -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, 
-  -1, -1, -1, -1, -1, -1, -1, 65, 66, 67, 
-  68, -1, 70, -1, -1, -1, -1, 75, -1, -1, 
-  -1, -1, -1, 81, 82, 83, 84, -1, -1, 87, 
-  -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, 10, -1, 12, 13, -1, -1, 
-  -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, 
-  -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 
-  36, -1, -1, -1, -1, -1, -1, 43, -1, -1, 
-  -1, 47, -1, -1, -1, -1, -1, -1, -1, 55, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 
-  66, 67, 68, -1, 70, -1, -1, -1, -1, 75, 
-  -1, -1, -1, -1, -1, 81, 82, 83, 84, -1, 
-  -1, 87, -1, -1, -1, -1, 92, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, 11, 12, 13, -1, 
-  -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, 
-  -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, 
-  -1, 36, -1, -1, -1, 40, -1, 42, 43, 44, 
-  -1, -1, 47, -1, -1, -1, 51, -1, 53, -1, 
+  -1, -1, -1, -1, -1, -1, 12, 13, -1, 93, 
+  -1, -1, -1, -1, -1, -1, 22, -1, -1, 3, 
+  -1, -1, -1, 29, -1, -1, -1, 33, 34, 13, 
+  36, -1, -1, 17, -1, -1, -1, 43, -1, -1, 
+  -1, 47, 26, -1, 28, -1, -1, 31, -1, -1, 
+  -1, -1, -1, -1, -1, 39, -1, 41, 42, 65, 
+  66, 67, 68, -1, 70, 49, -1, -1, 52, 53, 
+  -1, -1, -1, -1, 58, 81, 82, 83, -1, -1, 
+  64, 87, -1, -1, -1, -1, -1, 93, -1, -1, 
+  -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  65, 66, 67, 68, -1, 70, -1, 72, -1, 74, 
-  -1, 76, -1, -1, -1, -1, 81, 82, 83, -1, 
-  -1, -1, 87, -1, -1, -1, -1, 92, -1, -1, 
-  -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, 
-  -1, 11, 12, 13, -1, -1, -1, -1, -1, -1, 
+  -1, 12, 13, -1, -1, -1, -1, -1, -1, 12, 
+  13, 22, -1, -1, -1, -1, -1, -1, 29, 22, 
+  -1, -1, 33, 34, -1, 36, 29, -1, -1, -1, 
+  33, 34, 43, 36, -1, -1, 47, -1, -1, -1, 
+  43, -1, -1, -1, 47, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, 
+  -1, -1, 65, 66, 67, 68, -1, 70, -1, -1, 
+  81, 82, 83, -1, -1, -1, 87, -1, 81, 82, 
+  83, -1, 93, -1, 87, -1, -1, -1, -1, -1, 
+  93, -1, 12, 13, -1, -1, -1, -1, -1, -1, 
+  12, 13, 22, -1, -1, -1, -1, -1, -1, 29, 
+  22, -1, -1, 33, 34, -1, 36, 29, -1, -1, 
+  -1, 33, 34, 43, 36, -1, -1, 47, -1, -1, 
+  -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, 
+  70, -1, -1, 65, 66, 67, 68, -1, 70, -1, 
+  -1, 81, 82, 83, -1, -1, -1, 87, -1, 81, 
+  82, 83, -1, 93, -1, 87, -1, -1, -1, -1, 
+  -1, 93, -1, 12, 13, -1, -1, -1, -1, -1, 
+  -1, 12, 13, 22, -1, -1, -1, -1, -1, -1, 
+  29, 22, -1, -1, 33, 34, -1, 36, 29, -1, 
+  -1, -1, 33, 34, 43, 36, -1, -1, 47, -1, 
+  -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, 
+  -1, 70, -1, -1, 65, 66, 67, 68, -1, 70, 
+  -1, -1, 81, 82, 83, -1, -1, -1, 87, -1, 
+  81, 82, 83, -1, 93, -1, 87, -1, -1, -1, 
+  -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 12, 13, -1, -1, -1, -1, -1, -1, 
   -1, -1, 22, -1, -1, -1, -1, -1, -1, 29, 
   -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, 
-  40, -1, 42, 43, 44, -1, -1, 47, -1, -1, 
-  -1, 51, -1, 53, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, 
-  70, -1, 72, -1, 74, -1, 76, -1, -1, -1, 
+  70, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, 81, 82, 83, -1, -1, -1, 87, -1, -1, 
-  -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, 10, -1, 12, 13, -1, -1, -1, 
+  -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, 
+  -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, 
+  -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, 
+  47, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, 
+  67, 68, -1, 70, -1, -1, -1, -1, 75, -1, 
+  -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, 
+  87, -1, -1, -1, -1, -1, 93, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, 10, -1, 12, 13, 
+  -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, 
+  -1, -1, -1, -1, -1, 29, -1, -1, -1, 33, 
+  34, -1, 36, -1, -1, -1, -1, -1, -1, 43, 
+  -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 
+  -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, 65, 66, 67, 68, -1, 70, -1, -1, -1, 
+  -1, 75, -1, -1, -1, -1, -1, 81, 82, 83, 
+  84, -1, -1, 87, -1, -1, -1, -1, -1, 93, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, 
+  -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, 
+  -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, 
+  -1, -1, 33, 34, -1, 36, -1, -1, -1, -1, 
+  -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, 
+  -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, 
+  -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, 
+  81, 82, 83, 84, -1, -1, 87, -1, -1, -1, 
+  -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, 
   -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 
   29, -1, -1, -1, 33, 34, -1, 36, -1, -1, 
   -1, 40, -1, 42, 43, 44, -1, -1, 47, -1, 
   -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, 65, 66, 67, 68, 
-  -1, 70, -1, 72, -1, 74, 75, 76, -1, -1, 
+  -1, 70, -1, 72, -1, 74, -1, 76, -1, -1, 
   -1, -1, 81, 82, 83, -1, -1, -1, 87, -1, 
-  -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, 8, -1, -1, 11, 12, 13, -1, 
-  -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, 
-  -1, -1, -1, -1, 29, -1, -1, -1, 33, 34, 
-  -1, 36, -1, -1, -1, 40, -1, 42, 43, 44, 
-  -1, -1, 47, -1, -1, -1, 51, -1, 53, -1, 
-  -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, 
-  65, 66, 67, 68, -1, 70, -1, 72, -1, 74, 
-  -1, 76, -1, -1, -1, -1, 81, 82, 83, -1, 
-  -1, -1, 87, -1, -1, -1, -1, 92, -1, -1, 
+  -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 7, -1, -1, -1, 11, 12, 
+  13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 
+  -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 
+  33, 34, -1, 36, -1, -1, -1, 40, -1, 42, 
+  43, 44, -1, -1, 47, -1, -1, -1, 51, -1, 
+  53, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, 
+  -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, 
+  83, -1, -1, -1, 87, -1, -1, -1, -1, -1, 
+  93, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  11, 12, 13, -1, -1, -1, -1, -1, -1, -1, 
+  -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, 
+  -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, 
+  -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, 
+  51, -1, 53, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, 
+  -1, 72, -1, 74, 75, 76, -1, -1, -1, -1, 
+  81, 82, 83, -1, -1, -1, 87, -1, -1, -1, 
+  -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, 
+  -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, 
+  -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 
+  36, -1, -1, -1, 40, -1, 42, 43, 44, -1, 
+  -1, 47, -1, -1, -1, 51, -1, 53, -1, -1, 
+  56, -1, -1, -1, -1, -1, -1, -1, -1, 65, 
+  66, 67, 68, -1, 70, -1, 72, -1, 74, -1, 
+  76, -1, -1, -1, -1, 81, 82, 83, -1, -1, 
+  -1, 87, -1, -1, -1, -1, -1, 93, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, 
   11, 12, 13, -1, -1, -1, -1, -1, -1, -1, 
   -1, 22, -1, -1, -1, -1, -1, -1, 29, -1, 
@@ -852,83 +894,74 @@ const short QQmlJSGrammar::action_check [] = {
   -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, 
   -1, 72, -1, 74, -1, 76, -1, -1, -1, -1, 
   81, 82, 83, -1, -1, -1, 87, -1, -1, -1, 
-  -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, 8, -1, -1, 11, 12, 13, -1, -1, -1, 
-  -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, 
-  -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, 
-  -1, -1, -1, 40, -1, 42, 43, 44, -1, -1, 
-  47, -1, -1, -1, 51, -1, 53, -1, -1, 56, 
-  -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, 
-  67, 68, -1, 70, -1, 72, -1, 74, -1, 76, 
-  -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, 
-  87, -1, -1, -1, -1, 92, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, 8, -1, -1, 11, 12, 
-  13, -1, -1, -1, -1, -1, -1, -1, -1, 22, 
-  -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, 
-  33, 34, -1, 36, -1, -1, -1, 40, -1, 42, 
-  43, 44, -1, -1, 47, -1, -1, -1, 51, -1, 
-  53, -1, -1, 56, -1, -1, -1, -1, -1, -1, 
-  -1, -1, 65, 66, 67, 68, -1, 70, -1, 72, 
-  -1, 74, -1, 76, -1, -1, -1, -1, 81, 82, 
-  83, -1, -1, -1, 87, -1, -1, -1, -1, 92, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, 
-  12, 13, -1, -1, -1, -1, -1, -1, -1, -1, 
-  22, -1, -1, -1, -1, -1, -1, 29, 30, -1, 
-  -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, 
-  42, 43, 44, -1, -1, 47, -1, -1, -1, 51, 
-  -1, 53, -1, -1, -1, -1, -1, -1, -1, 61, 
-  -1, -1, -1, 65, 66, 67, 68, 69, 70, -1, 
-  72, 73, 74, -1, 76, -1, 78, -1, -1, 81, 
-  82, 83, -1, -1, -1, 87, -1, -1, -1, -1, 
-  92, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 8, -1, -1, 11, 12, 13, -1, -1, 
+  -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, 
+  -1, -1, -1, 29, -1, -1, -1, 33, 34, -1, 
+  36, -1, -1, -1, 40, -1, 42, 43, 44, -1, 
+  -1, 47, -1, -1, -1, 51, -1, 53, -1, -1, 
+  56, -1, -1, -1, -1, -1, -1, -1, -1, 65, 
+  66, 67, 68, -1, 70, -1, 72, -1, 74, -1, 
+  76, -1, -1, -1, -1, 81, 82, 83, -1, -1, 
+  -1, 87, -1, -1, -1, -1, -1, 93, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, 
   11, 12, 13, -1, -1, -1, -1, -1, -1, -1, 
-  -1, 22, -1, -1, -1, -1, -1, -1, 29, 30
+  -1, 22, -1, -1, -1, -1, -1, -1, 29, -1
   -1, -1, 33, 34, -1, 36, -1, -1, -1, 40, 
   -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, 
-  51, -1, 53, -1, -1, -1, -1, -1, -1, -1, 
-  61, -1, -1, -1, 65, 66, 67, 68, 69, 70, 
-  -1, 72, 73, 74, -1, 76, -1, 78, -1, -1, 
+  51, -1, 53, -1, -1, 56, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, 
+  -1, 72, -1, 74, -1, 76, -1, -1, -1, -1, 
   81, 82, 83, -1, -1, -1, 87, -1, -1, -1, 
-  -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, 4, 5, 6, -1, -1, 9, 10, 11, -1, 
-  -1, 14, -1, 16, -1, -1, -1, 20, 21, 22, 
-  -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  43, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, 
-  -1, -1, -1, 66, 67, 68, 69, 70, 71, -1, 
-  73, 74, 75, 76, 77, 78, -1, -1, 81, 82, 
-  83, 84, 85, 86, -1, -1, -1, -1, -1, 92, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 
-  5, 6, -1, -1, 9, 10, 11, -1, -1, 14, 
-  -1, 16, -1, -1, -1, 20, 21, 22, -1, -1, 
-  -1, -1, -1, -1, 29, 30, 31, 32, -1, -1, 
-  -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, 
-  -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, 
-  65, 66, 67, -1, 69, 70, 71, -1, 73, 74, 
-  75, 76, 77, 78, -1, -1, 81, 82, 83, 84, 
-  85, 86, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, -1, 4, 5, 6, 
-  -1, -1, 9, 10, 11, -1, -1, 14, -1, 16, 
-  -1, -1, -1, 20, 21, 22, -1, -1, -1, -1, 
-  -1, -1, 29, 30, 31, 32, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, 
-  47, -1, -1, -1, -1, -1, -1, -1, 55, -1, 
-  -1, -1, 59, -1, -1, -1, -1, -1, 65, 66, 
-  67, -1, 69, 70, 71, -1, 73, 74, 75, 76, 
-  77, 78, -1, -1, 81, 82, 83, 84, 85, 86, 
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, 
-  9, -1, 11, 12, 13, 14, -1, -1, -1, -1, 
-  -1, -1, 21, 22, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 11, 12, 13, -1, -1, -1, -1, -1, 
+  -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, 
   29, 30, -1, -1, 33, 34, -1, 36, -1, -1, 
   -1, 40, -1, 42, 43, 44, -1, -1, 47, -1, 
   -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, 
-  59, -1, 61, -1, -1, -1, 65, 66, 67, 68, 
-  69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 
-  -1, -1, 81, 82, 83, 84, 85, -1, 87, -1, 
-  -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 61, -1, -1, -1, 65, 66, 67, 68, 
+  69, 70, -1, 72, 73, 74, -1, 76, -1, 78, 
+  -1, -1, 81, 82, 83, -1, -1, -1, 87, -1, 
+  -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 11, 12, 13, -1, -1, -1, 
+  -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, 
+  -1, -1, 29, 30, -1, -1, 33, 34, -1, 36, 
+  -1, -1, -1, 40, -1, 42, 43, 44, -1, -1, 
+  47, -1, -1, -1, 51, -1, 53, -1, -1, -1, 
+  -1, -1, -1, -1, 61, -1, -1, -1, 65, 66, 
+  67, 68, 69, 70, -1, 72, 73, 74, -1, 76, 
+  -1, 78, -1, -1, 81, 82, 83, -1, -1, -1, 
+  87, -1, -1, -1, -1, -1, 93, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, 4, 5, 6, -1, 
+  -1, 9, 10, 11, -1, -1, 14, -1, 16, -1, 
+  -1, -1, 20, 21, 22, -1, -1, -1, -1, -1, 
+  -1, 29, 30, 31, 32, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, 59, -1, -1, -1, -1, -1, -1, 66, 67, 
+  68, 69, 70, 71, -1, 73, 74, 75, 76, 77, 
+  78, -1, -1, 81, 82, 83, 84, 85, 86, -1, 
+  -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, 
+  -1, -1, -1, -1, -1, 4, 5, 6, -1, -1, 
+  9, 10, 11, -1, -1, 14, -1, 16, -1, -1, 
+  -1, 20, 21, 22, -1, -1, -1, -1, -1, -1, 
+  29, 30, 31, 32, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 43, -1, -1, -1, 47, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  59, -1, -1, -1, -1, -1, 65, 66, 67, -1, 
+  69, 70, 71, -1, 73, 74, 75, 76, 77, 78, 
+  -1, -1, 81, 82, 83, 84, 85, 86, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, -1, 4, 5, 6, -1, -1, 9, 
+  10, 11, -1, -1, 14, -1, 16, -1, -1, -1, 
+  20, 21, 22, -1, -1, -1, -1, -1, -1, 29, 
+  30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, 
+  -1, -1, -1, -1, -1, 55, -1, -1, -1, 59, 
+  -1, -1, -1, -1, -1, 65, 66, 67, -1, 69, 
+  70, 71, -1, 73, 74, 75, 76, 77, 78, -1, 
+  -1, 81, 82, 83, 84, 85, 86, -1, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, 4, -1, -1, -1, -1, 9, -1, 
   11, 12, 13, 14, -1, -1, -1, -1, -1, -1, 
   21, 22, -1, -1, -1, -1, -1, -1, 29, 30, 
@@ -938,7 +971,17 @@ const short QQmlJSGrammar::action_check [] = {
   61, -1, -1, -1, 65, 66, 67, 68, 69, 70, 
   71, 72, 73, 74, 75, 76, 77, 78, -1, -1, 
   81, 82, 83, 84, 85, -1, 87, -1, -1, -1, 
-  -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 
+  -1, -1, 4, -1, -1, -1, -1, 9, -1, 11, 
+  12, 13, 14, -1, -1, -1, -1, -1, -1, 21, 
+  22, -1, -1, -1, -1, -1, -1, 29, 30, -1, 
+  -1, 33, 34, -1, 36, -1, -1, -1, 40, -1, 
+  42, 43, 44, -1, -1, 47, -1, -1, -1, 51, 
+  -1, 53, -1, -1, -1, -1, -1, 59, -1, 61, 
+  -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, 
+  72, 73, 74, 75, 76, 77, 78, -1, -1, 81, 
+  82, 83, 84, 85, -1, 87, -1, -1, -1, -1, 
+  -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, 4, 5, 6, -1, -1, 9, 10, 11, 12, 
   13, 14, -1, 16, -1, -1, -1, 20, 21, 22, 
   -1, -1, -1, -1, -1, -1, 29, 30, 31, 32, 
@@ -947,67 +990,68 @@ const short QQmlJSGrammar::action_check [] = {
   53, -1, -1, -1, -1, -1, 59, -1, 61, -1, 
   -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 
   73, 74, 75, 76, 77, 78, -1, -1, 81, 82, 
-  83, 84, 85, 86, 87, -1, -1, -1, -1, 92
-  -1, -1, -1, -1, -1, -1, -1, -1, -1, 4
-  5, 6, -1, -1, 9, 10, 11, 12, 13, 14
-  -1, 16, -1, -1, -1, 20, 21, 22, -1, -1, 
-  -1, -1, -1, -1, 29, 30, 31, 32, 33, 34
-  -1, 36, -1, -1, -1, 40, -1, 42, 43, 44
-  -1, -1, 47, -1, -1, -1, 51, -1, 53, -1
-  55, -1, -1, -1, 59, -1, 61, -1, -1, -1, 
-  65, 66, 67, 68, 69, 70, 71, 72, 73, 74
-  75, 76, 77, 78, -1, -1, 81, 82, 83, 84
-  85, 86, 87, -1, -1, -1, -1, 92, -1, -1
-  -1, -1, -1, -1, -1, -1, -1, 
+  83, 84, 85, 86, 87, -1, -1, -1, -1, -1
+  93, -1, -1, -1, -1, -1, -1, -1, -1, -1
+  4, 5, 6, -1, -1, 9, 10, 11, 12, 13
+  14, -1, 16, -1, -1, -1, 20, 21, 22, -1, 
+  -1, -1, -1, -1, -1, 29, 30, 31, 32, 33
+  34, -1, 36, -1, -1, -1, 40, -1, 42, 43
+  44, -1, -1, 47, -1, -1, -1, 51, -1, 53
+  -1, 55, -1, -1, -1, 59, -1, 61, -1, -1, 
+  -1, 65, 66, 67, 68, 69, 70, 71, 72, 73
+  74, 75, 76, 77, 78, -1, -1, 81, 82, 83
+  84, 85, 86, 87, -1, -1, -1, -1, -1, 93
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 
-  15, 2, 105, 3, 29, 15, 4, 2, 15, 29, 
-  9, 15, 3, 15, 3, 2, 19, 39, 15, 15, 
-  13, 15, 3, 15, 2, 15, 3, 15, 3, 11, 
-  13, 15, 71, 39, 39, 3, 22, 2, 99, 19, 
-  4, 15, 2, 15, 29, 15, 19, 3, 15, 3, 
-  29, 22, 15, 29, 15, 2, 22, 15, 2, 2, 
-  15, 2, 2, 2, 2, 22, 3, 15, 3, 2, 
-  39, 3, 3, 15, 97, 94, 3, 39, 2, 2, 
-  39, 3, 3, 2, 2, 101, 3, 40, 39, 39, 
-  39, 3, 2, 39, 39, 15, 22, 13, 3, 2, 
-  13, 2, -1, 39, 13, 35, -1, 16, -1, 39, 
-  -1, -1, -1, 15, 48, -1, 15, 13, 52, 48, 
-  48, 50, 3, 48, 20, 53, -1, 52, -1, 45, 
-  -1, 15, 45, 48, 48, 50, 50, 48, -1, 50, 
-  48, 48, 48, 50, 48, 53, 52, 39, 48, 53, 
-  48, 39, 44, 53, 48, 53, 44, 48, 15, 50, 
-  -1, 48, 48, 48, 58, 48, 3, 72, 53, 48, 
-  53, 50, 48, 48, 50, 48, 62, 64, 53, 82, 
-  53, 82, 48, 48, 41, 13, 88, 53, 16, 54, 
-  48, 72, 48, 3, 50, 48, 54, 4, 48, 13, 
-  50, 100, 86, 56, 48, 48, 50, 50, 48, 48, 
-  50, -1, 51, 48, 48, 48, 51, 50, 48, 48, 
-  54, 50, 48, 53, 50, 48, 48, 48, 50, 48, 
-  53, 45, 48, 54, 50, 72, -1, 48, -1, 48, 
-  -1, 60, 53, 48, 53, 48, 15, 48, 53, -1, 
-  53, 48, 53, 48, 65, -1, 53, -1, 53, 48, 
-  55, 70, 72, 48, 53, 70, 63, 70, 53, 70, 
-  48, 48, 41, 42, 59, 53, 53, 55, 48, 13, 
-  57, 70, 48, 53, 48, 55, 20, 53, -1, 53, 
-  -1, 55, -1, 5, -1, 61, 5, -1, 32, 33, 
-  13, 13, -1, 16, 13, -1, -1, -1, 20, -1, 
-  -1, 20, 22, 23, 24, 25, 26, 27, 28, -1, 
-  32, 33, -1, 32, 33, 21, 22, 23, 24, 25, 
-  26, 27, 28, 13, -1, -1, -1, -1, -1, -1, 
-  20, 21, 22, 23, 24, 25, 26, 27, 28, 13, 
-  -1, -1, -1, -1, -1, -1, 20, 21, 22, 23, 
-  24, 25, 26, 27, 28, -1, -1, -1, -1, -1, 
+  15, 3, 13, 29, 29, 15, 15, 4, 2, 15, 
+  105, 9, 15, 2, 15, 3, 29, 22, 3, 15, 
+  15, 2, 39, 15, 3, 15, 19, 3, 2, 15, 
+  3, 15, 19, 11, 71, 15, 19, 2, 13, 39, 
+  97, 2, 2, 15, 15, 3, 15, 29, 39, 15, 
+  94, 101, 29, 3, 2, 2, 15, 99, 15, 22, 
+  3, 3, 15, 15, 2, 2, 15, 22, 2, 39, 
+  2, 39, 39, 3, 3, 39, 22, 39, 2, 2, 
+  15, 3, 22, 39, 4, 39, 4, 3, 2, 40, 
+  3, 3, 2, 2, 39, 39, 3, 3, 13, 2, 
+  2, -1, -1, 39, -1, -1, -1, 48, 44, 48, 
+  -1, 50, 53, -1, 3, 48, 13, 48, 13, 50, 
+  53, 48, 48, 48, 50, 15, 53, 48, 53, 48, 
+  45, 50, 13, 13, 3, 16, 16, 48, 15, 50, 
+  48, 62, 50, 48, 48, 50, 50, 48, 45, 48, 
+  45, 50, 48, 39, 48, 48, 48, 53, 44, 53, 
+  48, 53, 50, 64, 48, 48, 48, 60, 15, 48, 
+  54, 54, 54, 13, 35, -1, 16, 56, 39, 82, 
+  82, 48, 48, 72, 48, 48, 53, 53, 52, 48, 
+  53, 48, 48, 52, 41, 48, 53, 2, 54, 52, 
+  48, 13, 15, 72, 48, 53, 3, 51, 20, 15, 
+  100, 88, 48, 48, 50, 50, 48, 48, 50, 50, 
+  48, 48, 50, 48, 48, 50, 48, 51, 50, 48, 
+  48, 58, 50, 48, 53, 41, 42, 48, 53, -1, 
+  48, -1, 53, -1, 63, 53, 61, 48, 48, 48, 
+  48, -1, 53, 53, 53, 53, 48, 55, 57, 70, 
+  -1, 53, 70, 48, -1, 65, -1, 59, 53, 70, 
+  55, 48, 48, 86, -1, 72, 53, 53, 55, 55, 
+  13, 48, 48, 16, 5, 18, 53, 53, 13, -1, 
+  5, -1, 13, -1, -1, 20, -1, -1, 13, 20, 
+  -1, -1, 3, 70, 70, 20, 39, 32, 33, -1, 
+  -1, 32, 33, -1, -1, -1, -1, 32, 33, 22, 
+  23, 24, 25, 26, 27, 28, 13, -1, -1, -1, 
+  -1, -1, -1, 20, 21, 22, 23, 24, 25, 26, 
+  27, 28, 13, -1, -1, -1, -1, -1, -1, 20, 
+  21, 22, 23, 24, 25, 26, 27, 28, -1, -1, 
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+  -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, 13, -1, -1, 16, -1, 18, 
+  -1, -1, -1, -1, -1, -1, 21, 22, 23, 24, 
+  25, 26, 27, 28, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-  -1, -1, -1, -1, -1, -1, -1, -1};
+  -1, -1};
 
 QT_END_NAMESPACE
index e4a6e8e..8924b2a 100644 (file)
@@ -3,7 +3,7 @@
 ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
 ** Contact: http://www.qt-project.org/legal
 **
-** This file is part of the QtCore module of the Qt Toolkit.
+** This file is part of the Qt Toolkit.
 **
 ** $QT_BEGIN_LICENSE:LGPL$
 ** Commercial License Usage
@@ -63,12 +63,12 @@ class QQmlJSGrammar
 public:
   enum VariousConstants {
     EOF_SYMBOL = 0,
-    REDUCE_HERE = 101,
-    SHIFT_THERE = 100,
+    REDUCE_HERE = 102,
+    SHIFT_THERE = 101,
     T_AND = 1,
     T_AND_AND = 2,
     T_AND_EQ = 3,
-    T_AS = 91,
+    T_AS = 92,
     T_AUTOMATIC_SEMICOLON = 62,
     T_BREAK = 4,
     T_CASE = 5,
@@ -76,6 +76,7 @@ public:
     T_COLON = 7,
     T_COMMA = 8,
     T_COMMENT = 88,
+    T_COMPATIBILITY_SEMICOLON = 89,
     T_CONST = 84,
     T_CONTINUE = 9,
     T_DEBUGGER = 85,
@@ -89,14 +90,14 @@ public:
     T_EQ = 17,
     T_EQ_EQ = 18,
     T_EQ_EQ_EQ = 19,
-    T_ERROR = 93,
+    T_ERROR = 94,
     T_FALSE = 83,
-    T_FEED_JS_EXPRESSION = 97,
-    T_FEED_JS_PROGRAM = 99,
-    T_FEED_JS_SOURCE_ELEMENT = 98,
-    T_FEED_JS_STATEMENT = 96,
-    T_FEED_UI_OBJECT_MEMBER = 95,
-    T_FEED_UI_PROGRAM = 94,
+    T_FEED_JS_EXPRESSION = 98,
+    T_FEED_JS_PROGRAM = 100,
+    T_FEED_JS_SOURCE_ELEMENT = 99,
+    T_FEED_JS_STATEMENT = 97,
+    T_FEED_UI_OBJECT_MEMBER = 96,
+    T_FEED_UI_PROGRAM = 95,
     T_FINALLY = 20,
     T_FOR = 21,
     T_FUNCTION = 22,
@@ -108,7 +109,7 @@ public:
     T_GT_GT_GT_EQ = 28,
     T_IDENTIFIER = 29,
     T_IF = 30,
-    T_IMPORT = 90,
+    T_IMPORT = 91,
     T_IN = 31,
     T_INSTANCEOF = 32,
     T_LBRACE = 33,
@@ -128,7 +129,7 @@ public:
     T_NOT_EQ_EQ = 46,
     T_NULL = 81,
     T_NUMERIC_LITERAL = 47,
-    T_ON = 92,
+    T_ON = 93,
     T_OR = 48,
     T_OR_EQ = 49,
     T_OR_OR = 50,
@@ -136,7 +137,7 @@ public:
     T_PLUS_EQ = 52,
     T_PLUS_PLUS = 53,
     T_PROPERTY = 66,
-    T_PUBLIC = 89,
+    T_PUBLIC = 90,
     T_QUESTION = 54,
     T_RBRACE = 55,
     T_RBRACKET = 56,
@@ -165,15 +166,15 @@ public:
     T_XOR = 79,
     T_XOR_EQ = 80,
 
-    ACCEPT_STATE = 644,
-    RULE_COUNT = 349,
-    STATE_COUNT = 645,
-    TERMINAL_COUNT = 102,
+    ACCEPT_STATE = 645,
+    RULE_COUNT = 350,
+    STATE_COUNT = 646,
+    TERMINAL_COUNT = 103,
     NON_TERMINAL_COUNT = 107,
 
-    GOTO_INDEX_OFFSET = 645,
-    GOTO_INFO_OFFSET = 2807,
-    GOTO_CHECK_OFFSET = 2807
+    GOTO_INDEX_OFFSET = 646,
+    GOTO_INFO_OFFSET = 3019,
+    GOTO_CHECK_OFFSET = 3019
   };
 
   static const char  *const    spell [];
index 1bc8f23..65aaa43 100644 (file)
 #include <QVarLengthArray>
 
 //
-// This file is automatically generated from qmljs.g.
-// Changes will be lost.
+//  W A R N I N G
+//  -------------
+//
+// This file is automatically generated from qqmljs.g.
+// Changes should be made to that file, not here. Any change to this file will
+// be lost!
+//
+// To regenerate this file, run:
+//    qlalr --no-debug --no-lines --qt qqmljs.g
 //
 
 using namespace QQmlJS;
@@ -1383,7 +1390,7 @@ case 289: {
   sym(1).Node = node;
 } break;
 
-case 291: {
+case 292: {
   AST::DoWhileStatement *node = new (pool) AST::DoWhileStatement(sym(2).Statement, sym(5).Expression);
   node->doToken = loc(1);
   node->whileToken = loc(3);
@@ -1393,7 +1400,7 @@ case 291: {
   sym(1).Node = node;
 } break;
 
-case 292: {
+case 293: {
   AST::WhileStatement *node = new (pool) AST::WhileStatement(sym(3).Expression, sym(5).Statement);
   node->whileToken = loc(1);
   node->lparenToken = loc(2);
@@ -1401,7 +1408,7 @@ case 292: {
   sym(1).Node = node;
 } break;
 
-case 293: {
+case 294: {
   AST::ForStatement *node = new (pool) AST::ForStatement(sym(3).Expression,
     sym(5).Expression, sym(7).Expression, sym(9).Statement);
   node->forToken = loc(1);
@@ -1412,7 +1419,7 @@ case 293: {
   sym(1).Node = node;
 } break;
 
-case 294: {
+case 295: {
   AST::LocalForStatement *node = new (pool) AST::LocalForStatement(
      sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression,
      sym(8).Expression, sym(10).Statement);
@@ -1425,7 +1432,7 @@ case 294: {
   sym(1).Node = node;
 } break;
 
-case 295: {
+case 296: {
   AST:: ForEachStatement *node = new (pool) AST::ForEachStatement(sym(3).Expression,
     sym(5).Expression, sym(7).Statement);
   node->forToken = loc(1);
@@ -1435,7 +1442,7 @@ case 295: {
   sym(1).Node = node;
 } break;
 
-case 296: {
+case 297: {
   AST::LocalForEachStatement *node = new (pool) AST::LocalForEachStatement(
     sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
   node->forToken = loc(1);
@@ -1446,14 +1453,14 @@ case 296: {
   sym(1).Node = node;
 } break;
 
-case 298: {
+case 299: {
   AST::ContinueStatement *node = new (pool) AST::ContinueStatement();
   node->continueToken = loc(1);
   node->semicolonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 300: {
+case 301: {
   AST::ContinueStatement *node = new (pool) AST::ContinueStatement(stringRef(2));
   node->continueToken = loc(1);
   node->identifierToken = loc(2);
@@ -1461,14 +1468,14 @@ case 300: {
   sym(1).Node = node;
 } break;
 
-case 302: {
+case 303: {
   AST::BreakStatement *node = new (pool) AST::BreakStatement(QStringRef());
   node->breakToken = loc(1);
   node->semicolonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 304: {
+case 305: {
   AST::BreakStatement *node = new (pool) AST::BreakStatement(stringRef(2));
   node->breakToken = loc(1);
   node->identifierToken = loc(2);
@@ -1476,14 +1483,14 @@ case 304: {
   sym(1).Node = node;
 } break;
 
-case 306: {
+case 307: {
   AST::ReturnStatement *node = new (pool) AST::ReturnStatement(sym(2).Expression);
   node->returnToken = loc(1);
   node->semicolonToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 307: {
+case 308: {
   AST::WithStatement *node = new (pool) AST::WithStatement(sym(3).Expression, sym(5).Statement);
   node->withToken = loc(1);
   node->lparenToken = loc(2);
@@ -1491,7 +1498,7 @@ case 307: {
   sym(1).Node = node;
 } break;
 
-case 308: {
+case 309: {
   AST::SwitchStatement *node = new (pool) AST::SwitchStatement(sym(3).Expression, sym(5).CaseBlock);
   node->switchToken = loc(1);
   node->lparenToken = loc(2);
@@ -1499,90 +1506,90 @@ case 308: {
   sym(1).Node = node;
 } break;
 
-case 309: {
+case 310: {
   AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses);
   node->lbraceToken = loc(1);
   node->rbraceToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 310: {
+case 311: {
   AST::CaseBlock *node = new (pool) AST::CaseBlock(sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
   node->lbraceToken = loc(1);
   node->rbraceToken = loc(5);
   sym(1).Node = node;
 } break;
 
-case 311: {
+case 312: {
   sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClause);
 } break;
 
-case 312: {
+case 313: {
   sym(1).Node = new (pool) AST::CaseClauses(sym(1).CaseClauses, sym(2).CaseClause);
 } break;
 
-case 313: {
+case 314: {
   sym(1).Node = 0;
 } break;
 
-case 314: {
+case 315: {
   sym(1).Node = sym(1).CaseClauses->finish ();
 } break;
 
-case 315: {
+case 316: {
   AST::CaseClause *node = new (pool) AST::CaseClause(sym(2).Expression, sym(4).StatementList);
   node->caseToken = loc(1);
   node->colonToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 316: {
+case 317: {
   AST::DefaultClause *node = new (pool) AST::DefaultClause(sym(3).StatementList);
   node->defaultToken = loc(1);
   node->colonToken = loc(2);
   sym(1).Node = node;
 } break;
-case 317:
-case 318: {
+case 318:
+case 319: {
   AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement);
   node->identifierToken = loc(1);
   node->colonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 319: {
+case 320: {
   AST::LabelledStatement *node = new (pool) AST::LabelledStatement(stringRef(1), sym(3).Statement);
   node->identifierToken = loc(1);
   node->colonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 321: {
+case 322: {
   AST::ThrowStatement *node = new (pool) AST::ThrowStatement(sym(2).Expression);
   node->throwToken = loc(1);
   node->semicolonToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 322: {
+case 323: {
   AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch);
   node->tryToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 323: {
+case 324: {
   AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Finally);
   node->tryToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 324: {
+case 325: {
   AST::TryStatement *node = new (pool) AST::TryStatement(sym(2).Statement, sym(3).Catch, sym(4).Finally);
   node->tryToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 325: {
+case 326: {
   AST::Catch *node = new (pool) AST::Catch(stringRef(3), sym(5).Block);
   node->catchToken = loc(1);
   node->lparenToken = loc(2);
@@ -1591,20 +1598,20 @@ case 325: {
   sym(1).Node = node;
 } break;
 
-case 326: {
+case 327: {
   AST::Finally *node = new (pool) AST::Finally(sym(2).Block);
   node->finallyToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 328: {
+case 329: {
   AST::DebuggerStatement *node = new (pool) AST::DebuggerStatement();
   node->debuggerToken = loc(1);
   node->semicolonToken = loc(2);
   sym(1).Node = node;
 } break;
 
-case 329: {
+case 330: {
   AST::FunctionDeclaration *node = new (pool) AST::FunctionDeclaration(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody);
   node->functionToken = loc(1);
   node->identifierToken = loc(2);
@@ -1615,7 +1622,7 @@ case 329: {
   sym(1).Node = node;
 } break;
 
-case 330: {
+case 331: {
   AST::FunctionExpression *node = new (pool) AST::FunctionExpression(stringRef(2), sym(4).FormalParameterList, sym(7).FunctionBody);
   node->functionToken = loc(1);
   if (! stringRef(2).isNull())
@@ -1627,60 +1634,60 @@ case 330: {
   sym(1).Node = node;
 } break;
 
-case 331: {
+case 332: {
   AST::FormalParameterList *node = new (pool) AST::FormalParameterList(stringRef(1));
   node->identifierToken = loc(1);
   sym(1).Node = node;
 } break;
 
-case 332: {
+case 333: {
   AST::FormalParameterList *node = new (pool) AST::FormalParameterList(sym(1).FormalParameterList, stringRef(3));
   node->commaToken = loc(2);
   node->identifierToken = loc(3);
   sym(1).Node = node;
 } break;
 
-case 333: {
+case 334: {
   sym(1).Node = 0;
 } break;
 
-case 334: {
+case 335: {
   sym(1).Node = sym(1).FormalParameterList->finish ();
 } break;
 
-case 335: {
+case 336: {
   sym(1).Node = 0;
 } break;
 
-case 337: {
+case 338: {
   sym(1).Node = new (pool) AST::FunctionBody(sym(1).SourceElements->finish ());
 } break;
 
-case 339: {
+case 340: {
   sym(1).Node = new (pool) AST::Program(sym(1).SourceElements->finish ());
 } break;
 
-case 340: {
+case 341: {
   sym(1).Node = new (pool) AST::SourceElements(sym(1).SourceElement);
 } break;
 
-case 341: {
+case 342: {
   sym(1).Node = new (pool) AST::SourceElements(sym(1).SourceElements, sym(2).SourceElement);
 } break;
 
-case 342: {
+case 343: {
   sym(1).Node = new (pool) AST::StatementSourceElement(sym(1).Statement);
 } break;
 
-case 343: {
+case 344: {
   sym(1).Node = new (pool) AST::FunctionSourceElement(sym(1).FunctionDeclaration);
 } break;
 
-case 344: {
+case 345: {
   stringRef(1) = QStringRef();
 } break;
 
-case 346: {
+case 347: {
   sym(1).Node = 0;
 } break;
 
@@ -1693,7 +1700,8 @@ case 346: {
         const int errorState = state_stack[tos];
 
         // automatic insertion of `;'
-        if (yytoken != -1 && t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken)) {
+        if (yytoken != -1 && ((t_action(errorState, T_AUTOMATIC_SEMICOLON) && lexer->canInsertAutomaticSemicolon(yytoken))
+                              || t_action(errorState, T_COMPATIBILITY_SEMICOLON))) {
             SavedToken &tk = token_buffer[0];
             tk.token = yytoken;
             tk.dval = yylval;
index 57379ca..c32adc4 100644 (file)
 //
 
 //
-// This file is automatically generated from qmljs.g.
-// Changes will be lost.
+//  W A R N I N G
+//  -------------
+//
+// This file is automatically generated from qqmljs.g.
+// Changes should be made to that file, not here. Any change to this file will
+// be lost!
+//
+// To regenerate this file, run:
+//    qlalr --no-debug --no-lines --qt qqmljs.g
 //
 
 #ifndef QQMLJSPARSER_P_H
diff --git a/tests/auto/qml/qqmlecmascript/data/compatibilitySemicolon.qml b/tests/auto/qml/qqmlecmascript/data/compatibilitySemicolon.qml
new file mode 100644 (file)
index 0000000..594a1b3
--- /dev/null
@@ -0,0 +1,13 @@
+
+import QtQuick 2.0
+
+QtObject {
+    function code() {
+
+        // Not correct according to ECMA 5.1, but JSC and V8 accept the following:
+        do {
+            ;
+        } while (false) true
+    }
+}
+
index 0ae0668..a99c5fa 100644 (file)
@@ -265,6 +265,7 @@ private slots:
     void registeredFlagMethod();
     void deleteLaterObjectMethodCall();
     void automaticSemicolon();
+    void compatibilitySemicolon();
     void unaryExpression();
     void switchStatement();
     void withStatement();
@@ -6600,6 +6601,13 @@ void tst_qqmlecmascript::automaticSemicolon()
     QVERIFY(object != 0);
 }
 
+void tst_qqmlecmascript::compatibilitySemicolon()
+{
+    QQmlComponent component(&engine, testFileUrl("compatibilitySemicolon.qml"));
+    QObject *object = component.create();
+    QVERIFY(object != 0);
+}
+
 void tst_qqmlecmascript::unaryExpression()
 {
     QQmlComponent component(&engine, testFileUrl("unaryExpression.qml"));
index 192a17a..0d69503 100644 (file)
@@ -394,7 +394,8 @@ bool Minify::parse(int startToken)
     const int yyerrorstate = _stateStack[yytos];
 
     // automatic insertion of `;'
-    if (yytoken != -1 && t_action(yyerrorstate, T_AUTOMATIC_SEMICOLON) && canInsertAutomaticSemicolon(yytoken)) {
+    if (yytoken != -1 && ((t_action(yyerrorstate, T_AUTOMATIC_SEMICOLON) && canInsertAutomaticSemicolon(yytoken))
+                          || t_action(yyerrorstate, T_COMPATIBILITY_SEMICOLON))) {
         _tokens.prepend(yytoken);
         _tokenStrings.prepend(yytokentext);
         yyaction = yyerrorstate;
@@ -509,7 +510,8 @@ bool Tokenize::parse(int startToken)
     const int yyerrorstate = _stateStack[yytos];
 
     // automatic insertion of `;'
-    if (yytoken != -1 && t_action(yyerrorstate, T_AUTOMATIC_SEMICOLON) && canInsertAutomaticSemicolon(yytoken)) {
+    if (yytoken != -1 && ((t_action(yyerrorstate, T_AUTOMATIC_SEMICOLON) && canInsertAutomaticSemicolon(yytoken))
+                          || t_action(yyerrorstate, T_COMPATIBILITY_SEMICOLON))) {
         _tokens.prepend(yytoken);
         _tokenStrings.prepend(yytokentext);
         yyaction = yyerrorstate;