diff --git a/docs/language_spec.rst b/docs/language_spec.rst index 137e537..2ef225f 100644 --- a/docs/language_spec.rst +++ b/docs/language_spec.rst @@ -279,13 +279,18 @@ A statement can be marked with multiple labels. .. code:: ExplorerScript - §hello_label; + @hello_label; operation(); - §another_label; - §and_another_one; + @another_label; + @and_another_one; another_operation(); +.. admonition:: SkyTemple + + ``§label;`` can be used instead of ``@label;`` for backwards + compatibility. You should use ``@label;`` in new scripts. + Control statements ~~~~~~~~~~~~~~~~~~ Control statements have special meaning to the control flow @@ -355,7 +360,7 @@ Jumps to a label. .. code:: ExplorerScript // This will execute operation() in an endless loop. - §hello_label; + @hello_label; operation(); jump @hello_label; diff --git a/explorerscript/antlr/ExplorerScript.interp b/explorerscript/antlr/ExplorerScript.interp index fadc60a..d2073fb 100644 --- a/explorerscript/antlr/ExplorerScript.interp +++ b/explorerscript/antlr/ExplorerScript.interp @@ -258,4 +258,4 @@ string_value atn: -[4, 1, 93, 617, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 1, 0, 5, 0, 130, 8, 0, 10, 0, 12, 0, 133, 9, 0, 1, 0, 1, 0, 5, 0, 137, 8, 0, 10, 0, 12, 0, 140, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 152, 8, 2, 1, 2, 1, 2, 5, 2, 156, 8, 2, 10, 2, 12, 2, 159, 9, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 173, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 181, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 3, 8, 198, 8, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 216, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 222, 8, 11, 10, 11, 12, 11, 225, 9, 11, 1, 11, 1, 11, 1, 11, 5, 11, 230, 8, 11, 10, 11, 12, 11, 233, 9, 11, 1, 11, 1, 11, 5, 11, 237, 8, 11, 10, 11, 12, 11, 240, 9, 11, 1, 11, 3, 11, 243, 8, 11, 1, 12, 1, 12, 3, 12, 247, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 253, 8, 12, 10, 12, 12, 12, 256, 9, 12, 1, 12, 1, 12, 1, 12, 5, 12, 261, 8, 12, 10, 12, 12, 12, 264, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 5, 13, 271, 8, 13, 10, 13, 12, 13, 274, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 283, 8, 14, 1, 15, 3, 15, 286, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 294, 8, 16, 1, 17, 3, 17, 297, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 319, 8, 19, 10, 19, 12, 19, 322, 9, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 333, 8, 20, 10, 20, 12, 20, 336, 9, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 344, 8, 21, 10, 21, 12, 21, 347, 9, 21, 1, 21, 3, 21, 350, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 355, 8, 22, 10, 22, 12, 22, 358, 9, 22, 1, 22, 3, 22, 361, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 369, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 394, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 3, 31, 409, 8, 31, 1, 32, 1, 32, 1, 32, 5, 32, 414, 8, 32, 10, 32, 12, 32, 417, 9, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 430, 8, 33, 10, 33, 12, 33, 433, 9, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 439, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 446, 8, 34, 10, 34, 12, 34, 449, 9, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 460, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 466, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 471, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 3, 39, 482, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 3, 47, 521, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 3, 52, 544, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 4, 53, 550, 8, 53, 11, 53, 12, 53, 551, 1, 53, 3, 53, 555, 8, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 5, 55, 566, 8, 55, 10, 55, 12, 55, 569, 9, 55, 1, 55, 3, 55, 572, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 577, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, 60, 595, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 601, 8, 61, 10, 61, 12, 61, 604, 9, 61, 1, 61, 3, 61, 607, 8, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 0, 0, 64, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 0, 8, 1, 0, 31, 36, 1, 0, 41, 43, 1, 0, 57, 58, 2, 0, 3, 4, 6, 14, 2, 0, 5, 5, 15, 18, 3, 0, 74, 75, 77, 77, 91, 91, 2, 0, 77, 77, 91, 91, 1, 0, 63, 64, 629, 0, 131, 1, 0, 0, 0, 2, 143, 1, 0, 0, 0, 4, 147, 1, 0, 0, 0, 6, 172, 1, 0, 0, 0, 8, 180, 1, 0, 0, 0, 10, 184, 1, 0, 0, 0, 12, 186, 1, 0, 0, 0, 14, 190, 1, 0, 0, 0, 16, 194, 1, 0, 0, 0, 18, 202, 1, 0, 0, 0, 20, 210, 1, 0, 0, 0, 22, 213, 1, 0, 0, 0, 24, 244, 1, 0, 0, 0, 26, 267, 1, 0, 0, 0, 28, 282, 1, 0, 0, 0, 30, 285, 1, 0, 0, 0, 32, 289, 1, 0, 0, 0, 34, 296, 1, 0, 0, 0, 36, 303, 1, 0, 0, 0, 38, 311, 1, 0, 0, 0, 40, 325, 1, 0, 0, 0, 42, 339, 1, 0, 0, 0, 44, 351, 1, 0, 0, 0, 46, 368, 1, 0, 0, 0, 48, 370, 1, 0, 0, 0, 50, 375, 1, 0, 0, 0, 52, 380, 1, 0, 0, 0, 54, 385, 1, 0, 0, 0, 56, 393, 1, 0, 0, 0, 58, 395, 1, 0, 0, 0, 60, 400, 1, 0, 0, 0, 62, 405, 1, 0, 0, 0, 64, 410, 1, 0, 0, 0, 66, 420, 1, 0, 0, 0, 68, 436, 1, 0, 0, 0, 70, 459, 1, 0, 0, 0, 72, 461, 1, 0, 0, 0, 74, 472, 1, 0, 0, 0, 76, 475, 1, 0, 0, 0, 78, 478, 1, 0, 0, 0, 80, 483, 1, 0, 0, 0, 82, 487, 1, 0, 0, 0, 84, 494, 1, 0, 0, 0, 86, 503, 1, 0, 0, 0, 88, 508, 1, 0, 0, 0, 90, 513, 1, 0, 0, 0, 92, 515, 1, 0, 0, 0, 94, 520, 1, 0, 0, 0, 96, 522, 1, 0, 0, 0, 98, 526, 1, 0, 0, 0, 100, 530, 1, 0, 0, 0, 102, 538, 1, 0, 0, 0, 104, 540, 1, 0, 0, 0, 106, 547, 1, 0, 0, 0, 108, 558, 1, 0, 0, 0, 110, 562, 1, 0, 0, 0, 112, 576, 1, 0, 0, 0, 114, 578, 1, 0, 0, 0, 116, 587, 1, 0, 0, 0, 118, 589, 1, 0, 0, 0, 120, 594, 1, 0, 0, 0, 122, 596, 1, 0, 0, 0, 124, 610, 1, 0, 0, 0, 126, 614, 1, 0, 0, 0, 128, 130, 3, 2, 1, 0, 129, 128, 1, 0, 0, 0, 130, 133, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 138, 1, 0, 0, 0, 133, 131, 1, 0, 0, 0, 134, 137, 3, 4, 2, 0, 135, 137, 3, 94, 47, 0, 136, 134, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 140, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 141, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 141, 142, 5, 0, 0, 1, 142, 1, 1, 0, 0, 0, 143, 144, 5, 23, 0, 0, 144, 145, 5, 63, 0, 0, 145, 146, 5, 1, 0, 0, 146, 3, 1, 0, 0, 0, 147, 148, 5, 24, 0, 0, 148, 149, 5, 74, 0, 0, 149, 151, 5, 82, 0, 0, 150, 152, 5, 75, 0, 0, 151, 150, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 157, 1, 0, 0, 0, 153, 154, 5, 84, 0, 0, 154, 156, 5, 75, 0, 0, 155, 153, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 160, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 160, 161, 5, 83, 0, 0, 161, 162, 3, 106, 53, 0, 162, 5, 1, 0, 0, 0, 163, 173, 3, 8, 4, 0, 164, 173, 3, 18, 9, 0, 165, 173, 3, 22, 11, 0, 166, 173, 3, 38, 19, 0, 167, 173, 3, 40, 20, 0, 168, 173, 3, 64, 32, 0, 169, 173, 3, 66, 33, 0, 170, 173, 3, 68, 34, 0, 171, 173, 3, 16, 8, 0, 172, 163, 1, 0, 0, 0, 172, 164, 1, 0, 0, 0, 172, 165, 1, 0, 0, 0, 172, 166, 1, 0, 0, 0, 172, 167, 1, 0, 0, 0, 172, 168, 1, 0, 0, 0, 172, 169, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 171, 1, 0, 0, 0, 173, 7, 1, 0, 0, 0, 174, 181, 3, 104, 52, 0, 175, 181, 3, 118, 59, 0, 176, 181, 3, 10, 5, 0, 177, 181, 3, 12, 6, 0, 178, 181, 3, 14, 7, 0, 179, 181, 3, 70, 35, 0, 180, 174, 1, 0, 0, 0, 180, 175, 1, 0, 0, 0, 180, 176, 1, 0, 0, 0, 180, 177, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 183, 5, 1, 0, 0, 183, 9, 1, 0, 0, 0, 184, 185, 7, 0, 0, 0, 185, 11, 1, 0, 0, 0, 186, 187, 5, 21, 0, 0, 187, 188, 5, 87, 0, 0, 188, 189, 5, 74, 0, 0, 189, 13, 1, 0, 0, 0, 190, 191, 5, 22, 0, 0, 191, 192, 5, 87, 0, 0, 192, 193, 5, 74, 0, 0, 193, 15, 1, 0, 0, 0, 194, 195, 5, 76, 0, 0, 195, 197, 5, 82, 0, 0, 196, 198, 3, 110, 55, 0, 197, 196, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 200, 5, 83, 0, 0, 200, 201, 5, 1, 0, 0, 201, 17, 1, 0, 0, 0, 202, 203, 5, 29, 0, 0, 203, 204, 5, 82, 0, 0, 204, 205, 3, 20, 10, 0, 205, 206, 5, 83, 0, 0, 206, 207, 5, 89, 0, 0, 207, 208, 3, 8, 4, 0, 208, 209, 5, 90, 0, 0, 209, 19, 1, 0, 0, 0, 210, 211, 5, 2, 0, 0, 211, 212, 3, 102, 51, 0, 212, 21, 1, 0, 0, 0, 213, 215, 5, 25, 0, 0, 214, 216, 5, 20, 0, 0, 215, 214, 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 218, 5, 82, 0, 0, 218, 223, 3, 28, 14, 0, 219, 220, 5, 19, 0, 0, 220, 222, 3, 28, 14, 0, 221, 219, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 226, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 227, 5, 83, 0, 0, 227, 231, 5, 89, 0, 0, 228, 230, 3, 6, 3, 0, 229, 228, 1, 0, 0, 0, 230, 233, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 234, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 234, 238, 5, 90, 0, 0, 235, 237, 3, 24, 12, 0, 236, 235, 1, 0, 0, 0, 237, 240, 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 242, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 241, 243, 3, 26, 13, 0, 242, 241, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 23, 1, 0, 0, 0, 244, 246, 5, 26, 0, 0, 245, 247, 5, 20, 0, 0, 246, 245, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 248, 1, 0, 0, 0, 248, 249, 5, 82, 0, 0, 249, 254, 3, 28, 14, 0, 250, 251, 5, 19, 0, 0, 251, 253, 3, 28, 14, 0, 252, 250, 1, 0, 0, 0, 253, 256, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 257, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 257, 258, 5, 83, 0, 0, 258, 262, 5, 89, 0, 0, 259, 261, 3, 6, 3, 0, 260, 259, 1, 0, 0, 0, 261, 264, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 265, 266, 5, 90, 0, 0, 266, 25, 1, 0, 0, 0, 267, 268, 5, 27, 0, 0, 268, 272, 5, 89, 0, 0, 269, 271, 3, 6, 3, 0, 270, 269, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 275, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 275, 276, 5, 90, 0, 0, 276, 27, 1, 0, 0, 0, 277, 283, 3, 32, 16, 0, 278, 283, 3, 34, 17, 0, 279, 283, 3, 30, 15, 0, 280, 283, 3, 36, 18, 0, 281, 283, 3, 104, 52, 0, 282, 277, 1, 0, 0, 0, 282, 278, 1, 0, 0, 0, 282, 279, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 282, 281, 1, 0, 0, 0, 283, 29, 1, 0, 0, 0, 284, 286, 5, 20, 0, 0, 285, 284, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 288, 7, 1, 0, 0, 288, 31, 1, 0, 0, 0, 289, 290, 3, 102, 51, 0, 290, 293, 3, 90, 45, 0, 291, 294, 3, 86, 43, 0, 292, 294, 3, 102, 51, 0, 293, 291, 1, 0, 0, 0, 293, 292, 1, 0, 0, 0, 294, 33, 1, 0, 0, 0, 295, 297, 5, 20, 0, 0, 296, 295, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 299, 3, 102, 51, 0, 299, 300, 5, 61, 0, 0, 300, 301, 5, 77, 0, 0, 301, 302, 5, 62, 0, 0, 302, 35, 1, 0, 0, 0, 303, 304, 3, 88, 44, 0, 304, 305, 3, 90, 45, 0, 305, 306, 5, 61, 0, 0, 306, 307, 5, 77, 0, 0, 307, 308, 5, 84, 0, 0, 308, 309, 5, 77, 0, 0, 309, 310, 5, 62, 0, 0, 310, 37, 1, 0, 0, 0, 311, 312, 5, 30, 0, 0, 312, 313, 5, 82, 0, 0, 313, 314, 3, 46, 23, 0, 314, 315, 5, 83, 0, 0, 315, 320, 5, 89, 0, 0, 316, 319, 3, 44, 22, 0, 317, 319, 3, 42, 21, 0, 318, 316, 1, 0, 0, 0, 318, 317, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 323, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 323, 324, 5, 90, 0, 0, 324, 39, 1, 0, 0, 0, 325, 326, 7, 2, 0, 0, 326, 327, 5, 82, 0, 0, 327, 328, 3, 102, 51, 0, 328, 329, 5, 83, 0, 0, 329, 334, 5, 89, 0, 0, 330, 333, 3, 44, 22, 0, 331, 333, 3, 42, 21, 0, 332, 330, 1, 0, 0, 0, 332, 331, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 337, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 338, 5, 90, 0, 0, 338, 41, 1, 0, 0, 0, 339, 340, 5, 49, 0, 0, 340, 341, 3, 56, 28, 0, 341, 349, 5, 85, 0, 0, 342, 344, 3, 6, 3, 0, 343, 342, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 350, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 350, 3, 120, 60, 0, 349, 345, 1, 0, 0, 0, 349, 348, 1, 0, 0, 0, 350, 43, 1, 0, 0, 0, 351, 352, 5, 50, 0, 0, 352, 360, 5, 85, 0, 0, 353, 355, 3, 6, 3, 0, 354, 353, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 361, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 359, 361, 3, 120, 60, 0, 360, 356, 1, 0, 0, 0, 360, 359, 1, 0, 0, 0, 361, 45, 1, 0, 0, 0, 362, 369, 3, 102, 51, 0, 363, 369, 3, 104, 52, 0, 364, 369, 3, 48, 24, 0, 365, 369, 3, 50, 25, 0, 366, 369, 3, 52, 26, 0, 367, 369, 3, 54, 27, 0, 368, 362, 1, 0, 0, 0, 368, 363, 1, 0, 0, 0, 368, 364, 1, 0, 0, 0, 368, 365, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 367, 1, 0, 0, 0, 369, 47, 1, 0, 0, 0, 370, 371, 3, 88, 44, 0, 371, 372, 5, 61, 0, 0, 372, 373, 5, 77, 0, 0, 373, 374, 5, 62, 0, 0, 374, 49, 1, 0, 0, 0, 375, 376, 5, 44, 0, 0, 376, 377, 5, 82, 0, 0, 377, 378, 3, 102, 51, 0, 378, 379, 5, 83, 0, 0, 379, 51, 1, 0, 0, 0, 380, 381, 5, 46, 0, 0, 381, 382, 5, 82, 0, 0, 382, 383, 3, 102, 51, 0, 383, 384, 5, 83, 0, 0, 384, 53, 1, 0, 0, 0, 385, 386, 5, 45, 0, 0, 386, 387, 5, 82, 0, 0, 387, 388, 5, 83, 0, 0, 388, 55, 1, 0, 0, 0, 389, 394, 3, 102, 51, 0, 390, 394, 3, 58, 29, 0, 391, 394, 3, 60, 30, 0, 392, 394, 3, 62, 31, 0, 393, 389, 1, 0, 0, 0, 393, 390, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 393, 392, 1, 0, 0, 0, 394, 57, 1, 0, 0, 0, 395, 396, 5, 48, 0, 0, 396, 397, 5, 82, 0, 0, 397, 398, 3, 120, 60, 0, 398, 399, 5, 83, 0, 0, 399, 59, 1, 0, 0, 0, 400, 401, 5, 47, 0, 0, 401, 402, 5, 82, 0, 0, 402, 403, 3, 102, 51, 0, 403, 404, 5, 83, 0, 0, 404, 61, 1, 0, 0, 0, 405, 408, 3, 90, 45, 0, 406, 409, 3, 86, 43, 0, 407, 409, 3, 102, 51, 0, 408, 406, 1, 0, 0, 0, 408, 407, 1, 0, 0, 0, 409, 63, 1, 0, 0, 0, 410, 411, 5, 28, 0, 0, 411, 415, 5, 89, 0, 0, 412, 414, 3, 6, 3, 0, 413, 412, 1, 0, 0, 0, 414, 417, 1, 0, 0, 0, 415, 413, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 418, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 418, 419, 5, 90, 0, 0, 419, 65, 1, 0, 0, 0, 420, 421, 5, 60, 0, 0, 421, 422, 5, 82, 0, 0, 422, 423, 3, 8, 4, 0, 423, 424, 3, 28, 14, 0, 424, 425, 5, 1, 0, 0, 425, 426, 3, 8, 4, 0, 426, 427, 5, 83, 0, 0, 427, 431, 5, 89, 0, 0, 428, 430, 3, 6, 3, 0, 429, 428, 1, 0, 0, 0, 430, 433, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 434, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 434, 435, 5, 90, 0, 0, 435, 67, 1, 0, 0, 0, 436, 438, 5, 59, 0, 0, 437, 439, 5, 20, 0, 0, 438, 437, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 5, 82, 0, 0, 441, 442, 3, 28, 14, 0, 442, 443, 5, 83, 0, 0, 443, 447, 5, 89, 0, 0, 444, 446, 3, 6, 3, 0, 445, 444, 1, 0, 0, 0, 446, 449, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 450, 1, 0, 0, 0, 449, 447, 1, 0, 0, 0, 450, 451, 5, 90, 0, 0, 451, 69, 1, 0, 0, 0, 452, 460, 3, 72, 36, 0, 453, 460, 3, 74, 37, 0, 454, 460, 3, 76, 38, 0, 455, 460, 3, 78, 39, 0, 456, 460, 3, 80, 40, 0, 457, 460, 3, 82, 41, 0, 458, 460, 3, 84, 42, 0, 459, 452, 1, 0, 0, 0, 459, 453, 1, 0, 0, 0, 459, 454, 1, 0, 0, 0, 459, 455, 1, 0, 0, 0, 459, 456, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 458, 1, 0, 0, 0, 460, 71, 1, 0, 0, 0, 461, 465, 3, 102, 51, 0, 462, 463, 5, 61, 0, 0, 463, 464, 5, 77, 0, 0, 464, 466, 5, 62, 0, 0, 465, 462, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 470, 3, 92, 46, 0, 468, 471, 3, 102, 51, 0, 469, 471, 3, 86, 43, 0, 470, 468, 1, 0, 0, 0, 470, 469, 1, 0, 0, 0, 471, 73, 1, 0, 0, 0, 472, 473, 5, 51, 0, 0, 473, 474, 3, 102, 51, 0, 474, 75, 1, 0, 0, 0, 475, 476, 5, 53, 0, 0, 476, 477, 3, 102, 51, 0, 477, 77, 1, 0, 0, 0, 478, 481, 5, 52, 0, 0, 479, 482, 5, 55, 0, 0, 480, 482, 3, 88, 44, 0, 481, 479, 1, 0, 0, 0, 481, 480, 1, 0, 0, 0, 482, 79, 1, 0, 0, 0, 483, 484, 5, 56, 0, 0, 484, 485, 5, 5, 0, 0, 485, 486, 3, 102, 51, 0, 486, 81, 1, 0, 0, 0, 487, 488, 5, 46, 0, 0, 488, 489, 5, 82, 0, 0, 489, 490, 3, 102, 51, 0, 490, 491, 5, 83, 0, 0, 491, 492, 5, 5, 0, 0, 492, 493, 3, 102, 51, 0, 493, 83, 1, 0, 0, 0, 494, 495, 3, 102, 51, 0, 495, 496, 5, 5, 0, 0, 496, 497, 5, 54, 0, 0, 497, 498, 5, 61, 0, 0, 498, 499, 5, 77, 0, 0, 499, 500, 5, 84, 0, 0, 500, 501, 5, 77, 0, 0, 501, 502, 5, 62, 0, 0, 502, 85, 1, 0, 0, 0, 503, 504, 5, 40, 0, 0, 504, 505, 5, 82, 0, 0, 505, 506, 3, 102, 51, 0, 506, 507, 5, 83, 0, 0, 507, 87, 1, 0, 0, 0, 508, 509, 5, 54, 0, 0, 509, 510, 5, 82, 0, 0, 510, 511, 3, 102, 51, 0, 511, 512, 5, 83, 0, 0, 512, 89, 1, 0, 0, 0, 513, 514, 7, 3, 0, 0, 514, 91, 1, 0, 0, 0, 515, 516, 7, 4, 0, 0, 516, 93, 1, 0, 0, 0, 517, 521, 3, 98, 49, 0, 518, 521, 3, 96, 48, 0, 519, 521, 3, 100, 50, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 95, 1, 0, 0, 0, 522, 523, 5, 67, 0, 0, 523, 524, 5, 77, 0, 0, 524, 525, 3, 106, 53, 0, 525, 97, 1, 0, 0, 0, 526, 527, 5, 66, 0, 0, 527, 528, 5, 74, 0, 0, 528, 529, 3, 106, 53, 0, 529, 99, 1, 0, 0, 0, 530, 531, 5, 67, 0, 0, 531, 532, 5, 77, 0, 0, 532, 533, 5, 65, 0, 0, 533, 534, 5, 82, 0, 0, 534, 535, 3, 102, 51, 0, 535, 536, 5, 83, 0, 0, 536, 537, 3, 106, 53, 0, 537, 101, 1, 0, 0, 0, 538, 539, 7, 5, 0, 0, 539, 103, 1, 0, 0, 0, 540, 541, 5, 74, 0, 0, 541, 543, 5, 82, 0, 0, 542, 544, 3, 110, 55, 0, 543, 542, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 5, 83, 0, 0, 546, 105, 1, 0, 0, 0, 547, 554, 5, 89, 0, 0, 548, 550, 3, 6, 3, 0, 549, 548, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 555, 1, 0, 0, 0, 553, 555, 3, 108, 54, 0, 554, 549, 1, 0, 0, 0, 554, 553, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557, 5, 90, 0, 0, 557, 107, 1, 0, 0, 0, 558, 559, 5, 71, 0, 0, 559, 560, 5, 72, 0, 0, 560, 561, 5, 1, 0, 0, 561, 109, 1, 0, 0, 0, 562, 567, 3, 112, 56, 0, 563, 564, 5, 84, 0, 0, 564, 566, 3, 112, 56, 0, 565, 563, 1, 0, 0, 0, 566, 569, 1, 0, 0, 0, 567, 565, 1, 0, 0, 0, 567, 568, 1, 0, 0, 0, 568, 571, 1, 0, 0, 0, 569, 567, 1, 0, 0, 0, 570, 572, 5, 84, 0, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 111, 1, 0, 0, 0, 573, 577, 3, 102, 51, 0, 574, 577, 3, 120, 60, 0, 575, 577, 3, 114, 57, 0, 576, 573, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 576, 575, 1, 0, 0, 0, 577, 113, 1, 0, 0, 0, 578, 579, 5, 73, 0, 0, 579, 580, 5, 6, 0, 0, 580, 581, 5, 63, 0, 0, 581, 582, 5, 84, 0, 0, 582, 583, 3, 116, 58, 0, 583, 584, 5, 84, 0, 0, 584, 585, 3, 116, 58, 0, 585, 586, 5, 7, 0, 0, 586, 115, 1, 0, 0, 0, 587, 588, 7, 6, 0, 0, 588, 117, 1, 0, 0, 0, 589, 590, 5, 88, 0, 0, 590, 591, 5, 74, 0, 0, 591, 119, 1, 0, 0, 0, 592, 595, 3, 126, 63, 0, 593, 595, 3, 122, 61, 0, 594, 592, 1, 0, 0, 0, 594, 593, 1, 0, 0, 0, 595, 121, 1, 0, 0, 0, 596, 597, 5, 89, 0, 0, 597, 602, 3, 124, 62, 0, 598, 599, 5, 84, 0, 0, 599, 601, 3, 124, 62, 0, 600, 598, 1, 0, 0, 0, 601, 604, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 606, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 605, 607, 5, 84, 0, 0, 606, 605, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 609, 5, 90, 0, 0, 609, 123, 1, 0, 0, 0, 610, 611, 5, 74, 0, 0, 611, 612, 5, 5, 0, 0, 612, 613, 3, 126, 63, 0, 613, 125, 1, 0, 0, 0, 614, 615, 7, 7, 0, 0, 615, 127, 1, 0, 0, 0, 50, 131, 136, 138, 151, 157, 172, 180, 197, 215, 223, 231, 238, 242, 246, 254, 262, 272, 282, 285, 293, 296, 318, 320, 332, 334, 345, 349, 356, 360, 368, 393, 408, 415, 431, 438, 447, 459, 465, 470, 481, 520, 543, 551, 554, 567, 571, 576, 594, 602, 606] \ No newline at end of file +[4, 1, 93, 617, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 1, 0, 5, 0, 130, 8, 0, 10, 0, 12, 0, 133, 9, 0, 1, 0, 1, 0, 5, 0, 137, 8, 0, 10, 0, 12, 0, 140, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 152, 8, 2, 1, 2, 1, 2, 5, 2, 156, 8, 2, 10, 2, 12, 2, 159, 9, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 173, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 181, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 3, 8, 198, 8, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 216, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 222, 8, 11, 10, 11, 12, 11, 225, 9, 11, 1, 11, 1, 11, 1, 11, 5, 11, 230, 8, 11, 10, 11, 12, 11, 233, 9, 11, 1, 11, 1, 11, 5, 11, 237, 8, 11, 10, 11, 12, 11, 240, 9, 11, 1, 11, 3, 11, 243, 8, 11, 1, 12, 1, 12, 3, 12, 247, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 253, 8, 12, 10, 12, 12, 12, 256, 9, 12, 1, 12, 1, 12, 1, 12, 5, 12, 261, 8, 12, 10, 12, 12, 12, 264, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 5, 13, 271, 8, 13, 10, 13, 12, 13, 274, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 283, 8, 14, 1, 15, 3, 15, 286, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 294, 8, 16, 1, 17, 3, 17, 297, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 319, 8, 19, 10, 19, 12, 19, 322, 9, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 333, 8, 20, 10, 20, 12, 20, 336, 9, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 344, 8, 21, 10, 21, 12, 21, 347, 9, 21, 1, 21, 3, 21, 350, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 355, 8, 22, 10, 22, 12, 22, 358, 9, 22, 1, 22, 3, 22, 361, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 369, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 394, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 3, 31, 409, 8, 31, 1, 32, 1, 32, 1, 32, 5, 32, 414, 8, 32, 10, 32, 12, 32, 417, 9, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 430, 8, 33, 10, 33, 12, 33, 433, 9, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 439, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 446, 8, 34, 10, 34, 12, 34, 449, 9, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 460, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 466, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 471, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 3, 39, 482, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 3, 47, 521, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 3, 52, 544, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 4, 53, 550, 8, 53, 11, 53, 12, 53, 551, 1, 53, 3, 53, 555, 8, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 5, 55, 566, 8, 55, 10, 55, 12, 55, 569, 9, 55, 1, 55, 3, 55, 572, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 577, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, 60, 595, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 601, 8, 61, 10, 61, 12, 61, 604, 9, 61, 1, 61, 3, 61, 607, 8, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 0, 0, 64, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 0, 9, 1, 0, 31, 36, 1, 0, 41, 43, 1, 0, 57, 58, 2, 0, 3, 4, 6, 14, 2, 0, 5, 5, 15, 18, 3, 0, 74, 75, 77, 77, 91, 91, 2, 0, 77, 77, 91, 91, 1, 0, 87, 88, 1, 0, 63, 64, 629, 0, 131, 1, 0, 0, 0, 2, 143, 1, 0, 0, 0, 4, 147, 1, 0, 0, 0, 6, 172, 1, 0, 0, 0, 8, 180, 1, 0, 0, 0, 10, 184, 1, 0, 0, 0, 12, 186, 1, 0, 0, 0, 14, 190, 1, 0, 0, 0, 16, 194, 1, 0, 0, 0, 18, 202, 1, 0, 0, 0, 20, 210, 1, 0, 0, 0, 22, 213, 1, 0, 0, 0, 24, 244, 1, 0, 0, 0, 26, 267, 1, 0, 0, 0, 28, 282, 1, 0, 0, 0, 30, 285, 1, 0, 0, 0, 32, 289, 1, 0, 0, 0, 34, 296, 1, 0, 0, 0, 36, 303, 1, 0, 0, 0, 38, 311, 1, 0, 0, 0, 40, 325, 1, 0, 0, 0, 42, 339, 1, 0, 0, 0, 44, 351, 1, 0, 0, 0, 46, 368, 1, 0, 0, 0, 48, 370, 1, 0, 0, 0, 50, 375, 1, 0, 0, 0, 52, 380, 1, 0, 0, 0, 54, 385, 1, 0, 0, 0, 56, 393, 1, 0, 0, 0, 58, 395, 1, 0, 0, 0, 60, 400, 1, 0, 0, 0, 62, 405, 1, 0, 0, 0, 64, 410, 1, 0, 0, 0, 66, 420, 1, 0, 0, 0, 68, 436, 1, 0, 0, 0, 70, 459, 1, 0, 0, 0, 72, 461, 1, 0, 0, 0, 74, 472, 1, 0, 0, 0, 76, 475, 1, 0, 0, 0, 78, 478, 1, 0, 0, 0, 80, 483, 1, 0, 0, 0, 82, 487, 1, 0, 0, 0, 84, 494, 1, 0, 0, 0, 86, 503, 1, 0, 0, 0, 88, 508, 1, 0, 0, 0, 90, 513, 1, 0, 0, 0, 92, 515, 1, 0, 0, 0, 94, 520, 1, 0, 0, 0, 96, 522, 1, 0, 0, 0, 98, 526, 1, 0, 0, 0, 100, 530, 1, 0, 0, 0, 102, 538, 1, 0, 0, 0, 104, 540, 1, 0, 0, 0, 106, 547, 1, 0, 0, 0, 108, 558, 1, 0, 0, 0, 110, 562, 1, 0, 0, 0, 112, 576, 1, 0, 0, 0, 114, 578, 1, 0, 0, 0, 116, 587, 1, 0, 0, 0, 118, 589, 1, 0, 0, 0, 120, 594, 1, 0, 0, 0, 122, 596, 1, 0, 0, 0, 124, 610, 1, 0, 0, 0, 126, 614, 1, 0, 0, 0, 128, 130, 3, 2, 1, 0, 129, 128, 1, 0, 0, 0, 130, 133, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 138, 1, 0, 0, 0, 133, 131, 1, 0, 0, 0, 134, 137, 3, 4, 2, 0, 135, 137, 3, 94, 47, 0, 136, 134, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 140, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 141, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 141, 142, 5, 0, 0, 1, 142, 1, 1, 0, 0, 0, 143, 144, 5, 23, 0, 0, 144, 145, 5, 63, 0, 0, 145, 146, 5, 1, 0, 0, 146, 3, 1, 0, 0, 0, 147, 148, 5, 24, 0, 0, 148, 149, 5, 74, 0, 0, 149, 151, 5, 82, 0, 0, 150, 152, 5, 75, 0, 0, 151, 150, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 157, 1, 0, 0, 0, 153, 154, 5, 84, 0, 0, 154, 156, 5, 75, 0, 0, 155, 153, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 160, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 160, 161, 5, 83, 0, 0, 161, 162, 3, 106, 53, 0, 162, 5, 1, 0, 0, 0, 163, 173, 3, 8, 4, 0, 164, 173, 3, 18, 9, 0, 165, 173, 3, 22, 11, 0, 166, 173, 3, 38, 19, 0, 167, 173, 3, 40, 20, 0, 168, 173, 3, 64, 32, 0, 169, 173, 3, 66, 33, 0, 170, 173, 3, 68, 34, 0, 171, 173, 3, 16, 8, 0, 172, 163, 1, 0, 0, 0, 172, 164, 1, 0, 0, 0, 172, 165, 1, 0, 0, 0, 172, 166, 1, 0, 0, 0, 172, 167, 1, 0, 0, 0, 172, 168, 1, 0, 0, 0, 172, 169, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 171, 1, 0, 0, 0, 173, 7, 1, 0, 0, 0, 174, 181, 3, 104, 52, 0, 175, 181, 3, 118, 59, 0, 176, 181, 3, 10, 5, 0, 177, 181, 3, 12, 6, 0, 178, 181, 3, 14, 7, 0, 179, 181, 3, 70, 35, 0, 180, 174, 1, 0, 0, 0, 180, 175, 1, 0, 0, 0, 180, 176, 1, 0, 0, 0, 180, 177, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 183, 5, 1, 0, 0, 183, 9, 1, 0, 0, 0, 184, 185, 7, 0, 0, 0, 185, 11, 1, 0, 0, 0, 186, 187, 5, 21, 0, 0, 187, 188, 5, 87, 0, 0, 188, 189, 5, 74, 0, 0, 189, 13, 1, 0, 0, 0, 190, 191, 5, 22, 0, 0, 191, 192, 5, 87, 0, 0, 192, 193, 5, 74, 0, 0, 193, 15, 1, 0, 0, 0, 194, 195, 5, 76, 0, 0, 195, 197, 5, 82, 0, 0, 196, 198, 3, 110, 55, 0, 197, 196, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 200, 5, 83, 0, 0, 200, 201, 5, 1, 0, 0, 201, 17, 1, 0, 0, 0, 202, 203, 5, 29, 0, 0, 203, 204, 5, 82, 0, 0, 204, 205, 3, 20, 10, 0, 205, 206, 5, 83, 0, 0, 206, 207, 5, 89, 0, 0, 207, 208, 3, 8, 4, 0, 208, 209, 5, 90, 0, 0, 209, 19, 1, 0, 0, 0, 210, 211, 5, 2, 0, 0, 211, 212, 3, 102, 51, 0, 212, 21, 1, 0, 0, 0, 213, 215, 5, 25, 0, 0, 214, 216, 5, 20, 0, 0, 215, 214, 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 218, 5, 82, 0, 0, 218, 223, 3, 28, 14, 0, 219, 220, 5, 19, 0, 0, 220, 222, 3, 28, 14, 0, 221, 219, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 226, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 227, 5, 83, 0, 0, 227, 231, 5, 89, 0, 0, 228, 230, 3, 6, 3, 0, 229, 228, 1, 0, 0, 0, 230, 233, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 234, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 234, 238, 5, 90, 0, 0, 235, 237, 3, 24, 12, 0, 236, 235, 1, 0, 0, 0, 237, 240, 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 242, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 241, 243, 3, 26, 13, 0, 242, 241, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 23, 1, 0, 0, 0, 244, 246, 5, 26, 0, 0, 245, 247, 5, 20, 0, 0, 246, 245, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 248, 1, 0, 0, 0, 248, 249, 5, 82, 0, 0, 249, 254, 3, 28, 14, 0, 250, 251, 5, 19, 0, 0, 251, 253, 3, 28, 14, 0, 252, 250, 1, 0, 0, 0, 253, 256, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 257, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 257, 258, 5, 83, 0, 0, 258, 262, 5, 89, 0, 0, 259, 261, 3, 6, 3, 0, 260, 259, 1, 0, 0, 0, 261, 264, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 265, 266, 5, 90, 0, 0, 266, 25, 1, 0, 0, 0, 267, 268, 5, 27, 0, 0, 268, 272, 5, 89, 0, 0, 269, 271, 3, 6, 3, 0, 270, 269, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 275, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 275, 276, 5, 90, 0, 0, 276, 27, 1, 0, 0, 0, 277, 283, 3, 32, 16, 0, 278, 283, 3, 34, 17, 0, 279, 283, 3, 30, 15, 0, 280, 283, 3, 36, 18, 0, 281, 283, 3, 104, 52, 0, 282, 277, 1, 0, 0, 0, 282, 278, 1, 0, 0, 0, 282, 279, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 282, 281, 1, 0, 0, 0, 283, 29, 1, 0, 0, 0, 284, 286, 5, 20, 0, 0, 285, 284, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 288, 7, 1, 0, 0, 288, 31, 1, 0, 0, 0, 289, 290, 3, 102, 51, 0, 290, 293, 3, 90, 45, 0, 291, 294, 3, 86, 43, 0, 292, 294, 3, 102, 51, 0, 293, 291, 1, 0, 0, 0, 293, 292, 1, 0, 0, 0, 294, 33, 1, 0, 0, 0, 295, 297, 5, 20, 0, 0, 296, 295, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 299, 3, 102, 51, 0, 299, 300, 5, 61, 0, 0, 300, 301, 5, 77, 0, 0, 301, 302, 5, 62, 0, 0, 302, 35, 1, 0, 0, 0, 303, 304, 3, 88, 44, 0, 304, 305, 3, 90, 45, 0, 305, 306, 5, 61, 0, 0, 306, 307, 5, 77, 0, 0, 307, 308, 5, 84, 0, 0, 308, 309, 5, 77, 0, 0, 309, 310, 5, 62, 0, 0, 310, 37, 1, 0, 0, 0, 311, 312, 5, 30, 0, 0, 312, 313, 5, 82, 0, 0, 313, 314, 3, 46, 23, 0, 314, 315, 5, 83, 0, 0, 315, 320, 5, 89, 0, 0, 316, 319, 3, 44, 22, 0, 317, 319, 3, 42, 21, 0, 318, 316, 1, 0, 0, 0, 318, 317, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 323, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 323, 324, 5, 90, 0, 0, 324, 39, 1, 0, 0, 0, 325, 326, 7, 2, 0, 0, 326, 327, 5, 82, 0, 0, 327, 328, 3, 102, 51, 0, 328, 329, 5, 83, 0, 0, 329, 334, 5, 89, 0, 0, 330, 333, 3, 44, 22, 0, 331, 333, 3, 42, 21, 0, 332, 330, 1, 0, 0, 0, 332, 331, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 337, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 338, 5, 90, 0, 0, 338, 41, 1, 0, 0, 0, 339, 340, 5, 49, 0, 0, 340, 341, 3, 56, 28, 0, 341, 349, 5, 85, 0, 0, 342, 344, 3, 6, 3, 0, 343, 342, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 350, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 350, 3, 120, 60, 0, 349, 345, 1, 0, 0, 0, 349, 348, 1, 0, 0, 0, 350, 43, 1, 0, 0, 0, 351, 352, 5, 50, 0, 0, 352, 360, 5, 85, 0, 0, 353, 355, 3, 6, 3, 0, 354, 353, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 361, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 359, 361, 3, 120, 60, 0, 360, 356, 1, 0, 0, 0, 360, 359, 1, 0, 0, 0, 361, 45, 1, 0, 0, 0, 362, 369, 3, 102, 51, 0, 363, 369, 3, 104, 52, 0, 364, 369, 3, 48, 24, 0, 365, 369, 3, 50, 25, 0, 366, 369, 3, 52, 26, 0, 367, 369, 3, 54, 27, 0, 368, 362, 1, 0, 0, 0, 368, 363, 1, 0, 0, 0, 368, 364, 1, 0, 0, 0, 368, 365, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 367, 1, 0, 0, 0, 369, 47, 1, 0, 0, 0, 370, 371, 3, 88, 44, 0, 371, 372, 5, 61, 0, 0, 372, 373, 5, 77, 0, 0, 373, 374, 5, 62, 0, 0, 374, 49, 1, 0, 0, 0, 375, 376, 5, 44, 0, 0, 376, 377, 5, 82, 0, 0, 377, 378, 3, 102, 51, 0, 378, 379, 5, 83, 0, 0, 379, 51, 1, 0, 0, 0, 380, 381, 5, 46, 0, 0, 381, 382, 5, 82, 0, 0, 382, 383, 3, 102, 51, 0, 383, 384, 5, 83, 0, 0, 384, 53, 1, 0, 0, 0, 385, 386, 5, 45, 0, 0, 386, 387, 5, 82, 0, 0, 387, 388, 5, 83, 0, 0, 388, 55, 1, 0, 0, 0, 389, 394, 3, 102, 51, 0, 390, 394, 3, 58, 29, 0, 391, 394, 3, 60, 30, 0, 392, 394, 3, 62, 31, 0, 393, 389, 1, 0, 0, 0, 393, 390, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 393, 392, 1, 0, 0, 0, 394, 57, 1, 0, 0, 0, 395, 396, 5, 48, 0, 0, 396, 397, 5, 82, 0, 0, 397, 398, 3, 120, 60, 0, 398, 399, 5, 83, 0, 0, 399, 59, 1, 0, 0, 0, 400, 401, 5, 47, 0, 0, 401, 402, 5, 82, 0, 0, 402, 403, 3, 102, 51, 0, 403, 404, 5, 83, 0, 0, 404, 61, 1, 0, 0, 0, 405, 408, 3, 90, 45, 0, 406, 409, 3, 86, 43, 0, 407, 409, 3, 102, 51, 0, 408, 406, 1, 0, 0, 0, 408, 407, 1, 0, 0, 0, 409, 63, 1, 0, 0, 0, 410, 411, 5, 28, 0, 0, 411, 415, 5, 89, 0, 0, 412, 414, 3, 6, 3, 0, 413, 412, 1, 0, 0, 0, 414, 417, 1, 0, 0, 0, 415, 413, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 418, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 418, 419, 5, 90, 0, 0, 419, 65, 1, 0, 0, 0, 420, 421, 5, 60, 0, 0, 421, 422, 5, 82, 0, 0, 422, 423, 3, 8, 4, 0, 423, 424, 3, 28, 14, 0, 424, 425, 5, 1, 0, 0, 425, 426, 3, 8, 4, 0, 426, 427, 5, 83, 0, 0, 427, 431, 5, 89, 0, 0, 428, 430, 3, 6, 3, 0, 429, 428, 1, 0, 0, 0, 430, 433, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 434, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 434, 435, 5, 90, 0, 0, 435, 67, 1, 0, 0, 0, 436, 438, 5, 59, 0, 0, 437, 439, 5, 20, 0, 0, 438, 437, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 5, 82, 0, 0, 441, 442, 3, 28, 14, 0, 442, 443, 5, 83, 0, 0, 443, 447, 5, 89, 0, 0, 444, 446, 3, 6, 3, 0, 445, 444, 1, 0, 0, 0, 446, 449, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 450, 1, 0, 0, 0, 449, 447, 1, 0, 0, 0, 450, 451, 5, 90, 0, 0, 451, 69, 1, 0, 0, 0, 452, 460, 3, 72, 36, 0, 453, 460, 3, 74, 37, 0, 454, 460, 3, 76, 38, 0, 455, 460, 3, 78, 39, 0, 456, 460, 3, 80, 40, 0, 457, 460, 3, 82, 41, 0, 458, 460, 3, 84, 42, 0, 459, 452, 1, 0, 0, 0, 459, 453, 1, 0, 0, 0, 459, 454, 1, 0, 0, 0, 459, 455, 1, 0, 0, 0, 459, 456, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 458, 1, 0, 0, 0, 460, 71, 1, 0, 0, 0, 461, 465, 3, 102, 51, 0, 462, 463, 5, 61, 0, 0, 463, 464, 5, 77, 0, 0, 464, 466, 5, 62, 0, 0, 465, 462, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 470, 3, 92, 46, 0, 468, 471, 3, 102, 51, 0, 469, 471, 3, 86, 43, 0, 470, 468, 1, 0, 0, 0, 470, 469, 1, 0, 0, 0, 471, 73, 1, 0, 0, 0, 472, 473, 5, 51, 0, 0, 473, 474, 3, 102, 51, 0, 474, 75, 1, 0, 0, 0, 475, 476, 5, 53, 0, 0, 476, 477, 3, 102, 51, 0, 477, 77, 1, 0, 0, 0, 478, 481, 5, 52, 0, 0, 479, 482, 5, 55, 0, 0, 480, 482, 3, 88, 44, 0, 481, 479, 1, 0, 0, 0, 481, 480, 1, 0, 0, 0, 482, 79, 1, 0, 0, 0, 483, 484, 5, 56, 0, 0, 484, 485, 5, 5, 0, 0, 485, 486, 3, 102, 51, 0, 486, 81, 1, 0, 0, 0, 487, 488, 5, 46, 0, 0, 488, 489, 5, 82, 0, 0, 489, 490, 3, 102, 51, 0, 490, 491, 5, 83, 0, 0, 491, 492, 5, 5, 0, 0, 492, 493, 3, 102, 51, 0, 493, 83, 1, 0, 0, 0, 494, 495, 3, 102, 51, 0, 495, 496, 5, 5, 0, 0, 496, 497, 5, 54, 0, 0, 497, 498, 5, 61, 0, 0, 498, 499, 5, 77, 0, 0, 499, 500, 5, 84, 0, 0, 500, 501, 5, 77, 0, 0, 501, 502, 5, 62, 0, 0, 502, 85, 1, 0, 0, 0, 503, 504, 5, 40, 0, 0, 504, 505, 5, 82, 0, 0, 505, 506, 3, 102, 51, 0, 506, 507, 5, 83, 0, 0, 507, 87, 1, 0, 0, 0, 508, 509, 5, 54, 0, 0, 509, 510, 5, 82, 0, 0, 510, 511, 3, 102, 51, 0, 511, 512, 5, 83, 0, 0, 512, 89, 1, 0, 0, 0, 513, 514, 7, 3, 0, 0, 514, 91, 1, 0, 0, 0, 515, 516, 7, 4, 0, 0, 516, 93, 1, 0, 0, 0, 517, 521, 3, 98, 49, 0, 518, 521, 3, 96, 48, 0, 519, 521, 3, 100, 50, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 95, 1, 0, 0, 0, 522, 523, 5, 67, 0, 0, 523, 524, 5, 77, 0, 0, 524, 525, 3, 106, 53, 0, 525, 97, 1, 0, 0, 0, 526, 527, 5, 66, 0, 0, 527, 528, 5, 74, 0, 0, 528, 529, 3, 106, 53, 0, 529, 99, 1, 0, 0, 0, 530, 531, 5, 67, 0, 0, 531, 532, 5, 77, 0, 0, 532, 533, 5, 65, 0, 0, 533, 534, 5, 82, 0, 0, 534, 535, 3, 102, 51, 0, 535, 536, 5, 83, 0, 0, 536, 537, 3, 106, 53, 0, 537, 101, 1, 0, 0, 0, 538, 539, 7, 5, 0, 0, 539, 103, 1, 0, 0, 0, 540, 541, 5, 74, 0, 0, 541, 543, 5, 82, 0, 0, 542, 544, 3, 110, 55, 0, 543, 542, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 5, 83, 0, 0, 546, 105, 1, 0, 0, 0, 547, 554, 5, 89, 0, 0, 548, 550, 3, 6, 3, 0, 549, 548, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 555, 1, 0, 0, 0, 553, 555, 3, 108, 54, 0, 554, 549, 1, 0, 0, 0, 554, 553, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557, 5, 90, 0, 0, 557, 107, 1, 0, 0, 0, 558, 559, 5, 71, 0, 0, 559, 560, 5, 72, 0, 0, 560, 561, 5, 1, 0, 0, 561, 109, 1, 0, 0, 0, 562, 567, 3, 112, 56, 0, 563, 564, 5, 84, 0, 0, 564, 566, 3, 112, 56, 0, 565, 563, 1, 0, 0, 0, 566, 569, 1, 0, 0, 0, 567, 565, 1, 0, 0, 0, 567, 568, 1, 0, 0, 0, 568, 571, 1, 0, 0, 0, 569, 567, 1, 0, 0, 0, 570, 572, 5, 84, 0, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 111, 1, 0, 0, 0, 573, 577, 3, 102, 51, 0, 574, 577, 3, 120, 60, 0, 575, 577, 3, 114, 57, 0, 576, 573, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 576, 575, 1, 0, 0, 0, 577, 113, 1, 0, 0, 0, 578, 579, 5, 73, 0, 0, 579, 580, 5, 6, 0, 0, 580, 581, 5, 63, 0, 0, 581, 582, 5, 84, 0, 0, 582, 583, 3, 116, 58, 0, 583, 584, 5, 84, 0, 0, 584, 585, 3, 116, 58, 0, 585, 586, 5, 7, 0, 0, 586, 115, 1, 0, 0, 0, 587, 588, 7, 6, 0, 0, 588, 117, 1, 0, 0, 0, 589, 590, 7, 7, 0, 0, 590, 591, 5, 74, 0, 0, 591, 119, 1, 0, 0, 0, 592, 595, 3, 126, 63, 0, 593, 595, 3, 122, 61, 0, 594, 592, 1, 0, 0, 0, 594, 593, 1, 0, 0, 0, 595, 121, 1, 0, 0, 0, 596, 597, 5, 89, 0, 0, 597, 602, 3, 124, 62, 0, 598, 599, 5, 84, 0, 0, 599, 601, 3, 124, 62, 0, 600, 598, 1, 0, 0, 0, 601, 604, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 606, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 605, 607, 5, 84, 0, 0, 606, 605, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 609, 5, 90, 0, 0, 609, 123, 1, 0, 0, 0, 610, 611, 5, 74, 0, 0, 611, 612, 5, 5, 0, 0, 612, 613, 3, 126, 63, 0, 613, 125, 1, 0, 0, 0, 614, 615, 7, 8, 0, 0, 615, 127, 1, 0, 0, 0, 50, 131, 136, 138, 151, 157, 172, 180, 197, 215, 223, 231, 238, 242, 246, 254, 262, 272, 282, 285, 293, 296, 318, 320, 332, 334, 345, 349, 356, 360, 368, 393, 408, 415, 431, 438, 447, 459, 465, 470, 481, 520, 543, 551, 554, 567, 571, 576, 594, 602, 606] \ No newline at end of file diff --git a/explorerscript/antlr/ExplorerScriptParser.py b/explorerscript/antlr/ExplorerScriptParser.py index 47b6d70..2fb8134 100644 --- a/explorerscript/antlr/ExplorerScriptParser.py +++ b/explorerscript/antlr/ExplorerScriptParser.py @@ -64,171 +64,171 @@ def serializedATN(): 4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48, 50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92, 94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126, - 0,8,1,0,31,36,1,0,41,43,1,0,57,58,2,0,3,4,6,14,2,0,5,5,15,18,3,0, - 74,75,77,77,91,91,2,0,77,77,91,91,1,0,63,64,629,0,131,1,0,0,0,2, - 143,1,0,0,0,4,147,1,0,0,0,6,172,1,0,0,0,8,180,1,0,0,0,10,184,1,0, - 0,0,12,186,1,0,0,0,14,190,1,0,0,0,16,194,1,0,0,0,18,202,1,0,0,0, - 20,210,1,0,0,0,22,213,1,0,0,0,24,244,1,0,0,0,26,267,1,0,0,0,28,282, - 1,0,0,0,30,285,1,0,0,0,32,289,1,0,0,0,34,296,1,0,0,0,36,303,1,0, - 0,0,38,311,1,0,0,0,40,325,1,0,0,0,42,339,1,0,0,0,44,351,1,0,0,0, - 46,368,1,0,0,0,48,370,1,0,0,0,50,375,1,0,0,0,52,380,1,0,0,0,54,385, - 1,0,0,0,56,393,1,0,0,0,58,395,1,0,0,0,60,400,1,0,0,0,62,405,1,0, - 0,0,64,410,1,0,0,0,66,420,1,0,0,0,68,436,1,0,0,0,70,459,1,0,0,0, - 72,461,1,0,0,0,74,472,1,0,0,0,76,475,1,0,0,0,78,478,1,0,0,0,80,483, - 1,0,0,0,82,487,1,0,0,0,84,494,1,0,0,0,86,503,1,0,0,0,88,508,1,0, - 0,0,90,513,1,0,0,0,92,515,1,0,0,0,94,520,1,0,0,0,96,522,1,0,0,0, - 98,526,1,0,0,0,100,530,1,0,0,0,102,538,1,0,0,0,104,540,1,0,0,0,106, - 547,1,0,0,0,108,558,1,0,0,0,110,562,1,0,0,0,112,576,1,0,0,0,114, - 578,1,0,0,0,116,587,1,0,0,0,118,589,1,0,0,0,120,594,1,0,0,0,122, - 596,1,0,0,0,124,610,1,0,0,0,126,614,1,0,0,0,128,130,3,2,1,0,129, - 128,1,0,0,0,130,133,1,0,0,0,131,129,1,0,0,0,131,132,1,0,0,0,132, - 138,1,0,0,0,133,131,1,0,0,0,134,137,3,4,2,0,135,137,3,94,47,0,136, - 134,1,0,0,0,136,135,1,0,0,0,137,140,1,0,0,0,138,136,1,0,0,0,138, - 139,1,0,0,0,139,141,1,0,0,0,140,138,1,0,0,0,141,142,5,0,0,1,142, - 1,1,0,0,0,143,144,5,23,0,0,144,145,5,63,0,0,145,146,5,1,0,0,146, - 3,1,0,0,0,147,148,5,24,0,0,148,149,5,74,0,0,149,151,5,82,0,0,150, - 152,5,75,0,0,151,150,1,0,0,0,151,152,1,0,0,0,152,157,1,0,0,0,153, - 154,5,84,0,0,154,156,5,75,0,0,155,153,1,0,0,0,156,159,1,0,0,0,157, - 155,1,0,0,0,157,158,1,0,0,0,158,160,1,0,0,0,159,157,1,0,0,0,160, - 161,5,83,0,0,161,162,3,106,53,0,162,5,1,0,0,0,163,173,3,8,4,0,164, - 173,3,18,9,0,165,173,3,22,11,0,166,173,3,38,19,0,167,173,3,40,20, - 0,168,173,3,64,32,0,169,173,3,66,33,0,170,173,3,68,34,0,171,173, - 3,16,8,0,172,163,1,0,0,0,172,164,1,0,0,0,172,165,1,0,0,0,172,166, - 1,0,0,0,172,167,1,0,0,0,172,168,1,0,0,0,172,169,1,0,0,0,172,170, - 1,0,0,0,172,171,1,0,0,0,173,7,1,0,0,0,174,181,3,104,52,0,175,181, - 3,118,59,0,176,181,3,10,5,0,177,181,3,12,6,0,178,181,3,14,7,0,179, - 181,3,70,35,0,180,174,1,0,0,0,180,175,1,0,0,0,180,176,1,0,0,0,180, - 177,1,0,0,0,180,178,1,0,0,0,180,179,1,0,0,0,181,182,1,0,0,0,182, - 183,5,1,0,0,183,9,1,0,0,0,184,185,7,0,0,0,185,11,1,0,0,0,186,187, - 5,21,0,0,187,188,5,87,0,0,188,189,5,74,0,0,189,13,1,0,0,0,190,191, - 5,22,0,0,191,192,5,87,0,0,192,193,5,74,0,0,193,15,1,0,0,0,194,195, - 5,76,0,0,195,197,5,82,0,0,196,198,3,110,55,0,197,196,1,0,0,0,197, - 198,1,0,0,0,198,199,1,0,0,0,199,200,5,83,0,0,200,201,5,1,0,0,201, - 17,1,0,0,0,202,203,5,29,0,0,203,204,5,82,0,0,204,205,3,20,10,0,205, - 206,5,83,0,0,206,207,5,89,0,0,207,208,3,8,4,0,208,209,5,90,0,0,209, - 19,1,0,0,0,210,211,5,2,0,0,211,212,3,102,51,0,212,21,1,0,0,0,213, - 215,5,25,0,0,214,216,5,20,0,0,215,214,1,0,0,0,215,216,1,0,0,0,216, - 217,1,0,0,0,217,218,5,82,0,0,218,223,3,28,14,0,219,220,5,19,0,0, - 220,222,3,28,14,0,221,219,1,0,0,0,222,225,1,0,0,0,223,221,1,0,0, - 0,223,224,1,0,0,0,224,226,1,0,0,0,225,223,1,0,0,0,226,227,5,83,0, - 0,227,231,5,89,0,0,228,230,3,6,3,0,229,228,1,0,0,0,230,233,1,0,0, - 0,231,229,1,0,0,0,231,232,1,0,0,0,232,234,1,0,0,0,233,231,1,0,0, - 0,234,238,5,90,0,0,235,237,3,24,12,0,236,235,1,0,0,0,237,240,1,0, - 0,0,238,236,1,0,0,0,238,239,1,0,0,0,239,242,1,0,0,0,240,238,1,0, - 0,0,241,243,3,26,13,0,242,241,1,0,0,0,242,243,1,0,0,0,243,23,1,0, - 0,0,244,246,5,26,0,0,245,247,5,20,0,0,246,245,1,0,0,0,246,247,1, - 0,0,0,247,248,1,0,0,0,248,249,5,82,0,0,249,254,3,28,14,0,250,251, - 5,19,0,0,251,253,3,28,14,0,252,250,1,0,0,0,253,256,1,0,0,0,254,252, - 1,0,0,0,254,255,1,0,0,0,255,257,1,0,0,0,256,254,1,0,0,0,257,258, - 5,83,0,0,258,262,5,89,0,0,259,261,3,6,3,0,260,259,1,0,0,0,261,264, - 1,0,0,0,262,260,1,0,0,0,262,263,1,0,0,0,263,265,1,0,0,0,264,262, - 1,0,0,0,265,266,5,90,0,0,266,25,1,0,0,0,267,268,5,27,0,0,268,272, - 5,89,0,0,269,271,3,6,3,0,270,269,1,0,0,0,271,274,1,0,0,0,272,270, - 1,0,0,0,272,273,1,0,0,0,273,275,1,0,0,0,274,272,1,0,0,0,275,276, - 5,90,0,0,276,27,1,0,0,0,277,283,3,32,16,0,278,283,3,34,17,0,279, - 283,3,30,15,0,280,283,3,36,18,0,281,283,3,104,52,0,282,277,1,0,0, - 0,282,278,1,0,0,0,282,279,1,0,0,0,282,280,1,0,0,0,282,281,1,0,0, - 0,283,29,1,0,0,0,284,286,5,20,0,0,285,284,1,0,0,0,285,286,1,0,0, - 0,286,287,1,0,0,0,287,288,7,1,0,0,288,31,1,0,0,0,289,290,3,102,51, - 0,290,293,3,90,45,0,291,294,3,86,43,0,292,294,3,102,51,0,293,291, - 1,0,0,0,293,292,1,0,0,0,294,33,1,0,0,0,295,297,5,20,0,0,296,295, - 1,0,0,0,296,297,1,0,0,0,297,298,1,0,0,0,298,299,3,102,51,0,299,300, - 5,61,0,0,300,301,5,77,0,0,301,302,5,62,0,0,302,35,1,0,0,0,303,304, - 3,88,44,0,304,305,3,90,45,0,305,306,5,61,0,0,306,307,5,77,0,0,307, - 308,5,84,0,0,308,309,5,77,0,0,309,310,5,62,0,0,310,37,1,0,0,0,311, - 312,5,30,0,0,312,313,5,82,0,0,313,314,3,46,23,0,314,315,5,83,0,0, - 315,320,5,89,0,0,316,319,3,44,22,0,317,319,3,42,21,0,318,316,1,0, - 0,0,318,317,1,0,0,0,319,322,1,0,0,0,320,318,1,0,0,0,320,321,1,0, - 0,0,321,323,1,0,0,0,322,320,1,0,0,0,323,324,5,90,0,0,324,39,1,0, - 0,0,325,326,7,2,0,0,326,327,5,82,0,0,327,328,3,102,51,0,328,329, - 5,83,0,0,329,334,5,89,0,0,330,333,3,44,22,0,331,333,3,42,21,0,332, - 330,1,0,0,0,332,331,1,0,0,0,333,336,1,0,0,0,334,332,1,0,0,0,334, - 335,1,0,0,0,335,337,1,0,0,0,336,334,1,0,0,0,337,338,5,90,0,0,338, - 41,1,0,0,0,339,340,5,49,0,0,340,341,3,56,28,0,341,349,5,85,0,0,342, - 344,3,6,3,0,343,342,1,0,0,0,344,347,1,0,0,0,345,343,1,0,0,0,345, - 346,1,0,0,0,346,350,1,0,0,0,347,345,1,0,0,0,348,350,3,120,60,0,349, - 345,1,0,0,0,349,348,1,0,0,0,350,43,1,0,0,0,351,352,5,50,0,0,352, - 360,5,85,0,0,353,355,3,6,3,0,354,353,1,0,0,0,355,358,1,0,0,0,356, - 354,1,0,0,0,356,357,1,0,0,0,357,361,1,0,0,0,358,356,1,0,0,0,359, - 361,3,120,60,0,360,356,1,0,0,0,360,359,1,0,0,0,361,45,1,0,0,0,362, - 369,3,102,51,0,363,369,3,104,52,0,364,369,3,48,24,0,365,369,3,50, - 25,0,366,369,3,52,26,0,367,369,3,54,27,0,368,362,1,0,0,0,368,363, - 1,0,0,0,368,364,1,0,0,0,368,365,1,0,0,0,368,366,1,0,0,0,368,367, - 1,0,0,0,369,47,1,0,0,0,370,371,3,88,44,0,371,372,5,61,0,0,372,373, - 5,77,0,0,373,374,5,62,0,0,374,49,1,0,0,0,375,376,5,44,0,0,376,377, - 5,82,0,0,377,378,3,102,51,0,378,379,5,83,0,0,379,51,1,0,0,0,380, - 381,5,46,0,0,381,382,5,82,0,0,382,383,3,102,51,0,383,384,5,83,0, - 0,384,53,1,0,0,0,385,386,5,45,0,0,386,387,5,82,0,0,387,388,5,83, - 0,0,388,55,1,0,0,0,389,394,3,102,51,0,390,394,3,58,29,0,391,394, - 3,60,30,0,392,394,3,62,31,0,393,389,1,0,0,0,393,390,1,0,0,0,393, - 391,1,0,0,0,393,392,1,0,0,0,394,57,1,0,0,0,395,396,5,48,0,0,396, - 397,5,82,0,0,397,398,3,120,60,0,398,399,5,83,0,0,399,59,1,0,0,0, - 400,401,5,47,0,0,401,402,5,82,0,0,402,403,3,102,51,0,403,404,5,83, - 0,0,404,61,1,0,0,0,405,408,3,90,45,0,406,409,3,86,43,0,407,409,3, - 102,51,0,408,406,1,0,0,0,408,407,1,0,0,0,409,63,1,0,0,0,410,411, - 5,28,0,0,411,415,5,89,0,0,412,414,3,6,3,0,413,412,1,0,0,0,414,417, - 1,0,0,0,415,413,1,0,0,0,415,416,1,0,0,0,416,418,1,0,0,0,417,415, - 1,0,0,0,418,419,5,90,0,0,419,65,1,0,0,0,420,421,5,60,0,0,421,422, - 5,82,0,0,422,423,3,8,4,0,423,424,3,28,14,0,424,425,5,1,0,0,425,426, - 3,8,4,0,426,427,5,83,0,0,427,431,5,89,0,0,428,430,3,6,3,0,429,428, - 1,0,0,0,430,433,1,0,0,0,431,429,1,0,0,0,431,432,1,0,0,0,432,434, - 1,0,0,0,433,431,1,0,0,0,434,435,5,90,0,0,435,67,1,0,0,0,436,438, - 5,59,0,0,437,439,5,20,0,0,438,437,1,0,0,0,438,439,1,0,0,0,439,440, - 1,0,0,0,440,441,5,82,0,0,441,442,3,28,14,0,442,443,5,83,0,0,443, - 447,5,89,0,0,444,446,3,6,3,0,445,444,1,0,0,0,446,449,1,0,0,0,447, - 445,1,0,0,0,447,448,1,0,0,0,448,450,1,0,0,0,449,447,1,0,0,0,450, - 451,5,90,0,0,451,69,1,0,0,0,452,460,3,72,36,0,453,460,3,74,37,0, - 454,460,3,76,38,0,455,460,3,78,39,0,456,460,3,80,40,0,457,460,3, - 82,41,0,458,460,3,84,42,0,459,452,1,0,0,0,459,453,1,0,0,0,459,454, - 1,0,0,0,459,455,1,0,0,0,459,456,1,0,0,0,459,457,1,0,0,0,459,458, - 1,0,0,0,460,71,1,0,0,0,461,465,3,102,51,0,462,463,5,61,0,0,463,464, - 5,77,0,0,464,466,5,62,0,0,465,462,1,0,0,0,465,466,1,0,0,0,466,467, - 1,0,0,0,467,470,3,92,46,0,468,471,3,102,51,0,469,471,3,86,43,0,470, - 468,1,0,0,0,470,469,1,0,0,0,471,73,1,0,0,0,472,473,5,51,0,0,473, - 474,3,102,51,0,474,75,1,0,0,0,475,476,5,53,0,0,476,477,3,102,51, - 0,477,77,1,0,0,0,478,481,5,52,0,0,479,482,5,55,0,0,480,482,3,88, - 44,0,481,479,1,0,0,0,481,480,1,0,0,0,482,79,1,0,0,0,483,484,5,56, - 0,0,484,485,5,5,0,0,485,486,3,102,51,0,486,81,1,0,0,0,487,488,5, - 46,0,0,488,489,5,82,0,0,489,490,3,102,51,0,490,491,5,83,0,0,491, - 492,5,5,0,0,492,493,3,102,51,0,493,83,1,0,0,0,494,495,3,102,51,0, - 495,496,5,5,0,0,496,497,5,54,0,0,497,498,5,61,0,0,498,499,5,77,0, - 0,499,500,5,84,0,0,500,501,5,77,0,0,501,502,5,62,0,0,502,85,1,0, - 0,0,503,504,5,40,0,0,504,505,5,82,0,0,505,506,3,102,51,0,506,507, - 5,83,0,0,507,87,1,0,0,0,508,509,5,54,0,0,509,510,5,82,0,0,510,511, - 3,102,51,0,511,512,5,83,0,0,512,89,1,0,0,0,513,514,7,3,0,0,514,91, - 1,0,0,0,515,516,7,4,0,0,516,93,1,0,0,0,517,521,3,98,49,0,518,521, - 3,96,48,0,519,521,3,100,50,0,520,517,1,0,0,0,520,518,1,0,0,0,520, - 519,1,0,0,0,521,95,1,0,0,0,522,523,5,67,0,0,523,524,5,77,0,0,524, - 525,3,106,53,0,525,97,1,0,0,0,526,527,5,66,0,0,527,528,5,74,0,0, - 528,529,3,106,53,0,529,99,1,0,0,0,530,531,5,67,0,0,531,532,5,77, - 0,0,532,533,5,65,0,0,533,534,5,82,0,0,534,535,3,102,51,0,535,536, - 5,83,0,0,536,537,3,106,53,0,537,101,1,0,0,0,538,539,7,5,0,0,539, - 103,1,0,0,0,540,541,5,74,0,0,541,543,5,82,0,0,542,544,3,110,55,0, - 543,542,1,0,0,0,543,544,1,0,0,0,544,545,1,0,0,0,545,546,5,83,0,0, - 546,105,1,0,0,0,547,554,5,89,0,0,548,550,3,6,3,0,549,548,1,0,0,0, - 550,551,1,0,0,0,551,549,1,0,0,0,551,552,1,0,0,0,552,555,1,0,0,0, - 553,555,3,108,54,0,554,549,1,0,0,0,554,553,1,0,0,0,555,556,1,0,0, - 0,556,557,5,90,0,0,557,107,1,0,0,0,558,559,5,71,0,0,559,560,5,72, - 0,0,560,561,5,1,0,0,561,109,1,0,0,0,562,567,3,112,56,0,563,564,5, - 84,0,0,564,566,3,112,56,0,565,563,1,0,0,0,566,569,1,0,0,0,567,565, - 1,0,0,0,567,568,1,0,0,0,568,571,1,0,0,0,569,567,1,0,0,0,570,572, - 5,84,0,0,571,570,1,0,0,0,571,572,1,0,0,0,572,111,1,0,0,0,573,577, - 3,102,51,0,574,577,3,120,60,0,575,577,3,114,57,0,576,573,1,0,0,0, - 576,574,1,0,0,0,576,575,1,0,0,0,577,113,1,0,0,0,578,579,5,73,0,0, - 579,580,5,6,0,0,580,581,5,63,0,0,581,582,5,84,0,0,582,583,3,116, - 58,0,583,584,5,84,0,0,584,585,3,116,58,0,585,586,5,7,0,0,586,115, - 1,0,0,0,587,588,7,6,0,0,588,117,1,0,0,0,589,590,5,88,0,0,590,591, - 5,74,0,0,591,119,1,0,0,0,592,595,3,126,63,0,593,595,3,122,61,0,594, - 592,1,0,0,0,594,593,1,0,0,0,595,121,1,0,0,0,596,597,5,89,0,0,597, - 602,3,124,62,0,598,599,5,84,0,0,599,601,3,124,62,0,600,598,1,0,0, - 0,601,604,1,0,0,0,602,600,1,0,0,0,602,603,1,0,0,0,603,606,1,0,0, - 0,604,602,1,0,0,0,605,607,5,84,0,0,606,605,1,0,0,0,606,607,1,0,0, - 0,607,608,1,0,0,0,608,609,5,90,0,0,609,123,1,0,0,0,610,611,5,74, - 0,0,611,612,5,5,0,0,612,613,3,126,63,0,613,125,1,0,0,0,614,615,7, - 7,0,0,615,127,1,0,0,0,50,131,136,138,151,157,172,180,197,215,223, - 231,238,242,246,254,262,272,282,285,293,296,318,320,332,334,345, - 349,356,360,368,393,408,415,431,438,447,459,465,470,481,520,543, - 551,554,567,571,576,594,602,606 + 0,9,1,0,31,36,1,0,41,43,1,0,57,58,2,0,3,4,6,14,2,0,5,5,15,18,3,0, + 74,75,77,77,91,91,2,0,77,77,91,91,1,0,87,88,1,0,63,64,629,0,131, + 1,0,0,0,2,143,1,0,0,0,4,147,1,0,0,0,6,172,1,0,0,0,8,180,1,0,0,0, + 10,184,1,0,0,0,12,186,1,0,0,0,14,190,1,0,0,0,16,194,1,0,0,0,18,202, + 1,0,0,0,20,210,1,0,0,0,22,213,1,0,0,0,24,244,1,0,0,0,26,267,1,0, + 0,0,28,282,1,0,0,0,30,285,1,0,0,0,32,289,1,0,0,0,34,296,1,0,0,0, + 36,303,1,0,0,0,38,311,1,0,0,0,40,325,1,0,0,0,42,339,1,0,0,0,44,351, + 1,0,0,0,46,368,1,0,0,0,48,370,1,0,0,0,50,375,1,0,0,0,52,380,1,0, + 0,0,54,385,1,0,0,0,56,393,1,0,0,0,58,395,1,0,0,0,60,400,1,0,0,0, + 62,405,1,0,0,0,64,410,1,0,0,0,66,420,1,0,0,0,68,436,1,0,0,0,70,459, + 1,0,0,0,72,461,1,0,0,0,74,472,1,0,0,0,76,475,1,0,0,0,78,478,1,0, + 0,0,80,483,1,0,0,0,82,487,1,0,0,0,84,494,1,0,0,0,86,503,1,0,0,0, + 88,508,1,0,0,0,90,513,1,0,0,0,92,515,1,0,0,0,94,520,1,0,0,0,96,522, + 1,0,0,0,98,526,1,0,0,0,100,530,1,0,0,0,102,538,1,0,0,0,104,540,1, + 0,0,0,106,547,1,0,0,0,108,558,1,0,0,0,110,562,1,0,0,0,112,576,1, + 0,0,0,114,578,1,0,0,0,116,587,1,0,0,0,118,589,1,0,0,0,120,594,1, + 0,0,0,122,596,1,0,0,0,124,610,1,0,0,0,126,614,1,0,0,0,128,130,3, + 2,1,0,129,128,1,0,0,0,130,133,1,0,0,0,131,129,1,0,0,0,131,132,1, + 0,0,0,132,138,1,0,0,0,133,131,1,0,0,0,134,137,3,4,2,0,135,137,3, + 94,47,0,136,134,1,0,0,0,136,135,1,0,0,0,137,140,1,0,0,0,138,136, + 1,0,0,0,138,139,1,0,0,0,139,141,1,0,0,0,140,138,1,0,0,0,141,142, + 5,0,0,1,142,1,1,0,0,0,143,144,5,23,0,0,144,145,5,63,0,0,145,146, + 5,1,0,0,146,3,1,0,0,0,147,148,5,24,0,0,148,149,5,74,0,0,149,151, + 5,82,0,0,150,152,5,75,0,0,151,150,1,0,0,0,151,152,1,0,0,0,152,157, + 1,0,0,0,153,154,5,84,0,0,154,156,5,75,0,0,155,153,1,0,0,0,156,159, + 1,0,0,0,157,155,1,0,0,0,157,158,1,0,0,0,158,160,1,0,0,0,159,157, + 1,0,0,0,160,161,5,83,0,0,161,162,3,106,53,0,162,5,1,0,0,0,163,173, + 3,8,4,0,164,173,3,18,9,0,165,173,3,22,11,0,166,173,3,38,19,0,167, + 173,3,40,20,0,168,173,3,64,32,0,169,173,3,66,33,0,170,173,3,68,34, + 0,171,173,3,16,8,0,172,163,1,0,0,0,172,164,1,0,0,0,172,165,1,0,0, + 0,172,166,1,0,0,0,172,167,1,0,0,0,172,168,1,0,0,0,172,169,1,0,0, + 0,172,170,1,0,0,0,172,171,1,0,0,0,173,7,1,0,0,0,174,181,3,104,52, + 0,175,181,3,118,59,0,176,181,3,10,5,0,177,181,3,12,6,0,178,181,3, + 14,7,0,179,181,3,70,35,0,180,174,1,0,0,0,180,175,1,0,0,0,180,176, + 1,0,0,0,180,177,1,0,0,0,180,178,1,0,0,0,180,179,1,0,0,0,181,182, + 1,0,0,0,182,183,5,1,0,0,183,9,1,0,0,0,184,185,7,0,0,0,185,11,1,0, + 0,0,186,187,5,21,0,0,187,188,5,87,0,0,188,189,5,74,0,0,189,13,1, + 0,0,0,190,191,5,22,0,0,191,192,5,87,0,0,192,193,5,74,0,0,193,15, + 1,0,0,0,194,195,5,76,0,0,195,197,5,82,0,0,196,198,3,110,55,0,197, + 196,1,0,0,0,197,198,1,0,0,0,198,199,1,0,0,0,199,200,5,83,0,0,200, + 201,5,1,0,0,201,17,1,0,0,0,202,203,5,29,0,0,203,204,5,82,0,0,204, + 205,3,20,10,0,205,206,5,83,0,0,206,207,5,89,0,0,207,208,3,8,4,0, + 208,209,5,90,0,0,209,19,1,0,0,0,210,211,5,2,0,0,211,212,3,102,51, + 0,212,21,1,0,0,0,213,215,5,25,0,0,214,216,5,20,0,0,215,214,1,0,0, + 0,215,216,1,0,0,0,216,217,1,0,0,0,217,218,5,82,0,0,218,223,3,28, + 14,0,219,220,5,19,0,0,220,222,3,28,14,0,221,219,1,0,0,0,222,225, + 1,0,0,0,223,221,1,0,0,0,223,224,1,0,0,0,224,226,1,0,0,0,225,223, + 1,0,0,0,226,227,5,83,0,0,227,231,5,89,0,0,228,230,3,6,3,0,229,228, + 1,0,0,0,230,233,1,0,0,0,231,229,1,0,0,0,231,232,1,0,0,0,232,234, + 1,0,0,0,233,231,1,0,0,0,234,238,5,90,0,0,235,237,3,24,12,0,236,235, + 1,0,0,0,237,240,1,0,0,0,238,236,1,0,0,0,238,239,1,0,0,0,239,242, + 1,0,0,0,240,238,1,0,0,0,241,243,3,26,13,0,242,241,1,0,0,0,242,243, + 1,0,0,0,243,23,1,0,0,0,244,246,5,26,0,0,245,247,5,20,0,0,246,245, + 1,0,0,0,246,247,1,0,0,0,247,248,1,0,0,0,248,249,5,82,0,0,249,254, + 3,28,14,0,250,251,5,19,0,0,251,253,3,28,14,0,252,250,1,0,0,0,253, + 256,1,0,0,0,254,252,1,0,0,0,254,255,1,0,0,0,255,257,1,0,0,0,256, + 254,1,0,0,0,257,258,5,83,0,0,258,262,5,89,0,0,259,261,3,6,3,0,260, + 259,1,0,0,0,261,264,1,0,0,0,262,260,1,0,0,0,262,263,1,0,0,0,263, + 265,1,0,0,0,264,262,1,0,0,0,265,266,5,90,0,0,266,25,1,0,0,0,267, + 268,5,27,0,0,268,272,5,89,0,0,269,271,3,6,3,0,270,269,1,0,0,0,271, + 274,1,0,0,0,272,270,1,0,0,0,272,273,1,0,0,0,273,275,1,0,0,0,274, + 272,1,0,0,0,275,276,5,90,0,0,276,27,1,0,0,0,277,283,3,32,16,0,278, + 283,3,34,17,0,279,283,3,30,15,0,280,283,3,36,18,0,281,283,3,104, + 52,0,282,277,1,0,0,0,282,278,1,0,0,0,282,279,1,0,0,0,282,280,1,0, + 0,0,282,281,1,0,0,0,283,29,1,0,0,0,284,286,5,20,0,0,285,284,1,0, + 0,0,285,286,1,0,0,0,286,287,1,0,0,0,287,288,7,1,0,0,288,31,1,0,0, + 0,289,290,3,102,51,0,290,293,3,90,45,0,291,294,3,86,43,0,292,294, + 3,102,51,0,293,291,1,0,0,0,293,292,1,0,0,0,294,33,1,0,0,0,295,297, + 5,20,0,0,296,295,1,0,0,0,296,297,1,0,0,0,297,298,1,0,0,0,298,299, + 3,102,51,0,299,300,5,61,0,0,300,301,5,77,0,0,301,302,5,62,0,0,302, + 35,1,0,0,0,303,304,3,88,44,0,304,305,3,90,45,0,305,306,5,61,0,0, + 306,307,5,77,0,0,307,308,5,84,0,0,308,309,5,77,0,0,309,310,5,62, + 0,0,310,37,1,0,0,0,311,312,5,30,0,0,312,313,5,82,0,0,313,314,3,46, + 23,0,314,315,5,83,0,0,315,320,5,89,0,0,316,319,3,44,22,0,317,319, + 3,42,21,0,318,316,1,0,0,0,318,317,1,0,0,0,319,322,1,0,0,0,320,318, + 1,0,0,0,320,321,1,0,0,0,321,323,1,0,0,0,322,320,1,0,0,0,323,324, + 5,90,0,0,324,39,1,0,0,0,325,326,7,2,0,0,326,327,5,82,0,0,327,328, + 3,102,51,0,328,329,5,83,0,0,329,334,5,89,0,0,330,333,3,44,22,0,331, + 333,3,42,21,0,332,330,1,0,0,0,332,331,1,0,0,0,333,336,1,0,0,0,334, + 332,1,0,0,0,334,335,1,0,0,0,335,337,1,0,0,0,336,334,1,0,0,0,337, + 338,5,90,0,0,338,41,1,0,0,0,339,340,5,49,0,0,340,341,3,56,28,0,341, + 349,5,85,0,0,342,344,3,6,3,0,343,342,1,0,0,0,344,347,1,0,0,0,345, + 343,1,0,0,0,345,346,1,0,0,0,346,350,1,0,0,0,347,345,1,0,0,0,348, + 350,3,120,60,0,349,345,1,0,0,0,349,348,1,0,0,0,350,43,1,0,0,0,351, + 352,5,50,0,0,352,360,5,85,0,0,353,355,3,6,3,0,354,353,1,0,0,0,355, + 358,1,0,0,0,356,354,1,0,0,0,356,357,1,0,0,0,357,361,1,0,0,0,358, + 356,1,0,0,0,359,361,3,120,60,0,360,356,1,0,0,0,360,359,1,0,0,0,361, + 45,1,0,0,0,362,369,3,102,51,0,363,369,3,104,52,0,364,369,3,48,24, + 0,365,369,3,50,25,0,366,369,3,52,26,0,367,369,3,54,27,0,368,362, + 1,0,0,0,368,363,1,0,0,0,368,364,1,0,0,0,368,365,1,0,0,0,368,366, + 1,0,0,0,368,367,1,0,0,0,369,47,1,0,0,0,370,371,3,88,44,0,371,372, + 5,61,0,0,372,373,5,77,0,0,373,374,5,62,0,0,374,49,1,0,0,0,375,376, + 5,44,0,0,376,377,5,82,0,0,377,378,3,102,51,0,378,379,5,83,0,0,379, + 51,1,0,0,0,380,381,5,46,0,0,381,382,5,82,0,0,382,383,3,102,51,0, + 383,384,5,83,0,0,384,53,1,0,0,0,385,386,5,45,0,0,386,387,5,82,0, + 0,387,388,5,83,0,0,388,55,1,0,0,0,389,394,3,102,51,0,390,394,3,58, + 29,0,391,394,3,60,30,0,392,394,3,62,31,0,393,389,1,0,0,0,393,390, + 1,0,0,0,393,391,1,0,0,0,393,392,1,0,0,0,394,57,1,0,0,0,395,396,5, + 48,0,0,396,397,5,82,0,0,397,398,3,120,60,0,398,399,5,83,0,0,399, + 59,1,0,0,0,400,401,5,47,0,0,401,402,5,82,0,0,402,403,3,102,51,0, + 403,404,5,83,0,0,404,61,1,0,0,0,405,408,3,90,45,0,406,409,3,86,43, + 0,407,409,3,102,51,0,408,406,1,0,0,0,408,407,1,0,0,0,409,63,1,0, + 0,0,410,411,5,28,0,0,411,415,5,89,0,0,412,414,3,6,3,0,413,412,1, + 0,0,0,414,417,1,0,0,0,415,413,1,0,0,0,415,416,1,0,0,0,416,418,1, + 0,0,0,417,415,1,0,0,0,418,419,5,90,0,0,419,65,1,0,0,0,420,421,5, + 60,0,0,421,422,5,82,0,0,422,423,3,8,4,0,423,424,3,28,14,0,424,425, + 5,1,0,0,425,426,3,8,4,0,426,427,5,83,0,0,427,431,5,89,0,0,428,430, + 3,6,3,0,429,428,1,0,0,0,430,433,1,0,0,0,431,429,1,0,0,0,431,432, + 1,0,0,0,432,434,1,0,0,0,433,431,1,0,0,0,434,435,5,90,0,0,435,67, + 1,0,0,0,436,438,5,59,0,0,437,439,5,20,0,0,438,437,1,0,0,0,438,439, + 1,0,0,0,439,440,1,0,0,0,440,441,5,82,0,0,441,442,3,28,14,0,442,443, + 5,83,0,0,443,447,5,89,0,0,444,446,3,6,3,0,445,444,1,0,0,0,446,449, + 1,0,0,0,447,445,1,0,0,0,447,448,1,0,0,0,448,450,1,0,0,0,449,447, + 1,0,0,0,450,451,5,90,0,0,451,69,1,0,0,0,452,460,3,72,36,0,453,460, + 3,74,37,0,454,460,3,76,38,0,455,460,3,78,39,0,456,460,3,80,40,0, + 457,460,3,82,41,0,458,460,3,84,42,0,459,452,1,0,0,0,459,453,1,0, + 0,0,459,454,1,0,0,0,459,455,1,0,0,0,459,456,1,0,0,0,459,457,1,0, + 0,0,459,458,1,0,0,0,460,71,1,0,0,0,461,465,3,102,51,0,462,463,5, + 61,0,0,463,464,5,77,0,0,464,466,5,62,0,0,465,462,1,0,0,0,465,466, + 1,0,0,0,466,467,1,0,0,0,467,470,3,92,46,0,468,471,3,102,51,0,469, + 471,3,86,43,0,470,468,1,0,0,0,470,469,1,0,0,0,471,73,1,0,0,0,472, + 473,5,51,0,0,473,474,3,102,51,0,474,75,1,0,0,0,475,476,5,53,0,0, + 476,477,3,102,51,0,477,77,1,0,0,0,478,481,5,52,0,0,479,482,5,55, + 0,0,480,482,3,88,44,0,481,479,1,0,0,0,481,480,1,0,0,0,482,79,1,0, + 0,0,483,484,5,56,0,0,484,485,5,5,0,0,485,486,3,102,51,0,486,81,1, + 0,0,0,487,488,5,46,0,0,488,489,5,82,0,0,489,490,3,102,51,0,490,491, + 5,83,0,0,491,492,5,5,0,0,492,493,3,102,51,0,493,83,1,0,0,0,494,495, + 3,102,51,0,495,496,5,5,0,0,496,497,5,54,0,0,497,498,5,61,0,0,498, + 499,5,77,0,0,499,500,5,84,0,0,500,501,5,77,0,0,501,502,5,62,0,0, + 502,85,1,0,0,0,503,504,5,40,0,0,504,505,5,82,0,0,505,506,3,102,51, + 0,506,507,5,83,0,0,507,87,1,0,0,0,508,509,5,54,0,0,509,510,5,82, + 0,0,510,511,3,102,51,0,511,512,5,83,0,0,512,89,1,0,0,0,513,514,7, + 3,0,0,514,91,1,0,0,0,515,516,7,4,0,0,516,93,1,0,0,0,517,521,3,98, + 49,0,518,521,3,96,48,0,519,521,3,100,50,0,520,517,1,0,0,0,520,518, + 1,0,0,0,520,519,1,0,0,0,521,95,1,0,0,0,522,523,5,67,0,0,523,524, + 5,77,0,0,524,525,3,106,53,0,525,97,1,0,0,0,526,527,5,66,0,0,527, + 528,5,74,0,0,528,529,3,106,53,0,529,99,1,0,0,0,530,531,5,67,0,0, + 531,532,5,77,0,0,532,533,5,65,0,0,533,534,5,82,0,0,534,535,3,102, + 51,0,535,536,5,83,0,0,536,537,3,106,53,0,537,101,1,0,0,0,538,539, + 7,5,0,0,539,103,1,0,0,0,540,541,5,74,0,0,541,543,5,82,0,0,542,544, + 3,110,55,0,543,542,1,0,0,0,543,544,1,0,0,0,544,545,1,0,0,0,545,546, + 5,83,0,0,546,105,1,0,0,0,547,554,5,89,0,0,548,550,3,6,3,0,549,548, + 1,0,0,0,550,551,1,0,0,0,551,549,1,0,0,0,551,552,1,0,0,0,552,555, + 1,0,0,0,553,555,3,108,54,0,554,549,1,0,0,0,554,553,1,0,0,0,555,556, + 1,0,0,0,556,557,5,90,0,0,557,107,1,0,0,0,558,559,5,71,0,0,559,560, + 5,72,0,0,560,561,5,1,0,0,561,109,1,0,0,0,562,567,3,112,56,0,563, + 564,5,84,0,0,564,566,3,112,56,0,565,563,1,0,0,0,566,569,1,0,0,0, + 567,565,1,0,0,0,567,568,1,0,0,0,568,571,1,0,0,0,569,567,1,0,0,0, + 570,572,5,84,0,0,571,570,1,0,0,0,571,572,1,0,0,0,572,111,1,0,0,0, + 573,577,3,102,51,0,574,577,3,120,60,0,575,577,3,114,57,0,576,573, + 1,0,0,0,576,574,1,0,0,0,576,575,1,0,0,0,577,113,1,0,0,0,578,579, + 5,73,0,0,579,580,5,6,0,0,580,581,5,63,0,0,581,582,5,84,0,0,582,583, + 3,116,58,0,583,584,5,84,0,0,584,585,3,116,58,0,585,586,5,7,0,0,586, + 115,1,0,0,0,587,588,7,6,0,0,588,117,1,0,0,0,589,590,7,7,0,0,590, + 591,5,74,0,0,591,119,1,0,0,0,592,595,3,126,63,0,593,595,3,122,61, + 0,594,592,1,0,0,0,594,593,1,0,0,0,595,121,1,0,0,0,596,597,5,89,0, + 0,597,602,3,124,62,0,598,599,5,84,0,0,599,601,3,124,62,0,600,598, + 1,0,0,0,601,604,1,0,0,0,602,600,1,0,0,0,602,603,1,0,0,0,603,606, + 1,0,0,0,604,602,1,0,0,0,605,607,5,84,0,0,606,605,1,0,0,0,606,607, + 1,0,0,0,607,608,1,0,0,0,608,609,5,90,0,0,609,123,1,0,0,0,610,611, + 5,74,0,0,611,612,5,5,0,0,612,613,3,126,63,0,613,125,1,0,0,0,614, + 615,7,8,0,0,615,127,1,0,0,0,50,131,136,138,151,157,172,180,197,215, + 223,231,238,242,246,254,262,272,282,285,293,296,318,320,332,334, + 345,349,356,360,368,393,408,415,431,438,447,459,465,470,481,520, + 543,551,554,567,571,576,594,602,606 ] class ExplorerScriptParser ( Parser ): @@ -796,7 +796,7 @@ def stmt(self): self.state = 172 self._errHandler.sync(self) token = self._input.LA(1) - if token in [21, 22, 31, 32, 33, 34, 35, 36, 46, 51, 52, 53, 56, 74, 75, 77, 88, 91]: + if token in [21, 22, 31, 32, 33, 34, 35, 36, 46, 51, 52, 53, 56, 74, 75, 77, 87, 88, 91]: self.state = 163 self.simple_stmt() pass @@ -1448,7 +1448,7 @@ def if_block(self): self.state = 231 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 147471) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 155663) != 0): self.state = 228 self.stmt() self.state = 233 @@ -1589,7 +1589,7 @@ def elseif_block(self): self.state = 262 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 147471) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 155663) != 0): self.state = 259 self.stmt() self.state = 264 @@ -1664,7 +1664,7 @@ def else_block(self): self.state = 272 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 147471) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 155663) != 0): self.state = 269 self.stmt() self.state = 274 @@ -2364,11 +2364,11 @@ def single_case_block(self): self.state = 349 self._errHandler.sync(self) token = self._input.LA(1) - if token in [21, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 46, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 74, 75, 76, 77, 88, 90, 91]: + if token in [21, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 46, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 74, 75, 76, 77, 87, 88, 90, 91]: self.state = 345 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 147471) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 155663) != 0): self.state = 342 self.stmt() self.state = 347 @@ -2450,11 +2450,11 @@ def default(self): self.state = 360 self._errHandler.sync(self) token = self._input.LA(1) - if token in [21, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 46, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 74, 75, 76, 77, 88, 90, 91]: + if token in [21, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 46, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 74, 75, 76, 77, 87, 88, 90, 91]: self.state = 356 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 147471) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 155663) != 0): self.state = 353 self.stmt() self.state = 358 @@ -3165,7 +3165,7 @@ def forever_block(self): self.state = 415 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 147471) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 155663) != 0): self.state = 412 self.stmt() self.state = 417 @@ -3269,7 +3269,7 @@ def for_block(self): self.state = 431 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 147471) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 155663) != 0): self.state = 428 self.stmt() self.state = 433 @@ -3371,7 +3371,7 @@ def while_block(self): self.state = 447 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 147471) != 0): + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 155663) != 0): self.state = 444 self.stmt() self.state = 449 @@ -4721,7 +4721,7 @@ def func_suite(self): self.state = 554 self._errHandler.sync(self) token = self._input.LA(1) - if token in [21, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 46, 51, 52, 53, 56, 57, 58, 59, 60, 74, 75, 76, 77, 88, 91]: + if token in [21, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 46, 51, 52, 53, 56, 57, 58, 59, 60, 74, 75, 76, 77, 87, 88, 91]: self.state = 549 self._errHandler.sync(self) _la = self._input.LA(1) @@ -4731,7 +4731,7 @@ def func_suite(self): self.state = 551 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 147471) != 0)): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 2249618519826104320) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 155663) != 0)): break pass @@ -5106,11 +5106,14 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def IDENTIFIER(self): + return self.getToken(ExplorerScriptParser.IDENTIFIER, 0) + def PARAGRAPH(self): return self.getToken(ExplorerScriptParser.PARAGRAPH, 0) - def IDENTIFIER(self): - return self.getToken(ExplorerScriptParser.IDENTIFIER, 0) + def AT(self): + return self.getToken(ExplorerScriptParser.AT, 0) def getRuleIndex(self): return ExplorerScriptParser.RULE_label @@ -5136,10 +5139,16 @@ def label(self): localctx = ExplorerScriptParser.LabelContext(self, self._ctx, self.state) self.enterRule(localctx, 118, self.RULE_label) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 589 - self.match(ExplorerScriptParser.PARAGRAPH) + _la = self._input.LA(1) + if not(_la==87 or _la==88): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() self.state = 590 self.match(ExplorerScriptParser.IDENTIFIER) except RecognitionException as re: diff --git a/explorerscript/antlr/SsbCommon.g4 b/explorerscript/antlr/SsbCommon.g4 index 6b0092e..d0398d7 100644 --- a/explorerscript/antlr/SsbCommon.g4 +++ b/explorerscript/antlr/SsbCommon.g4 @@ -56,7 +56,7 @@ pos_argument: integer_like | string | position_marker; position_marker: POSITION OPEN_SHARP STRING_LITERAL ',' position_marker_arg ',' position_marker_arg CLOSE_SHARP; position_marker_arg: INTEGER | DECIMAL; -label: PARAGRAPH IDENTIFIER; +label: (PARAGRAPH | AT) IDENTIFIER; string: string_value | lang_string; lang_string: OPEN_BRACE lang_string_argument (',' lang_string_argument)* (',')? CLOSE_BRACE; diff --git a/explorerscript/antlr/SsbScript.interp b/explorerscript/antlr/SsbScript.interp index 24ca458..bcf4f44 100644 --- a/explorerscript/antlr/SsbScript.interp +++ b/explorerscript/antlr/SsbScript.interp @@ -98,4 +98,4 @@ string_value atn: -[4, 1, 35, 158, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 45, 8, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 61, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 3, 8, 83, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 90, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 4, 10, 96, 8, 10, 11, 10, 12, 10, 97, 1, 10, 3, 10, 101, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 112, 8, 12, 10, 12, 12, 12, 115, 9, 12, 1, 12, 3, 12, 118, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 136, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 142, 8, 17, 10, 17, 12, 17, 145, 9, 17, 1, 17, 3, 17, 148, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 0, 0, 20, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 0, 3, 3, 0, 13, 14, 16, 16, 33, 33, 2, 0, 16, 16, 33, 33, 1, 0, 2, 3, 152, 0, 44, 1, 0, 0, 0, 2, 46, 1, 0, 0, 0, 4, 52, 1, 0, 0, 0, 6, 60, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 66, 1, 0, 0, 0, 12, 70, 1, 0, 0, 0, 14, 78, 1, 0, 0, 0, 16, 82, 1, 0, 0, 0, 18, 86, 1, 0, 0, 0, 20, 93, 1, 0, 0, 0, 22, 104, 1, 0, 0, 0, 24, 108, 1, 0, 0, 0, 26, 119, 1, 0, 0, 0, 28, 128, 1, 0, 0, 0, 30, 130, 1, 0, 0, 0, 32, 135, 1, 0, 0, 0, 34, 137, 1, 0, 0, 0, 36, 151, 1, 0, 0, 0, 38, 155, 1, 0, 0, 0, 40, 45, 3, 14, 7, 0, 41, 45, 3, 32, 16, 0, 42, 45, 3, 26, 13, 0, 43, 45, 3, 2, 1, 0, 44, 40, 1, 0, 0, 0, 44, 41, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 43, 1, 0, 0, 0, 45, 1, 1, 0, 0, 0, 46, 47, 5, 27, 0, 0, 47, 48, 5, 13, 0, 0, 48, 3, 1, 0, 0, 0, 49, 51, 3, 6, 3, 0, 50, 49, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 55, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 56, 5, 0, 0, 1, 56, 5, 1, 0, 0, 0, 57, 61, 3, 10, 5, 0, 58, 61, 3, 8, 4, 0, 59, 61, 3, 12, 6, 0, 60, 57, 1, 0, 0, 0, 60, 58, 1, 0, 0, 0, 60, 59, 1, 0, 0, 0, 61, 7, 1, 0, 0, 0, 62, 63, 5, 6, 0, 0, 63, 64, 5, 16, 0, 0, 64, 65, 3, 20, 10, 0, 65, 9, 1, 0, 0, 0, 66, 67, 5, 5, 0, 0, 67, 68, 5, 13, 0, 0, 68, 69, 3, 20, 10, 0, 69, 11, 1, 0, 0, 0, 70, 71, 5, 6, 0, 0, 71, 72, 5, 16, 0, 0, 72, 73, 5, 4, 0, 0, 73, 74, 5, 21, 0, 0, 74, 75, 3, 14, 7, 0, 75, 76, 5, 22, 0, 0, 76, 77, 3, 20, 10, 0, 77, 13, 1, 0, 0, 0, 78, 79, 7, 0, 0, 0, 79, 15, 1, 0, 0, 0, 80, 83, 3, 18, 9, 0, 81, 83, 3, 30, 15, 0, 82, 80, 1, 0, 0, 0, 82, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 85, 5, 1, 0, 0, 85, 17, 1, 0, 0, 0, 86, 87, 5, 13, 0, 0, 87, 89, 5, 21, 0, 0, 88, 90, 3, 24, 12, 0, 89, 88, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 91, 1, 0, 0, 0, 91, 92, 5, 22, 0, 0, 92, 19, 1, 0, 0, 0, 93, 100, 5, 29, 0, 0, 94, 96, 3, 16, 8, 0, 95, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 101, 1, 0, 0, 0, 99, 101, 3, 22, 11, 0, 100, 95, 1, 0, 0, 0, 100, 99, 1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 103, 5, 30, 0, 0, 103, 21, 1, 0, 0, 0, 104, 105, 5, 10, 0, 0, 105, 106, 5, 11, 0, 0, 106, 107, 5, 1, 0, 0, 107, 23, 1, 0, 0, 0, 108, 113, 3, 0, 0, 0, 109, 110, 5, 23, 0, 0, 110, 112, 3, 0, 0, 0, 111, 109, 1, 0, 0, 0, 112, 115, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 117, 1, 0, 0, 0, 115, 113, 1, 0, 0, 0, 116, 118, 5, 23, 0, 0, 117, 116, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 25, 1, 0, 0, 0, 119, 120, 5, 12, 0, 0, 120, 121, 5, 31, 0, 0, 121, 122, 5, 2, 0, 0, 122, 123, 5, 23, 0, 0, 123, 124, 3, 28, 14, 0, 124, 125, 5, 23, 0, 0, 125, 126, 3, 28, 14, 0, 126, 127, 5, 32, 0, 0, 127, 27, 1, 0, 0, 0, 128, 129, 7, 1, 0, 0, 129, 29, 1, 0, 0, 0, 130, 131, 5, 28, 0, 0, 131, 132, 5, 13, 0, 0, 132, 31, 1, 0, 0, 0, 133, 136, 3, 38, 19, 0, 134, 136, 3, 34, 17, 0, 135, 133, 1, 0, 0, 0, 135, 134, 1, 0, 0, 0, 136, 33, 1, 0, 0, 0, 137, 138, 5, 29, 0, 0, 138, 143, 3, 36, 18, 0, 139, 140, 5, 23, 0, 0, 140, 142, 3, 36, 18, 0, 141, 139, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 147, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 148, 5, 23, 0, 0, 147, 146, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 150, 5, 30, 0, 0, 150, 35, 1, 0, 0, 0, 151, 152, 5, 13, 0, 0, 152, 153, 5, 25, 0, 0, 153, 154, 3, 38, 19, 0, 154, 37, 1, 0, 0, 0, 155, 156, 7, 2, 0, 0, 156, 39, 1, 0, 0, 0, 12, 44, 52, 60, 82, 89, 97, 100, 113, 117, 135, 143, 147] \ No newline at end of file +[4, 1, 35, 158, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 45, 8, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 61, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 3, 8, 83, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 90, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 4, 10, 96, 8, 10, 11, 10, 12, 10, 97, 1, 10, 3, 10, 101, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 112, 8, 12, 10, 12, 12, 12, 115, 9, 12, 1, 12, 3, 12, 118, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 136, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 142, 8, 17, 10, 17, 12, 17, 145, 9, 17, 1, 17, 3, 17, 148, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 0, 0, 20, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 0, 4, 3, 0, 13, 14, 16, 16, 33, 33, 2, 0, 16, 16, 33, 33, 1, 0, 27, 28, 1, 0, 2, 3, 152, 0, 44, 1, 0, 0, 0, 2, 46, 1, 0, 0, 0, 4, 52, 1, 0, 0, 0, 6, 60, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 66, 1, 0, 0, 0, 12, 70, 1, 0, 0, 0, 14, 78, 1, 0, 0, 0, 16, 82, 1, 0, 0, 0, 18, 86, 1, 0, 0, 0, 20, 93, 1, 0, 0, 0, 22, 104, 1, 0, 0, 0, 24, 108, 1, 0, 0, 0, 26, 119, 1, 0, 0, 0, 28, 128, 1, 0, 0, 0, 30, 130, 1, 0, 0, 0, 32, 135, 1, 0, 0, 0, 34, 137, 1, 0, 0, 0, 36, 151, 1, 0, 0, 0, 38, 155, 1, 0, 0, 0, 40, 45, 3, 14, 7, 0, 41, 45, 3, 32, 16, 0, 42, 45, 3, 26, 13, 0, 43, 45, 3, 2, 1, 0, 44, 40, 1, 0, 0, 0, 44, 41, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 43, 1, 0, 0, 0, 45, 1, 1, 0, 0, 0, 46, 47, 5, 27, 0, 0, 47, 48, 5, 13, 0, 0, 48, 3, 1, 0, 0, 0, 49, 51, 3, 6, 3, 0, 50, 49, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 55, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 56, 5, 0, 0, 1, 56, 5, 1, 0, 0, 0, 57, 61, 3, 10, 5, 0, 58, 61, 3, 8, 4, 0, 59, 61, 3, 12, 6, 0, 60, 57, 1, 0, 0, 0, 60, 58, 1, 0, 0, 0, 60, 59, 1, 0, 0, 0, 61, 7, 1, 0, 0, 0, 62, 63, 5, 6, 0, 0, 63, 64, 5, 16, 0, 0, 64, 65, 3, 20, 10, 0, 65, 9, 1, 0, 0, 0, 66, 67, 5, 5, 0, 0, 67, 68, 5, 13, 0, 0, 68, 69, 3, 20, 10, 0, 69, 11, 1, 0, 0, 0, 70, 71, 5, 6, 0, 0, 71, 72, 5, 16, 0, 0, 72, 73, 5, 4, 0, 0, 73, 74, 5, 21, 0, 0, 74, 75, 3, 14, 7, 0, 75, 76, 5, 22, 0, 0, 76, 77, 3, 20, 10, 0, 77, 13, 1, 0, 0, 0, 78, 79, 7, 0, 0, 0, 79, 15, 1, 0, 0, 0, 80, 83, 3, 18, 9, 0, 81, 83, 3, 30, 15, 0, 82, 80, 1, 0, 0, 0, 82, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 85, 5, 1, 0, 0, 85, 17, 1, 0, 0, 0, 86, 87, 5, 13, 0, 0, 87, 89, 5, 21, 0, 0, 88, 90, 3, 24, 12, 0, 89, 88, 1, 0, 0, 0, 89, 90, 1, 0, 0, 0, 90, 91, 1, 0, 0, 0, 91, 92, 5, 22, 0, 0, 92, 19, 1, 0, 0, 0, 93, 100, 5, 29, 0, 0, 94, 96, 3, 16, 8, 0, 95, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 101, 1, 0, 0, 0, 99, 101, 3, 22, 11, 0, 100, 95, 1, 0, 0, 0, 100, 99, 1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 103, 5, 30, 0, 0, 103, 21, 1, 0, 0, 0, 104, 105, 5, 10, 0, 0, 105, 106, 5, 11, 0, 0, 106, 107, 5, 1, 0, 0, 107, 23, 1, 0, 0, 0, 108, 113, 3, 0, 0, 0, 109, 110, 5, 23, 0, 0, 110, 112, 3, 0, 0, 0, 111, 109, 1, 0, 0, 0, 112, 115, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 117, 1, 0, 0, 0, 115, 113, 1, 0, 0, 0, 116, 118, 5, 23, 0, 0, 117, 116, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 25, 1, 0, 0, 0, 119, 120, 5, 12, 0, 0, 120, 121, 5, 31, 0, 0, 121, 122, 5, 2, 0, 0, 122, 123, 5, 23, 0, 0, 123, 124, 3, 28, 14, 0, 124, 125, 5, 23, 0, 0, 125, 126, 3, 28, 14, 0, 126, 127, 5, 32, 0, 0, 127, 27, 1, 0, 0, 0, 128, 129, 7, 1, 0, 0, 129, 29, 1, 0, 0, 0, 130, 131, 7, 2, 0, 0, 131, 132, 5, 13, 0, 0, 132, 31, 1, 0, 0, 0, 133, 136, 3, 38, 19, 0, 134, 136, 3, 34, 17, 0, 135, 133, 1, 0, 0, 0, 135, 134, 1, 0, 0, 0, 136, 33, 1, 0, 0, 0, 137, 138, 5, 29, 0, 0, 138, 143, 3, 36, 18, 0, 139, 140, 5, 23, 0, 0, 140, 142, 3, 36, 18, 0, 141, 139, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 147, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 148, 5, 23, 0, 0, 147, 146, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 150, 5, 30, 0, 0, 150, 35, 1, 0, 0, 0, 151, 152, 5, 13, 0, 0, 152, 153, 5, 25, 0, 0, 153, 154, 3, 38, 19, 0, 154, 37, 1, 0, 0, 0, 155, 156, 7, 3, 0, 0, 156, 39, 1, 0, 0, 0, 12, 44, 52, 60, 82, 89, 97, 100, 113, 117, 135, 143, 147] \ No newline at end of file diff --git a/explorerscript/antlr/SsbScriptParser.py b/explorerscript/antlr/SsbScriptParser.py index 177a688..0957a74 100644 --- a/explorerscript/antlr/SsbScriptParser.py +++ b/explorerscript/antlr/SsbScriptParser.py @@ -23,44 +23,44 @@ def serializedATN(): 1,16,1,16,3,16,136,8,16,1,17,1,17,1,17,1,17,5,17,142,8,17,10,17, 12,17,145,9,17,1,17,3,17,148,8,17,1,17,1,17,1,18,1,18,1,18,1,18, 1,19,1,19,1,19,0,0,20,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30, - 32,34,36,38,0,3,3,0,13,14,16,16,33,33,2,0,16,16,33,33,1,0,2,3,152, - 0,44,1,0,0,0,2,46,1,0,0,0,4,52,1,0,0,0,6,60,1,0,0,0,8,62,1,0,0,0, - 10,66,1,0,0,0,12,70,1,0,0,0,14,78,1,0,0,0,16,82,1,0,0,0,18,86,1, - 0,0,0,20,93,1,0,0,0,22,104,1,0,0,0,24,108,1,0,0,0,26,119,1,0,0,0, - 28,128,1,0,0,0,30,130,1,0,0,0,32,135,1,0,0,0,34,137,1,0,0,0,36,151, - 1,0,0,0,38,155,1,0,0,0,40,45,3,14,7,0,41,45,3,32,16,0,42,45,3,26, - 13,0,43,45,3,2,1,0,44,40,1,0,0,0,44,41,1,0,0,0,44,42,1,0,0,0,44, - 43,1,0,0,0,45,1,1,0,0,0,46,47,5,27,0,0,47,48,5,13,0,0,48,3,1,0,0, - 0,49,51,3,6,3,0,50,49,1,0,0,0,51,54,1,0,0,0,52,50,1,0,0,0,52,53, - 1,0,0,0,53,55,1,0,0,0,54,52,1,0,0,0,55,56,5,0,0,1,56,5,1,0,0,0,57, - 61,3,10,5,0,58,61,3,8,4,0,59,61,3,12,6,0,60,57,1,0,0,0,60,58,1,0, - 0,0,60,59,1,0,0,0,61,7,1,0,0,0,62,63,5,6,0,0,63,64,5,16,0,0,64,65, - 3,20,10,0,65,9,1,0,0,0,66,67,5,5,0,0,67,68,5,13,0,0,68,69,3,20,10, - 0,69,11,1,0,0,0,70,71,5,6,0,0,71,72,5,16,0,0,72,73,5,4,0,0,73,74, - 5,21,0,0,74,75,3,14,7,0,75,76,5,22,0,0,76,77,3,20,10,0,77,13,1,0, - 0,0,78,79,7,0,0,0,79,15,1,0,0,0,80,83,3,18,9,0,81,83,3,30,15,0,82, - 80,1,0,0,0,82,81,1,0,0,0,83,84,1,0,0,0,84,85,5,1,0,0,85,17,1,0,0, - 0,86,87,5,13,0,0,87,89,5,21,0,0,88,90,3,24,12,0,89,88,1,0,0,0,89, - 90,1,0,0,0,90,91,1,0,0,0,91,92,5,22,0,0,92,19,1,0,0,0,93,100,5,29, - 0,0,94,96,3,16,8,0,95,94,1,0,0,0,96,97,1,0,0,0,97,95,1,0,0,0,97, - 98,1,0,0,0,98,101,1,0,0,0,99,101,3,22,11,0,100,95,1,0,0,0,100,99, - 1,0,0,0,101,102,1,0,0,0,102,103,5,30,0,0,103,21,1,0,0,0,104,105, - 5,10,0,0,105,106,5,11,0,0,106,107,5,1,0,0,107,23,1,0,0,0,108,113, - 3,0,0,0,109,110,5,23,0,0,110,112,3,0,0,0,111,109,1,0,0,0,112,115, - 1,0,0,0,113,111,1,0,0,0,113,114,1,0,0,0,114,117,1,0,0,0,115,113, - 1,0,0,0,116,118,5,23,0,0,117,116,1,0,0,0,117,118,1,0,0,0,118,25, - 1,0,0,0,119,120,5,12,0,0,120,121,5,31,0,0,121,122,5,2,0,0,122,123, - 5,23,0,0,123,124,3,28,14,0,124,125,5,23,0,0,125,126,3,28,14,0,126, - 127,5,32,0,0,127,27,1,0,0,0,128,129,7,1,0,0,129,29,1,0,0,0,130,131, - 5,28,0,0,131,132,5,13,0,0,132,31,1,0,0,0,133,136,3,38,19,0,134,136, - 3,34,17,0,135,133,1,0,0,0,135,134,1,0,0,0,136,33,1,0,0,0,137,138, - 5,29,0,0,138,143,3,36,18,0,139,140,5,23,0,0,140,142,3,36,18,0,141, - 139,1,0,0,0,142,145,1,0,0,0,143,141,1,0,0,0,143,144,1,0,0,0,144, - 147,1,0,0,0,145,143,1,0,0,0,146,148,5,23,0,0,147,146,1,0,0,0,147, - 148,1,0,0,0,148,149,1,0,0,0,149,150,5,30,0,0,150,35,1,0,0,0,151, - 152,5,13,0,0,152,153,5,25,0,0,153,154,3,38,19,0,154,37,1,0,0,0,155, - 156,7,2,0,0,156,39,1,0,0,0,12,44,52,60,82,89,97,100,113,117,135, - 143,147 + 32,34,36,38,0,4,3,0,13,14,16,16,33,33,2,0,16,16,33,33,1,0,27,28, + 1,0,2,3,152,0,44,1,0,0,0,2,46,1,0,0,0,4,52,1,0,0,0,6,60,1,0,0,0, + 8,62,1,0,0,0,10,66,1,0,0,0,12,70,1,0,0,0,14,78,1,0,0,0,16,82,1,0, + 0,0,18,86,1,0,0,0,20,93,1,0,0,0,22,104,1,0,0,0,24,108,1,0,0,0,26, + 119,1,0,0,0,28,128,1,0,0,0,30,130,1,0,0,0,32,135,1,0,0,0,34,137, + 1,0,0,0,36,151,1,0,0,0,38,155,1,0,0,0,40,45,3,14,7,0,41,45,3,32, + 16,0,42,45,3,26,13,0,43,45,3,2,1,0,44,40,1,0,0,0,44,41,1,0,0,0,44, + 42,1,0,0,0,44,43,1,0,0,0,45,1,1,0,0,0,46,47,5,27,0,0,47,48,5,13, + 0,0,48,3,1,0,0,0,49,51,3,6,3,0,50,49,1,0,0,0,51,54,1,0,0,0,52,50, + 1,0,0,0,52,53,1,0,0,0,53,55,1,0,0,0,54,52,1,0,0,0,55,56,5,0,0,1, + 56,5,1,0,0,0,57,61,3,10,5,0,58,61,3,8,4,0,59,61,3,12,6,0,60,57,1, + 0,0,0,60,58,1,0,0,0,60,59,1,0,0,0,61,7,1,0,0,0,62,63,5,6,0,0,63, + 64,5,16,0,0,64,65,3,20,10,0,65,9,1,0,0,0,66,67,5,5,0,0,67,68,5,13, + 0,0,68,69,3,20,10,0,69,11,1,0,0,0,70,71,5,6,0,0,71,72,5,16,0,0,72, + 73,5,4,0,0,73,74,5,21,0,0,74,75,3,14,7,0,75,76,5,22,0,0,76,77,3, + 20,10,0,77,13,1,0,0,0,78,79,7,0,0,0,79,15,1,0,0,0,80,83,3,18,9,0, + 81,83,3,30,15,0,82,80,1,0,0,0,82,81,1,0,0,0,83,84,1,0,0,0,84,85, + 5,1,0,0,85,17,1,0,0,0,86,87,5,13,0,0,87,89,5,21,0,0,88,90,3,24,12, + 0,89,88,1,0,0,0,89,90,1,0,0,0,90,91,1,0,0,0,91,92,5,22,0,0,92,19, + 1,0,0,0,93,100,5,29,0,0,94,96,3,16,8,0,95,94,1,0,0,0,96,97,1,0,0, + 0,97,95,1,0,0,0,97,98,1,0,0,0,98,101,1,0,0,0,99,101,3,22,11,0,100, + 95,1,0,0,0,100,99,1,0,0,0,101,102,1,0,0,0,102,103,5,30,0,0,103,21, + 1,0,0,0,104,105,5,10,0,0,105,106,5,11,0,0,106,107,5,1,0,0,107,23, + 1,0,0,0,108,113,3,0,0,0,109,110,5,23,0,0,110,112,3,0,0,0,111,109, + 1,0,0,0,112,115,1,0,0,0,113,111,1,0,0,0,113,114,1,0,0,0,114,117, + 1,0,0,0,115,113,1,0,0,0,116,118,5,23,0,0,117,116,1,0,0,0,117,118, + 1,0,0,0,118,25,1,0,0,0,119,120,5,12,0,0,120,121,5,31,0,0,121,122, + 5,2,0,0,122,123,5,23,0,0,123,124,3,28,14,0,124,125,5,23,0,0,125, + 126,3,28,14,0,126,127,5,32,0,0,127,27,1,0,0,0,128,129,7,1,0,0,129, + 29,1,0,0,0,130,131,7,2,0,0,131,132,5,13,0,0,132,31,1,0,0,0,133,136, + 3,38,19,0,134,136,3,34,17,0,135,133,1,0,0,0,135,134,1,0,0,0,136, + 33,1,0,0,0,137,138,5,29,0,0,138,143,3,36,18,0,139,140,5,23,0,0,140, + 142,3,36,18,0,141,139,1,0,0,0,142,145,1,0,0,0,143,141,1,0,0,0,143, + 144,1,0,0,0,144,147,1,0,0,0,145,143,1,0,0,0,146,148,5,23,0,0,147, + 146,1,0,0,0,147,148,1,0,0,0,148,149,1,0,0,0,149,150,5,30,0,0,150, + 35,1,0,0,0,151,152,5,13,0,0,152,153,5,25,0,0,153,154,3,38,19,0,154, + 37,1,0,0,0,155,156,7,3,0,0,156,39,1,0,0,0,12,44,52,60,82,89,97,100, + 113,117,135,143,147 ] class SsbScriptParser ( Parser ): @@ -689,7 +689,7 @@ def stmt(self): self.state = 80 self.operation() pass - elif token in [28]: + elif token in [27, 28]: self.state = 81 self.label() pass @@ -821,7 +821,7 @@ def func_suite(self): self.state = 100 self._errHandler.sync(self) token = self._input.LA(1) - if token in [13, 28]: + if token in [13, 27, 28]: self.state = 95 self._errHandler.sync(self) _la = self._input.LA(1) @@ -831,7 +831,7 @@ def func_suite(self): self.state = 97 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la==13 or _la==28): + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 402661376) != 0)): break pass @@ -1108,11 +1108,14 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def IDENTIFIER(self): + return self.getToken(SsbScriptParser.IDENTIFIER, 0) + def PARAGRAPH(self): return self.getToken(SsbScriptParser.PARAGRAPH, 0) - def IDENTIFIER(self): - return self.getToken(SsbScriptParser.IDENTIFIER, 0) + def AT(self): + return self.getToken(SsbScriptParser.AT, 0) def getRuleIndex(self): return SsbScriptParser.RULE_label @@ -1132,10 +1135,16 @@ def label(self): localctx = SsbScriptParser.LabelContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_label) + self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 130 - self.match(SsbScriptParser.PARAGRAPH) + _la = self._input.LA(1) + if not(_la==27 or _la==28): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() self.state = 131 self.match(SsbScriptParser.IDENTIFIER) except RecognitionException as re: diff --git a/explorerscript/pygments/expslexer.py b/explorerscript/pygments/expslexer.py index 7526b5e..1cc4061 100644 --- a/explorerscript/pygments/expslexer.py +++ b/explorerscript/pygments/expslexer.py @@ -100,7 +100,7 @@ class ExplorerScriptLexer(RegexLexer): include("comments"), (r"\$[a-zA-Z_][0-9a-zA-Z_]*", Name.Variable), (r"§[a-zA-Z_][0-9a-zA-Z_]*", Name.Label), - (r"@[a-zA-Z_][0-9a-zA-Z_]*", Name.Decorator), + (r"@[a-zA-Z_][0-9a-zA-Z_]*", Name.Label), (r"[a-zA-Z_][0-9a-zA-Z_]*", Name), include("numbers"), ('"""', String, "mdq_string"), diff --git a/explorerscript/ssb_converting/decompiler/write_handlers/label.py b/explorerscript/ssb_converting/decompiler/write_handlers/label.py index 7002bb6..e5f6802 100644 --- a/explorerscript/ssb_converting/decompiler/write_handlers/label.py +++ b/explorerscript/ssb_converting/decompiler/write_handlers/label.py @@ -140,5 +140,5 @@ def write_content(self) -> Vertex | None: raise ValueError("After a label there must be exactly 1 opcode.") def _write_label(self, label: SsbLabel) -> None: - self.decompiler.write_stmnt(f"§label_{label.id};") + self.decompiler.write_stmnt(f"@label_{label.id};") self.decompiler.labels_already_printed.append(label.id) diff --git a/explorerscript/ssb_converting/decompiler/write_handlers/label_jumps/switch_start.py b/explorerscript/ssb_converting/decompiler/write_handlers/label_jumps/switch_start.py index 49d40f4..6f8b5e0 100644 --- a/explorerscript/ssb_converting/decompiler/write_handlers/label_jumps/switch_start.py +++ b/explorerscript/ssb_converting/decompiler/write_handlers/label_jumps/switch_start.py @@ -99,7 +99,7 @@ def write_content(self) -> Vertex | None: logger.debug("... NOW block for cases.") # If this will be visited multiple times, we need a label if e in edges_that_will_be_visited_multiple_times and e not in already_printed_edges: - self.decompiler.write_stmnt(f"§switch{m.switch_id}_{e.index};") + self.decompiler.write_stmnt(f"@switch{m.switch_id}_{e.index};") if e in already_printed_edges: # Write the label jump instead self.decompiler.write_stmnt(f"jump @switch{m.switch_id}_{e.index};") diff --git a/explorerscript/ssb_script/ssb_converting/ssb_decompiler.py b/explorerscript/ssb_script/ssb_converting/ssb_decompiler.py index cc5604c..38344d7 100644 --- a/explorerscript/ssb_script/ssb_converting/ssb_decompiler.py +++ b/explorerscript/ssb_script/ssb_converting/ssb_decompiler.py @@ -96,7 +96,7 @@ def convert(self, *, prefix: str = "") -> tuple[str, SourceMap]: self.write_stmnt("alias previous;") for op in r_ops: if isinstance(op, SsbLabel): - self.write_stmnt(f"§label_{op.id};") + self.write_stmnt(f"@label_{op.id};") else: self._read_op(op) self._write_line()