diff --git a/localstack-core/localstack/services/stepfunctions/asl/antlr/ASLParser.g4 b/localstack-core/localstack/services/stepfunctions/asl/antlr/ASLParser.g4 index ae6367f0a18f3..30fa7f062ae71 100644 --- a/localstack-core/localstack/services/stepfunctions/asl/antlr/ASLParser.g4 +++ b/localstack-core/localstack/services/stepfunctions/asl/antlr/ASLParser.g4 @@ -12,7 +12,14 @@ state_machine: program_decl EOF; program_decl: LBRACE top_layer_stmt (COMMA top_layer_stmt)* RBRACE; -top_layer_stmt: comment_decl | version_decl | startat_decl | states_decl | timeout_seconds_decl; +top_layer_stmt: + comment_decl + | version_decl + | startat_decl + | states_decl + | timeout_seconds_decl + | unknown_binding_decl +; startat_decl: STARTAT COLON keyword_or_string; @@ -60,13 +67,13 @@ state_stmt: | tolerated_failure_count_path_decl | tolerated_failure_percentage_decl | tolerated_failure_percentage_path_decl + | unknown_binding_decl ; states_decl: STATES COLON LBRACE state_decl (COMMA state_decl)* RBRACE; state_name: keyword_or_string; -// TODO: avoid redefinitions? -> check listener ok? state_decl: state_name COLON state_decl_body; state_decl_body: LBRACE state_stmt (COMMA state_stmt)* RBRACE; @@ -481,4 +488,7 @@ keyword_or_string: | ERRORNAMEStatesItemReaderFailed | ERRORNAMEStatesResultWriterFailed | ERRORNAMEStatesRuntime -; \ No newline at end of file +; + +// Consume any unknown binding and it's object. +unknown_binding_decl: STRING COLON json_value_decl; \ No newline at end of file diff --git a/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParser.py b/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParser.py index 5e7cfd0793268..01633a726c3c8 100644 --- a/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParser.py +++ b/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParser.py @@ -10,7 +10,7 @@ def serializedATN(): return [ - 4,1,145,873,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, + 4,1,145,881,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, @@ -24,303 +24,306 @@ def serializedATN(): 72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7, 78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2, 85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7, - 91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,1,0,1,0,1,0, - 1,1,1,1,1,1,1,1,5,1,202,8,1,10,1,12,1,205,9,1,1,1,1,1,1,2,1,2,1, - 2,1,2,1,2,3,2,214,8,2,1,3,1,3,1,3,1,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,6,1,6,1,6,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,267,8,6,1,7,1,7,1,7,1,7,1, - 7,1,7,5,7,275,8,7,10,7,12,7,278,9,7,1,7,1,7,1,8,1,8,1,9,1,9,1,9, - 1,9,1,10,1,10,1,10,1,10,5,10,292,8,10,10,10,12,10,295,9,10,1,10, - 1,10,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13, - 1,14,1,14,1,14,1,14,3,14,315,8,14,1,15,1,15,1,15,1,15,1,16,1,16, - 1,16,1,16,3,16,325,8,16,1,17,1,17,1,17,1,17,3,17,331,8,17,1,18,1, - 18,1,18,1,18,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,21,1,21,1, - 21,1,21,1,21,1,21,3,21,351,8,21,1,22,1,22,1,22,1,22,1,23,1,23,1, - 23,1,23,1,23,1,23,3,23,363,8,23,1,24,1,24,1,24,1,24,1,25,1,25,1, - 25,1,25,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1, - 28,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1, - 32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,35,1, - 35,1,35,1,35,1,36,1,36,1,36,1,36,5,36,417,8,36,10,36,12,36,420,9, - 36,1,36,1,36,1,36,1,36,3,36,426,8,36,1,37,1,37,1,37,1,37,1,37,1, - 37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,441,8,37,1,38,1,38,1, - 39,1,39,1,39,1,39,5,39,449,8,39,10,39,12,39,452,9,39,1,39,1,39,1, - 39,1,39,3,39,458,8,39,1,40,1,40,1,40,1,40,3,40,464,8,40,1,41,1,41, - 1,41,1,41,1,41,3,41,471,8,41,1,42,1,42,1,42,1,42,1,43,1,43,1,44, - 1,44,1,44,1,44,1,44,1,44,5,44,485,8,44,10,44,12,44,488,9,44,1,44, - 1,44,1,45,1,45,1,45,1,45,4,45,496,8,45,11,45,12,45,497,1,45,1,45, - 1,45,1,45,1,45,1,45,5,45,506,8,45,10,45,12,45,509,9,45,1,45,1,45, - 3,45,513,8,45,1,46,1,46,1,46,1,46,3,46,519,8,46,1,47,1,47,3,47,523, - 8,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,5,48,532,8,48,10,48,12,48, - 535,9,48,1,48,1,48,3,48,539,8,48,1,49,1,49,1,49,1,49,1,50,1,50,1, - 50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,5,51,555,8,51,10,51,12,51, - 558,9,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,5,52,568,8,52,10, - 52,12,52,571,9,52,1,52,1,52,1,53,1,53,1,53,1,53,3,53,579,8,53,1, - 54,1,54,1,54,1,54,1,54,1,54,5,54,587,8,54,10,54,12,54,590,9,54,1, - 54,1,54,1,55,1,55,3,55,596,8,55,1,56,1,56,1,56,1,56,1,57,1,57,1, - 58,1,58,1,58,1,58,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,5,60,616, - 8,60,10,60,12,60,619,9,60,1,60,1,60,1,61,1,61,1,61,1,61,3,61,627, - 8,61,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,5,63,639, - 8,63,10,63,12,63,642,9,63,1,63,1,63,1,64,1,64,1,64,3,64,649,8,64, - 1,65,1,65,1,65,1,65,1,65,1,65,5,65,657,8,65,10,65,12,65,660,9,65, - 1,65,1,65,1,66,1,66,1,66,1,66,1,66,3,66,669,8,66,1,67,1,67,1,67, - 1,67,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,5,69,685, - 8,69,10,69,12,69,688,9,69,1,69,1,69,1,70,1,70,1,70,1,70,1,71,1,71, - 1,71,1,71,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,74,1,74,1,74, - 1,74,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,5,76,722, - 8,76,10,76,12,76,725,9,76,3,76,727,8,76,1,76,1,76,1,77,1,77,1,77, - 1,77,5,77,735,8,77,10,77,12,77,738,9,77,1,77,1,77,1,78,1,78,1,78, - 1,78,1,78,1,78,1,78,3,78,749,8,78,1,79,1,79,1,79,1,79,1,79,1,79, - 5,79,757,8,79,10,79,12,79,760,9,79,1,79,1,79,1,80,1,80,1,80,1,80, - 1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,84, - 1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,5,85,790,8,85,10,85, - 12,85,793,9,85,3,85,795,8,85,1,85,1,85,1,86,1,86,1,86,1,86,5,86, - 803,8,86,10,86,12,86,806,9,86,1,86,1,86,1,87,1,87,1,87,1,87,3,87, - 814,8,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91,1,91,3,91,824,8,91,1, - 92,1,92,1,92,1,92,5,92,830,8,92,10,92,12,92,833,9,92,1,92,1,92,1, - 92,1,92,3,92,839,8,92,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,5, - 94,849,8,94,10,94,12,94,852,9,94,1,94,1,94,1,94,1,94,3,94,858,8, - 94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,3,95,869,8,95,1, - 96,1,96,1,96,0,0,97,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,128,130,132,134,136,138,140,142,144,146, - 148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178, - 180,182,184,186,188,190,192,0,9,1,0,7,8,1,0,16,23,1,0,80,81,1,0, - 143,144,1,0,121,122,3,0,29,36,38,47,49,69,3,0,28,28,37,37,48,48, - 1,0,124,138,5,0,10,13,15,110,112,112,114,124,126,142,898,0,194,1, - 0,0,0,2,197,1,0,0,0,4,213,1,0,0,0,6,215,1,0,0,0,8,219,1,0,0,0,10, - 223,1,0,0,0,12,266,1,0,0,0,14,268,1,0,0,0,16,281,1,0,0,0,18,283, - 1,0,0,0,20,287,1,0,0,0,22,298,1,0,0,0,24,302,1,0,0,0,26,306,1,0, - 0,0,28,310,1,0,0,0,30,316,1,0,0,0,32,320,1,0,0,0,34,326,1,0,0,0, - 36,332,1,0,0,0,38,336,1,0,0,0,40,340,1,0,0,0,42,350,1,0,0,0,44,352, - 1,0,0,0,46,362,1,0,0,0,48,364,1,0,0,0,50,368,1,0,0,0,52,372,1,0, - 0,0,54,376,1,0,0,0,56,380,1,0,0,0,58,384,1,0,0,0,60,388,1,0,0,0, - 62,392,1,0,0,0,64,396,1,0,0,0,66,400,1,0,0,0,68,404,1,0,0,0,70,408, - 1,0,0,0,72,425,1,0,0,0,74,440,1,0,0,0,76,442,1,0,0,0,78,457,1,0, - 0,0,80,463,1,0,0,0,82,470,1,0,0,0,84,472,1,0,0,0,86,476,1,0,0,0, - 88,478,1,0,0,0,90,512,1,0,0,0,92,518,1,0,0,0,94,522,1,0,0,0,96,524, - 1,0,0,0,98,540,1,0,0,0,100,544,1,0,0,0,102,548,1,0,0,0,104,561,1, - 0,0,0,106,578,1,0,0,0,108,580,1,0,0,0,110,595,1,0,0,0,112,597,1, - 0,0,0,114,601,1,0,0,0,116,603,1,0,0,0,118,607,1,0,0,0,120,609,1, - 0,0,0,122,626,1,0,0,0,124,628,1,0,0,0,126,632,1,0,0,0,128,648,1, - 0,0,0,130,650,1,0,0,0,132,668,1,0,0,0,134,670,1,0,0,0,136,674,1, - 0,0,0,138,678,1,0,0,0,140,691,1,0,0,0,142,695,1,0,0,0,144,699,1, - 0,0,0,146,703,1,0,0,0,148,707,1,0,0,0,150,711,1,0,0,0,152,715,1, - 0,0,0,154,730,1,0,0,0,156,748,1,0,0,0,158,750,1,0,0,0,160,763,1, - 0,0,0,162,767,1,0,0,0,164,771,1,0,0,0,166,775,1,0,0,0,168,779,1, - 0,0,0,170,783,1,0,0,0,172,798,1,0,0,0,174,813,1,0,0,0,176,815,1, - 0,0,0,178,817,1,0,0,0,180,819,1,0,0,0,182,823,1,0,0,0,184,838,1, - 0,0,0,186,840,1,0,0,0,188,857,1,0,0,0,190,868,1,0,0,0,192,870,1, - 0,0,0,194,195,3,2,1,0,195,196,5,0,0,1,196,1,1,0,0,0,197,198,5,5, - 0,0,198,203,3,4,2,0,199,200,5,1,0,0,200,202,3,4,2,0,201,199,1,0, - 0,0,202,205,1,0,0,0,203,201,1,0,0,0,203,204,1,0,0,0,204,206,1,0, - 0,0,205,203,1,0,0,0,206,207,5,6,0,0,207,3,1,0,0,0,208,214,3,8,4, - 0,209,214,3,10,5,0,210,214,3,6,3,0,211,214,3,14,7,0,212,214,3,64, - 32,0,213,208,1,0,0,0,213,209,1,0,0,0,213,210,1,0,0,0,213,211,1,0, - 0,0,213,212,1,0,0,0,214,5,1,0,0,0,215,216,5,12,0,0,216,217,5,2,0, - 0,217,218,3,192,96,0,218,7,1,0,0,0,219,220,5,10,0,0,220,221,5,2, - 0,0,221,222,3,192,96,0,222,9,1,0,0,0,223,224,5,14,0,0,224,225,5, - 2,0,0,225,226,3,192,96,0,226,11,1,0,0,0,227,267,3,8,4,0,228,267, - 3,22,11,0,229,267,3,28,14,0,230,267,3,26,13,0,231,267,3,24,12,0, - 232,267,3,30,15,0,233,267,3,32,16,0,234,267,3,34,17,0,235,267,3, - 36,18,0,236,267,3,38,19,0,237,267,3,88,44,0,238,267,3,40,20,0,239, - 267,3,42,21,0,240,267,3,44,22,0,241,267,3,46,23,0,242,267,3,48,24, - 0,243,267,3,50,25,0,244,267,3,52,26,0,245,267,3,54,27,0,246,267, - 3,56,28,0,247,267,3,104,52,0,248,267,3,120,60,0,249,267,3,124,62, - 0,250,267,3,126,63,0,251,267,3,58,29,0,252,267,3,60,30,0,253,267, - 3,64,32,0,254,267,3,66,33,0,255,267,3,68,34,0,256,267,3,70,35,0, - 257,267,3,102,51,0,258,267,3,62,31,0,259,267,3,152,76,0,260,267, - 3,170,85,0,261,267,3,84,42,0,262,267,3,144,72,0,263,267,3,146,73, - 0,264,267,3,148,74,0,265,267,3,150,75,0,266,227,1,0,0,0,266,228, - 1,0,0,0,266,229,1,0,0,0,266,230,1,0,0,0,266,231,1,0,0,0,266,232, - 1,0,0,0,266,233,1,0,0,0,266,234,1,0,0,0,266,235,1,0,0,0,266,236, - 1,0,0,0,266,237,1,0,0,0,266,238,1,0,0,0,266,239,1,0,0,0,266,240, - 1,0,0,0,266,241,1,0,0,0,266,242,1,0,0,0,266,243,1,0,0,0,266,244, - 1,0,0,0,266,245,1,0,0,0,266,246,1,0,0,0,266,247,1,0,0,0,266,248, - 1,0,0,0,266,249,1,0,0,0,266,250,1,0,0,0,266,251,1,0,0,0,266,252, - 1,0,0,0,266,253,1,0,0,0,266,254,1,0,0,0,266,255,1,0,0,0,266,256, - 1,0,0,0,266,257,1,0,0,0,266,258,1,0,0,0,266,259,1,0,0,0,266,260, - 1,0,0,0,266,261,1,0,0,0,266,262,1,0,0,0,266,263,1,0,0,0,266,264, - 1,0,0,0,266,265,1,0,0,0,267,13,1,0,0,0,268,269,5,11,0,0,269,270, - 5,2,0,0,270,271,5,5,0,0,271,276,3,18,9,0,272,273,5,1,0,0,273,275, - 3,18,9,0,274,272,1,0,0,0,275,278,1,0,0,0,276,274,1,0,0,0,276,277, - 1,0,0,0,277,279,1,0,0,0,278,276,1,0,0,0,279,280,5,6,0,0,280,15,1, - 0,0,0,281,282,3,192,96,0,282,17,1,0,0,0,283,284,3,16,8,0,284,285, - 5,2,0,0,285,286,3,20,10,0,286,19,1,0,0,0,287,288,5,5,0,0,288,293, - 3,12,6,0,289,290,5,1,0,0,290,292,3,12,6,0,291,289,1,0,0,0,292,295, - 1,0,0,0,293,291,1,0,0,0,293,294,1,0,0,0,294,296,1,0,0,0,295,293, - 1,0,0,0,296,297,5,6,0,0,297,21,1,0,0,0,298,299,5,15,0,0,299,300, - 5,2,0,0,300,301,3,86,43,0,301,23,1,0,0,0,302,303,5,108,0,0,303,304, - 5,2,0,0,304,305,3,192,96,0,305,25,1,0,0,0,306,307,5,89,0,0,307,308, - 5,2,0,0,308,309,3,192,96,0,309,27,1,0,0,0,310,311,5,90,0,0,311,314, - 5,2,0,0,312,315,5,9,0,0,313,315,3,192,96,0,314,312,1,0,0,0,314,313, - 1,0,0,0,315,29,1,0,0,0,316,317,5,94,0,0,317,318,5,2,0,0,318,319, - 3,190,95,0,319,31,1,0,0,0,320,321,5,93,0,0,321,324,5,2,0,0,322,325, - 5,9,0,0,323,325,3,192,96,0,324,322,1,0,0,0,324,323,1,0,0,0,325,33, - 1,0,0,0,326,327,5,91,0,0,327,330,5,2,0,0,328,331,5,9,0,0,329,331, - 3,192,96,0,330,328,1,0,0,0,330,329,1,0,0,0,331,35,1,0,0,0,332,333, - 5,109,0,0,333,334,5,2,0,0,334,335,7,0,0,0,335,37,1,0,0,0,336,337, - 5,26,0,0,337,338,5,2,0,0,338,339,3,192,96,0,339,39,1,0,0,0,340,341, - 5,112,0,0,341,342,5,2,0,0,342,343,3,192,96,0,343,41,1,0,0,0,344, - 345,5,113,0,0,345,346,5,2,0,0,346,351,5,141,0,0,347,348,5,113,0, - 0,348,349,5,2,0,0,349,351,3,76,38,0,350,344,1,0,0,0,350,347,1,0, - 0,0,351,43,1,0,0,0,352,353,5,110,0,0,353,354,5,2,0,0,354,355,3,192, - 96,0,355,45,1,0,0,0,356,357,5,111,0,0,357,358,5,2,0,0,358,363,5, - 141,0,0,359,360,5,111,0,0,360,361,5,2,0,0,361,363,3,76,38,0,362, - 356,1,0,0,0,362,359,1,0,0,0,363,47,1,0,0,0,364,365,5,71,0,0,365, - 366,5,2,0,0,366,367,5,143,0,0,367,49,1,0,0,0,368,369,5,70,0,0,369, - 370,5,2,0,0,370,371,3,192,96,0,371,51,1,0,0,0,372,373,5,73,0,0,373, - 374,5,2,0,0,374,375,3,192,96,0,375,53,1,0,0,0,376,377,5,72,0,0,377, - 378,5,2,0,0,378,379,3,192,96,0,379,55,1,0,0,0,380,381,5,92,0,0,381, - 382,5,2,0,0,382,383,3,192,96,0,383,57,1,0,0,0,384,385,5,88,0,0,385, - 386,5,2,0,0,386,387,5,143,0,0,387,59,1,0,0,0,388,389,5,87,0,0,389, - 390,5,2,0,0,390,391,5,141,0,0,391,61,1,0,0,0,392,393,5,95,0,0,393, - 394,5,2,0,0,394,395,3,72,36,0,395,63,1,0,0,0,396,397,5,74,0,0,397, - 398,5,2,0,0,398,399,5,143,0,0,399,65,1,0,0,0,400,401,5,75,0,0,401, - 402,5,2,0,0,402,403,5,141,0,0,403,67,1,0,0,0,404,405,5,76,0,0,405, - 406,5,2,0,0,406,407,5,143,0,0,407,69,1,0,0,0,408,409,5,77,0,0,409, - 410,5,2,0,0,410,411,5,141,0,0,411,71,1,0,0,0,412,413,5,5,0,0,413, - 418,3,74,37,0,414,415,5,1,0,0,415,417,3,74,37,0,416,414,1,0,0,0, - 417,420,1,0,0,0,418,416,1,0,0,0,418,419,1,0,0,0,419,421,1,0,0,0, - 420,418,1,0,0,0,421,422,5,6,0,0,422,426,1,0,0,0,423,424,5,5,0,0, - 424,426,5,6,0,0,425,412,1,0,0,0,425,423,1,0,0,0,426,73,1,0,0,0,427, - 428,5,139,0,0,428,429,5,2,0,0,429,441,5,141,0,0,430,431,5,139,0, - 0,431,432,5,2,0,0,432,441,5,140,0,0,433,434,5,139,0,0,434,435,5, - 2,0,0,435,441,3,76,38,0,436,437,3,192,96,0,437,438,5,2,0,0,438,439, - 3,80,40,0,439,441,1,0,0,0,440,427,1,0,0,0,440,430,1,0,0,0,440,433, - 1,0,0,0,440,436,1,0,0,0,441,75,1,0,0,0,442,443,5,142,0,0,443,77, - 1,0,0,0,444,445,5,3,0,0,445,450,3,80,40,0,446,447,5,1,0,0,447,449, - 3,80,40,0,448,446,1,0,0,0,449,452,1,0,0,0,450,448,1,0,0,0,450,451, - 1,0,0,0,451,453,1,0,0,0,452,450,1,0,0,0,453,454,5,4,0,0,454,458, - 1,0,0,0,455,456,5,3,0,0,456,458,5,4,0,0,457,444,1,0,0,0,457,455, - 1,0,0,0,458,79,1,0,0,0,459,464,3,74,37,0,460,464,3,78,39,0,461,464, - 3,72,36,0,462,464,3,82,41,0,463,459,1,0,0,0,463,460,1,0,0,0,463, - 461,1,0,0,0,463,462,1,0,0,0,464,81,1,0,0,0,465,471,5,144,0,0,466, - 471,5,143,0,0,467,471,7,0,0,0,468,471,5,9,0,0,469,471,3,192,96,0, - 470,465,1,0,0,0,470,466,1,0,0,0,470,467,1,0,0,0,470,468,1,0,0,0, - 470,469,1,0,0,0,471,83,1,0,0,0,472,473,5,96,0,0,473,474,5,2,0,0, - 474,475,3,72,36,0,475,85,1,0,0,0,476,477,7,1,0,0,477,87,1,0,0,0, - 478,479,5,24,0,0,479,480,5,2,0,0,480,481,5,3,0,0,481,486,3,90,45, - 0,482,483,5,1,0,0,483,485,3,90,45,0,484,482,1,0,0,0,485,488,1,0, - 0,0,486,484,1,0,0,0,486,487,1,0,0,0,487,489,1,0,0,0,488,486,1,0, - 0,0,489,490,5,4,0,0,490,89,1,0,0,0,491,492,5,5,0,0,492,495,3,92, - 46,0,493,494,5,1,0,0,494,496,3,92,46,0,495,493,1,0,0,0,496,497,1, - 0,0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,499,1,0,0,0,499,500,5, - 6,0,0,500,513,1,0,0,0,501,502,5,5,0,0,502,507,3,94,47,0,503,504, - 5,1,0,0,504,506,3,94,47,0,505,503,1,0,0,0,506,509,1,0,0,0,507,505, - 1,0,0,0,507,508,1,0,0,0,508,510,1,0,0,0,509,507,1,0,0,0,510,511, - 5,6,0,0,511,513,1,0,0,0,512,491,1,0,0,0,512,501,1,0,0,0,513,91,1, - 0,0,0,514,519,3,98,49,0,515,519,3,100,50,0,516,519,3,24,12,0,517, - 519,3,8,4,0,518,514,1,0,0,0,518,515,1,0,0,0,518,516,1,0,0,0,518, - 517,1,0,0,0,519,93,1,0,0,0,520,523,3,96,48,0,521,523,3,24,12,0,522, - 520,1,0,0,0,522,521,1,0,0,0,523,95,1,0,0,0,524,525,3,178,89,0,525, - 538,5,2,0,0,526,539,3,90,45,0,527,528,5,3,0,0,528,533,3,90,45,0, - 529,530,5,1,0,0,530,532,3,90,45,0,531,529,1,0,0,0,532,535,1,0,0, - 0,533,531,1,0,0,0,533,534,1,0,0,0,534,536,1,0,0,0,535,533,1,0,0, - 0,536,537,5,4,0,0,537,539,1,0,0,0,538,526,1,0,0,0,538,527,1,0,0, - 0,539,97,1,0,0,0,540,541,5,25,0,0,541,542,5,2,0,0,542,543,3,192, - 96,0,543,99,1,0,0,0,544,545,3,176,88,0,545,546,5,2,0,0,546,547,3, - 190,95,0,547,101,1,0,0,0,548,549,5,27,0,0,549,550,5,2,0,0,550,551, - 5,3,0,0,551,556,3,2,1,0,552,553,5,1,0,0,553,555,3,2,1,0,554,552, - 1,0,0,0,555,558,1,0,0,0,556,554,1,0,0,0,556,557,1,0,0,0,557,559, - 1,0,0,0,558,556,1,0,0,0,559,560,5,4,0,0,560,103,1,0,0,0,561,562, - 5,84,0,0,562,563,5,2,0,0,563,564,5,5,0,0,564,569,3,106,53,0,565, - 566,5,1,0,0,566,568,3,106,53,0,567,565,1,0,0,0,568,571,1,0,0,0,569, - 567,1,0,0,0,569,570,1,0,0,0,570,572,1,0,0,0,571,569,1,0,0,0,572, - 573,5,6,0,0,573,105,1,0,0,0,574,579,3,108,54,0,575,579,3,6,3,0,576, - 579,3,14,7,0,577,579,3,8,4,0,578,574,1,0,0,0,578,575,1,0,0,0,578, - 576,1,0,0,0,578,577,1,0,0,0,579,107,1,0,0,0,580,581,5,78,0,0,581, - 582,5,2,0,0,582,583,5,5,0,0,583,588,3,110,55,0,584,585,5,1,0,0,585, - 587,3,110,55,0,586,584,1,0,0,0,587,590,1,0,0,0,588,586,1,0,0,0,588, - 589,1,0,0,0,589,591,1,0,0,0,590,588,1,0,0,0,591,592,5,6,0,0,592, - 109,1,0,0,0,593,596,3,112,56,0,594,596,3,116,58,0,595,593,1,0,0, - 0,595,594,1,0,0,0,596,111,1,0,0,0,597,598,5,79,0,0,598,599,5,2,0, - 0,599,600,3,114,57,0,600,113,1,0,0,0,601,602,7,2,0,0,602,115,1,0, - 0,0,603,604,5,82,0,0,604,605,5,2,0,0,605,606,3,118,59,0,606,117, - 1,0,0,0,607,608,5,83,0,0,608,119,1,0,0,0,609,610,5,85,0,0,610,611, - 5,2,0,0,611,612,5,5,0,0,612,617,3,122,61,0,613,614,5,1,0,0,614,616, - 3,122,61,0,615,613,1,0,0,0,616,619,1,0,0,0,617,615,1,0,0,0,617,618, - 1,0,0,0,618,620,1,0,0,0,619,617,1,0,0,0,620,621,5,6,0,0,621,121, - 1,0,0,0,622,627,3,6,3,0,623,627,3,14,7,0,624,627,3,8,4,0,625,627, - 3,108,54,0,626,622,1,0,0,0,626,623,1,0,0,0,626,624,1,0,0,0,626,625, - 1,0,0,0,627,123,1,0,0,0,628,629,5,86,0,0,629,630,5,2,0,0,630,631, - 3,72,36,0,631,125,1,0,0,0,632,633,5,97,0,0,633,634,5,2,0,0,634,635, - 5,5,0,0,635,640,3,128,64,0,636,637,5,1,0,0,637,639,3,128,64,0,638, - 636,1,0,0,0,639,642,1,0,0,0,640,638,1,0,0,0,640,641,1,0,0,0,641, - 643,1,0,0,0,642,640,1,0,0,0,643,644,5,6,0,0,644,127,1,0,0,0,645, - 649,3,26,13,0,646,649,3,62,31,0,647,649,3,130,65,0,648,645,1,0,0, - 0,648,646,1,0,0,0,648,647,1,0,0,0,649,129,1,0,0,0,650,651,5,98,0, - 0,651,652,5,2,0,0,652,653,5,5,0,0,653,658,3,132,66,0,654,655,5,1, - 0,0,655,657,3,132,66,0,656,654,1,0,0,0,657,660,1,0,0,0,658,656,1, - 0,0,0,658,659,1,0,0,0,659,661,1,0,0,0,660,658,1,0,0,0,661,662,5, - 6,0,0,662,131,1,0,0,0,663,669,3,134,67,0,664,669,3,136,68,0,665, - 669,3,138,69,0,666,669,3,140,70,0,667,669,3,142,71,0,668,663,1,0, - 0,0,668,664,1,0,0,0,668,665,1,0,0,0,668,666,1,0,0,0,668,667,1,0, - 0,0,669,133,1,0,0,0,670,671,5,99,0,0,671,672,5,2,0,0,672,673,3,192, - 96,0,673,135,1,0,0,0,674,675,5,100,0,0,675,676,5,2,0,0,676,677,3, - 192,96,0,677,137,1,0,0,0,678,679,5,101,0,0,679,680,5,2,0,0,680,681, - 5,3,0,0,681,686,3,192,96,0,682,683,5,1,0,0,683,685,3,192,96,0,684, - 682,1,0,0,0,685,688,1,0,0,0,686,684,1,0,0,0,686,687,1,0,0,0,687, - 689,1,0,0,0,688,686,1,0,0,0,689,690,5,4,0,0,690,139,1,0,0,0,691, - 692,5,102,0,0,692,693,5,2,0,0,693,694,5,143,0,0,694,141,1,0,0,0, - 695,696,5,103,0,0,696,697,5,2,0,0,697,698,5,141,0,0,698,143,1,0, - 0,0,699,700,5,104,0,0,700,701,5,2,0,0,701,702,5,143,0,0,702,145, - 1,0,0,0,703,704,5,105,0,0,704,705,5,2,0,0,705,706,5,141,0,0,706, - 147,1,0,0,0,707,708,5,106,0,0,708,709,5,2,0,0,709,710,5,144,0,0, - 710,149,1,0,0,0,711,712,5,107,0,0,712,713,5,2,0,0,713,714,5,141, - 0,0,714,151,1,0,0,0,715,716,5,114,0,0,716,717,5,2,0,0,717,726,5, - 3,0,0,718,723,3,154,77,0,719,720,5,1,0,0,720,722,3,154,77,0,721, - 719,1,0,0,0,722,725,1,0,0,0,723,721,1,0,0,0,723,724,1,0,0,0,724, - 727,1,0,0,0,725,723,1,0,0,0,726,718,1,0,0,0,726,727,1,0,0,0,727, - 728,1,0,0,0,728,729,5,4,0,0,729,153,1,0,0,0,730,731,5,5,0,0,731, - 736,3,156,78,0,732,733,5,1,0,0,733,735,3,156,78,0,734,732,1,0,0, - 0,735,738,1,0,0,0,736,734,1,0,0,0,736,737,1,0,0,0,737,739,1,0,0, - 0,738,736,1,0,0,0,739,740,5,6,0,0,740,155,1,0,0,0,741,749,3,158, - 79,0,742,749,3,160,80,0,743,749,3,162,81,0,744,749,3,164,82,0,745, - 749,3,166,83,0,746,749,3,168,84,0,747,749,3,8,4,0,748,741,1,0,0, - 0,748,742,1,0,0,0,748,743,1,0,0,0,748,744,1,0,0,0,748,745,1,0,0, - 0,748,746,1,0,0,0,748,747,1,0,0,0,749,157,1,0,0,0,750,751,5,115, - 0,0,751,752,5,2,0,0,752,753,5,3,0,0,753,758,3,182,91,0,754,755,5, - 1,0,0,755,757,3,182,91,0,756,754,1,0,0,0,757,760,1,0,0,0,758,756, - 1,0,0,0,758,759,1,0,0,0,759,761,1,0,0,0,760,758,1,0,0,0,761,762, - 5,4,0,0,762,159,1,0,0,0,763,764,5,116,0,0,764,765,5,2,0,0,765,766, - 5,143,0,0,766,161,1,0,0,0,767,768,5,117,0,0,768,769,5,2,0,0,769, - 770,5,143,0,0,770,163,1,0,0,0,771,772,5,118,0,0,772,773,5,2,0,0, - 773,774,7,3,0,0,774,165,1,0,0,0,775,776,5,119,0,0,776,777,5,2,0, - 0,777,778,5,143,0,0,778,167,1,0,0,0,779,780,5,120,0,0,780,781,5, - 2,0,0,781,782,7,4,0,0,782,169,1,0,0,0,783,784,5,123,0,0,784,785, - 5,2,0,0,785,794,5,3,0,0,786,791,3,172,86,0,787,788,5,1,0,0,788,790, - 3,172,86,0,789,787,1,0,0,0,790,793,1,0,0,0,791,789,1,0,0,0,791,792, - 1,0,0,0,792,795,1,0,0,0,793,791,1,0,0,0,794,786,1,0,0,0,794,795, - 1,0,0,0,795,796,1,0,0,0,796,797,5,4,0,0,797,171,1,0,0,0,798,799, - 5,5,0,0,799,804,3,174,87,0,800,801,5,1,0,0,801,803,3,174,87,0,802, - 800,1,0,0,0,803,806,1,0,0,0,804,802,1,0,0,0,804,805,1,0,0,0,805, - 807,1,0,0,0,806,804,1,0,0,0,807,808,5,6,0,0,808,173,1,0,0,0,809, - 814,3,158,79,0,810,814,3,32,16,0,811,814,3,24,12,0,812,814,3,8,4, - 0,813,809,1,0,0,0,813,810,1,0,0,0,813,811,1,0,0,0,813,812,1,0,0, - 0,814,175,1,0,0,0,815,816,7,5,0,0,816,177,1,0,0,0,817,818,7,6,0, - 0,818,179,1,0,0,0,819,820,7,7,0,0,820,181,1,0,0,0,821,824,3,180, - 90,0,822,824,3,192,96,0,823,821,1,0,0,0,823,822,1,0,0,0,824,183, - 1,0,0,0,825,826,5,5,0,0,826,831,3,186,93,0,827,828,5,1,0,0,828,830, - 3,186,93,0,829,827,1,0,0,0,830,833,1,0,0,0,831,829,1,0,0,0,831,832, - 1,0,0,0,832,834,1,0,0,0,833,831,1,0,0,0,834,835,5,6,0,0,835,839, - 1,0,0,0,836,837,5,5,0,0,837,839,5,6,0,0,838,825,1,0,0,0,838,836, - 1,0,0,0,839,185,1,0,0,0,840,841,3,192,96,0,841,842,5,2,0,0,842,843, - 3,190,95,0,843,187,1,0,0,0,844,845,5,3,0,0,845,850,3,190,95,0,846, - 847,5,1,0,0,847,849,3,190,95,0,848,846,1,0,0,0,849,852,1,0,0,0,850, - 848,1,0,0,0,850,851,1,0,0,0,851,853,1,0,0,0,852,850,1,0,0,0,853, - 854,5,4,0,0,854,858,1,0,0,0,855,856,5,3,0,0,856,858,5,4,0,0,857, - 844,1,0,0,0,857,855,1,0,0,0,858,189,1,0,0,0,859,869,5,144,0,0,860, - 869,5,143,0,0,861,869,5,7,0,0,862,869,5,8,0,0,863,869,5,9,0,0,864, - 869,3,186,93,0,865,869,3,188,94,0,866,869,3,184,92,0,867,869,3,192, - 96,0,868,859,1,0,0,0,868,860,1,0,0,0,868,861,1,0,0,0,868,862,1,0, - 0,0,868,863,1,0,0,0,868,864,1,0,0,0,868,865,1,0,0,0,868,866,1,0, - 0,0,868,867,1,0,0,0,869,191,1,0,0,0,870,871,7,8,0,0,871,193,1,0, - 0,0,52,203,213,266,276,293,314,324,330,350,362,418,425,440,450,457, - 463,470,486,497,507,512,518,522,533,538,556,569,578,588,595,617, - 626,640,648,658,668,686,723,726,736,748,758,791,794,804,813,823, - 831,838,850,857,868 + 91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,1, + 0,1,0,1,0,1,1,1,1,1,1,1,1,5,1,204,8,1,10,1,12,1,207,9,1,1,1,1,1, + 1,2,1,2,1,2,1,2,1,2,1,2,3,2,217,8,2,1,3,1,3,1,3,1,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,6,1,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,271,8,6, + 1,7,1,7,1,7,1,7,1,7,1,7,5,7,279,8,7,10,7,12,7,282,9,7,1,7,1,7,1, + 8,1,8,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,5,10,296,8,10,10,10,12, + 10,299,9,10,1,10,1,10,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1, + 13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,3,14,319,8,14,1,15,1,15,1, + 15,1,15,1,16,1,16,1,16,1,16,3,16,329,8,16,1,17,1,17,1,17,1,17,3, + 17,335,8,17,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,20,1,20,1, + 20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,3,21,355,8,21,1,22,1,22,1, + 22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,3,23,367,8,23,1,24,1,24,1, + 24,1,24,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1, + 27,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1, + 31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,34,1, + 34,1,34,1,34,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,5,36,421,8, + 36,10,36,12,36,424,9,36,1,36,1,36,1,36,1,36,3,36,430,8,36,1,37,1, + 37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,445, + 8,37,1,38,1,38,1,39,1,39,1,39,1,39,5,39,453,8,39,10,39,12,39,456, + 9,39,1,39,1,39,1,39,1,39,3,39,462,8,39,1,40,1,40,1,40,1,40,3,40, + 468,8,40,1,41,1,41,1,41,1,41,1,41,3,41,475,8,41,1,42,1,42,1,42,1, + 42,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,5,44,489,8,44,10,44,12, + 44,492,9,44,1,44,1,44,1,45,1,45,1,45,1,45,4,45,500,8,45,11,45,12, + 45,501,1,45,1,45,1,45,1,45,1,45,1,45,5,45,510,8,45,10,45,12,45,513, + 9,45,1,45,1,45,3,45,517,8,45,1,46,1,46,1,46,1,46,3,46,523,8,46,1, + 47,1,47,3,47,527,8,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,5,48,536, + 8,48,10,48,12,48,539,9,48,1,48,1,48,3,48,543,8,48,1,49,1,49,1,49, + 1,49,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,5,51,559, + 8,51,10,51,12,51,562,9,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52, + 5,52,572,8,52,10,52,12,52,575,9,52,1,52,1,52,1,53,1,53,1,53,1,53, + 3,53,583,8,53,1,54,1,54,1,54,1,54,1,54,1,54,5,54,591,8,54,10,54, + 12,54,594,9,54,1,54,1,54,1,55,1,55,3,55,600,8,55,1,56,1,56,1,56, + 1,56,1,57,1,57,1,58,1,58,1,58,1,58,1,59,1,59,1,60,1,60,1,60,1,60, + 1,60,1,60,5,60,620,8,60,10,60,12,60,623,9,60,1,60,1,60,1,61,1,61, + 1,61,1,61,3,61,631,8,61,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63, + 1,63,1,63,5,63,643,8,63,10,63,12,63,646,9,63,1,63,1,63,1,64,1,64, + 1,64,3,64,653,8,64,1,65,1,65,1,65,1,65,1,65,1,65,5,65,661,8,65,10, + 65,12,65,664,9,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,3,66,673,8, + 66,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1, + 69,1,69,5,69,689,8,69,10,69,12,69,692,9,69,1,69,1,69,1,70,1,70,1, + 70,1,70,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1, + 73,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1, + 76,1,76,5,76,726,8,76,10,76,12,76,729,9,76,3,76,731,8,76,1,76,1, + 76,1,77,1,77,1,77,1,77,5,77,739,8,77,10,77,12,77,742,9,77,1,77,1, + 77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,3,78,753,8,78,1,79,1,79,1, + 79,1,79,1,79,1,79,5,79,761,8,79,10,79,12,79,764,9,79,1,79,1,79,1, + 80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,83,1, + 83,1,83,1,83,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,5, + 85,794,8,85,10,85,12,85,797,9,85,3,85,799,8,85,1,85,1,85,1,86,1, + 86,1,86,1,86,5,86,807,8,86,10,86,12,86,810,9,86,1,86,1,86,1,87,1, + 87,1,87,1,87,3,87,818,8,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91,1, + 91,3,91,828,8,91,1,92,1,92,1,92,1,92,5,92,834,8,92,10,92,12,92,837, + 9,92,1,92,1,92,1,92,1,92,3,92,843,8,92,1,93,1,93,1,93,1,93,1,94, + 1,94,1,94,1,94,5,94,853,8,94,10,94,12,94,856,9,94,1,94,1,94,1,94, + 1,94,3,94,862,8,94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95, + 3,95,873,8,95,1,96,1,96,1,97,1,97,1,97,1,97,1,97,0,0,98,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,128, + 130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160, + 162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192, + 194,0,9,1,0,7,8,1,0,16,23,1,0,80,81,1,0,143,144,1,0,121,122,3,0, + 29,36,38,47,49,69,3,0,28,28,37,37,48,48,1,0,124,138,5,0,10,13,15, + 110,112,112,114,124,126,142,907,0,196,1,0,0,0,2,199,1,0,0,0,4,216, + 1,0,0,0,6,218,1,0,0,0,8,222,1,0,0,0,10,226,1,0,0,0,12,270,1,0,0, + 0,14,272,1,0,0,0,16,285,1,0,0,0,18,287,1,0,0,0,20,291,1,0,0,0,22, + 302,1,0,0,0,24,306,1,0,0,0,26,310,1,0,0,0,28,314,1,0,0,0,30,320, + 1,0,0,0,32,324,1,0,0,0,34,330,1,0,0,0,36,336,1,0,0,0,38,340,1,0, + 0,0,40,344,1,0,0,0,42,354,1,0,0,0,44,356,1,0,0,0,46,366,1,0,0,0, + 48,368,1,0,0,0,50,372,1,0,0,0,52,376,1,0,0,0,54,380,1,0,0,0,56,384, + 1,0,0,0,58,388,1,0,0,0,60,392,1,0,0,0,62,396,1,0,0,0,64,400,1,0, + 0,0,66,404,1,0,0,0,68,408,1,0,0,0,70,412,1,0,0,0,72,429,1,0,0,0, + 74,444,1,0,0,0,76,446,1,0,0,0,78,461,1,0,0,0,80,467,1,0,0,0,82,474, + 1,0,0,0,84,476,1,0,0,0,86,480,1,0,0,0,88,482,1,0,0,0,90,516,1,0, + 0,0,92,522,1,0,0,0,94,526,1,0,0,0,96,528,1,0,0,0,98,544,1,0,0,0, + 100,548,1,0,0,0,102,552,1,0,0,0,104,565,1,0,0,0,106,582,1,0,0,0, + 108,584,1,0,0,0,110,599,1,0,0,0,112,601,1,0,0,0,114,605,1,0,0,0, + 116,607,1,0,0,0,118,611,1,0,0,0,120,613,1,0,0,0,122,630,1,0,0,0, + 124,632,1,0,0,0,126,636,1,0,0,0,128,652,1,0,0,0,130,654,1,0,0,0, + 132,672,1,0,0,0,134,674,1,0,0,0,136,678,1,0,0,0,138,682,1,0,0,0, + 140,695,1,0,0,0,142,699,1,0,0,0,144,703,1,0,0,0,146,707,1,0,0,0, + 148,711,1,0,0,0,150,715,1,0,0,0,152,719,1,0,0,0,154,734,1,0,0,0, + 156,752,1,0,0,0,158,754,1,0,0,0,160,767,1,0,0,0,162,771,1,0,0,0, + 164,775,1,0,0,0,166,779,1,0,0,0,168,783,1,0,0,0,170,787,1,0,0,0, + 172,802,1,0,0,0,174,817,1,0,0,0,176,819,1,0,0,0,178,821,1,0,0,0, + 180,823,1,0,0,0,182,827,1,0,0,0,184,842,1,0,0,0,186,844,1,0,0,0, + 188,861,1,0,0,0,190,872,1,0,0,0,192,874,1,0,0,0,194,876,1,0,0,0, + 196,197,3,2,1,0,197,198,5,0,0,1,198,1,1,0,0,0,199,200,5,5,0,0,200, + 205,3,4,2,0,201,202,5,1,0,0,202,204,3,4,2,0,203,201,1,0,0,0,204, + 207,1,0,0,0,205,203,1,0,0,0,205,206,1,0,0,0,206,208,1,0,0,0,207, + 205,1,0,0,0,208,209,5,6,0,0,209,3,1,0,0,0,210,217,3,8,4,0,211,217, + 3,10,5,0,212,217,3,6,3,0,213,217,3,14,7,0,214,217,3,64,32,0,215, + 217,3,194,97,0,216,210,1,0,0,0,216,211,1,0,0,0,216,212,1,0,0,0,216, + 213,1,0,0,0,216,214,1,0,0,0,216,215,1,0,0,0,217,5,1,0,0,0,218,219, + 5,12,0,0,219,220,5,2,0,0,220,221,3,192,96,0,221,7,1,0,0,0,222,223, + 5,10,0,0,223,224,5,2,0,0,224,225,3,192,96,0,225,9,1,0,0,0,226,227, + 5,14,0,0,227,228,5,2,0,0,228,229,3,192,96,0,229,11,1,0,0,0,230,271, + 3,8,4,0,231,271,3,22,11,0,232,271,3,28,14,0,233,271,3,26,13,0,234, + 271,3,24,12,0,235,271,3,30,15,0,236,271,3,32,16,0,237,271,3,34,17, + 0,238,271,3,36,18,0,239,271,3,38,19,0,240,271,3,88,44,0,241,271, + 3,40,20,0,242,271,3,42,21,0,243,271,3,44,22,0,244,271,3,46,23,0, + 245,271,3,48,24,0,246,271,3,50,25,0,247,271,3,52,26,0,248,271,3, + 54,27,0,249,271,3,56,28,0,250,271,3,104,52,0,251,271,3,120,60,0, + 252,271,3,124,62,0,253,271,3,126,63,0,254,271,3,58,29,0,255,271, + 3,60,30,0,256,271,3,64,32,0,257,271,3,66,33,0,258,271,3,68,34,0, + 259,271,3,70,35,0,260,271,3,102,51,0,261,271,3,62,31,0,262,271,3, + 152,76,0,263,271,3,170,85,0,264,271,3,84,42,0,265,271,3,144,72,0, + 266,271,3,146,73,0,267,271,3,148,74,0,268,271,3,150,75,0,269,271, + 3,194,97,0,270,230,1,0,0,0,270,231,1,0,0,0,270,232,1,0,0,0,270,233, + 1,0,0,0,270,234,1,0,0,0,270,235,1,0,0,0,270,236,1,0,0,0,270,237, + 1,0,0,0,270,238,1,0,0,0,270,239,1,0,0,0,270,240,1,0,0,0,270,241, + 1,0,0,0,270,242,1,0,0,0,270,243,1,0,0,0,270,244,1,0,0,0,270,245, + 1,0,0,0,270,246,1,0,0,0,270,247,1,0,0,0,270,248,1,0,0,0,270,249, + 1,0,0,0,270,250,1,0,0,0,270,251,1,0,0,0,270,252,1,0,0,0,270,253, + 1,0,0,0,270,254,1,0,0,0,270,255,1,0,0,0,270,256,1,0,0,0,270,257, + 1,0,0,0,270,258,1,0,0,0,270,259,1,0,0,0,270,260,1,0,0,0,270,261, + 1,0,0,0,270,262,1,0,0,0,270,263,1,0,0,0,270,264,1,0,0,0,270,265, + 1,0,0,0,270,266,1,0,0,0,270,267,1,0,0,0,270,268,1,0,0,0,270,269, + 1,0,0,0,271,13,1,0,0,0,272,273,5,11,0,0,273,274,5,2,0,0,274,275, + 5,5,0,0,275,280,3,18,9,0,276,277,5,1,0,0,277,279,3,18,9,0,278,276, + 1,0,0,0,279,282,1,0,0,0,280,278,1,0,0,0,280,281,1,0,0,0,281,283, + 1,0,0,0,282,280,1,0,0,0,283,284,5,6,0,0,284,15,1,0,0,0,285,286,3, + 192,96,0,286,17,1,0,0,0,287,288,3,16,8,0,288,289,5,2,0,0,289,290, + 3,20,10,0,290,19,1,0,0,0,291,292,5,5,0,0,292,297,3,12,6,0,293,294, + 5,1,0,0,294,296,3,12,6,0,295,293,1,0,0,0,296,299,1,0,0,0,297,295, + 1,0,0,0,297,298,1,0,0,0,298,300,1,0,0,0,299,297,1,0,0,0,300,301, + 5,6,0,0,301,21,1,0,0,0,302,303,5,15,0,0,303,304,5,2,0,0,304,305, + 3,86,43,0,305,23,1,0,0,0,306,307,5,108,0,0,307,308,5,2,0,0,308,309, + 3,192,96,0,309,25,1,0,0,0,310,311,5,89,0,0,311,312,5,2,0,0,312,313, + 3,192,96,0,313,27,1,0,0,0,314,315,5,90,0,0,315,318,5,2,0,0,316,319, + 5,9,0,0,317,319,3,192,96,0,318,316,1,0,0,0,318,317,1,0,0,0,319,29, + 1,0,0,0,320,321,5,94,0,0,321,322,5,2,0,0,322,323,3,190,95,0,323, + 31,1,0,0,0,324,325,5,93,0,0,325,328,5,2,0,0,326,329,5,9,0,0,327, + 329,3,192,96,0,328,326,1,0,0,0,328,327,1,0,0,0,329,33,1,0,0,0,330, + 331,5,91,0,0,331,334,5,2,0,0,332,335,5,9,0,0,333,335,3,192,96,0, + 334,332,1,0,0,0,334,333,1,0,0,0,335,35,1,0,0,0,336,337,5,109,0,0, + 337,338,5,2,0,0,338,339,7,0,0,0,339,37,1,0,0,0,340,341,5,26,0,0, + 341,342,5,2,0,0,342,343,3,192,96,0,343,39,1,0,0,0,344,345,5,112, + 0,0,345,346,5,2,0,0,346,347,3,192,96,0,347,41,1,0,0,0,348,349,5, + 113,0,0,349,350,5,2,0,0,350,355,5,141,0,0,351,352,5,113,0,0,352, + 353,5,2,0,0,353,355,3,76,38,0,354,348,1,0,0,0,354,351,1,0,0,0,355, + 43,1,0,0,0,356,357,5,110,0,0,357,358,5,2,0,0,358,359,3,192,96,0, + 359,45,1,0,0,0,360,361,5,111,0,0,361,362,5,2,0,0,362,367,5,141,0, + 0,363,364,5,111,0,0,364,365,5,2,0,0,365,367,3,76,38,0,366,360,1, + 0,0,0,366,363,1,0,0,0,367,47,1,0,0,0,368,369,5,71,0,0,369,370,5, + 2,0,0,370,371,5,143,0,0,371,49,1,0,0,0,372,373,5,70,0,0,373,374, + 5,2,0,0,374,375,3,192,96,0,375,51,1,0,0,0,376,377,5,73,0,0,377,378, + 5,2,0,0,378,379,3,192,96,0,379,53,1,0,0,0,380,381,5,72,0,0,381,382, + 5,2,0,0,382,383,3,192,96,0,383,55,1,0,0,0,384,385,5,92,0,0,385,386, + 5,2,0,0,386,387,3,192,96,0,387,57,1,0,0,0,388,389,5,88,0,0,389,390, + 5,2,0,0,390,391,5,143,0,0,391,59,1,0,0,0,392,393,5,87,0,0,393,394, + 5,2,0,0,394,395,5,141,0,0,395,61,1,0,0,0,396,397,5,95,0,0,397,398, + 5,2,0,0,398,399,3,72,36,0,399,63,1,0,0,0,400,401,5,74,0,0,401,402, + 5,2,0,0,402,403,5,143,0,0,403,65,1,0,0,0,404,405,5,75,0,0,405,406, + 5,2,0,0,406,407,5,141,0,0,407,67,1,0,0,0,408,409,5,76,0,0,409,410, + 5,2,0,0,410,411,5,143,0,0,411,69,1,0,0,0,412,413,5,77,0,0,413,414, + 5,2,0,0,414,415,5,141,0,0,415,71,1,0,0,0,416,417,5,5,0,0,417,422, + 3,74,37,0,418,419,5,1,0,0,419,421,3,74,37,0,420,418,1,0,0,0,421, + 424,1,0,0,0,422,420,1,0,0,0,422,423,1,0,0,0,423,425,1,0,0,0,424, + 422,1,0,0,0,425,426,5,6,0,0,426,430,1,0,0,0,427,428,5,5,0,0,428, + 430,5,6,0,0,429,416,1,0,0,0,429,427,1,0,0,0,430,73,1,0,0,0,431,432, + 5,139,0,0,432,433,5,2,0,0,433,445,5,141,0,0,434,435,5,139,0,0,435, + 436,5,2,0,0,436,445,5,140,0,0,437,438,5,139,0,0,438,439,5,2,0,0, + 439,445,3,76,38,0,440,441,3,192,96,0,441,442,5,2,0,0,442,443,3,80, + 40,0,443,445,1,0,0,0,444,431,1,0,0,0,444,434,1,0,0,0,444,437,1,0, + 0,0,444,440,1,0,0,0,445,75,1,0,0,0,446,447,5,142,0,0,447,77,1,0, + 0,0,448,449,5,3,0,0,449,454,3,80,40,0,450,451,5,1,0,0,451,453,3, + 80,40,0,452,450,1,0,0,0,453,456,1,0,0,0,454,452,1,0,0,0,454,455, + 1,0,0,0,455,457,1,0,0,0,456,454,1,0,0,0,457,458,5,4,0,0,458,462, + 1,0,0,0,459,460,5,3,0,0,460,462,5,4,0,0,461,448,1,0,0,0,461,459, + 1,0,0,0,462,79,1,0,0,0,463,468,3,74,37,0,464,468,3,78,39,0,465,468, + 3,72,36,0,466,468,3,82,41,0,467,463,1,0,0,0,467,464,1,0,0,0,467, + 465,1,0,0,0,467,466,1,0,0,0,468,81,1,0,0,0,469,475,5,144,0,0,470, + 475,5,143,0,0,471,475,7,0,0,0,472,475,5,9,0,0,473,475,3,192,96,0, + 474,469,1,0,0,0,474,470,1,0,0,0,474,471,1,0,0,0,474,472,1,0,0,0, + 474,473,1,0,0,0,475,83,1,0,0,0,476,477,5,96,0,0,477,478,5,2,0,0, + 478,479,3,72,36,0,479,85,1,0,0,0,480,481,7,1,0,0,481,87,1,0,0,0, + 482,483,5,24,0,0,483,484,5,2,0,0,484,485,5,3,0,0,485,490,3,90,45, + 0,486,487,5,1,0,0,487,489,3,90,45,0,488,486,1,0,0,0,489,492,1,0, + 0,0,490,488,1,0,0,0,490,491,1,0,0,0,491,493,1,0,0,0,492,490,1,0, + 0,0,493,494,5,4,0,0,494,89,1,0,0,0,495,496,5,5,0,0,496,499,3,92, + 46,0,497,498,5,1,0,0,498,500,3,92,46,0,499,497,1,0,0,0,500,501,1, + 0,0,0,501,499,1,0,0,0,501,502,1,0,0,0,502,503,1,0,0,0,503,504,5, + 6,0,0,504,517,1,0,0,0,505,506,5,5,0,0,506,511,3,94,47,0,507,508, + 5,1,0,0,508,510,3,94,47,0,509,507,1,0,0,0,510,513,1,0,0,0,511,509, + 1,0,0,0,511,512,1,0,0,0,512,514,1,0,0,0,513,511,1,0,0,0,514,515, + 5,6,0,0,515,517,1,0,0,0,516,495,1,0,0,0,516,505,1,0,0,0,517,91,1, + 0,0,0,518,523,3,98,49,0,519,523,3,100,50,0,520,523,3,24,12,0,521, + 523,3,8,4,0,522,518,1,0,0,0,522,519,1,0,0,0,522,520,1,0,0,0,522, + 521,1,0,0,0,523,93,1,0,0,0,524,527,3,96,48,0,525,527,3,24,12,0,526, + 524,1,0,0,0,526,525,1,0,0,0,527,95,1,0,0,0,528,529,3,178,89,0,529, + 542,5,2,0,0,530,543,3,90,45,0,531,532,5,3,0,0,532,537,3,90,45,0, + 533,534,5,1,0,0,534,536,3,90,45,0,535,533,1,0,0,0,536,539,1,0,0, + 0,537,535,1,0,0,0,537,538,1,0,0,0,538,540,1,0,0,0,539,537,1,0,0, + 0,540,541,5,4,0,0,541,543,1,0,0,0,542,530,1,0,0,0,542,531,1,0,0, + 0,543,97,1,0,0,0,544,545,5,25,0,0,545,546,5,2,0,0,546,547,3,192, + 96,0,547,99,1,0,0,0,548,549,3,176,88,0,549,550,5,2,0,0,550,551,3, + 190,95,0,551,101,1,0,0,0,552,553,5,27,0,0,553,554,5,2,0,0,554,555, + 5,3,0,0,555,560,3,2,1,0,556,557,5,1,0,0,557,559,3,2,1,0,558,556, + 1,0,0,0,559,562,1,0,0,0,560,558,1,0,0,0,560,561,1,0,0,0,561,563, + 1,0,0,0,562,560,1,0,0,0,563,564,5,4,0,0,564,103,1,0,0,0,565,566, + 5,84,0,0,566,567,5,2,0,0,567,568,5,5,0,0,568,573,3,106,53,0,569, + 570,5,1,0,0,570,572,3,106,53,0,571,569,1,0,0,0,572,575,1,0,0,0,573, + 571,1,0,0,0,573,574,1,0,0,0,574,576,1,0,0,0,575,573,1,0,0,0,576, + 577,5,6,0,0,577,105,1,0,0,0,578,583,3,108,54,0,579,583,3,6,3,0,580, + 583,3,14,7,0,581,583,3,8,4,0,582,578,1,0,0,0,582,579,1,0,0,0,582, + 580,1,0,0,0,582,581,1,0,0,0,583,107,1,0,0,0,584,585,5,78,0,0,585, + 586,5,2,0,0,586,587,5,5,0,0,587,592,3,110,55,0,588,589,5,1,0,0,589, + 591,3,110,55,0,590,588,1,0,0,0,591,594,1,0,0,0,592,590,1,0,0,0,592, + 593,1,0,0,0,593,595,1,0,0,0,594,592,1,0,0,0,595,596,5,6,0,0,596, + 109,1,0,0,0,597,600,3,112,56,0,598,600,3,116,58,0,599,597,1,0,0, + 0,599,598,1,0,0,0,600,111,1,0,0,0,601,602,5,79,0,0,602,603,5,2,0, + 0,603,604,3,114,57,0,604,113,1,0,0,0,605,606,7,2,0,0,606,115,1,0, + 0,0,607,608,5,82,0,0,608,609,5,2,0,0,609,610,3,118,59,0,610,117, + 1,0,0,0,611,612,5,83,0,0,612,119,1,0,0,0,613,614,5,85,0,0,614,615, + 5,2,0,0,615,616,5,5,0,0,616,621,3,122,61,0,617,618,5,1,0,0,618,620, + 3,122,61,0,619,617,1,0,0,0,620,623,1,0,0,0,621,619,1,0,0,0,621,622, + 1,0,0,0,622,624,1,0,0,0,623,621,1,0,0,0,624,625,5,6,0,0,625,121, + 1,0,0,0,626,631,3,6,3,0,627,631,3,14,7,0,628,631,3,8,4,0,629,631, + 3,108,54,0,630,626,1,0,0,0,630,627,1,0,0,0,630,628,1,0,0,0,630,629, + 1,0,0,0,631,123,1,0,0,0,632,633,5,86,0,0,633,634,5,2,0,0,634,635, + 3,72,36,0,635,125,1,0,0,0,636,637,5,97,0,0,637,638,5,2,0,0,638,639, + 5,5,0,0,639,644,3,128,64,0,640,641,5,1,0,0,641,643,3,128,64,0,642, + 640,1,0,0,0,643,646,1,0,0,0,644,642,1,0,0,0,644,645,1,0,0,0,645, + 647,1,0,0,0,646,644,1,0,0,0,647,648,5,6,0,0,648,127,1,0,0,0,649, + 653,3,26,13,0,650,653,3,62,31,0,651,653,3,130,65,0,652,649,1,0,0, + 0,652,650,1,0,0,0,652,651,1,0,0,0,653,129,1,0,0,0,654,655,5,98,0, + 0,655,656,5,2,0,0,656,657,5,5,0,0,657,662,3,132,66,0,658,659,5,1, + 0,0,659,661,3,132,66,0,660,658,1,0,0,0,661,664,1,0,0,0,662,660,1, + 0,0,0,662,663,1,0,0,0,663,665,1,0,0,0,664,662,1,0,0,0,665,666,5, + 6,0,0,666,131,1,0,0,0,667,673,3,134,67,0,668,673,3,136,68,0,669, + 673,3,138,69,0,670,673,3,140,70,0,671,673,3,142,71,0,672,667,1,0, + 0,0,672,668,1,0,0,0,672,669,1,0,0,0,672,670,1,0,0,0,672,671,1,0, + 0,0,673,133,1,0,0,0,674,675,5,99,0,0,675,676,5,2,0,0,676,677,3,192, + 96,0,677,135,1,0,0,0,678,679,5,100,0,0,679,680,5,2,0,0,680,681,3, + 192,96,0,681,137,1,0,0,0,682,683,5,101,0,0,683,684,5,2,0,0,684,685, + 5,3,0,0,685,690,3,192,96,0,686,687,5,1,0,0,687,689,3,192,96,0,688, + 686,1,0,0,0,689,692,1,0,0,0,690,688,1,0,0,0,690,691,1,0,0,0,691, + 693,1,0,0,0,692,690,1,0,0,0,693,694,5,4,0,0,694,139,1,0,0,0,695, + 696,5,102,0,0,696,697,5,2,0,0,697,698,5,143,0,0,698,141,1,0,0,0, + 699,700,5,103,0,0,700,701,5,2,0,0,701,702,5,141,0,0,702,143,1,0, + 0,0,703,704,5,104,0,0,704,705,5,2,0,0,705,706,5,143,0,0,706,145, + 1,0,0,0,707,708,5,105,0,0,708,709,5,2,0,0,709,710,5,141,0,0,710, + 147,1,0,0,0,711,712,5,106,0,0,712,713,5,2,0,0,713,714,5,144,0,0, + 714,149,1,0,0,0,715,716,5,107,0,0,716,717,5,2,0,0,717,718,5,141, + 0,0,718,151,1,0,0,0,719,720,5,114,0,0,720,721,5,2,0,0,721,730,5, + 3,0,0,722,727,3,154,77,0,723,724,5,1,0,0,724,726,3,154,77,0,725, + 723,1,0,0,0,726,729,1,0,0,0,727,725,1,0,0,0,727,728,1,0,0,0,728, + 731,1,0,0,0,729,727,1,0,0,0,730,722,1,0,0,0,730,731,1,0,0,0,731, + 732,1,0,0,0,732,733,5,4,0,0,733,153,1,0,0,0,734,735,5,5,0,0,735, + 740,3,156,78,0,736,737,5,1,0,0,737,739,3,156,78,0,738,736,1,0,0, + 0,739,742,1,0,0,0,740,738,1,0,0,0,740,741,1,0,0,0,741,743,1,0,0, + 0,742,740,1,0,0,0,743,744,5,6,0,0,744,155,1,0,0,0,745,753,3,158, + 79,0,746,753,3,160,80,0,747,753,3,162,81,0,748,753,3,164,82,0,749, + 753,3,166,83,0,750,753,3,168,84,0,751,753,3,8,4,0,752,745,1,0,0, + 0,752,746,1,0,0,0,752,747,1,0,0,0,752,748,1,0,0,0,752,749,1,0,0, + 0,752,750,1,0,0,0,752,751,1,0,0,0,753,157,1,0,0,0,754,755,5,115, + 0,0,755,756,5,2,0,0,756,757,5,3,0,0,757,762,3,182,91,0,758,759,5, + 1,0,0,759,761,3,182,91,0,760,758,1,0,0,0,761,764,1,0,0,0,762,760, + 1,0,0,0,762,763,1,0,0,0,763,765,1,0,0,0,764,762,1,0,0,0,765,766, + 5,4,0,0,766,159,1,0,0,0,767,768,5,116,0,0,768,769,5,2,0,0,769,770, + 5,143,0,0,770,161,1,0,0,0,771,772,5,117,0,0,772,773,5,2,0,0,773, + 774,5,143,0,0,774,163,1,0,0,0,775,776,5,118,0,0,776,777,5,2,0,0, + 777,778,7,3,0,0,778,165,1,0,0,0,779,780,5,119,0,0,780,781,5,2,0, + 0,781,782,5,143,0,0,782,167,1,0,0,0,783,784,5,120,0,0,784,785,5, + 2,0,0,785,786,7,4,0,0,786,169,1,0,0,0,787,788,5,123,0,0,788,789, + 5,2,0,0,789,798,5,3,0,0,790,795,3,172,86,0,791,792,5,1,0,0,792,794, + 3,172,86,0,793,791,1,0,0,0,794,797,1,0,0,0,795,793,1,0,0,0,795,796, + 1,0,0,0,796,799,1,0,0,0,797,795,1,0,0,0,798,790,1,0,0,0,798,799, + 1,0,0,0,799,800,1,0,0,0,800,801,5,4,0,0,801,171,1,0,0,0,802,803, + 5,5,0,0,803,808,3,174,87,0,804,805,5,1,0,0,805,807,3,174,87,0,806, + 804,1,0,0,0,807,810,1,0,0,0,808,806,1,0,0,0,808,809,1,0,0,0,809, + 811,1,0,0,0,810,808,1,0,0,0,811,812,5,6,0,0,812,173,1,0,0,0,813, + 818,3,158,79,0,814,818,3,32,16,0,815,818,3,24,12,0,816,818,3,8,4, + 0,817,813,1,0,0,0,817,814,1,0,0,0,817,815,1,0,0,0,817,816,1,0,0, + 0,818,175,1,0,0,0,819,820,7,5,0,0,820,177,1,0,0,0,821,822,7,6,0, + 0,822,179,1,0,0,0,823,824,7,7,0,0,824,181,1,0,0,0,825,828,3,180, + 90,0,826,828,3,192,96,0,827,825,1,0,0,0,827,826,1,0,0,0,828,183, + 1,0,0,0,829,830,5,5,0,0,830,835,3,186,93,0,831,832,5,1,0,0,832,834, + 3,186,93,0,833,831,1,0,0,0,834,837,1,0,0,0,835,833,1,0,0,0,835,836, + 1,0,0,0,836,838,1,0,0,0,837,835,1,0,0,0,838,839,5,6,0,0,839,843, + 1,0,0,0,840,841,5,5,0,0,841,843,5,6,0,0,842,829,1,0,0,0,842,840, + 1,0,0,0,843,185,1,0,0,0,844,845,3,192,96,0,845,846,5,2,0,0,846,847, + 3,190,95,0,847,187,1,0,0,0,848,849,5,3,0,0,849,854,3,190,95,0,850, + 851,5,1,0,0,851,853,3,190,95,0,852,850,1,0,0,0,853,856,1,0,0,0,854, + 852,1,0,0,0,854,855,1,0,0,0,855,857,1,0,0,0,856,854,1,0,0,0,857, + 858,5,4,0,0,858,862,1,0,0,0,859,860,5,3,0,0,860,862,5,4,0,0,861, + 848,1,0,0,0,861,859,1,0,0,0,862,189,1,0,0,0,863,873,5,144,0,0,864, + 873,5,143,0,0,865,873,5,7,0,0,866,873,5,8,0,0,867,873,5,9,0,0,868, + 873,3,186,93,0,869,873,3,188,94,0,870,873,3,184,92,0,871,873,3,192, + 96,0,872,863,1,0,0,0,872,864,1,0,0,0,872,865,1,0,0,0,872,866,1,0, + 0,0,872,867,1,0,0,0,872,868,1,0,0,0,872,869,1,0,0,0,872,870,1,0, + 0,0,872,871,1,0,0,0,873,191,1,0,0,0,874,875,7,8,0,0,875,193,1,0, + 0,0,876,877,5,142,0,0,877,878,5,2,0,0,878,879,3,190,95,0,879,195, + 1,0,0,0,52,205,216,270,280,297,318,328,334,354,366,422,429,444,454, + 461,467,474,490,501,511,516,522,526,537,542,560,573,582,592,599, + 621,630,644,652,662,672,690,727,730,740,752,762,795,798,808,817, + 827,835,842,854,861,872 ] class ASLParser ( Parser ): @@ -526,6 +529,7 @@ class ASLParser ( Parser ): RULE_json_arr_decl = 94 RULE_json_value_decl = 95 RULE_keyword_or_string = 96 + RULE_unknown_binding_decl = 97 ruleNames = [ "state_machine", "program_decl", "top_layer_stmt", "startat_decl", "comment_decl", "version_decl", "state_stmt", "states_decl", @@ -557,7 +561,8 @@ class ASLParser ( Parser ): "max_delay_seconds_decl", "jitter_strategy_decl", "catch_decl", "catcher_decl", "catcher_stmt", "comparison_op", "choice_operator", "states_error_name", "error_name", "json_obj_decl", "json_binding", - "json_arr_decl", "json_value_decl", "keyword_or_string" ] + "json_arr_decl", "json_value_decl", "keyword_or_string", + "unknown_binding_decl" ] EOF = Token.EOF COMMA=1 @@ -755,9 +760,9 @@ def state_machine(self): self.enterRule(localctx, 0, self.RULE_state_machine) try: self.enterOuterAlt(localctx, 1) - self.state = 194 + self.state = 196 self.program_decl() - self.state = 195 + self.state = 197 self.match(ASLParser.EOF) except RecognitionException as re: localctx.exception = re @@ -821,23 +826,23 @@ def program_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 197 + self.state = 199 self.match(ASLParser.LBRACE) - self.state = 198 + self.state = 200 self.top_layer_stmt() - self.state = 203 + self.state = 205 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 199 + self.state = 201 self.match(ASLParser.COMMA) - self.state = 200 + self.state = 202 self.top_layer_stmt() - self.state = 205 + self.state = 207 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 206 + self.state = 208 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -875,6 +880,10 @@ def timeout_seconds_decl(self): return self.getTypedRuleContext(ASLParser.Timeout_seconds_declContext,0) + def unknown_binding_decl(self): + return self.getTypedRuleContext(ASLParser.Unknown_binding_declContext,0) + + def getRuleIndex(self): return ASLParser.RULE_top_layer_stmt @@ -900,34 +909,39 @@ def top_layer_stmt(self): localctx = ASLParser.Top_layer_stmtContext(self, self._ctx, self.state) self.enterRule(localctx, 4, self.RULE_top_layer_stmt) try: - self.state = 213 + self.state = 216 self._errHandler.sync(self) token = self._input.LA(1) if token in [10]: self.enterOuterAlt(localctx, 1) - self.state = 208 + self.state = 210 self.comment_decl() pass elif token in [14]: self.enterOuterAlt(localctx, 2) - self.state = 209 + self.state = 211 self.version_decl() pass elif token in [12]: self.enterOuterAlt(localctx, 3) - self.state = 210 + self.state = 212 self.startat_decl() pass elif token in [11]: self.enterOuterAlt(localctx, 4) - self.state = 211 + self.state = 213 self.states_decl() pass elif token in [74]: self.enterOuterAlt(localctx, 5) - self.state = 212 + self.state = 214 self.timeout_seconds_decl() pass + elif token in [142]: + self.enterOuterAlt(localctx, 6) + self.state = 215 + self.unknown_binding_decl() + pass else: raise NoViableAltException(self) @@ -983,11 +997,11 @@ def startat_decl(self): self.enterRule(localctx, 6, self.RULE_startat_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 215 + self.state = 218 self.match(ASLParser.STARTAT) - self.state = 216 + self.state = 219 self.match(ASLParser.COLON) - self.state = 217 + self.state = 220 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -1041,11 +1055,11 @@ def comment_decl(self): self.enterRule(localctx, 8, self.RULE_comment_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 219 + self.state = 222 self.match(ASLParser.COMMENT) - self.state = 220 + self.state = 223 self.match(ASLParser.COLON) - self.state = 221 + self.state = 224 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -1099,11 +1113,11 @@ def version_decl(self): self.enterRule(localctx, 10, self.RULE_version_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 223 + self.state = 226 self.match(ASLParser.VERSION) - self.state = 224 + self.state = 227 self.match(ASLParser.COLON) - self.state = 225 + self.state = 228 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -1277,6 +1291,10 @@ def tolerated_failure_percentage_path_decl(self): return self.getTypedRuleContext(ASLParser.Tolerated_failure_percentage_path_declContext,0) + def unknown_binding_decl(self): + return self.getTypedRuleContext(ASLParser.Unknown_binding_declContext,0) + + def getRuleIndex(self): return ASLParser.RULE_state_stmt @@ -1302,204 +1320,209 @@ def state_stmt(self): localctx = ASLParser.State_stmtContext(self, self._ctx, self.state) self.enterRule(localctx, 12, self.RULE_state_stmt) try: - self.state = 266 + self.state = 270 self._errHandler.sync(self) token = self._input.LA(1) if token in [10]: self.enterOuterAlt(localctx, 1) - self.state = 227 + self.state = 230 self.comment_decl() pass elif token in [15]: self.enterOuterAlt(localctx, 2) - self.state = 228 + self.state = 231 self.type_decl() pass elif token in [90]: self.enterOuterAlt(localctx, 3) - self.state = 229 + self.state = 232 self.input_path_decl() pass elif token in [89]: self.enterOuterAlt(localctx, 4) - self.state = 230 + self.state = 233 self.resource_decl() pass elif token in [108]: self.enterOuterAlt(localctx, 5) - self.state = 231 + self.state = 234 self.next_decl() pass elif token in [94]: self.enterOuterAlt(localctx, 6) - self.state = 232 + self.state = 235 self.result_decl() pass elif token in [93]: self.enterOuterAlt(localctx, 7) - self.state = 233 + self.state = 236 self.result_path_decl() pass elif token in [91]: self.enterOuterAlt(localctx, 8) - self.state = 234 + self.state = 237 self.output_path_decl() pass elif token in [109]: self.enterOuterAlt(localctx, 9) - self.state = 235 + self.state = 238 self.end_decl() pass elif token in [26]: self.enterOuterAlt(localctx, 10) - self.state = 236 + self.state = 239 self.default_decl() pass elif token in [24]: self.enterOuterAlt(localctx, 11) - self.state = 237 + self.state = 240 self.choices_decl() pass elif token in [112]: self.enterOuterAlt(localctx, 12) - self.state = 238 + self.state = 241 self.error_decl() pass elif token in [113]: self.enterOuterAlt(localctx, 13) - self.state = 239 + self.state = 242 self.error_path_decl() pass elif token in [110]: self.enterOuterAlt(localctx, 14) - self.state = 240 + self.state = 243 self.cause_decl() pass elif token in [111]: self.enterOuterAlt(localctx, 15) - self.state = 241 + self.state = 244 self.cause_path_decl() pass elif token in [71]: self.enterOuterAlt(localctx, 16) - self.state = 242 + self.state = 245 self.seconds_decl() pass elif token in [70]: self.enterOuterAlt(localctx, 17) - self.state = 243 + self.state = 246 self.seconds_path_decl() pass elif token in [73]: self.enterOuterAlt(localctx, 18) - self.state = 244 + self.state = 247 self.timestamp_decl() pass elif token in [72]: self.enterOuterAlt(localctx, 19) - self.state = 245 + self.state = 248 self.timestamp_path_decl() pass elif token in [92]: self.enterOuterAlt(localctx, 20) - self.state = 246 + self.state = 249 self.items_path_decl() pass elif token in [84]: self.enterOuterAlt(localctx, 21) - self.state = 247 + self.state = 250 self.item_processor_decl() pass elif token in [85]: self.enterOuterAlt(localctx, 22) - self.state = 248 + self.state = 251 self.iterator_decl() pass elif token in [86]: self.enterOuterAlt(localctx, 23) - self.state = 249 + self.state = 252 self.item_selector_decl() pass elif token in [97]: self.enterOuterAlt(localctx, 24) - self.state = 250 + self.state = 253 self.item_reader_decl() pass elif token in [88]: self.enterOuterAlt(localctx, 25) - self.state = 251 + self.state = 254 self.max_concurrency_decl() pass elif token in [87]: self.enterOuterAlt(localctx, 26) - self.state = 252 + self.state = 255 self.max_concurrency_path_decl() pass elif token in [74]: self.enterOuterAlt(localctx, 27) - self.state = 253 + self.state = 256 self.timeout_seconds_decl() pass elif token in [75]: self.enterOuterAlt(localctx, 28) - self.state = 254 + self.state = 257 self.timeout_seconds_path_decl() pass elif token in [76]: self.enterOuterAlt(localctx, 29) - self.state = 255 + self.state = 258 self.heartbeat_seconds_decl() pass elif token in [77]: self.enterOuterAlt(localctx, 30) - self.state = 256 + self.state = 259 self.heartbeat_seconds_path_decl() pass elif token in [27]: self.enterOuterAlt(localctx, 31) - self.state = 257 + self.state = 260 self.branches_decl() pass elif token in [95]: self.enterOuterAlt(localctx, 32) - self.state = 258 + self.state = 261 self.parameters_decl() pass elif token in [114]: self.enterOuterAlt(localctx, 33) - self.state = 259 + self.state = 262 self.retry_decl() pass elif token in [123]: self.enterOuterAlt(localctx, 34) - self.state = 260 + self.state = 263 self.catch_decl() pass elif token in [96]: self.enterOuterAlt(localctx, 35) - self.state = 261 + self.state = 264 self.result_selector_decl() pass elif token in [104]: self.enterOuterAlt(localctx, 36) - self.state = 262 + self.state = 265 self.tolerated_failure_count_decl() pass elif token in [105]: self.enterOuterAlt(localctx, 37) - self.state = 263 + self.state = 266 self.tolerated_failure_count_path_decl() pass elif token in [106]: self.enterOuterAlt(localctx, 38) - self.state = 264 + self.state = 267 self.tolerated_failure_percentage_decl() pass elif token in [107]: self.enterOuterAlt(localctx, 39) - self.state = 265 + self.state = 268 self.tolerated_failure_percentage_path_decl() pass + elif token in [142]: + self.enterOuterAlt(localctx, 40) + self.state = 269 + self.unknown_binding_decl() + pass else: raise NoViableAltException(self) @@ -1571,27 +1594,27 @@ def states_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 268 + self.state = 272 self.match(ASLParser.STATES) - self.state = 269 + self.state = 273 self.match(ASLParser.COLON) - self.state = 270 + self.state = 274 self.match(ASLParser.LBRACE) - self.state = 271 + self.state = 275 self.state_decl() - self.state = 276 + self.state = 280 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 272 + self.state = 276 self.match(ASLParser.COMMA) - self.state = 273 + self.state = 277 self.state_decl() - self.state = 278 + self.state = 282 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 279 + self.state = 283 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -1639,7 +1662,7 @@ def state_name(self): self.enterRule(localctx, 16, self.RULE_state_name) try: self.enterOuterAlt(localctx, 1) - self.state = 281 + self.state = 285 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -1694,11 +1717,11 @@ def state_decl(self): self.enterRule(localctx, 18, self.RULE_state_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 283 + self.state = 287 self.state_name() - self.state = 284 + self.state = 288 self.match(ASLParser.COLON) - self.state = 285 + self.state = 289 self.state_decl_body() except RecognitionException as re: localctx.exception = re @@ -1762,23 +1785,23 @@ def state_decl_body(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 287 + self.state = 291 self.match(ASLParser.LBRACE) - self.state = 288 + self.state = 292 self.state_stmt() - self.state = 293 + self.state = 297 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 289 + self.state = 293 self.match(ASLParser.COMMA) - self.state = 290 + self.state = 294 self.state_stmt() - self.state = 295 + self.state = 299 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 296 + self.state = 300 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -1832,11 +1855,11 @@ def type_decl(self): self.enterRule(localctx, 22, self.RULE_type_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 298 + self.state = 302 self.match(ASLParser.TYPE) - self.state = 299 + self.state = 303 self.match(ASLParser.COLON) - self.state = 300 + self.state = 304 self.state_type() except RecognitionException as re: localctx.exception = re @@ -1890,11 +1913,11 @@ def next_decl(self): self.enterRule(localctx, 24, self.RULE_next_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 302 + self.state = 306 self.match(ASLParser.NEXT) - self.state = 303 + self.state = 307 self.match(ASLParser.COLON) - self.state = 304 + self.state = 308 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -1948,11 +1971,11 @@ def resource_decl(self): self.enterRule(localctx, 26, self.RULE_resource_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 306 + self.state = 310 self.match(ASLParser.RESOURCE) - self.state = 307 + self.state = 311 self.match(ASLParser.COLON) - self.state = 308 + self.state = 312 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -2009,19 +2032,19 @@ def input_path_decl(self): self.enterRule(localctx, 28, self.RULE_input_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 310 + self.state = 314 self.match(ASLParser.INPUTPATH) - self.state = 311 + self.state = 315 self.match(ASLParser.COLON) - self.state = 314 + self.state = 318 self._errHandler.sync(self) token = self._input.LA(1) if token in [9]: - self.state = 312 + self.state = 316 self.match(ASLParser.NULL) pass elif token in [10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142]: - self.state = 313 + self.state = 317 self.keyword_or_string() pass else: @@ -2079,11 +2102,11 @@ def result_decl(self): self.enterRule(localctx, 30, self.RULE_result_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 316 + self.state = 320 self.match(ASLParser.RESULT) - self.state = 317 + self.state = 321 self.match(ASLParser.COLON) - self.state = 318 + self.state = 322 self.json_value_decl() except RecognitionException as re: localctx.exception = re @@ -2140,19 +2163,19 @@ def result_path_decl(self): self.enterRule(localctx, 32, self.RULE_result_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 320 + self.state = 324 self.match(ASLParser.RESULTPATH) - self.state = 321 + self.state = 325 self.match(ASLParser.COLON) - self.state = 324 + self.state = 328 self._errHandler.sync(self) token = self._input.LA(1) if token in [9]: - self.state = 322 + self.state = 326 self.match(ASLParser.NULL) pass elif token in [10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142]: - self.state = 323 + self.state = 327 self.keyword_or_string() pass else: @@ -2213,19 +2236,19 @@ def output_path_decl(self): self.enterRule(localctx, 34, self.RULE_output_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 326 + self.state = 330 self.match(ASLParser.OUTPUTPATH) - self.state = 327 + self.state = 331 self.match(ASLParser.COLON) - self.state = 330 + self.state = 334 self._errHandler.sync(self) token = self._input.LA(1) if token in [9]: - self.state = 328 + self.state = 332 self.match(ASLParser.NULL) pass elif token in [10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142]: - self.state = 329 + self.state = 333 self.keyword_or_string() pass else: @@ -2286,11 +2309,11 @@ def end_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 332 + self.state = 336 self.match(ASLParser.END) - self.state = 333 + self.state = 337 self.match(ASLParser.COLON) - self.state = 334 + self.state = 338 _la = self._input.LA(1) if not(_la==7 or _la==8): self._errHandler.recoverInline(self) @@ -2349,11 +2372,11 @@ def default_decl(self): self.enterRule(localctx, 38, self.RULE_default_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 336 + self.state = 340 self.match(ASLParser.DEFAULT) - self.state = 337 + self.state = 341 self.match(ASLParser.COLON) - self.state = 338 + self.state = 342 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -2407,11 +2430,11 @@ def error_decl(self): self.enterRule(localctx, 40, self.RULE_error_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 340 + self.state = 344 self.match(ASLParser.ERROR) - self.state = 341 + self.state = 345 self.match(ASLParser.COLON) - self.state = 342 + self.state = 346 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -2502,28 +2525,28 @@ def error_path_decl(self): localctx = ASLParser.Error_path_declContext(self, self._ctx, self.state) self.enterRule(localctx, 42, self.RULE_error_path_decl) try: - self.state = 350 + self.state = 354 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,8,self._ctx) if la_ == 1: localctx = ASLParser.Error_path_decl_pathContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 344 + self.state = 348 self.match(ASLParser.ERRORPATH) - self.state = 345 + self.state = 349 self.match(ASLParser.COLON) - self.state = 346 + self.state = 350 self.match(ASLParser.STRINGPATH) pass elif la_ == 2: localctx = ASLParser.Error_path_decl_intrinsicContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 347 + self.state = 351 self.match(ASLParser.ERRORPATH) - self.state = 348 + self.state = 352 self.match(ASLParser.COLON) - self.state = 349 + self.state = 353 self.intrinsic_func() pass @@ -2580,11 +2603,11 @@ def cause_decl(self): self.enterRule(localctx, 44, self.RULE_cause_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 352 + self.state = 356 self.match(ASLParser.CAUSE) - self.state = 353 + self.state = 357 self.match(ASLParser.COLON) - self.state = 354 + self.state = 358 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -2675,28 +2698,28 @@ def cause_path_decl(self): localctx = ASLParser.Cause_path_declContext(self, self._ctx, self.state) self.enterRule(localctx, 46, self.RULE_cause_path_decl) try: - self.state = 362 + self.state = 366 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,9,self._ctx) if la_ == 1: localctx = ASLParser.Cause_path_decl_pathContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 356 + self.state = 360 self.match(ASLParser.CAUSEPATH) - self.state = 357 + self.state = 361 self.match(ASLParser.COLON) - self.state = 358 + self.state = 362 self.match(ASLParser.STRINGPATH) pass elif la_ == 2: localctx = ASLParser.Cause_path_decl_intrinsicContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 359 + self.state = 363 self.match(ASLParser.CAUSEPATH) - self.state = 360 + self.state = 364 self.match(ASLParser.COLON) - self.state = 361 + self.state = 365 self.intrinsic_func() pass @@ -2752,11 +2775,11 @@ def seconds_decl(self): self.enterRule(localctx, 48, self.RULE_seconds_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 364 + self.state = 368 self.match(ASLParser.SECONDS) - self.state = 365 + self.state = 369 self.match(ASLParser.COLON) - self.state = 366 + self.state = 370 self.match(ASLParser.INT) except RecognitionException as re: localctx.exception = re @@ -2810,11 +2833,11 @@ def seconds_path_decl(self): self.enterRule(localctx, 50, self.RULE_seconds_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 368 + self.state = 372 self.match(ASLParser.SECONDSPATH) - self.state = 369 + self.state = 373 self.match(ASLParser.COLON) - self.state = 370 + self.state = 374 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -2868,11 +2891,11 @@ def timestamp_decl(self): self.enterRule(localctx, 52, self.RULE_timestamp_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 372 + self.state = 376 self.match(ASLParser.TIMESTAMP) - self.state = 373 + self.state = 377 self.match(ASLParser.COLON) - self.state = 374 + self.state = 378 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -2926,11 +2949,11 @@ def timestamp_path_decl(self): self.enterRule(localctx, 54, self.RULE_timestamp_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 376 + self.state = 380 self.match(ASLParser.TIMESTAMPPATH) - self.state = 377 + self.state = 381 self.match(ASLParser.COLON) - self.state = 378 + self.state = 382 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -2984,11 +3007,11 @@ def items_path_decl(self): self.enterRule(localctx, 56, self.RULE_items_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 380 + self.state = 384 self.match(ASLParser.ITEMSPATH) - self.state = 381 + self.state = 385 self.match(ASLParser.COLON) - self.state = 382 + self.state = 386 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -3041,11 +3064,11 @@ def max_concurrency_decl(self): self.enterRule(localctx, 58, self.RULE_max_concurrency_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 384 + self.state = 388 self.match(ASLParser.MAXCONCURRENCY) - self.state = 385 + self.state = 389 self.match(ASLParser.COLON) - self.state = 386 + self.state = 390 self.match(ASLParser.INT) except RecognitionException as re: localctx.exception = re @@ -3098,11 +3121,11 @@ def max_concurrency_path_decl(self): self.enterRule(localctx, 60, self.RULE_max_concurrency_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 388 + self.state = 392 self.match(ASLParser.MAXCONCURRENCYPATH) - self.state = 389 + self.state = 393 self.match(ASLParser.COLON) - self.state = 390 + self.state = 394 self.match(ASLParser.STRINGPATH) except RecognitionException as re: localctx.exception = re @@ -3156,11 +3179,11 @@ def parameters_decl(self): self.enterRule(localctx, 62, self.RULE_parameters_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 392 + self.state = 396 self.match(ASLParser.PARAMETERS) - self.state = 393 + self.state = 397 self.match(ASLParser.COLON) - self.state = 394 + self.state = 398 self.payload_tmpl_decl() except RecognitionException as re: localctx.exception = re @@ -3213,11 +3236,11 @@ def timeout_seconds_decl(self): self.enterRule(localctx, 64, self.RULE_timeout_seconds_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 396 + self.state = 400 self.match(ASLParser.TIMEOUTSECONDS) - self.state = 397 + self.state = 401 self.match(ASLParser.COLON) - self.state = 398 + self.state = 402 self.match(ASLParser.INT) except RecognitionException as re: localctx.exception = re @@ -3270,11 +3293,11 @@ def timeout_seconds_path_decl(self): self.enterRule(localctx, 66, self.RULE_timeout_seconds_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 400 + self.state = 404 self.match(ASLParser.TIMEOUTSECONDSPATH) - self.state = 401 + self.state = 405 self.match(ASLParser.COLON) - self.state = 402 + self.state = 406 self.match(ASLParser.STRINGPATH) except RecognitionException as re: localctx.exception = re @@ -3327,11 +3350,11 @@ def heartbeat_seconds_decl(self): self.enterRule(localctx, 68, self.RULE_heartbeat_seconds_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 404 + self.state = 408 self.match(ASLParser.HEARTBEATSECONDS) - self.state = 405 + self.state = 409 self.match(ASLParser.COLON) - self.state = 406 + self.state = 410 self.match(ASLParser.INT) except RecognitionException as re: localctx.exception = re @@ -3384,11 +3407,11 @@ def heartbeat_seconds_path_decl(self): self.enterRule(localctx, 70, self.RULE_heartbeat_seconds_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 408 + self.state = 412 self.match(ASLParser.HEARTBEATSECONDSPATH) - self.state = 409 + self.state = 413 self.match(ASLParser.COLON) - self.state = 410 + self.state = 414 self.match(ASLParser.STRINGPATH) except RecognitionException as re: localctx.exception = re @@ -3451,36 +3474,36 @@ def payload_tmpl_decl(self): self.enterRule(localctx, 72, self.RULE_payload_tmpl_decl) self._la = 0 # Token type try: - self.state = 425 + self.state = 429 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,11,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 412 + self.state = 416 self.match(ASLParser.LBRACE) - self.state = 413 + self.state = 417 self.payload_binding() - self.state = 418 + self.state = 422 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 414 + self.state = 418 self.match(ASLParser.COMMA) - self.state = 415 + self.state = 419 self.payload_binding() - self.state = 420 + self.state = 424 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 421 + self.state = 425 self.match(ASLParser.RBRACE) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 423 + self.state = 427 self.match(ASLParser.LBRACE) - self.state = 424 + self.state = 428 self.match(ASLParser.RBRACE) pass @@ -3632,50 +3655,50 @@ def payload_binding(self): localctx = ASLParser.Payload_bindingContext(self, self._ctx, self.state) self.enterRule(localctx, 74, self.RULE_payload_binding) try: - self.state = 440 + self.state = 444 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,12,self._ctx) if la_ == 1: localctx = ASLParser.Payload_binding_pathContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 427 + self.state = 431 self.match(ASLParser.STRINGDOLLAR) - self.state = 428 + self.state = 432 self.match(ASLParser.COLON) - self.state = 429 + self.state = 433 self.match(ASLParser.STRINGPATH) pass elif la_ == 2: localctx = ASLParser.Payload_binding_path_context_objContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 430 + self.state = 434 self.match(ASLParser.STRINGDOLLAR) - self.state = 431 + self.state = 435 self.match(ASLParser.COLON) - self.state = 432 + self.state = 436 self.match(ASLParser.STRINGPATHCONTEXTOBJ) pass elif la_ == 3: localctx = ASLParser.Payload_binding_intrinsic_funcContext(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 433 + self.state = 437 self.match(ASLParser.STRINGDOLLAR) - self.state = 434 + self.state = 438 self.match(ASLParser.COLON) - self.state = 435 + self.state = 439 self.intrinsic_func() pass elif la_ == 4: localctx = ASLParser.Payload_binding_valueContext(self, localctx) self.enterOuterAlt(localctx, 4) - self.state = 436 + self.state = 440 self.keyword_or_string() - self.state = 437 + self.state = 441 self.match(ASLParser.COLON) - self.state = 438 + self.state = 442 self.payload_value_decl() pass @@ -3725,7 +3748,7 @@ def intrinsic_func(self): self.enterRule(localctx, 76, self.RULE_intrinsic_func) try: self.enterOuterAlt(localctx, 1) - self.state = 442 + self.state = 446 self.match(ASLParser.STRING) except RecognitionException as re: localctx.exception = re @@ -3788,36 +3811,36 @@ def payload_arr_decl(self): self.enterRule(localctx, 78, self.RULE_payload_arr_decl) self._la = 0 # Token type try: - self.state = 457 + self.state = 461 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,14,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 444 + self.state = 448 self.match(ASLParser.LBRACK) - self.state = 445 + self.state = 449 self.payload_value_decl() - self.state = 450 + self.state = 454 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 446 + self.state = 450 self.match(ASLParser.COMMA) - self.state = 447 + self.state = 451 self.payload_value_decl() - self.state = 452 + self.state = 456 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 453 + self.state = 457 self.match(ASLParser.RBRACK) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 455 + self.state = 459 self.match(ASLParser.LBRACK) - self.state = 456 + self.state = 460 self.match(ASLParser.RBRACK) pass @@ -3879,30 +3902,30 @@ def payload_value_decl(self): localctx = ASLParser.Payload_value_declContext(self, self._ctx, self.state) self.enterRule(localctx, 80, self.RULE_payload_value_decl) try: - self.state = 463 + self.state = 467 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,15,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 459 + self.state = 463 self.payload_binding() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 460 + self.state = 464 self.payload_arr_decl() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 461 + self.state = 465 self.payload_tmpl_decl() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 462 + self.state = 466 self.payload_value_lit() pass @@ -4063,25 +4086,25 @@ def payload_value_lit(self): self.enterRule(localctx, 82, self.RULE_payload_value_lit) self._la = 0 # Token type try: - self.state = 470 + self.state = 474 self._errHandler.sync(self) token = self._input.LA(1) if token in [144]: localctx = ASLParser.Payload_value_floatContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 465 + self.state = 469 self.match(ASLParser.NUMBER) pass elif token in [143]: localctx = ASLParser.Payload_value_intContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 466 + self.state = 470 self.match(ASLParser.INT) pass elif token in [7, 8]: localctx = ASLParser.Payload_value_boolContext(self, localctx) self.enterOuterAlt(localctx, 3) - self.state = 467 + self.state = 471 _la = self._input.LA(1) if not(_la==7 or _la==8): self._errHandler.recoverInline(self) @@ -4092,13 +4115,13 @@ def payload_value_lit(self): elif token in [9]: localctx = ASLParser.Payload_value_nullContext(self, localctx) self.enterOuterAlt(localctx, 4) - self.state = 468 + self.state = 472 self.match(ASLParser.NULL) pass elif token in [10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142]: localctx = ASLParser.Payload_value_strContext(self, localctx) self.enterOuterAlt(localctx, 5) - self.state = 469 + self.state = 473 self.keyword_or_string() pass else: @@ -4156,11 +4179,11 @@ def result_selector_decl(self): self.enterRule(localctx, 84, self.RULE_result_selector_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 472 + self.state = 476 self.match(ASLParser.RESULTSELECTOR) - self.state = 473 + self.state = 477 self.match(ASLParser.COLON) - self.state = 474 + self.state = 478 self.payload_tmpl_decl() except RecognitionException as re: localctx.exception = re @@ -4229,7 +4252,7 @@ def state_type(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 476 + self.state = 480 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 16711680) != 0)): self._errHandler.recoverInline(self) @@ -4304,27 +4327,27 @@ def choices_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 478 + self.state = 482 self.match(ASLParser.CHOICES) - self.state = 479 + self.state = 483 self.match(ASLParser.COLON) - self.state = 480 + self.state = 484 self.match(ASLParser.LBRACK) - self.state = 481 + self.state = 485 self.choice_rule() - self.state = 486 + self.state = 490 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 482 + self.state = 486 self.match(ASLParser.COMMA) - self.state = 483 + self.state = 487 self.choice_rule() - self.state = 488 + self.state = 492 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 489 + self.state = 493 self.match(ASLParser.RBRACK) except RecognitionException as re: localctx.exception = re @@ -4433,54 +4456,54 @@ def choice_rule(self): self.enterRule(localctx, 90, self.RULE_choice_rule) self._la = 0 # Token type try: - self.state = 512 + self.state = 516 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,20,self._ctx) if la_ == 1: localctx = ASLParser.Choice_rule_comparison_variableContext(self, localctx) self.enterOuterAlt(localctx, 1) - self.state = 491 + self.state = 495 self.match(ASLParser.LBRACE) - self.state = 492 + self.state = 496 self.comparison_variable_stmt() - self.state = 495 + self.state = 499 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 493 + self.state = 497 self.match(ASLParser.COMMA) - self.state = 494 + self.state = 498 self.comparison_variable_stmt() - self.state = 497 + self.state = 501 self._errHandler.sync(self) _la = self._input.LA(1) if not (_la==1): break - self.state = 499 + self.state = 503 self.match(ASLParser.RBRACE) pass elif la_ == 2: localctx = ASLParser.Choice_rule_comparison_compositeContext(self, localctx) self.enterOuterAlt(localctx, 2) - self.state = 501 + self.state = 505 self.match(ASLParser.LBRACE) - self.state = 502 + self.state = 506 self.comparison_composite_stmt() - self.state = 507 + self.state = 511 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 503 + self.state = 507 self.match(ASLParser.COMMA) - self.state = 504 + self.state = 508 self.comparison_composite_stmt() - self.state = 509 + self.state = 513 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 510 + self.state = 514 self.match(ASLParser.RBRACE) pass @@ -4542,27 +4565,27 @@ def comparison_variable_stmt(self): localctx = ASLParser.Comparison_variable_stmtContext(self, self._ctx, self.state) self.enterRule(localctx, 92, self.RULE_comparison_variable_stmt) try: - self.state = 518 + self.state = 522 self._errHandler.sync(self) token = self._input.LA(1) if token in [25]: self.enterOuterAlt(localctx, 1) - self.state = 514 + self.state = 518 self.variable_decl() pass elif token in [29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69]: self.enterOuterAlt(localctx, 2) - self.state = 515 + self.state = 519 self.comparison_func() pass elif token in [108]: self.enterOuterAlt(localctx, 3) - self.state = 516 + self.state = 520 self.next_decl() pass elif token in [10]: self.enterOuterAlt(localctx, 4) - self.state = 517 + self.state = 521 self.comment_decl() pass else: @@ -4617,17 +4640,17 @@ def comparison_composite_stmt(self): localctx = ASLParser.Comparison_composite_stmtContext(self, self._ctx, self.state) self.enterRule(localctx, 94, self.RULE_comparison_composite_stmt) try: - self.state = 522 + self.state = 526 self._errHandler.sync(self) token = self._input.LA(1) if token in [28, 37, 48]: self.enterOuterAlt(localctx, 1) - self.state = 520 + self.state = 524 self.comparison_composite() pass elif token in [108]: self.enterOuterAlt(localctx, 2) - self.state = 521 + self.state = 525 self.next_decl() pass else: @@ -4702,35 +4725,35 @@ def comparison_composite(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 524 + self.state = 528 self.choice_operator() - self.state = 525 + self.state = 529 self.match(ASLParser.COLON) - self.state = 538 + self.state = 542 self._errHandler.sync(self) token = self._input.LA(1) if token in [5]: - self.state = 526 + self.state = 530 self.choice_rule() pass elif token in [3]: - self.state = 527 + self.state = 531 self.match(ASLParser.LBRACK) - self.state = 528 + self.state = 532 self.choice_rule() - self.state = 533 + self.state = 537 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 529 + self.state = 533 self.match(ASLParser.COMMA) - self.state = 530 + self.state = 534 self.choice_rule() - self.state = 535 + self.state = 539 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 536 + self.state = 540 self.match(ASLParser.RBRACK) pass else: @@ -4788,11 +4811,11 @@ def variable_decl(self): self.enterRule(localctx, 98, self.RULE_variable_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 540 + self.state = 544 self.match(ASLParser.VARIABLE) - self.state = 541 + self.state = 545 self.match(ASLParser.COLON) - self.state = 542 + self.state = 546 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -4847,11 +4870,11 @@ def comparison_func(self): self.enterRule(localctx, 100, self.RULE_comparison_func) try: self.enterOuterAlt(localctx, 1) - self.state = 544 + self.state = 548 self.comparison_op() - self.state = 545 + self.state = 549 self.match(ASLParser.COLON) - self.state = 546 + self.state = 550 self.json_value_decl() except RecognitionException as re: localctx.exception = re @@ -4921,27 +4944,27 @@ def branches_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 548 + self.state = 552 self.match(ASLParser.BRANCHES) - self.state = 549 + self.state = 553 self.match(ASLParser.COLON) - self.state = 550 + self.state = 554 self.match(ASLParser.LBRACK) - self.state = 551 + self.state = 555 self.program_decl() - self.state = 556 + self.state = 560 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 552 + self.state = 556 self.match(ASLParser.COMMA) - self.state = 553 + self.state = 557 self.program_decl() - self.state = 558 + self.state = 562 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 559 + self.state = 563 self.match(ASLParser.RBRACK) except RecognitionException as re: localctx.exception = re @@ -5011,27 +5034,27 @@ def item_processor_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 561 + self.state = 565 self.match(ASLParser.ITEMPROCESSOR) - self.state = 562 + self.state = 566 self.match(ASLParser.COLON) - self.state = 563 + self.state = 567 self.match(ASLParser.LBRACE) - self.state = 564 + self.state = 568 self.item_processor_item() - self.state = 569 + self.state = 573 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 565 + self.state = 569 self.match(ASLParser.COMMA) - self.state = 566 + self.state = 570 self.item_processor_item() - self.state = 571 + self.state = 575 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 572 + self.state = 576 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -5090,27 +5113,27 @@ def item_processor_item(self): localctx = ASLParser.Item_processor_itemContext(self, self._ctx, self.state) self.enterRule(localctx, 106, self.RULE_item_processor_item) try: - self.state = 578 + self.state = 582 self._errHandler.sync(self) token = self._input.LA(1) if token in [78]: self.enterOuterAlt(localctx, 1) - self.state = 574 + self.state = 578 self.processor_config_decl() pass elif token in [12]: self.enterOuterAlt(localctx, 2) - self.state = 575 + self.state = 579 self.startat_decl() pass elif token in [11]: self.enterOuterAlt(localctx, 3) - self.state = 576 + self.state = 580 self.states_decl() pass elif token in [10]: self.enterOuterAlt(localctx, 4) - self.state = 577 + self.state = 581 self.comment_decl() pass else: @@ -5184,27 +5207,27 @@ def processor_config_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 580 + self.state = 584 self.match(ASLParser.PROCESSORCONFIG) - self.state = 581 + self.state = 585 self.match(ASLParser.COLON) - self.state = 582 + self.state = 586 self.match(ASLParser.LBRACE) - self.state = 583 + self.state = 587 self.processor_config_field() - self.state = 588 + self.state = 592 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 584 + self.state = 588 self.match(ASLParser.COMMA) - self.state = 585 + self.state = 589 self.processor_config_field() - self.state = 590 + self.state = 594 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 591 + self.state = 595 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -5255,17 +5278,17 @@ def processor_config_field(self): localctx = ASLParser.Processor_config_fieldContext(self, self._ctx, self.state) self.enterRule(localctx, 110, self.RULE_processor_config_field) try: - self.state = 595 + self.state = 599 self._errHandler.sync(self) token = self._input.LA(1) if token in [79]: self.enterOuterAlt(localctx, 1) - self.state = 593 + self.state = 597 self.mode_decl() pass elif token in [82]: self.enterOuterAlt(localctx, 2) - self.state = 594 + self.state = 598 self.execution_decl() pass else: @@ -5323,11 +5346,11 @@ def mode_decl(self): self.enterRule(localctx, 112, self.RULE_mode_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 597 + self.state = 601 self.match(ASLParser.MODE) - self.state = 598 + self.state = 602 self.match(ASLParser.COLON) - self.state = 599 + self.state = 603 self.mode_type() except RecognitionException as re: localctx.exception = re @@ -5378,7 +5401,7 @@ def mode_type(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 601 + self.state = 605 _la = self._input.LA(1) if not(_la==80 or _la==81): self._errHandler.recoverInline(self) @@ -5437,11 +5460,11 @@ def execution_decl(self): self.enterRule(localctx, 116, self.RULE_execution_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 603 + self.state = 607 self.match(ASLParser.EXECUTIONTYPE) - self.state = 604 + self.state = 608 self.match(ASLParser.COLON) - self.state = 605 + self.state = 609 self.execution_type() except RecognitionException as re: localctx.exception = re @@ -5488,7 +5511,7 @@ def execution_type(self): self.enterRule(localctx, 118, self.RULE_execution_type) try: self.enterOuterAlt(localctx, 1) - self.state = 607 + self.state = 611 self.match(ASLParser.STANDARD) except RecognitionException as re: localctx.exception = re @@ -5558,27 +5581,27 @@ def iterator_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 609 + self.state = 613 self.match(ASLParser.ITERATOR) - self.state = 610 + self.state = 614 self.match(ASLParser.COLON) - self.state = 611 + self.state = 615 self.match(ASLParser.LBRACE) - self.state = 612 + self.state = 616 self.iterator_decl_item() - self.state = 617 + self.state = 621 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 613 + self.state = 617 self.match(ASLParser.COMMA) - self.state = 614 + self.state = 618 self.iterator_decl_item() - self.state = 619 + self.state = 623 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 620 + self.state = 624 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -5637,27 +5660,27 @@ def iterator_decl_item(self): localctx = ASLParser.Iterator_decl_itemContext(self, self._ctx, self.state) self.enterRule(localctx, 122, self.RULE_iterator_decl_item) try: - self.state = 626 + self.state = 630 self._errHandler.sync(self) token = self._input.LA(1) if token in [12]: self.enterOuterAlt(localctx, 1) - self.state = 622 + self.state = 626 self.startat_decl() pass elif token in [11]: self.enterOuterAlt(localctx, 2) - self.state = 623 + self.state = 627 self.states_decl() pass elif token in [10]: self.enterOuterAlt(localctx, 3) - self.state = 624 + self.state = 628 self.comment_decl() pass elif token in [78]: self.enterOuterAlt(localctx, 4) - self.state = 625 + self.state = 629 self.processor_config_decl() pass else: @@ -5715,11 +5738,11 @@ def item_selector_decl(self): self.enterRule(localctx, 124, self.RULE_item_selector_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 628 + self.state = 632 self.match(ASLParser.ITEMSELECTOR) - self.state = 629 + self.state = 633 self.match(ASLParser.COLON) - self.state = 630 + self.state = 634 self.payload_tmpl_decl() except RecognitionException as re: localctx.exception = re @@ -5789,27 +5812,27 @@ def item_reader_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 632 + self.state = 636 self.match(ASLParser.ITEMREADER) - self.state = 633 + self.state = 637 self.match(ASLParser.COLON) - self.state = 634 + self.state = 638 self.match(ASLParser.LBRACE) - self.state = 635 + self.state = 639 self.items_reader_field() - self.state = 640 + self.state = 644 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 636 + self.state = 640 self.match(ASLParser.COMMA) - self.state = 637 + self.state = 641 self.items_reader_field() - self.state = 642 + self.state = 646 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 643 + self.state = 647 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -5864,22 +5887,22 @@ def items_reader_field(self): localctx = ASLParser.Items_reader_fieldContext(self, self._ctx, self.state) self.enterRule(localctx, 128, self.RULE_items_reader_field) try: - self.state = 648 + self.state = 652 self._errHandler.sync(self) token = self._input.LA(1) if token in [89]: self.enterOuterAlt(localctx, 1) - self.state = 645 + self.state = 649 self.resource_decl() pass elif token in [95]: self.enterOuterAlt(localctx, 2) - self.state = 646 + self.state = 650 self.parameters_decl() pass elif token in [98]: self.enterOuterAlt(localctx, 3) - self.state = 647 + self.state = 651 self.reader_config_decl() pass else: @@ -5953,27 +5976,27 @@ def reader_config_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 650 + self.state = 654 self.match(ASLParser.READERCONFIG) - self.state = 651 + self.state = 655 self.match(ASLParser.COLON) - self.state = 652 + self.state = 656 self.match(ASLParser.LBRACE) - self.state = 653 + self.state = 657 self.reader_config_field() - self.state = 658 + self.state = 662 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 654 + self.state = 658 self.match(ASLParser.COMMA) - self.state = 655 + self.state = 659 self.reader_config_field() - self.state = 660 + self.state = 664 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 661 + self.state = 665 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -6036,32 +6059,32 @@ def reader_config_field(self): localctx = ASLParser.Reader_config_fieldContext(self, self._ctx, self.state) self.enterRule(localctx, 132, self.RULE_reader_config_field) try: - self.state = 668 + self.state = 672 self._errHandler.sync(self) token = self._input.LA(1) if token in [99]: self.enterOuterAlt(localctx, 1) - self.state = 663 + self.state = 667 self.input_type_decl() pass elif token in [100]: self.enterOuterAlt(localctx, 2) - self.state = 664 + self.state = 668 self.csv_header_location_decl() pass elif token in [101]: self.enterOuterAlt(localctx, 3) - self.state = 665 + self.state = 669 self.csv_headers_decl() pass elif token in [102]: self.enterOuterAlt(localctx, 4) - self.state = 666 + self.state = 670 self.max_items_decl() pass elif token in [103]: self.enterOuterAlt(localctx, 5) - self.state = 667 + self.state = 671 self.max_items_path_decl() pass else: @@ -6119,11 +6142,11 @@ def input_type_decl(self): self.enterRule(localctx, 134, self.RULE_input_type_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 670 + self.state = 674 self.match(ASLParser.INPUTTYPE) - self.state = 671 + self.state = 675 self.match(ASLParser.COLON) - self.state = 672 + self.state = 676 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -6177,11 +6200,11 @@ def csv_header_location_decl(self): self.enterRule(localctx, 136, self.RULE_csv_header_location_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 674 + self.state = 678 self.match(ASLParser.CSVHEADERLOCATION) - self.state = 675 + self.state = 679 self.match(ASLParser.COLON) - self.state = 676 + self.state = 680 self.keyword_or_string() except RecognitionException as re: localctx.exception = re @@ -6251,27 +6274,27 @@ def csv_headers_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 678 + self.state = 682 self.match(ASLParser.CSVHEADERS) - self.state = 679 + self.state = 683 self.match(ASLParser.COLON) - self.state = 680 + self.state = 684 self.match(ASLParser.LBRACK) - self.state = 681 + self.state = 685 self.keyword_or_string() - self.state = 686 + self.state = 690 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 682 + self.state = 686 self.match(ASLParser.COMMA) - self.state = 683 + self.state = 687 self.keyword_or_string() - self.state = 688 + self.state = 692 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 689 + self.state = 693 self.match(ASLParser.RBRACK) except RecognitionException as re: localctx.exception = re @@ -6324,11 +6347,11 @@ def max_items_decl(self): self.enterRule(localctx, 140, self.RULE_max_items_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 691 + self.state = 695 self.match(ASLParser.MAXITEMS) - self.state = 692 + self.state = 696 self.match(ASLParser.COLON) - self.state = 693 + self.state = 697 self.match(ASLParser.INT) except RecognitionException as re: localctx.exception = re @@ -6381,11 +6404,11 @@ def max_items_path_decl(self): self.enterRule(localctx, 142, self.RULE_max_items_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 695 + self.state = 699 self.match(ASLParser.MAXITEMSPATH) - self.state = 696 + self.state = 700 self.match(ASLParser.COLON) - self.state = 697 + self.state = 701 self.match(ASLParser.STRINGPATH) except RecognitionException as re: localctx.exception = re @@ -6438,11 +6461,11 @@ def tolerated_failure_count_decl(self): self.enterRule(localctx, 144, self.RULE_tolerated_failure_count_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 699 + self.state = 703 self.match(ASLParser.TOLERATEDFAILURECOUNT) - self.state = 700 + self.state = 704 self.match(ASLParser.COLON) - self.state = 701 + self.state = 705 self.match(ASLParser.INT) except RecognitionException as re: localctx.exception = re @@ -6495,11 +6518,11 @@ def tolerated_failure_count_path_decl(self): self.enterRule(localctx, 146, self.RULE_tolerated_failure_count_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 703 + self.state = 707 self.match(ASLParser.TOLERATEDFAILURECOUNTPATH) - self.state = 704 + self.state = 708 self.match(ASLParser.COLON) - self.state = 705 + self.state = 709 self.match(ASLParser.STRINGPATH) except RecognitionException as re: localctx.exception = re @@ -6552,11 +6575,11 @@ def tolerated_failure_percentage_decl(self): self.enterRule(localctx, 148, self.RULE_tolerated_failure_percentage_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 707 + self.state = 711 self.match(ASLParser.TOLERATEDFAILUREPERCENTAGE) - self.state = 708 + self.state = 712 self.match(ASLParser.COLON) - self.state = 709 + self.state = 713 self.match(ASLParser.NUMBER) except RecognitionException as re: localctx.exception = re @@ -6609,11 +6632,11 @@ def tolerated_failure_percentage_path_decl(self): self.enterRule(localctx, 150, self.RULE_tolerated_failure_percentage_path_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 711 + self.state = 715 self.match(ASLParser.TOLERATEDFAILUREPERCENTAGEPATH) - self.state = 712 + self.state = 716 self.match(ASLParser.COLON) - self.state = 713 + self.state = 717 self.match(ASLParser.STRINGPATH) except RecognitionException as re: localctx.exception = re @@ -6683,33 +6706,33 @@ def retry_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 715 + self.state = 719 self.match(ASLParser.RETRY) - self.state = 716 + self.state = 720 self.match(ASLParser.COLON) - self.state = 717 + self.state = 721 self.match(ASLParser.LBRACK) - self.state = 726 + self.state = 730 self._errHandler.sync(self) _la = self._input.LA(1) if _la==5: - self.state = 718 + self.state = 722 self.retrier_decl() - self.state = 723 + self.state = 727 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 719 + self.state = 723 self.match(ASLParser.COMMA) - self.state = 720 + self.state = 724 self.retrier_decl() - self.state = 725 + self.state = 729 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 728 + self.state = 732 self.match(ASLParser.RBRACK) except RecognitionException as re: localctx.exception = re @@ -6773,23 +6796,23 @@ def retrier_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 730 + self.state = 734 self.match(ASLParser.LBRACE) - self.state = 731 + self.state = 735 self.retrier_stmt() - self.state = 736 + self.state = 740 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 732 + self.state = 736 self.match(ASLParser.COMMA) - self.state = 733 + self.state = 737 self.retrier_stmt() - self.state = 738 + self.state = 742 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 739 + self.state = 743 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -6860,42 +6883,42 @@ def retrier_stmt(self): localctx = ASLParser.Retrier_stmtContext(self, self._ctx, self.state) self.enterRule(localctx, 156, self.RULE_retrier_stmt) try: - self.state = 748 + self.state = 752 self._errHandler.sync(self) token = self._input.LA(1) if token in [115]: self.enterOuterAlt(localctx, 1) - self.state = 741 + self.state = 745 self.error_equals_decl() pass elif token in [116]: self.enterOuterAlt(localctx, 2) - self.state = 742 + self.state = 746 self.interval_seconds_decl() pass elif token in [117]: self.enterOuterAlt(localctx, 3) - self.state = 743 + self.state = 747 self.max_attempts_decl() pass elif token in [118]: self.enterOuterAlt(localctx, 4) - self.state = 744 + self.state = 748 self.backoff_rate_decl() pass elif token in [119]: self.enterOuterAlt(localctx, 5) - self.state = 745 + self.state = 749 self.max_delay_seconds_decl() pass elif token in [120]: self.enterOuterAlt(localctx, 6) - self.state = 746 + self.state = 750 self.jitter_strategy_decl() pass elif token in [10]: self.enterOuterAlt(localctx, 7) - self.state = 747 + self.state = 751 self.comment_decl() pass else: @@ -6969,27 +6992,27 @@ def error_equals_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 750 + self.state = 754 self.match(ASLParser.ERROREQUALS) - self.state = 751 + self.state = 755 self.match(ASLParser.COLON) - self.state = 752 + self.state = 756 self.match(ASLParser.LBRACK) - self.state = 753 + self.state = 757 self.error_name() - self.state = 758 + self.state = 762 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 754 + self.state = 758 self.match(ASLParser.COMMA) - self.state = 755 + self.state = 759 self.error_name() - self.state = 760 + self.state = 764 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 761 + self.state = 765 self.match(ASLParser.RBRACK) except RecognitionException as re: localctx.exception = re @@ -7042,11 +7065,11 @@ def interval_seconds_decl(self): self.enterRule(localctx, 160, self.RULE_interval_seconds_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 763 + self.state = 767 self.match(ASLParser.INTERVALSECONDS) - self.state = 764 + self.state = 768 self.match(ASLParser.COLON) - self.state = 765 + self.state = 769 self.match(ASLParser.INT) except RecognitionException as re: localctx.exception = re @@ -7099,11 +7122,11 @@ def max_attempts_decl(self): self.enterRule(localctx, 162, self.RULE_max_attempts_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 767 + self.state = 771 self.match(ASLParser.MAXATTEMPTS) - self.state = 768 + self.state = 772 self.match(ASLParser.COLON) - self.state = 769 + self.state = 773 self.match(ASLParser.INT) except RecognitionException as re: localctx.exception = re @@ -7160,11 +7183,11 @@ def backoff_rate_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 771 + self.state = 775 self.match(ASLParser.BACKOFFRATE) - self.state = 772 + self.state = 776 self.match(ASLParser.COLON) - self.state = 773 + self.state = 777 _la = self._input.LA(1) if not(_la==143 or _la==144): self._errHandler.recoverInline(self) @@ -7222,11 +7245,11 @@ def max_delay_seconds_decl(self): self.enterRule(localctx, 166, self.RULE_max_delay_seconds_decl) try: self.enterOuterAlt(localctx, 1) - self.state = 775 + self.state = 779 self.match(ASLParser.MAXDELAYSECONDS) - self.state = 776 + self.state = 780 self.match(ASLParser.COLON) - self.state = 777 + self.state = 781 self.match(ASLParser.INT) except RecognitionException as re: localctx.exception = re @@ -7283,11 +7306,11 @@ def jitter_strategy_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 779 + self.state = 783 self.match(ASLParser.JITTERSTRATEGY) - self.state = 780 + self.state = 784 self.match(ASLParser.COLON) - self.state = 781 + self.state = 785 _la = self._input.LA(1) if not(_la==121 or _la==122): self._errHandler.recoverInline(self) @@ -7362,33 +7385,33 @@ def catch_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 783 + self.state = 787 self.match(ASLParser.CATCH) - self.state = 784 + self.state = 788 self.match(ASLParser.COLON) - self.state = 785 + self.state = 789 self.match(ASLParser.LBRACK) - self.state = 794 + self.state = 798 self._errHandler.sync(self) _la = self._input.LA(1) if _la==5: - self.state = 786 + self.state = 790 self.catcher_decl() - self.state = 791 + self.state = 795 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 787 + self.state = 791 self.match(ASLParser.COMMA) - self.state = 788 + self.state = 792 self.catcher_decl() - self.state = 793 + self.state = 797 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 796 + self.state = 800 self.match(ASLParser.RBRACK) except RecognitionException as re: localctx.exception = re @@ -7452,23 +7475,23 @@ def catcher_decl(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 798 + self.state = 802 self.match(ASLParser.LBRACE) - self.state = 799 + self.state = 803 self.catcher_stmt() - self.state = 804 + self.state = 808 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 800 + self.state = 804 self.match(ASLParser.COMMA) - self.state = 801 + self.state = 805 self.catcher_stmt() - self.state = 806 + self.state = 810 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 807 + self.state = 811 self.match(ASLParser.RBRACE) except RecognitionException as re: localctx.exception = re @@ -7527,27 +7550,27 @@ def catcher_stmt(self): localctx = ASLParser.Catcher_stmtContext(self, self._ctx, self.state) self.enterRule(localctx, 174, self.RULE_catcher_stmt) try: - self.state = 813 + self.state = 817 self._errHandler.sync(self) token = self._input.LA(1) if token in [115]: self.enterOuterAlt(localctx, 1) - self.state = 809 + self.state = 813 self.error_equals_decl() pass elif token in [93]: self.enterOuterAlt(localctx, 2) - self.state = 810 + self.state = 814 self.result_path_decl() pass elif token in [108]: self.enterOuterAlt(localctx, 3) - self.state = 811 + self.state = 815 self.next_decl() pass elif token in [10]: self.enterOuterAlt(localctx, 4) - self.state = 812 + self.state = 816 self.comment_decl() pass else: @@ -7713,7 +7736,7 @@ def comparison_op(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 815 + self.state = 819 _la = self._input.LA(1) if not(((((_la - 29)) & ~0x3f) == 0 and ((1 << (_la - 29)) & 2199022731007) != 0)): self._errHandler.recoverInline(self) @@ -7772,7 +7795,7 @@ def choice_operator(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 817 + self.state = 821 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 281612684099584) != 0)): self._errHandler.recoverInline(self) @@ -7867,7 +7890,7 @@ def states_error_name(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 819 + self.state = 823 _la = self._input.LA(1) if not(((((_la - 124)) & ~0x3f) == 0 and ((1 << (_la - 124)) & 32767) != 0)): self._errHandler.recoverInline(self) @@ -7923,18 +7946,18 @@ def error_name(self): localctx = ASLParser.Error_nameContext(self, self._ctx, self.state) self.enterRule(localctx, 182, self.RULE_error_name) try: - self.state = 823 + self.state = 827 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,46,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 821 + self.state = 825 self.states_error_name() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 822 + self.state = 826 self.keyword_or_string() pass @@ -8000,36 +8023,36 @@ def json_obj_decl(self): self.enterRule(localctx, 184, self.RULE_json_obj_decl) self._la = 0 # Token type try: - self.state = 838 + self.state = 842 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,48,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 825 + self.state = 829 self.match(ASLParser.LBRACE) - self.state = 826 + self.state = 830 self.json_binding() - self.state = 831 + self.state = 835 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 827 + self.state = 831 self.match(ASLParser.COMMA) - self.state = 828 + self.state = 832 self.json_binding() - self.state = 833 + self.state = 837 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 834 + self.state = 838 self.match(ASLParser.RBRACE) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 836 + self.state = 840 self.match(ASLParser.LBRACE) - self.state = 837 + self.state = 841 self.match(ASLParser.RBRACE) pass @@ -8087,11 +8110,11 @@ def json_binding(self): self.enterRule(localctx, 186, self.RULE_json_binding) try: self.enterOuterAlt(localctx, 1) - self.state = 840 + self.state = 844 self.keyword_or_string() - self.state = 841 + self.state = 845 self.match(ASLParser.COLON) - self.state = 842 + self.state = 846 self.json_value_decl() except RecognitionException as re: localctx.exception = re @@ -8154,36 +8177,36 @@ def json_arr_decl(self): self.enterRule(localctx, 188, self.RULE_json_arr_decl) self._la = 0 # Token type try: - self.state = 857 + self.state = 861 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,50,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 844 + self.state = 848 self.match(ASLParser.LBRACK) - self.state = 845 + self.state = 849 self.json_value_decl() - self.state = 850 + self.state = 854 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 846 + self.state = 850 self.match(ASLParser.COMMA) - self.state = 847 + self.state = 851 self.json_value_decl() - self.state = 852 + self.state = 856 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 853 + self.state = 857 self.match(ASLParser.RBRACK) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 855 + self.state = 859 self.match(ASLParser.LBRACK) - self.state = 856 + self.state = 860 self.match(ASLParser.RBRACK) pass @@ -8260,60 +8283,60 @@ def json_value_decl(self): localctx = ASLParser.Json_value_declContext(self, self._ctx, self.state) self.enterRule(localctx, 190, self.RULE_json_value_decl) try: - self.state = 868 + self.state = 872 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,51,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 859 + self.state = 863 self.match(ASLParser.NUMBER) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 860 + self.state = 864 self.match(ASLParser.INT) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 861 + self.state = 865 self.match(ASLParser.TRUE) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 862 + self.state = 866 self.match(ASLParser.FALSE) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 863 + self.state = 867 self.match(ASLParser.NULL) pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 864 + self.state = 868 self.json_binding() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 865 + self.state = 869 self.json_arr_decl() pass elif la_ == 8: self.enterOuterAlt(localctx, 8) - self.state = 866 + self.state = 870 self.json_obj_decl() pass elif la_ == 9: self.enterOuterAlt(localctx, 9) - self.state = 867 + self.state = 871 self.keyword_or_string() pass @@ -8748,7 +8771,7 @@ def keyword_or_string(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 870 + self.state = 874 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & -17408) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -2306546696655470593) != 0) or ((((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 32767) != 0)): self._errHandler.recoverInline(self) @@ -8764,6 +8787,64 @@ def keyword_or_string(self): return localctx + class Unknown_binding_declContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRING(self): + return self.getToken(ASLParser.STRING, 0) + + def COLON(self): + return self.getToken(ASLParser.COLON, 0) + + def json_value_decl(self): + return self.getTypedRuleContext(ASLParser.Json_value_declContext,0) + + + def getRuleIndex(self): + return ASLParser.RULE_unknown_binding_decl + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUnknown_binding_decl" ): + listener.enterUnknown_binding_decl(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUnknown_binding_decl" ): + listener.exitUnknown_binding_decl(self) + + def accept(self, visitor:ParseTreeVisitor): + if hasattr( visitor, "visitUnknown_binding_decl" ): + return visitor.visitUnknown_binding_decl(self) + else: + return visitor.visitChildren(self) + + + + + def unknown_binding_decl(self): + + localctx = ASLParser.Unknown_binding_declContext(self, self._ctx, self.state) + self.enterRule(localctx, 194, self.RULE_unknown_binding_decl) + try: + self.enterOuterAlt(localctx, 1) + self.state = 876 + self.match(ASLParser.STRING) + self.state = 877 + self.match(ASLParser.COLON) + self.state = 878 + self.json_value_decl() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + diff --git a/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParserListener.py b/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParserListener.py index 47a0055dfb2d4..8c337e6abca9a 100644 --- a/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParserListener.py +++ b/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParserListener.py @@ -971,5 +971,14 @@ def exitKeyword_or_string(self, ctx:ASLParser.Keyword_or_stringContext): pass + # Enter a parse tree produced by ASLParser#unknown_binding_decl. + def enterUnknown_binding_decl(self, ctx:ASLParser.Unknown_binding_declContext): + pass + + # Exit a parse tree produced by ASLParser#unknown_binding_decl. + def exitUnknown_binding_decl(self, ctx:ASLParser.Unknown_binding_declContext): + pass + + del ASLParser \ No newline at end of file diff --git a/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParserVisitor.py b/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParserVisitor.py index 1e05ef838f5c0..508af4ad72f85 100644 --- a/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParserVisitor.py +++ b/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParserVisitor.py @@ -544,5 +544,10 @@ def visitKeyword_or_string(self, ctx:ASLParser.Keyword_or_stringContext): return self.visitChildren(ctx) + # Visit a parse tree produced by ASLParser#unknown_binding_decl. + def visitUnknown_binding_decl(self, ctx:ASLParser.Unknown_binding_declContext): + return self.visitChildren(ctx) + + del ASLParser \ No newline at end of file diff --git a/localstack-core/localstack/services/stepfunctions/asl/parse/preprocessor.py b/localstack-core/localstack/services/stepfunctions/asl/parse/preprocessor.py index 53978c5a5fe7a..c51aae9614485 100644 --- a/localstack-core/localstack/services/stepfunctions/asl/parse/preprocessor.py +++ b/localstack-core/localstack/services/stepfunctions/asl/parse/preprocessor.py @@ -1,4 +1,5 @@ import json +import logging from typing import Optional from antlr4 import ParserRuleContext @@ -237,6 +238,8 @@ from localstack.services.stepfunctions.asl.component.states import States from localstack.services.stepfunctions.asl.parse.typed_props import TypedProps +LOG = logging.getLogger(__name__) + class Preprocessor(ASLParserVisitor): @staticmethod @@ -915,3 +918,12 @@ def visitProgram_decl(self, ctx: ASLParser.Program_declContext) -> Program: def visitState_machine(self, ctx: ASLParser.State_machineContext) -> Program: return self.visit(ctx.program_decl()) + + def visitUnknown_binding_decl(self, ctx: ASLParser.Unknown_binding_declContext) -> None: + binding_name = self._inner_string_of(parse_tree=ctx.STRING()) + json_decl = ctx.json_value_decl() + json_str: str = json_decl.getText() + LOG.warning( + f"Unsupported declaration '{binding_name}' with value '{json_str}' " + f"will not be evaluated during program execution." + ) diff --git a/tests/aws/services/stepfunctions/v2/base/test_base.py b/tests/aws/services/stepfunctions/v2/base/test_base.py index c5817c681ba88..06ba9d61ba45c 100644 --- a/tests/aws/services/stepfunctions/v2/base/test_base.py +++ b/tests/aws/services/stepfunctions/v2/base/test_base.py @@ -396,3 +396,29 @@ def test_state_pass_regex_json_path( definition, exec_input, ) + + @markers.aws.validated + def test_unknown_bindings( + self, + aws_client, + create_iam_role_for_sfn, + create_state_machine, + sfn_snapshot, + ): + template = BaseTemplate.load_sfn_template(BaseTemplate.BASE_PASS_RESULT) + + if not is_aws_cloud(): + template["UnknownBinding"] = "StringValue" + template["States"]["State_1"]["UnknownBinding"] = {"KeyValue": [], "End": {}} + + definition = json.dumps(template) + + exec_input = json.dumps({}) + create_and_record_execution( + aws_client.stepfunctions, + create_iam_role_for_sfn, + create_state_machine, + sfn_snapshot, + definition, + exec_input, + ) diff --git a/tests/aws/services/stepfunctions/v2/base/test_base.snapshot.json b/tests/aws/services/stepfunctions/v2/base/test_base.snapshot.json index 89adf30e07ee8..e63d36aa6d5d7 100644 --- a/tests/aws/services/stepfunctions/v2/base/test_base.snapshot.json +++ b/tests/aws/services/stepfunctions/v2/base/test_base.snapshot.json @@ -1108,5 +1108,73 @@ } } } + }, + "tests/aws/services/stepfunctions/v2/base/test_base.py::TestSnfBase::test_unknown_bindings": { + "recorded-date": "19-06-2024, 15:51:06", + "recorded-content": { + "get_execution_history": { + "events": [ + { + "executionStartedEventDetails": { + "input": {}, + "inputDetails": { + "truncated": false + }, + "roleArn": "snf_role_arn" + }, + "id": 1, + "previousEventId": 0, + "timestamp": "timestamp", + "type": "ExecutionStarted" + }, + { + "id": 2, + "previousEventId": 0, + "stateEnteredEventDetails": { + "input": {}, + "inputDetails": { + "truncated": false + }, + "name": "State_1" + }, + "timestamp": "timestamp", + "type": "PassStateEntered" + }, + { + "id": 3, + "previousEventId": 2, + "stateExitedEventDetails": { + "name": "State_1", + "output": { + "Arg1": "argument1" + }, + "outputDetails": { + "truncated": false + } + }, + "timestamp": "timestamp", + "type": "PassStateExited" + }, + { + "executionSucceededEventDetails": { + "output": { + "Arg1": "argument1" + }, + "outputDetails": { + "truncated": false + } + }, + "id": 4, + "previousEventId": 3, + "timestamp": "timestamp", + "type": "ExecutionSucceeded" + } + ], + "ResponseMetadata": { + "HTTPHeaders": {}, + "HTTPStatusCode": 200 + } + } + } } } diff --git a/tests/aws/services/stepfunctions/v2/base/test_base.validation.json b/tests/aws/services/stepfunctions/v2/base/test_base.validation.json index 869a9c59fc5cb..fafff5a5e0eb1 100644 --- a/tests/aws/services/stepfunctions/v2/base/test_base.validation.json +++ b/tests/aws/services/stepfunctions/v2/base/test_base.validation.json @@ -31,5 +31,8 @@ }, "tests/aws/services/stepfunctions/v2/base/test_base.py::TestSnfBase::test_state_pass_result_null_input_output_paths": { "last_validated_date": "2024-02-07T13:52:29+00:00" + }, + "tests/aws/services/stepfunctions/v2/base/test_base.py::TestSnfBase::test_unknown_bindings": { + "last_validated_date": "2024-06-19T15:51:06+00:00" } }