State 0:
          input ::= * processes
      (1) processes ::= *
          processes ::= * INCLUDE STRING processes
          processes ::= * INCLUDE_GUARD STRING processes
          processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes
          process_or_template ::= * PROCESS
          process_or_template ::= * TEMPLATE

                       INCLUDE shift  34
                 INCLUDE_GUARD shift  35
                       PROCESS shift  75
                      TEMPLATE shift  76
                     processes shift  33
           process_or_template shift  36
                         input accept
                     {default} reduce 1

State 1:
          statement ::= dotted_name ROUND_OPEN * statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
     (20) statement_args_maybe ::= *
          statement_args_maybe ::= * list_contents
          list_contents ::= * value
          list_contents ::= * value COMMA list_contents
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                   dotted_name shift  86
          statement_args_maybe shift  39
                 list_contents shift  80
                          list shift  87
                           map shift  88
                         value shift  42
                     {default} reduce 20

State 2:
          statement ::= dotted_name ARROW dotted_name ROUND_OPEN * statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
     (20) statement_args_maybe ::= *
          statement_args_maybe ::= * list_contents
          list_contents ::= * value
          list_contents ::= * value COMMA list_contents
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                   dotted_name shift  86
          statement_args_maybe shift  48
                 list_contents shift  80
                          list shift  87
                           map shift  88
                         value shift  42
                     {default} reduce 20

State 3:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list_contents ::= * value
          list_contents ::= * value COMMA list_contents
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= CURLY_OPEN * CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          list ::= CURLY_OPEN * list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                   CURLY_CLOSE shift  82
                  BRACKET_OPEN shift  4
                   dotted_name shift  86
                 list_contents shift  43
                          list shift  87
                           map shift  88
                         value shift  42

State 4:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map_contents ::= * value COLON value
          map_contents ::= * value COLON value COMMA map_contents
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= BRACKET_OPEN * BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          map ::= BRACKET_OPEN * map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                 BRACKET_CLOSE shift  89
                   dotted_name shift  86
                          list shift  87
                  map_contents shift  46
                           map shift  88
                         value shift  44

State 5:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list_contents ::= * value
          list_contents ::= * value COMMA list_contents
          list_contents ::= value COMMA * list_contents
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                   dotted_name shift  86
                 list_contents shift  81
                          list shift  87
                           map shift  88
                         value shift  42

State 6:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map_contents ::= * value COLON value
          map_contents ::= * value COLON value COMMA map_contents
          map_contents ::= value COLON value COMMA * map_contents
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                   dotted_name shift  86
                          list shift  87
                  map_contents shift  84
                           map shift  88
                         value shift  44

State 7:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map_contents ::= value COLON * value
          map_contents ::= value COLON * value COMMA map_contents
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                   dotted_name shift  86
                          list shift  87
                           map shift  88
                         value shift  45

State 8:
          statement ::= IF ROUND_OPEN * value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                   dotted_name shift  86
                          list shift  87
                           map shift  88
                         value shift  51

State 9:
          statement ::= FOREACH ROUND_OPEN * value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN * value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                   dotted_name shift  86
                          list shift  87
                           map shift  88
                         value shift  57

State 10:
          elif ::= ELIF ROUND_OPEN * value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN * value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          list ::= * CURLY_OPEN CURLY_CLOSE
          list ::= * CURLY_OPEN list_contents CURLY_CLOSE
          map ::= * BRACKET_OPEN BRACKET_CLOSE
          map ::= * BRACKET_OPEN map_contents BRACKET_CLOSE
          value ::= * STRING
          value ::= * dotted_name
          value ::= * list
          value ::= * map

                        STRING shift  85
                          NAME shift  41
                    CURLY_OPEN shift  3
                  BRACKET_OPEN shift  4
                   dotted_name shift  86
                          list shift  87
                           map shift  88
                         value shift  69

State 11:
          processes ::= process_or_template NAME CURLY_OPEN * statements CURLY_CLOSE processes
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  41
                            IF shift  50
                       FOREACH shift  56
                     statement shift  15
                    statements shift  38
                   dotted_name shift  31

State 12:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  41
                            IF shift  50
                       FOREACH shift  56
                     statement shift  15
                    statements shift  53
                   dotted_name shift  31

State 13:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          else_maybe ::= ELSE CURLY_OPEN * statements CURLY_CLOSE
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  41
                            IF shift  50
                       FOREACH shift  56
                     statement shift  15
                    statements shift  67
                   dotted_name shift  31

State 14:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  41
                            IF shift  50
                       FOREACH shift  56
                     statement shift  15
                    statements shift  60
                   dotted_name shift  31

State 15:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
     (16) statements ::= statement *
          statements ::= * statement statements
          statements ::= statement * statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  41
                            IF shift  50
                       FOREACH shift  56
                     statement shift  15
                    statements shift  94
                   dotted_name shift  31
                     {default} reduce 16

State 16:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE name_maybe SEMICOLON
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  41
                            IF shift  50
                       FOREACH shift  56
                     statement shift  15
                    statements shift  65
                   dotted_name shift  31

State 17:
          statement ::= * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= * IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= * FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN * statements CURLY_CLOSE elif
          statements ::= * statement
          statements ::= * statement statements
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  41
                            IF shift  50
                       FOREACH shift  56
                     statement shift  15
                    statements shift  71
                   dotted_name shift  31

State 18:
      (1) processes ::= *
          processes ::= * INCLUDE STRING processes
          processes ::= INCLUDE STRING * processes
          processes ::= * INCLUDE_GUARD STRING processes
          processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes
          process_or_template ::= * PROCESS
          process_or_template ::= * TEMPLATE

                       INCLUDE shift  34
                 INCLUDE_GUARD shift  35
                       PROCESS shift  75
                      TEMPLATE shift  76
                     processes shift  72
           process_or_template shift  36
                     {default} reduce 1

State 19:
      (1) processes ::= *
          processes ::= * INCLUDE STRING processes
          processes ::= * INCLUDE_GUARD STRING processes
          processes ::= INCLUDE_GUARD STRING * processes
          processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes
          process_or_template ::= * PROCESS
          process_or_template ::= * TEMPLATE

                       INCLUDE shift  34
                 INCLUDE_GUARD shift  35
                       PROCESS shift  75
                      TEMPLATE shift  76
                     processes shift  73
           process_or_template shift  36
                     {default} reduce 1

State 20:
      (1) processes ::= *
          processes ::= * INCLUDE STRING processes
          processes ::= * INCLUDE_GUARD STRING processes
          processes ::= * process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes
          processes ::= process_or_template NAME CURLY_OPEN statements CURLY_CLOSE * processes
          process_or_template ::= * PROCESS
          process_or_template ::= * TEMPLATE

                       INCLUDE shift  34
                 INCLUDE_GUARD shift  35
                       PROCESS shift  75
                      TEMPLATE shift  76
                     processes shift  74
           process_or_template shift  36
                     {default} reduce 1

State 21:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * elif_maybe else_maybe name_maybe SEMICOLON
     (10) elif_maybe ::= *
          elif_maybe ::= * elif
          elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
          elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif

                          ELIF shift  68
                    elif_maybe shift  26
                          elif shift  97
                     {default} reduce 10

State 22:
          statement ::= dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE * name_maybe SEMICOLON
     (34) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  78
                    name_maybe shift  40
                     {default} reduce 34

State 23:
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name
          dotted_name ::= NAME DOT * dotted_name

                          NAME shift  41
                   dotted_name shift  79

State 24:
          statement ::= dotted_name ARROW * dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          dotted_name ::= * NAME
          dotted_name ::= * NAME DOT dotted_name

                          NAME shift  41
                   dotted_name shift  47

State 25:
          statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE * name_maybe SEMICOLON
     (34) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  78
                    name_maybe shift  49
                     {default} reduce 34

State 26:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe * else_maybe name_maybe SEMICOLON
     (14) else_maybe ::= *
          else_maybe ::= * ELSE CURLY_OPEN statements CURLY_CLOSE

                          ELSE shift  55
                    else_maybe shift  27
                     {default} reduce 14

State 27:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe * name_maybe SEMICOLON
     (34) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  78
                    name_maybe shift  54
                     {default} reduce 34

State 28:
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * name_maybe SEMICOLON
     (34) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  78
                    name_maybe shift  61
                     {default} reduce 34

State 29:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * name_maybe SEMICOLON
     (34) name_maybe ::= *
          name_maybe ::= * NAME

                          NAME shift  78
                    name_maybe shift  66
                     {default} reduce 34

State 30:
          elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
     (12) elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE *
          elif ::= * ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE * elif

                          ELIF shift  68
                          elif shift  98
                     {default} reduce 12

State 31:
          statement ::= dotted_name * ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON
          statement ::= dotted_name * ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON

                    ROUND_OPEN shift  1
                         ARROW shift  24

State 32:
          statement ::= FOREACH ROUND_OPEN value AS NAME * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value AS NAME * COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                   ROUND_CLOSE shift  59
                         COLON shift  62

State 33:
      (0) input ::= processes *

                             $ reduce 0

State 34:
          processes ::= INCLUDE * STRING processes

                        STRING shift  18

State 35:
          processes ::= INCLUDE_GUARD * STRING processes

                        STRING shift  19

State 36:
          processes ::= process_or_template * NAME CURLY_OPEN statements CURLY_CLOSE processes

                          NAME shift  37

State 37:
          processes ::= process_or_template NAME * CURLY_OPEN statements CURLY_CLOSE processes

                    CURLY_OPEN shift  11

State 38:
          processes ::= process_or_template NAME CURLY_OPEN statements * CURLY_CLOSE processes

                   CURLY_CLOSE shift  20

State 39:
          statement ::= dotted_name ROUND_OPEN statement_args_maybe * ROUND_CLOSE name_maybe SEMICOLON

                   ROUND_CLOSE shift  22

State 40:
          statement ::= dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe * SEMICOLON

                     SEMICOLON shift  77

State 41:
     (18) dotted_name ::= NAME *
          dotted_name ::= NAME * DOT dotted_name

                           DOT shift  23
                     {default} reduce 18

State 42:
     (22) list_contents ::= value *
          list_contents ::= value * COMMA list_contents

                         COMMA shift  5
                     {default} reduce 22

State 43:
          list ::= CURLY_OPEN list_contents * CURLY_CLOSE

                   CURLY_CLOSE shift  83

State 44:
          map_contents ::= value * COLON value
          map_contents ::= value * COLON value COMMA map_contents

                         COLON shift  7

State 45:
     (26) map_contents ::= value COLON value *
          map_contents ::= value COLON value * COMMA map_contents

                         COMMA shift  6
                     {default} reduce 26

State 46:
          map ::= BRACKET_OPEN map_contents * BRACKET_CLOSE

                 BRACKET_CLOSE shift  90

State 47:
          statement ::= dotted_name ARROW dotted_name * ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON

                    ROUND_OPEN shift  2

State 48:
          statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe * ROUND_CLOSE name_maybe SEMICOLON

                   ROUND_CLOSE shift  25

State 49:
          statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe * SEMICOLON

                     SEMICOLON shift  91

State 50:
          statement ::= IF * ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON

                    ROUND_OPEN shift  8

State 51:
          statement ::= IF ROUND_OPEN value * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON

                   ROUND_CLOSE shift  52

State 52:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON

                    CURLY_OPEN shift  12

State 53:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON

                   CURLY_CLOSE shift  21

State 54:
          statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe * SEMICOLON

                     SEMICOLON shift  92

State 55:
          else_maybe ::= ELSE * CURLY_OPEN statements CURLY_CLOSE

                    CURLY_OPEN shift  13

State 56:
          statement ::= FOREACH * ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH * ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                    ROUND_OPEN shift  9

State 57:
          statement ::= FOREACH ROUND_OPEN value * AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value * AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                            AS shift  58

State 58:
          statement ::= FOREACH ROUND_OPEN value AS * NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON
          statement ::= FOREACH ROUND_OPEN value AS * NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                          NAME shift  32

State 59:
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                    CURLY_OPEN shift  14

State 60:
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE name_maybe SEMICOLON

                   CURLY_CLOSE shift  28

State 61:
          statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe * SEMICOLON

                     SEMICOLON shift  93

State 62:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON * NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                          NAME shift  63

State 63:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                   ROUND_CLOSE shift  64

State 64:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON

                    CURLY_OPEN shift  16

State 65:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE name_maybe SEMICOLON

                   CURLY_CLOSE shift  29

State 66:
          statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe * SEMICOLON

                     SEMICOLON shift  95

State 67:
          else_maybe ::= ELSE CURLY_OPEN statements * CURLY_CLOSE

                   CURLY_CLOSE shift  96

State 68:
          elif ::= ELIF * ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
          elif ::= ELIF * ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif

                    ROUND_OPEN shift  10

State 69:
          elif ::= ELIF ROUND_OPEN value * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN value * ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif

                   ROUND_CLOSE shift  70

State 70:
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE * CURLY_OPEN statements CURLY_CLOSE elif

                    CURLY_OPEN shift  17

State 71:
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE
          elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements * CURLY_CLOSE elif

                   CURLY_CLOSE shift  30

State 72:
      (2) processes ::= INCLUDE STRING processes *

                     {default} reduce 2

State 73:
      (3) processes ::= INCLUDE_GUARD STRING processes *

                     {default} reduce 3

State 74:
      (4) processes ::= process_or_template NAME CURLY_OPEN statements CURLY_CLOSE processes *

                     {default} reduce 4

State 75:
     (36) process_or_template ::= PROCESS *

                     {default} reduce 36

State 76:
     (37) process_or_template ::= TEMPLATE *

                     {default} reduce 37

State 77:
      (5) statement ::= dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON *

                     {default} reduce 5

State 78:
     (35) name_maybe ::= NAME *

                     {default} reduce 35

State 79:
     (19) dotted_name ::= NAME DOT dotted_name *

                     {default} reduce 19

State 80:
     (21) statement_args_maybe ::= list_contents *

                     {default} reduce 21

State 81:
     (23) list_contents ::= value COMMA list_contents *

                     {default} reduce 23

State 82:
     (24) list ::= CURLY_OPEN CURLY_CLOSE *

                     {default} reduce 24

State 83:
     (25) list ::= CURLY_OPEN list_contents CURLY_CLOSE *

                     {default} reduce 25

State 84:
     (27) map_contents ::= value COLON value COMMA map_contents *

                     {default} reduce 27

State 85:
     (30) value ::= STRING *

                     {default} reduce 30

State 86:
     (31) value ::= dotted_name *

                     {default} reduce 31

State 87:
     (32) value ::= list *

                     {default} reduce 32

State 88:
     (33) value ::= map *

                     {default} reduce 33

State 89:
     (28) map ::= BRACKET_OPEN BRACKET_CLOSE *

                     {default} reduce 28

State 90:
     (29) map ::= BRACKET_OPEN map_contents BRACKET_CLOSE *

                     {default} reduce 29

State 91:
      (6) statement ::= dotted_name ARROW dotted_name ROUND_OPEN statement_args_maybe ROUND_CLOSE name_maybe SEMICOLON *

                     {default} reduce 6

State 92:
      (7) statement ::= IF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif_maybe else_maybe name_maybe SEMICOLON *

                     {default} reduce 7

State 93:
      (8) statement ::= FOREACH ROUND_OPEN value AS NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON *

                     {default} reduce 8

State 94:
     (17) statements ::= statement statements *

                     {default} reduce 17

State 95:
      (9) statement ::= FOREACH ROUND_OPEN value AS NAME COLON NAME ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE name_maybe SEMICOLON *

                     {default} reduce 9

State 96:
     (15) else_maybe ::= ELSE CURLY_OPEN statements CURLY_CLOSE *

                     {default} reduce 15

State 97:
     (11) elif_maybe ::= elif *

                     {default} reduce 11

State 98:
     (13) elif ::= ELIF ROUND_OPEN value ROUND_CLOSE CURLY_OPEN statements CURLY_CLOSE elif *

                     {default} reduce 13

----------------------------------------------------
Symbols:
    0: $:
    1: INCLUDE
    2: STRING
    3: INCLUDE_GUARD
    4: NAME
    5: CURLY_OPEN
    6: CURLY_CLOSE
    7: ROUND_OPEN
    8: ROUND_CLOSE
    9: SEMICOLON
   10: ARROW
   11: IF
   12: FOREACH
   13: AS
   14: COLON
   15: ELIF
   16: ELSE
   17: DOT
   18: COMMA
   19: BRACKET_OPEN
   20: BRACKET_CLOSE
   21: PROCESS
   22: TEMPLATE
   23: error:
   24: processes: <lambda> INCLUDE INCLUDE_GUARD PROCESS TEMPLATE
   25: statement: NAME IF FOREACH
   26: elif_maybe: <lambda> ELIF
   27: elif: ELIF
   28: else_maybe: <lambda> ELSE
   29: statements: NAME IF FOREACH
   30: dotted_name: NAME
   31: statement_args_maybe: <lambda> STRING NAME CURLY_OPEN BRACKET_OPEN
   32: list_contents: STRING NAME CURLY_OPEN BRACKET_OPEN
   33: list: CURLY_OPEN
   34: map_contents: STRING NAME CURLY_OPEN BRACKET_OPEN
   35: map: BRACKET_OPEN
   36: value: STRING NAME CURLY_OPEN BRACKET_OPEN
   37: name_maybe: <lambda> NAME
   38: process_or_template: PROCESS TEMPLATE
   39: input: INCLUDE INCLUDE_GUARD PROCESS TEMPLATE
