# Generated from language/FandangoParser.g4 by ANTLR 4.13.2
# encoding: utf-8
from antlr4 import *
from io import StringIO
import sys

if sys.version_info[1] > 5:
    from typing import TextIO
else:
    from typing.io import TextIO


def serializedATN():
    return [
        4,
        1,
        131,
        3373,
        2,
        0,
        7,
        0,
        2,
        1,
        7,
        1,
        2,
        2,
        7,
        2,
        2,
        3,
        7,
        3,
        2,
        4,
        7,
        4,
        2,
        5,
        7,
        5,
        2,
        6,
        7,
        6,
        2,
        7,
        7,
        7,
        2,
        8,
        7,
        8,
        2,
        9,
        7,
        9,
        2,
        10,
        7,
        10,
        2,
        11,
        7,
        11,
        2,
        12,
        7,
        12,
        2,
        13,
        7,
        13,
        2,
        14,
        7,
        14,
        2,
        15,
        7,
        15,
        2,
        16,
        7,
        16,
        2,
        17,
        7,
        17,
        2,
        18,
        7,
        18,
        2,
        19,
        7,
        19,
        2,
        20,
        7,
        20,
        2,
        21,
        7,
        21,
        2,
        22,
        7,
        22,
        2,
        23,
        7,
        23,
        2,
        24,
        7,
        24,
        2,
        25,
        7,
        25,
        2,
        26,
        7,
        26,
        2,
        27,
        7,
        27,
        2,
        28,
        7,
        28,
        2,
        29,
        7,
        29,
        2,
        30,
        7,
        30,
        2,
        31,
        7,
        31,
        2,
        32,
        7,
        32,
        2,
        33,
        7,
        33,
        2,
        34,
        7,
        34,
        2,
        35,
        7,
        35,
        2,
        36,
        7,
        36,
        2,
        37,
        7,
        37,
        2,
        38,
        7,
        38,
        2,
        39,
        7,
        39,
        2,
        40,
        7,
        40,
        2,
        41,
        7,
        41,
        2,
        42,
        7,
        42,
        2,
        43,
        7,
        43,
        2,
        44,
        7,
        44,
        2,
        45,
        7,
        45,
        2,
        46,
        7,
        46,
        2,
        47,
        7,
        47,
        2,
        48,
        7,
        48,
        2,
        49,
        7,
        49,
        2,
        50,
        7,
        50,
        2,
        51,
        7,
        51,
        2,
        52,
        7,
        52,
        2,
        53,
        7,
        53,
        2,
        54,
        7,
        54,
        2,
        55,
        7,
        55,
        2,
        56,
        7,
        56,
        2,
        57,
        7,
        57,
        2,
        58,
        7,
        58,
        2,
        59,
        7,
        59,
        2,
        60,
        7,
        60,
        2,
        61,
        7,
        61,
        2,
        62,
        7,
        62,
        2,
        63,
        7,
        63,
        2,
        64,
        7,
        64,
        2,
        65,
        7,
        65,
        2,
        66,
        7,
        66,
        2,
        67,
        7,
        67,
        2,
        68,
        7,
        68,
        2,
        69,
        7,
        69,
        2,
        70,
        7,
        70,
        2,
        71,
        7,
        71,
        2,
        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,
        2,
        97,
        7,
        97,
        2,
        98,
        7,
        98,
        2,
        99,
        7,
        99,
        2,
        100,
        7,
        100,
        2,
        101,
        7,
        101,
        2,
        102,
        7,
        102,
        2,
        103,
        7,
        103,
        2,
        104,
        7,
        104,
        2,
        105,
        7,
        105,
        2,
        106,
        7,
        106,
        2,
        107,
        7,
        107,
        2,
        108,
        7,
        108,
        2,
        109,
        7,
        109,
        2,
        110,
        7,
        110,
        2,
        111,
        7,
        111,
        2,
        112,
        7,
        112,
        2,
        113,
        7,
        113,
        2,
        114,
        7,
        114,
        2,
        115,
        7,
        115,
        2,
        116,
        7,
        116,
        2,
        117,
        7,
        117,
        2,
        118,
        7,
        118,
        2,
        119,
        7,
        119,
        2,
        120,
        7,
        120,
        2,
        121,
        7,
        121,
        2,
        122,
        7,
        122,
        2,
        123,
        7,
        123,
        2,
        124,
        7,
        124,
        2,
        125,
        7,
        125,
        2,
        126,
        7,
        126,
        2,
        127,
        7,
        127,
        2,
        128,
        7,
        128,
        2,
        129,
        7,
        129,
        2,
        130,
        7,
        130,
        2,
        131,
        7,
        131,
        2,
        132,
        7,
        132,
        2,
        133,
        7,
        133,
        2,
        134,
        7,
        134,
        2,
        135,
        7,
        135,
        2,
        136,
        7,
        136,
        2,
        137,
        7,
        137,
        2,
        138,
        7,
        138,
        2,
        139,
        7,
        139,
        2,
        140,
        7,
        140,
        2,
        141,
        7,
        141,
        2,
        142,
        7,
        142,
        2,
        143,
        7,
        143,
        2,
        144,
        7,
        144,
        2,
        145,
        7,
        145,
        2,
        146,
        7,
        146,
        2,
        147,
        7,
        147,
        2,
        148,
        7,
        148,
        2,
        149,
        7,
        149,
        2,
        150,
        7,
        150,
        2,
        151,
        7,
        151,
        2,
        152,
        7,
        152,
        2,
        153,
        7,
        153,
        2,
        154,
        7,
        154,
        2,
        155,
        7,
        155,
        2,
        156,
        7,
        156,
        2,
        157,
        7,
        157,
        2,
        158,
        7,
        158,
        2,
        159,
        7,
        159,
        2,
        160,
        7,
        160,
        2,
        161,
        7,
        161,
        2,
        162,
        7,
        162,
        2,
        163,
        7,
        163,
        2,
        164,
        7,
        164,
        2,
        165,
        7,
        165,
        2,
        166,
        7,
        166,
        2,
        167,
        7,
        167,
        2,
        168,
        7,
        168,
        2,
        169,
        7,
        169,
        2,
        170,
        7,
        170,
        2,
        171,
        7,
        171,
        2,
        172,
        7,
        172,
        2,
        173,
        7,
        173,
        2,
        174,
        7,
        174,
        2,
        175,
        7,
        175,
        2,
        176,
        7,
        176,
        2,
        177,
        7,
        177,
        2,
        178,
        7,
        178,
        2,
        179,
        7,
        179,
        2,
        180,
        7,
        180,
        2,
        181,
        7,
        181,
        2,
        182,
        7,
        182,
        2,
        183,
        7,
        183,
        2,
        184,
        7,
        184,
        2,
        185,
        7,
        185,
        2,
        186,
        7,
        186,
        2,
        187,
        7,
        187,
        2,
        188,
        7,
        188,
        2,
        189,
        7,
        189,
        2,
        190,
        7,
        190,
        2,
        191,
        7,
        191,
        2,
        192,
        7,
        192,
        2,
        193,
        7,
        193,
        2,
        194,
        7,
        194,
        2,
        195,
        7,
        195,
        2,
        196,
        7,
        196,
        2,
        197,
        7,
        197,
        2,
        198,
        7,
        198,
        2,
        199,
        7,
        199,
        2,
        200,
        7,
        200,
        2,
        201,
        7,
        201,
        2,
        202,
        7,
        202,
        2,
        203,
        7,
        203,
        2,
        204,
        7,
        204,
        2,
        205,
        7,
        205,
        2,
        206,
        7,
        206,
        2,
        207,
        7,
        207,
        2,
        208,
        7,
        208,
        2,
        209,
        7,
        209,
        2,
        210,
        7,
        210,
        2,
        211,
        7,
        211,
        2,
        212,
        7,
        212,
        2,
        213,
        7,
        213,
        2,
        214,
        7,
        214,
        2,
        215,
        7,
        215,
        2,
        216,
        7,
        216,
        2,
        217,
        7,
        217,
        2,
        218,
        7,
        218,
        2,
        219,
        7,
        219,
        2,
        220,
        7,
        220,
        2,
        221,
        7,
        221,
        2,
        222,
        7,
        222,
        2,
        223,
        7,
        223,
        2,
        224,
        7,
        224,
        2,
        225,
        7,
        225,
        2,
        226,
        7,
        226,
        2,
        227,
        7,
        227,
        2,
        228,
        7,
        228,
        2,
        229,
        7,
        229,
        2,
        230,
        7,
        230,
        2,
        231,
        7,
        231,
        2,
        232,
        7,
        232,
        2,
        233,
        7,
        233,
        2,
        234,
        7,
        234,
        2,
        235,
        7,
        235,
        2,
        236,
        7,
        236,
        2,
        237,
        7,
        237,
        2,
        238,
        7,
        238,
        2,
        239,
        7,
        239,
        2,
        240,
        7,
        240,
        2,
        241,
        7,
        241,
        2,
        242,
        7,
        242,
        2,
        243,
        7,
        243,
        2,
        244,
        7,
        244,
        2,
        245,
        7,
        245,
        1,
        0,
        1,
        0,
        1,
        0,
        1,
        1,
        5,
        1,
        497,
        8,
        1,
        10,
        1,
        12,
        1,
        500,
        9,
        1,
        1,
        1,
        1,
        1,
        5,
        1,
        504,
        8,
        1,
        10,
        1,
        12,
        1,
        507,
        9,
        1,
        5,
        1,
        509,
        8,
        1,
        10,
        1,
        12,
        1,
        512,
        9,
        1,
        1,
        2,
        1,
        2,
        1,
        2,
        1,
        2,
        3,
        2,
        518,
        8,
        2,
        1,
        3,
        5,
        3,
        521,
        8,
        3,
        10,
        3,
        12,
        3,
        524,
        9,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        3,
        3,
        531,
        8,
        3,
        1,
        3,
        1,
        3,
        4,
        3,
        535,
        8,
        3,
        11,
        3,
        12,
        3,
        536,
        1,
        3,
        3,
        3,
        540,
        8,
        3,
        1,
        3,
        5,
        3,
        543,
        8,
        3,
        10,
        3,
        12,
        3,
        546,
        9,
        3,
        1,
        3,
        5,
        3,
        549,
        8,
        3,
        10,
        3,
        12,
        3,
        552,
        9,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        3,
        3,
        559,
        8,
        3,
        1,
        3,
        1,
        3,
        4,
        3,
        563,
        8,
        3,
        11,
        3,
        12,
        3,
        564,
        1,
        3,
        3,
        3,
        568,
        8,
        3,
        1,
        3,
        5,
        3,
        571,
        8,
        3,
        10,
        3,
        12,
        3,
        574,
        9,
        3,
        1,
        3,
        5,
        3,
        577,
        8,
        3,
        10,
        3,
        12,
        3,
        580,
        9,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        1,
        3,
        3,
        3,
        588,
        8,
        3,
        1,
        3,
        1,
        3,
        4,
        3,
        592,
        8,
        3,
        11,
        3,
        12,
        3,
        593,
        1,
        3,
        3,
        3,
        597,
        8,
        3,
        1,
        3,
        5,
        3,
        600,
        8,
        3,
        10,
        3,
        12,
        3,
        603,
        9,
        3,
        3,
        3,
        605,
        8,
        3,
        1,
        4,
        1,
        4,
        1,
        4,
        5,
        4,
        610,
        8,
        4,
        10,
        4,
        12,
        4,
        613,
        9,
        4,
        1,
        5,
        1,
        5,
        5,
        5,
        617,
        8,
        5,
        10,
        5,
        12,
        5,
        620,
        9,
        5,
        1,
        6,
        1,
        6,
        1,
        6,
        1,
        6,
        1,
        6,
        3,
        6,
        627,
        8,
        6,
        1,
        7,
        1,
        7,
        1,
        7,
        1,
        8,
        1,
        8,
        1,
        8,
        1,
        9,
        1,
        9,
        1,
        9,
        1,
        10,
        1,
        10,
        1,
        10,
        1,
        10,
        1,
        10,
        1,
        10,
        1,
        10,
        1,
        10,
        3,
        10,
        646,
        8,
        10,
        1,
        10,
        1,
        10,
        3,
        10,
        650,
        8,
        10,
        1,
        10,
        1,
        10,
        3,
        10,
        654,
        8,
        10,
        1,
        11,
        1,
        11,
        1,
        11,
        1,
        11,
        1,
        11,
        1,
        11,
        1,
        11,
        1,
        11,
        1,
        11,
        3,
        11,
        665,
        8,
        11,
        1,
        12,
        1,
        12,
        1,
        12,
        1,
        12,
        3,
        12,
        671,
        8,
        12,
        1,
        12,
        1,
        12,
        1,
        12,
        3,
        12,
        676,
        8,
        12,
        1,
        12,
        1,
        12,
        1,
        12,
        1,
        13,
        1,
        13,
        1,
        13,
        1,
        13,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        1,
        14,
        3,
        14,
        701,
        8,
        14,
        1,
        14,
        5,
        14,
        704,
        8,
        14,
        10,
        14,
        12,
        14,
        707,
        9,
        14,
        1,
        15,
        1,
        15,
        3,
        15,
        711,
        8,
        15,
        1,
        15,
        1,
        15,
        1,
        15,
        1,
        16,
        5,
        16,
        717,
        8,
        16,
        10,
        16,
        12,
        16,
        720,
        9,
        16,
        1,
        16,
        1,
        16,
        1,
        16,
        5,
        16,
        725,
        8,
        16,
        10,
        16,
        12,
        16,
        728,
        9,
        16,
        1,
        16,
        5,
        16,
        731,
        8,
        16,
        10,
        16,
        12,
        16,
        734,
        9,
        16,
        1,
        16,
        1,
        16,
        1,
        16,
        1,
        16,
        4,
        16,
        740,
        8,
        16,
        11,
        16,
        12,
        16,
        741,
        1,
        16,
        3,
        16,
        745,
        8,
        16,
        1,
        16,
        5,
        16,
        748,
        8,
        16,
        10,
        16,
        12,
        16,
        751,
        9,
        16,
        1,
        16,
        5,
        16,
        754,
        8,
        16,
        10,
        16,
        12,
        16,
        757,
        9,
        16,
        1,
        16,
        1,
        16,
        1,
        16,
        1,
        16,
        4,
        16,
        763,
        8,
        16,
        11,
        16,
        12,
        16,
        764,
        1,
        16,
        3,
        16,
        768,
        8,
        16,
        1,
        16,
        5,
        16,
        771,
        8,
        16,
        10,
        16,
        12,
        16,
        774,
        9,
        16,
        1,
        16,
        1,
        16,
        1,
        16,
        3,
        16,
        779,
        8,
        16,
        1,
        17,
        1,
        17,
        1,
        17,
        1,
        17,
        1,
        17,
        1,
        17,
        3,
        17,
        787,
        8,
        17,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        800,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        813,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        821,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        4,
        18,
        828,
        8,
        18,
        11,
        18,
        12,
        18,
        829,
        1,
        18,
        3,
        18,
        833,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        842,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        4,
        18,
        850,
        8,
        18,
        11,
        18,
        12,
        18,
        851,
        1,
        18,
        3,
        18,
        855,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        864,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        4,
        18,
        872,
        8,
        18,
        11,
        18,
        12,
        18,
        873,
        1,
        18,
        3,
        18,
        877,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        886,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        4,
        18,
        894,
        8,
        18,
        11,
        18,
        12,
        18,
        895,
        1,
        18,
        3,
        18,
        899,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        907,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        4,
        18,
        914,
        8,
        18,
        11,
        18,
        12,
        18,
        915,
        1,
        18,
        3,
        18,
        919,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        928,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        4,
        18,
        936,
        8,
        18,
        11,
        18,
        12,
        18,
        937,
        1,
        18,
        3,
        18,
        941,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        950,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        4,
        18,
        958,
        8,
        18,
        11,
        18,
        12,
        18,
        959,
        1,
        18,
        3,
        18,
        963,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        3,
        18,
        972,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        4,
        18,
        980,
        8,
        18,
        11,
        18,
        12,
        18,
        981,
        1,
        18,
        3,
        18,
        985,
        8,
        18,
        1,
        18,
        1,
        18,
        1,
        18,
        4,
        18,
        990,
        8,
        18,
        11,
        18,
        12,
        18,
        991,
        1,
        18,
        3,
        18,
        995,
        8,
        18,
        3,
        18,
        997,
        8,
        18,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        3,
        19,
        1005,
        8,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        3,
        19,
        1018,
        8,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        3,
        19,
        1032,
        8,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        3,
        19,
        1046,
        8,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        3,
        19,
        1059,
        8,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        3,
        19,
        1072,
        8,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        3,
        19,
        1086,
        8,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        3,
        19,
        1100,
        8,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        1,
        19,
        3,
        19,
        1108,
        8,
        19,
        1,
        20,
        1,
        20,
        1,
        20,
        5,
        20,
        1113,
        8,
        20,
        10,
        20,
        12,
        20,
        1116,
        9,
        20,
        1,
        21,
        1,
        21,
        1,
        21,
        5,
        21,
        1121,
        8,
        21,
        10,
        21,
        12,
        21,
        1124,
        9,
        21,
        1,
        22,
        1,
        22,
        1,
        22,
        1,
        22,
        1,
        22,
        1,
        22,
        3,
        22,
        1132,
        8,
        22,
        1,
        23,
        1,
        23,
        1,
        23,
        1,
        23,
        1,
        24,
        1,
        24,
        1,
        24,
        1,
        24,
        1,
        24,
        1,
        24,
        1,
        24,
        1,
        24,
        3,
        24,
        1146,
        8,
        24,
        1,
        25,
        1,
        25,
        1,
        25,
        1,
        25,
        1,
        25,
        1,
        25,
        1,
        25,
        1,
        25,
        1,
        25,
        1,
        25,
        3,
        25,
        1158,
        8,
        25,
        1,
        26,
        1,
        26,
        3,
        26,
        1162,
        8,
        26,
        1,
        27,
        1,
        27,
        1,
        27,
        1,
        27,
        3,
        27,
        1168,
        8,
        27,
        1,
        28,
        1,
        28,
        1,
        28,
        1,
        28,
        1,
        28,
        1,
        28,
        1,
        28,
        1,
        28,
        1,
        28,
        5,
        28,
        1179,
        8,
        28,
        10,
        28,
        12,
        28,
        1182,
        9,
        28,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        29,
        1,
        29,
        3,
        29,
        1195,
        8,
        29,
        1,
        30,
        1,
        30,
        1,
        30,
        1,
        30,
        1,
        30,
        3,
        30,
        1202,
        8,
        30,
        1,
        31,
        1,
        31,
        1,
        31,
        5,
        31,
        1207,
        8,
        31,
        10,
        31,
        12,
        31,
        1210,
        9,
        31,
        1,
        31,
        3,
        31,
        1213,
        8,
        31,
        1,
        32,
        1,
        32,
        1,
        32,
        1,
        32,
        3,
        32,
        1219,
        8,
        32,
        1,
        33,
        1,
        33,
        1,
        33,
        5,
        33,
        1224,
        8,
        33,
        10,
        33,
        12,
        33,
        1227,
        9,
        33,
        1,
        33,
        3,
        33,
        1230,
        8,
        33,
        1,
        34,
        1,
        34,
        3,
        34,
        1234,
        8,
        34,
        1,
        34,
        1,
        34,
        3,
        34,
        1238,
        8,
        34,
        1,
        34,
        3,
        34,
        1241,
        8,
        34,
        1,
        34,
        1,
        34,
        3,
        34,
        1245,
        8,
        34,
        1,
        34,
        1,
        34,
        3,
        34,
        1249,
        8,
        34,
        3,
        34,
        1251,
        8,
        34,
        1,
        35,
        1,
        35,
        3,
        35,
        1255,
        8,
        35,
        1,
        36,
        5,
        36,
        1258,
        8,
        36,
        10,
        36,
        12,
        36,
        1261,
        9,
        36,
        1,
        36,
        1,
        36,
        5,
        36,
        1265,
        8,
        36,
        10,
        36,
        12,
        36,
        1268,
        9,
        36,
        1,
        37,
        5,
        37,
        1271,
        8,
        37,
        10,
        37,
        12,
        37,
        1274,
        9,
        37,
        1,
        37,
        1,
        37,
        1,
        37,
        5,
        37,
        1279,
        8,
        37,
        10,
        37,
        12,
        37,
        1282,
        9,
        37,
        1,
        38,
        1,
        38,
        5,
        38,
        1286,
        8,
        38,
        10,
        38,
        12,
        38,
        1289,
        9,
        38,
        1,
        39,
        1,
        39,
        1,
        39,
        1,
        39,
        1,
        39,
        1,
        39,
        3,
        39,
        1297,
        8,
        39,
        1,
        40,
        1,
        40,
        3,
        40,
        1301,
        8,
        40,
        1,
        40,
        3,
        40,
        1304,
        8,
        40,
        1,
        40,
        3,
        40,
        1307,
        8,
        40,
        1,
        40,
        1,
        40,
        3,
        40,
        1311,
        8,
        40,
        1,
        41,
        1,
        41,
        1,
        42,
        1,
        42,
        1,
        43,
        3,
        43,
        1318,
        8,
        43,
        1,
        43,
        3,
        43,
        1321,
        8,
        43,
        1,
        44,
        1,
        44,
        1,
        45,
        1,
        45,
        5,
        45,
        1327,
        8,
        45,
        10,
        45,
        12,
        45,
        1330,
        9,
        45,
        1,
        45,
        3,
        45,
        1333,
        8,
        45,
        1,
        46,
        1,
        46,
        3,
        46,
        1337,
        8,
        46,
        1,
        46,
        1,
        46,
        1,
        46,
        1,
        46,
        5,
        46,
        1343,
        8,
        46,
        10,
        46,
        12,
        46,
        1346,
        9,
        46,
        1,
        46,
        3,
        46,
        1349,
        8,
        46,
        1,
        47,
        1,
        47,
        4,
        47,
        1353,
        8,
        47,
        11,
        47,
        12,
        47,
        1354,
        1,
        48,
        1,
        48,
        3,
        48,
        1359,
        8,
        48,
        1,
        49,
        1,
        49,
        1,
        49,
        1,
        49,
        1,
        49,
        3,
        49,
        1366,
        8,
        49,
        1,
        50,
        1,
        50,
        1,
        50,
        5,
        50,
        1371,
        8,
        50,
        10,
        50,
        12,
        50,
        1374,
        9,
        50,
        1,
        50,
        3,
        50,
        1377,
        8,
        50,
        1,
        50,
        4,
        50,
        1380,
        8,
        50,
        11,
        50,
        12,
        50,
        1381,
        1,
        50,
        5,
        50,
        1385,
        8,
        50,
        10,
        50,
        12,
        50,
        1388,
        9,
        50,
        1,
        50,
        3,
        50,
        1391,
        8,
        50,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        1,
        51,
        3,
        51,
        1407,
        8,
        51,
        1,
        52,
        1,
        52,
        1,
        52,
        1,
        52,
        1,
        52,
        1,
        52,
        1,
        52,
        1,
        52,
        3,
        52,
        1417,
        8,
        52,
        1,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        3,
        53,
        1424,
        8,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        3,
        53,
        1431,
        8,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        3,
        53,
        1437,
        8,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        4,
        53,
        1442,
        8,
        53,
        11,
        53,
        12,
        53,
        1443,
        1,
        53,
        1,
        53,
        3,
        53,
        1448,
        8,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        1,
        53,
        3,
        53,
        1454,
        8,
        53,
        3,
        53,
        1456,
        8,
        53,
        1,
        54,
        1,
        54,
        3,
        54,
        1460,
        8,
        54,
        1,
        55,
        1,
        55,
        1,
        56,
        1,
        56,
        3,
        56,
        1466,
        8,
        56,
        1,
        57,
        1,
        57,
        1,
        57,
        1,
        57,
        3,
        57,
        1472,
        8,
        57,
        1,
        57,
        3,
        57,
        1475,
        8,
        57,
        1,
        58,
        1,
        58,
        1,
        58,
        1,
        58,
        5,
        58,
        1481,
        8,
        58,
        10,
        58,
        12,
        58,
        1484,
        9,
        58,
        1,
        59,
        1,
        59,
        1,
        59,
        1,
        59,
        5,
        59,
        1490,
        8,
        59,
        10,
        59,
        12,
        59,
        1493,
        9,
        59,
        1,
        60,
        1,
        60,
        1,
        60,
        1,
        61,
        1,
        61,
        1,
        62,
        1,
        62,
        1,
        62,
        1,
        62,
        3,
        62,
        1504,
        8,
        62,
        1,
        63,
        1,
        63,
        3,
        63,
        1508,
        8,
        63,
        1,
        64,
        1,
        64,
        1,
        64,
        1,
        65,
        1,
        65,
        5,
        65,
        1515,
        8,
        65,
        10,
        65,
        12,
        65,
        1518,
        9,
        65,
        1,
        65,
        1,
        65,
        1,
        65,
        1,
        65,
        1,
        65,
        1,
        65,
        4,
        65,
        1526,
        8,
        65,
        11,
        65,
        12,
        65,
        1527,
        1,
        65,
        1,
        65,
        3,
        65,
        1532,
        8,
        65,
        1,
        66,
        1,
        66,
        1,
        66,
        3,
        66,
        1537,
        8,
        66,
        1,
        66,
        1,
        66,
        1,
        66,
        1,
        66,
        3,
        66,
        1543,
        8,
        66,
        1,
        67,
        1,
        67,
        1,
        67,
        5,
        67,
        1548,
        8,
        67,
        10,
        67,
        12,
        67,
        1551,
        9,
        67,
        1,
        68,
        1,
        68,
        1,
        68,
        3,
        68,
        1556,
        8,
        68,
        1,
        69,
        1,
        69,
        1,
        69,
        5,
        69,
        1561,
        8,
        69,
        10,
        69,
        12,
        69,
        1564,
        9,
        69,
        1,
        70,
        1,
        70,
        1,
        70,
        3,
        70,
        1569,
        8,
        70,
        1,
        71,
        1,
        71,
        1,
        71,
        1,
        71,
        1,
        71,
        1,
        71,
        5,
        71,
        1577,
        8,
        71,
        10,
        71,
        12,
        71,
        1580,
        9,
        71,
        1,
        72,
        1,
        72,
        1,
        72,
        1,
        72,
        1,
        72,
        1,
        72,
        3,
        72,
        1588,
        8,
        72,
        1,
        73,
        1,
        73,
        1,
        73,
        1,
        73,
        4,
        73,
        1594,
        8,
        73,
        11,
        73,
        12,
        73,
        1595,
        1,
        74,
        3,
        74,
        1599,
        8,
        74,
        1,
        74,
        1,
        74,
        1,
        75,
        1,
        75,
        1,
        75,
        3,
        75,
        1606,
        8,
        75,
        1,
        75,
        1,
        75,
        3,
        75,
        1610,
        8,
        75,
        1,
        75,
        3,
        75,
        1613,
        8,
        75,
        1,
        75,
        1,
        75,
        1,
        75,
        1,
        76,
        3,
        76,
        1619,
        8,
        76,
        1,
        76,
        1,
        76,
        1,
        77,
        3,
        77,
        1624,
        8,
        77,
        1,
        77,
        1,
        77,
        1,
        77,
        3,
        77,
        1629,
        8,
        77,
        1,
        77,
        1,
        77,
        3,
        77,
        1633,
        8,
        77,
        1,
        77,
        1,
        77,
        1,
        77,
        3,
        77,
        1638,
        8,
        77,
        1,
        77,
        1,
        77,
        3,
        77,
        1642,
        8,
        77,
        1,
        77,
        1,
        77,
        1,
        78,
        1,
        78,
        1,
        79,
        1,
        79,
        5,
        79,
        1650,
        8,
        79,
        10,
        79,
        12,
        79,
        1653,
        9,
        79,
        1,
        79,
        5,
        79,
        1656,
        8,
        79,
        10,
        79,
        12,
        79,
        1659,
        9,
        79,
        1,
        79,
        3,
        79,
        1662,
        8,
        79,
        1,
        79,
        1,
        79,
        5,
        79,
        1666,
        8,
        79,
        10,
        79,
        12,
        79,
        1669,
        9,
        79,
        1,
        79,
        3,
        79,
        1672,
        8,
        79,
        1,
        79,
        4,
        79,
        1675,
        8,
        79,
        11,
        79,
        12,
        79,
        1676,
        1,
        79,
        5,
        79,
        1680,
        8,
        79,
        10,
        79,
        12,
        79,
        1683,
        9,
        79,
        1,
        79,
        3,
        79,
        1686,
        8,
        79,
        1,
        79,
        4,
        79,
        1689,
        8,
        79,
        11,
        79,
        12,
        79,
        1690,
        1,
        79,
        3,
        79,
        1694,
        8,
        79,
        1,
        79,
        3,
        79,
        1697,
        8,
        79,
        1,
        80,
        4,
        80,
        1700,
        8,
        80,
        11,
        80,
        12,
        80,
        1701,
        1,
        80,
        1,
        80,
        3,
        80,
        1706,
        8,
        80,
        1,
        81,
        5,
        81,
        1709,
        8,
        81,
        10,
        81,
        12,
        81,
        1712,
        9,
        81,
        1,
        81,
        4,
        81,
        1715,
        8,
        81,
        11,
        81,
        12,
        81,
        1716,
        1,
        81,
        1,
        81,
        3,
        81,
        1721,
        8,
        81,
        1,
        82,
        1,
        82,
        1,
        82,
        5,
        82,
        1726,
        8,
        82,
        10,
        82,
        12,
        82,
        1729,
        9,
        82,
        1,
        82,
        3,
        82,
        1732,
        8,
        82,
        1,
        82,
        1,
        82,
        1,
        82,
        5,
        82,
        1737,
        8,
        82,
        10,
        82,
        12,
        82,
        1740,
        9,
        82,
        1,
        82,
        3,
        82,
        1743,
        8,
        82,
        1,
        82,
        1,
        82,
        1,
        82,
        4,
        82,
        1748,
        8,
        82,
        11,
        82,
        12,
        82,
        1749,
        1,
        82,
        3,
        82,
        1753,
        8,
        82,
        1,
        82,
        3,
        82,
        1756,
        8,
        82,
        1,
        83,
        1,
        83,
        1,
        83,
        1,
        84,
        1,
        84,
        1,
        84,
        1,
        84,
        3,
        84,
        1765,
        8,
        84,
        1,
        85,
        1,
        85,
        1,
        85,
        1,
        85,
        3,
        85,
        1771,
        8,
        85,
        1,
        86,
        1,
        86,
        1,
        86,
        1,
        86,
        1,
        86,
        1,
        86,
        1,
        86,
        3,
        86,
        1780,
        8,
        86,
        1,
        87,
        1,
        87,
        3,
        87,
        1784,
        8,
        87,
        1,
        87,
        1,
        87,
        1,
        87,
        1,
        87,
        3,
        87,
        1790,
        8,
        87,
        3,
        87,
        1792,
        8,
        87,
        1,
        88,
        1,
        88,
        3,
        88,
        1796,
        8,
        88,
        1,
        89,
        1,
        89,
        1,
        89,
        1,
        90,
        1,
        90,
        1,
        90,
        1,
        91,
        1,
        91,
        1,
        91,
        1,
        92,
        1,
        92,
        1,
        92,
        1,
        93,
        1,
        93,
        1,
        93,
        1,
        93,
        1,
        93,
        1,
        93,
        1,
        93,
        1,
        93,
        1,
        93,
        1,
        93,
        1,
        93,
        3,
        93,
        1821,
        8,
        93,
        3,
        93,
        1823,
        8,
        93,
        1,
        94,
        1,
        94,
        1,
        94,
        1,
        94,
        1,
        94,
        1,
        94,
        1,
        94,
        1,
        94,
        1,
        94,
        1,
        94,
        1,
        94,
        3,
        94,
        1836,
        8,
        94,
        3,
        94,
        1838,
        8,
        94,
        1,
        95,
        1,
        95,
        1,
        95,
        1,
        95,
        1,
        96,
        1,
        96,
        1,
        96,
        1,
        96,
        1,
        96,
        3,
        96,
        1849,
        8,
        96,
        1,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        3,
        97,
        1858,
        8,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        1,
        97,
        3,
        97,
        1868,
        8,
        97,
        3,
        97,
        1870,
        8,
        97,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        5,
        98,
        1877,
        8,
        98,
        10,
        98,
        12,
        98,
        1880,
        9,
        98,
        1,
        98,
        3,
        98,
        1883,
        8,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        5,
        98,
        1893,
        8,
        98,
        10,
        98,
        12,
        98,
        1896,
        9,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        5,
        98,
        1907,
        8,
        98,
        10,
        98,
        12,
        98,
        1910,
        9,
        98,
        1,
        98,
        3,
        98,
        1913,
        8,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        5,
        98,
        1924,
        8,
        98,
        10,
        98,
        12,
        98,
        1927,
        9,
        98,
        1,
        98,
        1,
        98,
        1,
        98,
        3,
        98,
        1932,
        8,
        98,
        1,
        99,
        1,
        99,
        1,
        99,
        1,
        99,
        1,
        99,
        3,
        99,
        1939,
        8,
        99,
        1,
        100,
        1,
        100,
        1,
        100,
        1,
        100,
        1,
        100,
        1,
        100,
        1,
        100,
        1,
        100,
        1,
        100,
        4,
        100,
        1950,
        8,
        100,
        11,
        100,
        12,
        100,
        1951,
        1,
        100,
        3,
        100,
        1955,
        8,
        100,
        1,
        100,
        3,
        100,
        1958,
        8,
        100,
        1,
        100,
        1,
        100,
        1,
        100,
        1,
        100,
        4,
        100,
        1964,
        8,
        100,
        11,
        100,
        12,
        100,
        1965,
        1,
        100,
        3,
        100,
        1969,
        8,
        100,
        1,
        100,
        3,
        100,
        1972,
        8,
        100,
        3,
        100,
        1974,
        8,
        100,
        1,
        101,
        1,
        101,
        1,
        101,
        1,
        101,
        3,
        101,
        1980,
        8,
        101,
        1,
        101,
        1,
        101,
        1,
        101,
        1,
        101,
        1,
        101,
        1,
        101,
        3,
        101,
        1988,
        8,
        101,
        1,
        102,
        1,
        102,
        1,
        102,
        1,
        102,
        1,
        102,
        3,
        102,
        1995,
        8,
        102,
        1,
        102,
        1,
        102,
        1,
        102,
        1,
        103,
        1,
        103,
        1,
        103,
        1,
        103,
        1,
        104,
        1,
        104,
        1,
        104,
        1,
        104,
        1,
        104,
        1,
        104,
        4,
        104,
        2010,
        8,
        104,
        11,
        104,
        12,
        104,
        2011,
        1,
        104,
        1,
        104,
        1,
        105,
        1,
        105,
        1,
        105,
        3,
        105,
        2019,
        8,
        105,
        1,
        105,
        3,
        105,
        2022,
        8,
        105,
        1,
        106,
        1,
        106,
        1,
        106,
        3,
        106,
        2027,
        8,
        106,
        1,
        106,
        1,
        106,
        1,
        106,
        1,
        107,
        1,
        107,
        1,
        107,
        1,
        108,
        1,
        108,
        3,
        108,
        2037,
        8,
        108,
        1,
        109,
        1,
        109,
        3,
        109,
        2041,
        8,
        109,
        1,
        110,
        1,
        110,
        1,
        110,
        1,
        110,
        1,
        111,
        1,
        111,
        1,
        111,
        5,
        111,
        2050,
        8,
        111,
        10,
        111,
        12,
        111,
        2053,
        9,
        111,
        1,
        112,
        1,
        112,
        1,
        112,
        1,
        112,
        1,
        112,
        1,
        112,
        1,
        112,
        1,
        112,
        3,
        112,
        2063,
        8,
        112,
        1,
        113,
        1,
        113,
        1,
        113,
        1,
        113,
        1,
        113,
        1,
        113,
        3,
        113,
        2071,
        8,
        113,
        1,
        114,
        1,
        114,
        1,
        114,
        1,
        114,
        1,
        114,
        1,
        114,
        3,
        114,
        2079,
        8,
        114,
        1,
        115,
        1,
        115,
        1,
        115,
        1,
        115,
        1,
        115,
        1,
        115,
        1,
        115,
        1,
        115,
        3,
        115,
        2089,
        8,
        115,
        1,
        116,
        1,
        116,
        1,
        116,
        3,
        116,
        2094,
        8,
        116,
        1,
        117,
        1,
        117,
        1,
        117,
        3,
        117,
        2099,
        8,
        117,
        1,
        118,
        1,
        118,
        1,
        119,
        1,
        119,
        1,
        120,
        1,
        120,
        1,
        121,
        1,
        121,
        1,
        122,
        1,
        122,
        1,
        123,
        1,
        123,
        1,
        124,
        1,
        124,
        1,
        124,
        1,
        124,
        1,
        125,
        1,
        125,
        1,
        125,
        1,
        125,
        1,
        125,
        1,
        125,
        5,
        125,
        2123,
        8,
        125,
        10,
        125,
        12,
        125,
        2126,
        9,
        125,
        1,
        126,
        1,
        126,
        1,
        126,
        1,
        126,
        1,
        127,
        1,
        127,
        3,
        127,
        2134,
        8,
        127,
        1,
        127,
        1,
        127,
        1,
        127,
        3,
        127,
        2139,
        8,
        127,
        1,
        127,
        3,
        127,
        2142,
        8,
        127,
        1,
        128,
        1,
        128,
        1,
        128,
        3,
        128,
        2147,
        8,
        128,
        1,
        129,
        1,
        129,
        1,
        129,
        5,
        129,
        2152,
        8,
        129,
        10,
        129,
        12,
        129,
        2155,
        9,
        129,
        1,
        129,
        3,
        129,
        2158,
        8,
        129,
        1,
        130,
        1,
        130,
        3,
        130,
        2162,
        8,
        130,
        1,
        131,
        1,
        131,
        1,
        131,
        1,
        131,
        3,
        131,
        2168,
        8,
        131,
        1,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        3,
        132,
        2175,
        8,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        3,
        132,
        2184,
        8,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        1,
        132,
        3,
        132,
        2191,
        8,
        132,
        1,
        132,
        1,
        132,
        3,
        132,
        2195,
        8,
        132,
        1,
        133,
        1,
        133,
        1,
        133,
        5,
        133,
        2200,
        8,
        133,
        10,
        133,
        12,
        133,
        2203,
        9,
        133,
        1,
        134,
        1,
        134,
        3,
        134,
        2207,
        8,
        134,
        1,
        134,
        1,
        134,
        1,
        134,
        1,
        135,
        1,
        135,
        1,
        135,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        3,
        136,
        2223,
        8,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        3,
        136,
        2231,
        8,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        1,
        136,
        3,
        136,
        2241,
        8,
        136,
        1,
        136,
        1,
        136,
        3,
        136,
        2245,
        8,
        136,
        1,
        137,
        1,
        137,
        1,
        137,
        5,
        137,
        2250,
        8,
        137,
        10,
        137,
        12,
        137,
        2253,
        9,
        137,
        1,
        138,
        1,
        138,
        1,
        138,
        5,
        138,
        2258,
        8,
        138,
        10,
        138,
        12,
        138,
        2261,
        9,
        138,
        1,
        139,
        1,
        139,
        1,
        139,
        1,
        139,
        1,
        140,
        1,
        140,
        1,
        140,
        3,
        140,
        2270,
        8,
        140,
        1,
        140,
        1,
        140,
        1,
        140,
        1,
        141,
        1,
        141,
        1,
        141,
        1,
        141,
        1,
        142,
        1,
        142,
        1,
        142,
        5,
        142,
        2282,
        8,
        142,
        10,
        142,
        12,
        142,
        2285,
        9,
        142,
        1,
        142,
        3,
        142,
        2288,
        8,
        142,
        1,
        143,
        1,
        143,
        3,
        143,
        2292,
        8,
        143,
        1,
        143,
        1,
        143,
        1,
        143,
        1,
        143,
        3,
        143,
        2298,
        8,
        143,
        1,
        144,
        1,
        144,
        1,
        144,
        1,
        145,
        1,
        145,
        1,
        145,
        5,
        145,
        2306,
        8,
        145,
        10,
        145,
        12,
        145,
        2309,
        9,
        145,
        1,
        145,
        3,
        145,
        2312,
        8,
        145,
        1,
        146,
        1,
        146,
        1,
        146,
        1,
        146,
        1,
        146,
        1,
        146,
        1,
        146,
        1,
        146,
        3,
        146,
        2322,
        8,
        146,
        1,
        147,
        1,
        147,
        1,
        147,
        1,
        147,
        1,
        147,
        3,
        147,
        2329,
        8,
        147,
        3,
        147,
        2331,
        8,
        147,
        1,
        148,
        1,
        148,
        1,
        148,
        5,
        148,
        2336,
        8,
        148,
        10,
        148,
        12,
        148,
        2339,
        9,
        148,
        1,
        148,
        3,
        148,
        2342,
        8,
        148,
        1,
        149,
        1,
        149,
        1,
        149,
        1,
        149,
        3,
        149,
        2348,
        8,
        149,
        1,
        150,
        1,
        150,
        1,
        150,
        5,
        150,
        2353,
        8,
        150,
        10,
        150,
        12,
        150,
        2356,
        9,
        150,
        1,
        150,
        3,
        150,
        2359,
        8,
        150,
        1,
        151,
        1,
        151,
        1,
        151,
        3,
        151,
        2364,
        8,
        151,
        1,
        152,
        1,
        152,
        1,
        152,
        1,
        152,
        1,
        153,
        1,
        153,
        3,
        153,
        2372,
        8,
        153,
        1,
        154,
        1,
        154,
        1,
        154,
        5,
        154,
        2377,
        8,
        154,
        10,
        154,
        12,
        154,
        2380,
        9,
        154,
        1,
        155,
        1,
        155,
        1,
        155,
        5,
        155,
        2385,
        8,
        155,
        10,
        155,
        12,
        155,
        2388,
        9,
        155,
        1,
        156,
        1,
        156,
        1,
        156,
        3,
        156,
        2393,
        8,
        156,
        1,
        157,
        1,
        157,
        5,
        157,
        2397,
        8,
        157,
        10,
        157,
        12,
        157,
        2400,
        9,
        157,
        1,
        158,
        1,
        158,
        1,
        158,
        1,
        158,
        1,
        158,
        1,
        158,
        1,
        158,
        1,
        158,
        1,
        158,
        1,
        158,
        3,
        158,
        2412,
        8,
        158,
        1,
        159,
        1,
        159,
        1,
        159,
        1,
        160,
        1,
        160,
        1,
        160,
        1,
        160,
        3,
        160,
        2421,
        8,
        160,
        1,
        161,
        1,
        161,
        1,
        161,
        1,
        162,
        1,
        162,
        1,
        162,
        1,
        163,
        1,
        163,
        1,
        163,
        1,
        164,
        1,
        164,
        1,
        164,
        1,
        165,
        1,
        165,
        1,
        165,
        1,
        165,
        1,
        166,
        1,
        166,
        1,
        166,
        1,
        167,
        1,
        167,
        1,
        167,
        1,
        167,
        1,
        168,
        1,
        168,
        1,
        168,
        1,
        169,
        1,
        169,
        1,
        169,
        1,
        169,
        1,
        169,
        1,
        169,
        5,
        169,
        2455,
        8,
        169,
        10,
        169,
        12,
        169,
        2458,
        9,
        169,
        1,
        170,
        1,
        170,
        1,
        170,
        1,
        170,
        1,
        170,
        1,
        170,
        5,
        170,
        2466,
        8,
        170,
        10,
        170,
        12,
        170,
        2469,
        9,
        170,
        1,
        171,
        1,
        171,
        1,
        171,
        1,
        171,
        1,
        171,
        1,
        171,
        5,
        171,
        2477,
        8,
        171,
        10,
        171,
        12,
        171,
        2480,
        9,
        171,
        1,
        172,
        1,
        172,
        1,
        172,
        1,
        172,
        1,
        172,
        1,
        172,
        1,
        172,
        1,
        172,
        1,
        172,
        5,
        172,
        2491,
        8,
        172,
        10,
        172,
        12,
        172,
        2494,
        9,
        172,
        1,
        173,
        1,
        173,
        1,
        173,
        1,
        173,
        1,
        173,
        1,
        173,
        1,
        173,
        1,
        173,
        1,
        173,
        5,
        173,
        2505,
        8,
        173,
        10,
        173,
        12,
        173,
        2508,
        9,
        173,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        1,
        174,
        5,
        174,
        2528,
        8,
        174,
        10,
        174,
        12,
        174,
        2531,
        9,
        174,
        1,
        175,
        1,
        175,
        1,
        175,
        1,
        175,
        1,
        175,
        1,
        175,
        1,
        175,
        3,
        175,
        2540,
        8,
        175,
        1,
        176,
        1,
        176,
        1,
        176,
        1,
        176,
        1,
        176,
        3,
        176,
        2547,
        8,
        176,
        1,
        177,
        1,
        177,
        1,
        177,
        3,
        177,
        2552,
        8,
        177,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        3,
        178,
        2565,
        8,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        1,
        178,
        5,
        178,
        2573,
        8,
        178,
        10,
        178,
        12,
        178,
        2576,
        9,
        178,
        1,
        179,
        1,
        179,
        3,
        179,
        2580,
        8,
        179,
        1,
        179,
        1,
        179,
        1,
        179,
        3,
        179,
        2585,
        8,
        179,
        5,
        179,
        2587,
        8,
        179,
        10,
        179,
        12,
        179,
        2590,
        9,
        179,
        1,
        179,
        3,
        179,
        2593,
        8,
        179,
        1,
        180,
        3,
        180,
        2596,
        8,
        180,
        1,
        180,
        1,
        180,
        3,
        180,
        2600,
        8,
        180,
        1,
        180,
        1,
        180,
        3,
        180,
        2604,
        8,
        180,
        3,
        180,
        2606,
        8,
        180,
        1,
        180,
        3,
        180,
        2609,
        8,
        180,
        1,
        181,
        1,
        181,
        1,
        181,
        1,
        181,
        1,
        181,
        1,
        181,
        1,
        181,
        1,
        181,
        1,
        181,
        1,
        181,
        3,
        181,
        2621,
        8,
        181,
        1,
        181,
        1,
        181,
        3,
        181,
        2625,
        8,
        181,
        1,
        181,
        1,
        181,
        1,
        181,
        1,
        181,
        3,
        181,
        2631,
        8,
        181,
        1,
        181,
        3,
        181,
        2634,
        8,
        181,
        1,
        182,
        1,
        182,
        1,
        182,
        3,
        182,
        2639,
        8,
        182,
        1,
        182,
        1,
        182,
        1,
        183,
        1,
        183,
        3,
        183,
        2645,
        8,
        183,
        1,
        183,
        1,
        183,
        1,
        183,
        1,
        184,
        1,
        184,
        1,
        185,
        1,
        185,
        5,
        185,
        2654,
        8,
        185,
        10,
        185,
        12,
        185,
        2657,
        9,
        185,
        1,
        185,
        5,
        185,
        2660,
        8,
        185,
        10,
        185,
        12,
        185,
        2663,
        9,
        185,
        1,
        185,
        3,
        185,
        2666,
        8,
        185,
        1,
        185,
        1,
        185,
        5,
        185,
        2670,
        8,
        185,
        10,
        185,
        12,
        185,
        2673,
        9,
        185,
        1,
        185,
        3,
        185,
        2676,
        8,
        185,
        1,
        185,
        4,
        185,
        2679,
        8,
        185,
        11,
        185,
        12,
        185,
        2680,
        1,
        185,
        5,
        185,
        2684,
        8,
        185,
        10,
        185,
        12,
        185,
        2687,
        9,
        185,
        1,
        185,
        3,
        185,
        2690,
        8,
        185,
        1,
        185,
        4,
        185,
        2693,
        8,
        185,
        11,
        185,
        12,
        185,
        2694,
        1,
        185,
        3,
        185,
        2698,
        8,
        185,
        1,
        185,
        3,
        185,
        2701,
        8,
        185,
        1,
        186,
        4,
        186,
        2704,
        8,
        186,
        11,
        186,
        12,
        186,
        2705,
        1,
        186,
        1,
        186,
        3,
        186,
        2710,
        8,
        186,
        1,
        187,
        5,
        187,
        2713,
        8,
        187,
        10,
        187,
        12,
        187,
        2716,
        9,
        187,
        1,
        187,
        4,
        187,
        2719,
        8,
        187,
        11,
        187,
        12,
        187,
        2720,
        1,
        187,
        1,
        187,
        3,
        187,
        2725,
        8,
        187,
        1,
        188,
        1,
        188,
        1,
        188,
        5,
        188,
        2730,
        8,
        188,
        10,
        188,
        12,
        188,
        2733,
        9,
        188,
        1,
        188,
        3,
        188,
        2736,
        8,
        188,
        1,
        188,
        1,
        188,
        1,
        188,
        4,
        188,
        2741,
        8,
        188,
        11,
        188,
        12,
        188,
        2742,
        1,
        188,
        3,
        188,
        2746,
        8,
        188,
        1,
        188,
        3,
        188,
        2749,
        8,
        188,
        1,
        189,
        1,
        189,
        1,
        189,
        1,
        190,
        1,
        190,
        3,
        190,
        2756,
        8,
        190,
        1,
        191,
        1,
        191,
        1,
        191,
        3,
        191,
        2761,
        8,
        191,
        1,
        192,
        1,
        192,
        3,
        192,
        2765,
        8,
        192,
        1,
        192,
        3,
        192,
        2768,
        8,
        192,
        1,
        193,
        1,
        193,
        1,
        194,
        1,
        194,
        3,
        194,
        2774,
        8,
        194,
        1,
        195,
        1,
        195,
        3,
        195,
        2778,
        8,
        195,
        1,
        196,
        1,
        196,
        3,
        196,
        2782,
        8,
        196,
        1,
        197,
        1,
        197,
        3,
        197,
        2786,
        8,
        197,
        1,
        198,
        1,
        198,
        1,
        198,
        3,
        198,
        2791,
        8,
        198,
        1,
        199,
        1,
        199,
        1,
        199,
        3,
        199,
        2796,
        8,
        199,
        1,
        200,
        1,
        200,
        1,
        200,
        3,
        200,
        2801,
        8,
        200,
        1,
        201,
        1,
        201,
        1,
        201,
        3,
        201,
        2806,
        8,
        201,
        1,
        202,
        1,
        202,
        1,
        202,
        3,
        202,
        2811,
        8,
        202,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        1,
        203,
        4,
        203,
        2919,
        8,
        203,
        11,
        203,
        12,
        203,
        2920,
        1,
        204,
        1,
        204,
        1,
        204,
        3,
        204,
        2926,
        8,
        204,
        1,
        204,
        3,
        204,
        2929,
        8,
        204,
        1,
        204,
        3,
        204,
        2932,
        8,
        204,
        1,
        204,
        3,
        204,
        2935,
        8,
        204,
        1,
        204,
        1,
        204,
        1,
        205,
        1,
        205,
        1,
        205,
        1,
        206,
        1,
        206,
        5,
        206,
        2944,
        8,
        206,
        10,
        206,
        12,
        206,
        2947,
        9,
        206,
        1,
        207,
        1,
        207,
        3,
        207,
        2951,
        8,
        207,
        1,
        208,
        1,
        208,
        5,
        208,
        2955,
        8,
        208,
        10,
        208,
        12,
        208,
        2958,
        9,
        208,
        1,
        208,
        1,
        208,
        1,
        208,
        5,
        208,
        2963,
        8,
        208,
        10,
        208,
        12,
        208,
        2966,
        9,
        208,
        1,
        208,
        1,
        208,
        1,
        208,
        5,
        208,
        2971,
        8,
        208,
        10,
        208,
        12,
        208,
        2974,
        9,
        208,
        1,
        208,
        1,
        208,
        1,
        208,
        5,
        208,
        2979,
        8,
        208,
        10,
        208,
        12,
        208,
        2982,
        9,
        208,
        1,
        208,
        3,
        208,
        2985,
        8,
        208,
        1,
        209,
        1,
        209,
        1,
        210,
        1,
        210,
        4,
        210,
        2991,
        8,
        210,
        11,
        210,
        12,
        210,
        2992,
        1,
        211,
        1,
        211,
        3,
        211,
        2997,
        8,
        211,
        1,
        211,
        1,
        211,
        1,
        212,
        1,
        212,
        1,
        212,
        1,
        212,
        1,
        212,
        3,
        212,
        3006,
        8,
        212,
        1,
        212,
        1,
        212,
        1,
        213,
        1,
        213,
        1,
        213,
        1,
        213,
        1,
        214,
        1,
        214,
        3,
        214,
        3016,
        8,
        214,
        1,
        214,
        1,
        214,
        1,
        215,
        1,
        215,
        1,
        215,
        5,
        215,
        3023,
        8,
        215,
        10,
        215,
        12,
        215,
        3026,
        9,
        215,
        1,
        215,
        3,
        215,
        3029,
        8,
        215,
        1,
        216,
        1,
        216,
        1,
        216,
        3,
        216,
        3034,
        8,
        216,
        1,
        217,
        1,
        217,
        1,
        217,
        1,
        217,
        1,
        218,
        4,
        218,
        3041,
        8,
        218,
        11,
        218,
        12,
        218,
        3042,
        1,
        219,
        3,
        219,
        3046,
        8,
        219,
        1,
        219,
        1,
        219,
        1,
        219,
        1,
        219,
        1,
        219,
        1,
        219,
        5,
        219,
        3054,
        8,
        219,
        10,
        219,
        12,
        219,
        3057,
        9,
        219,
        1,
        220,
        1,
        220,
        1,
        220,
        1,
        220,
        1,
        220,
        1,
        221,
        1,
        221,
        1,
        221,
        1,
        221,
        1,
        221,
        1,
        222,
        1,
        222,
        1,
        222,
        3,
        222,
        3072,
        8,
        222,
        1,
        222,
        1,
        222,
        1,
        222,
        1,
        223,
        1,
        223,
        1,
        223,
        1,
        223,
        1,
        223,
        1,
        224,
        1,
        224,
        3,
        224,
        3084,
        8,
        224,
        1,
        225,
        1,
        225,
        1,
        225,
        5,
        225,
        3089,
        8,
        225,
        10,
        225,
        12,
        225,
        3092,
        9,
        225,
        1,
        225,
        1,
        225,
        3,
        225,
        3096,
        8,
        225,
        1,
        225,
        3,
        225,
        3099,
        8,
        225,
        1,
        226,
        1,
        226,
        1,
        226,
        1,
        226,
        3,
        226,
        3105,
        8,
        226,
        1,
        227,
        1,
        227,
        1,
        227,
        5,
        227,
        3110,
        8,
        227,
        10,
        227,
        12,
        227,
        3113,
        9,
        227,
        1,
        227,
        1,
        227,
        1,
        227,
        1,
        227,
        5,
        227,
        3119,
        8,
        227,
        10,
        227,
        12,
        227,
        3122,
        9,
        227,
        1,
        227,
        1,
        227,
        1,
        227,
        5,
        227,
        3127,
        8,
        227,
        10,
        227,
        12,
        227,
        3130,
        9,
        227,
        1,
        227,
        1,
        227,
        1,
        227,
        5,
        227,
        3135,
        8,
        227,
        10,
        227,
        12,
        227,
        3138,
        9,
        227,
        3,
        227,
        3140,
        8,
        227,
        1,
        228,
        1,
        228,
        1,
        228,
        1,
        229,
        1,
        229,
        1,
        229,
        1,
        229,
        1,
        229,
        3,
        229,
        3150,
        8,
        229,
        1,
        230,
        1,
        230,
        1,
        230,
        1,
        230,
        1,
        230,
        1,
        230,
        3,
        230,
        3158,
        8,
        230,
        1,
        231,
        1,
        231,
        1,
        231,
        5,
        231,
        3163,
        8,
        231,
        10,
        231,
        12,
        231,
        3166,
        9,
        231,
        1,
        231,
        3,
        231,
        3169,
        8,
        231,
        1,
        232,
        1,
        232,
        1,
        232,
        5,
        232,
        3174,
        8,
        232,
        10,
        232,
        12,
        232,
        3177,
        9,
        232,
        1,
        232,
        3,
        232,
        3180,
        8,
        232,
        1,
        233,
        1,
        233,
        1,
        233,
        4,
        233,
        3185,
        8,
        233,
        11,
        233,
        12,
        233,
        3186,
        1,
        233,
        3,
        233,
        3190,
        8,
        233,
        1,
        233,
        1,
        233,
        1,
        233,
        3,
        233,
        3195,
        8,
        233,
        1,
        234,
        1,
        234,
        1,
        234,
        3,
        234,
        3200,
        8,
        234,
        1,
        235,
        1,
        235,
        1,
        235,
        1,
        235,
        1,
        235,
        1,
        235,
        1,
        235,
        1,
        235,
        1,
        235,
        1,
        235,
        3,
        235,
        3212,
        8,
        235,
        1,
        236,
        1,
        236,
        1,
        236,
        1,
        236,
        1,
        236,
        1,
        236,
        1,
        236,
        3,
        236,
        3221,
        8,
        236,
        1,
        236,
        1,
        236,
        1,
        236,
        3,
        236,
        3226,
        8,
        236,
        1,
        236,
        3,
        236,
        3229,
        8,
        236,
        1,
        237,
        1,
        237,
        1,
        237,
        1,
        237,
        1,
        237,
        1,
        237,
        3,
        237,
        3237,
        8,
        237,
        1,
        238,
        1,
        238,
        1,
        238,
        1,
        238,
        1,
        238,
        1,
        238,
        1,
        238,
        1,
        238,
        1,
        238,
        3,
        238,
        3248,
        8,
        238,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        1,
        239,
        3,
        239,
        3266,
        8,
        239,
        1,
        239,
        5,
        239,
        3269,
        8,
        239,
        10,
        239,
        12,
        239,
        3272,
        9,
        239,
        1,
        240,
        1,
        240,
        1,
        240,
        5,
        240,
        3277,
        8,
        240,
        10,
        240,
        12,
        240,
        3280,
        9,
        240,
        1,
        240,
        3,
        240,
        3283,
        8,
        240,
        1,
        241,
        1,
        241,
        1,
        241,
        1,
        241,
        1,
        241,
        1,
        241,
        1,
        241,
        1,
        241,
        1,
        241,
        1,
        241,
        3,
        241,
        3295,
        8,
        241,
        1,
        242,
        1,
        242,
        1,
        242,
        3,
        242,
        3300,
        8,
        242,
        1,
        242,
        1,
        242,
        1,
        242,
        3,
        242,
        3305,
        8,
        242,
        1,
        242,
        3,
        242,
        3308,
        8,
        242,
        1,
        243,
        1,
        243,
        1,
        243,
        5,
        243,
        3313,
        8,
        243,
        10,
        243,
        12,
        243,
        3316,
        9,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        5,
        243,
        3328,
        8,
        243,
        10,
        243,
        12,
        243,
        3331,
        9,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        5,
        243,
        3340,
        8,
        243,
        10,
        243,
        12,
        243,
        3343,
        9,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        1,
        243,
        5,
        243,
        3362,
        8,
        243,
        10,
        243,
        12,
        243,
        3365,
        9,
        243,
        3,
        243,
        3367,
        8,
        243,
        1,
        244,
        1,
        244,
        1,
        245,
        1,
        245,
        1,
        245,
        0,
        12,
        28,
        56,
        142,
        250,
        338,
        340,
        342,
        344,
        346,
        348,
        356,
        478,
        246,
        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,
        196,
        198,
        200,
        202,
        204,
        206,
        208,
        210,
        212,
        214,
        216,
        218,
        220,
        222,
        224,
        226,
        228,
        230,
        232,
        234,
        236,
        238,
        240,
        242,
        244,
        246,
        248,
        250,
        252,
        254,
        256,
        258,
        260,
        262,
        264,
        266,
        268,
        270,
        272,
        274,
        276,
        278,
        280,
        282,
        284,
        286,
        288,
        290,
        292,
        294,
        296,
        298,
        300,
        302,
        304,
        306,
        308,
        310,
        312,
        314,
        316,
        318,
        320,
        322,
        324,
        326,
        328,
        330,
        332,
        334,
        336,
        338,
        340,
        342,
        344,
        346,
        348,
        350,
        352,
        354,
        356,
        358,
        360,
        362,
        364,
        366,
        368,
        370,
        372,
        374,
        376,
        378,
        380,
        382,
        384,
        386,
        388,
        390,
        392,
        394,
        396,
        398,
        400,
        402,
        404,
        406,
        408,
        410,
        412,
        414,
        416,
        418,
        420,
        422,
        424,
        426,
        428,
        430,
        432,
        434,
        436,
        438,
        440,
        442,
        444,
        446,
        448,
        450,
        452,
        454,
        456,
        458,
        460,
        462,
        464,
        466,
        468,
        470,
        472,
        474,
        476,
        478,
        480,
        482,
        484,
        486,
        488,
        490,
        0,
        5,
        2,
        1,
        85,
        85,
        127,
        127,
        1,
        0,
        103,
        109,
        1,
        0,
        112,
        124,
        2,
        0,
        77,
        77,
        79,
        79,
        2,
        0,
        55,
        57,
        61,
        61,
        3796,
        0,
        492,
        1,
        0,
        0,
        0,
        2,
        498,
        1,
        0,
        0,
        0,
        4,
        517,
        1,
        0,
        0,
        0,
        6,
        604,
        1,
        0,
        0,
        0,
        8,
        606,
        1,
        0,
        0,
        0,
        10,
        614,
        1,
        0,
        0,
        0,
        12,
        626,
        1,
        0,
        0,
        0,
        14,
        628,
        1,
        0,
        0,
        0,
        16,
        631,
        1,
        0,
        0,
        0,
        18,
        634,
        1,
        0,
        0,
        0,
        20,
        653,
        1,
        0,
        0,
        0,
        22,
        664,
        1,
        0,
        0,
        0,
        24,
        666,
        1,
        0,
        0,
        0,
        26,
        680,
        1,
        0,
        0,
        0,
        28,
        684,
        1,
        0,
        0,
        0,
        30,
        708,
        1,
        0,
        0,
        0,
        32,
        778,
        1,
        0,
        0,
        0,
        34,
        786,
        1,
        0,
        0,
        0,
        36,
        996,
        1,
        0,
        0,
        0,
        38,
        1107,
        1,
        0,
        0,
        0,
        40,
        1109,
        1,
        0,
        0,
        0,
        42,
        1117,
        1,
        0,
        0,
        0,
        44,
        1131,
        1,
        0,
        0,
        0,
        46,
        1133,
        1,
        0,
        0,
        0,
        48,
        1145,
        1,
        0,
        0,
        0,
        50,
        1157,
        1,
        0,
        0,
        0,
        52,
        1161,
        1,
        0,
        0,
        0,
        54,
        1167,
        1,
        0,
        0,
        0,
        56,
        1169,
        1,
        0,
        0,
        0,
        58,
        1194,
        1,
        0,
        0,
        0,
        60,
        1201,
        1,
        0,
        0,
        0,
        62,
        1203,
        1,
        0,
        0,
        0,
        64,
        1214,
        1,
        0,
        0,
        0,
        66,
        1220,
        1,
        0,
        0,
        0,
        68,
        1250,
        1,
        0,
        0,
        0,
        70,
        1254,
        1,
        0,
        0,
        0,
        72,
        1259,
        1,
        0,
        0,
        0,
        74,
        1272,
        1,
        0,
        0,
        0,
        76,
        1283,
        1,
        0,
        0,
        0,
        78,
        1296,
        1,
        0,
        0,
        0,
        80,
        1298,
        1,
        0,
        0,
        0,
        82,
        1312,
        1,
        0,
        0,
        0,
        84,
        1314,
        1,
        0,
        0,
        0,
        86,
        1317,
        1,
        0,
        0,
        0,
        88,
        1322,
        1,
        0,
        0,
        0,
        90,
        1324,
        1,
        0,
        0,
        0,
        92,
        1334,
        1,
        0,
        0,
        0,
        94,
        1352,
        1,
        0,
        0,
        0,
        96,
        1358,
        1,
        0,
        0,
        0,
        98,
        1365,
        1,
        0,
        0,
        0,
        100,
        1367,
        1,
        0,
        0,
        0,
        102,
        1406,
        1,
        0,
        0,
        0,
        104,
        1416,
        1,
        0,
        0,
        0,
        106,
        1455,
        1,
        0,
        0,
        0,
        108,
        1459,
        1,
        0,
        0,
        0,
        110,
        1461,
        1,
        0,
        0,
        0,
        112,
        1463,
        1,
        0,
        0,
        0,
        114,
        1474,
        1,
        0,
        0,
        0,
        116,
        1476,
        1,
        0,
        0,
        0,
        118,
        1485,
        1,
        0,
        0,
        0,
        120,
        1494,
        1,
        0,
        0,
        0,
        122,
        1497,
        1,
        0,
        0,
        0,
        124,
        1499,
        1,
        0,
        0,
        0,
        126,
        1507,
        1,
        0,
        0,
        0,
        128,
        1509,
        1,
        0,
        0,
        0,
        130,
        1531,
        1,
        0,
        0,
        0,
        132,
        1542,
        1,
        0,
        0,
        0,
        134,
        1544,
        1,
        0,
        0,
        0,
        136,
        1552,
        1,
        0,
        0,
        0,
        138,
        1557,
        1,
        0,
        0,
        0,
        140,
        1565,
        1,
        0,
        0,
        0,
        142,
        1570,
        1,
        0,
        0,
        0,
        144,
        1587,
        1,
        0,
        0,
        0,
        146,
        1593,
        1,
        0,
        0,
        0,
        148,
        1598,
        1,
        0,
        0,
        0,
        150,
        1602,
        1,
        0,
        0,
        0,
        152,
        1618,
        1,
        0,
        0,
        0,
        154,
        1623,
        1,
        0,
        0,
        0,
        156,
        1645,
        1,
        0,
        0,
        0,
        158,
        1696,
        1,
        0,
        0,
        0,
        160,
        1699,
        1,
        0,
        0,
        0,
        162,
        1710,
        1,
        0,
        0,
        0,
        164,
        1755,
        1,
        0,
        0,
        0,
        166,
        1757,
        1,
        0,
        0,
        0,
        168,
        1764,
        1,
        0,
        0,
        0,
        170,
        1770,
        1,
        0,
        0,
        0,
        172,
        1779,
        1,
        0,
        0,
        0,
        174,
        1791,
        1,
        0,
        0,
        0,
        176,
        1793,
        1,
        0,
        0,
        0,
        178,
        1797,
        1,
        0,
        0,
        0,
        180,
        1800,
        1,
        0,
        0,
        0,
        182,
        1803,
        1,
        0,
        0,
        0,
        184,
        1806,
        1,
        0,
        0,
        0,
        186,
        1822,
        1,
        0,
        0,
        0,
        188,
        1837,
        1,
        0,
        0,
        0,
        190,
        1839,
        1,
        0,
        0,
        0,
        192,
        1843,
        1,
        0,
        0,
        0,
        194,
        1869,
        1,
        0,
        0,
        0,
        196,
        1931,
        1,
        0,
        0,
        0,
        198,
        1938,
        1,
        0,
        0,
        0,
        200,
        1973,
        1,
        0,
        0,
        0,
        202,
        1987,
        1,
        0,
        0,
        0,
        204,
        1989,
        1,
        0,
        0,
        0,
        206,
        1999,
        1,
        0,
        0,
        0,
        208,
        2003,
        1,
        0,
        0,
        0,
        210,
        2021,
        1,
        0,
        0,
        0,
        212,
        2023,
        1,
        0,
        0,
        0,
        214,
        2031,
        1,
        0,
        0,
        0,
        216,
        2036,
        1,
        0,
        0,
        0,
        218,
        2040,
        1,
        0,
        0,
        0,
        220,
        2042,
        1,
        0,
        0,
        0,
        222,
        2046,
        1,
        0,
        0,
        0,
        224,
        2062,
        1,
        0,
        0,
        0,
        226,
        2070,
        1,
        0,
        0,
        0,
        228,
        2078,
        1,
        0,
        0,
        0,
        230,
        2088,
        1,
        0,
        0,
        0,
        232,
        2093,
        1,
        0,
        0,
        0,
        234,
        2098,
        1,
        0,
        0,
        0,
        236,
        2100,
        1,
        0,
        0,
        0,
        238,
        2102,
        1,
        0,
        0,
        0,
        240,
        2104,
        1,
        0,
        0,
        0,
        242,
        2106,
        1,
        0,
        0,
        0,
        244,
        2108,
        1,
        0,
        0,
        0,
        246,
        2110,
        1,
        0,
        0,
        0,
        248,
        2112,
        1,
        0,
        0,
        0,
        250,
        2116,
        1,
        0,
        0,
        0,
        252,
        2127,
        1,
        0,
        0,
        0,
        254,
        2141,
        1,
        0,
        0,
        0,
        256,
        2143,
        1,
        0,
        0,
        0,
        258,
        2148,
        1,
        0,
        0,
        0,
        260,
        2161,
        1,
        0,
        0,
        0,
        262,
        2167,
        1,
        0,
        0,
        0,
        264,
        2194,
        1,
        0,
        0,
        0,
        266,
        2196,
        1,
        0,
        0,
        0,
        268,
        2206,
        1,
        0,
        0,
        0,
        270,
        2211,
        1,
        0,
        0,
        0,
        272,
        2244,
        1,
        0,
        0,
        0,
        274,
        2246,
        1,
        0,
        0,
        0,
        276,
        2254,
        1,
        0,
        0,
        0,
        278,
        2262,
        1,
        0,
        0,
        0,
        280,
        2266,
        1,
        0,
        0,
        0,
        282,
        2274,
        1,
        0,
        0,
        0,
        284,
        2278,
        1,
        0,
        0,
        0,
        286,
        2297,
        1,
        0,
        0,
        0,
        288,
        2299,
        1,
        0,
        0,
        0,
        290,
        2302,
        1,
        0,
        0,
        0,
        292,
        2321,
        1,
        0,
        0,
        0,
        294,
        2330,
        1,
        0,
        0,
        0,
        296,
        2332,
        1,
        0,
        0,
        0,
        298,
        2347,
        1,
        0,
        0,
        0,
        300,
        2349,
        1,
        0,
        0,
        0,
        302,
        2363,
        1,
        0,
        0,
        0,
        304,
        2365,
        1,
        0,
        0,
        0,
        306,
        2371,
        1,
        0,
        0,
        0,
        308,
        2373,
        1,
        0,
        0,
        0,
        310,
        2381,
        1,
        0,
        0,
        0,
        312,
        2392,
        1,
        0,
        0,
        0,
        314,
        2394,
        1,
        0,
        0,
        0,
        316,
        2411,
        1,
        0,
        0,
        0,
        318,
        2413,
        1,
        0,
        0,
        0,
        320,
        2420,
        1,
        0,
        0,
        0,
        322,
        2422,
        1,
        0,
        0,
        0,
        324,
        2425,
        1,
        0,
        0,
        0,
        326,
        2428,
        1,
        0,
        0,
        0,
        328,
        2431,
        1,
        0,
        0,
        0,
        330,
        2434,
        1,
        0,
        0,
        0,
        332,
        2438,
        1,
        0,
        0,
        0,
        334,
        2441,
        1,
        0,
        0,
        0,
        336,
        2445,
        1,
        0,
        0,
        0,
        338,
        2448,
        1,
        0,
        0,
        0,
        340,
        2459,
        1,
        0,
        0,
        0,
        342,
        2470,
        1,
        0,
        0,
        0,
        344,
        2481,
        1,
        0,
        0,
        0,
        346,
        2495,
        1,
        0,
        0,
        0,
        348,
        2509,
        1,
        0,
        0,
        0,
        350,
        2539,
        1,
        0,
        0,
        0,
        352,
        2546,
        1,
        0,
        0,
        0,
        354,
        2551,
        1,
        0,
        0,
        0,
        356,
        2553,
        1,
        0,
        0,
        0,
        358,
        2579,
        1,
        0,
        0,
        0,
        360,
        2608,
        1,
        0,
        0,
        0,
        362,
        2633,
        1,
        0,
        0,
        0,
        364,
        2635,
        1,
        0,
        0,
        0,
        366,
        2642,
        1,
        0,
        0,
        0,
        368,
        2649,
        1,
        0,
        0,
        0,
        370,
        2700,
        1,
        0,
        0,
        0,
        372,
        2703,
        1,
        0,
        0,
        0,
        374,
        2714,
        1,
        0,
        0,
        0,
        376,
        2748,
        1,
        0,
        0,
        0,
        378,
        2750,
        1,
        0,
        0,
        0,
        380,
        2753,
        1,
        0,
        0,
        0,
        382,
        2757,
        1,
        0,
        0,
        0,
        384,
        2762,
        1,
        0,
        0,
        0,
        386,
        2769,
        1,
        0,
        0,
        0,
        388,
        2773,
        1,
        0,
        0,
        0,
        390,
        2777,
        1,
        0,
        0,
        0,
        392,
        2781,
        1,
        0,
        0,
        0,
        394,
        2785,
        1,
        0,
        0,
        0,
        396,
        2790,
        1,
        0,
        0,
        0,
        398,
        2795,
        1,
        0,
        0,
        0,
        400,
        2800,
        1,
        0,
        0,
        0,
        402,
        2805,
        1,
        0,
        0,
        0,
        404,
        2810,
        1,
        0,
        0,
        0,
        406,
        2918,
        1,
        0,
        0,
        0,
        408,
        2922,
        1,
        0,
        0,
        0,
        410,
        2938,
        1,
        0,
        0,
        0,
        412,
        2941,
        1,
        0,
        0,
        0,
        414,
        2950,
        1,
        0,
        0,
        0,
        416,
        2984,
        1,
        0,
        0,
        0,
        418,
        2986,
        1,
        0,
        0,
        0,
        420,
        2990,
        1,
        0,
        0,
        0,
        422,
        2994,
        1,
        0,
        0,
        0,
        424,
        3000,
        1,
        0,
        0,
        0,
        426,
        3009,
        1,
        0,
        0,
        0,
        428,
        3013,
        1,
        0,
        0,
        0,
        430,
        3019,
        1,
        0,
        0,
        0,
        432,
        3033,
        1,
        0,
        0,
        0,
        434,
        3035,
        1,
        0,
        0,
        0,
        436,
        3040,
        1,
        0,
        0,
        0,
        438,
        3045,
        1,
        0,
        0,
        0,
        440,
        3058,
        1,
        0,
        0,
        0,
        442,
        3063,
        1,
        0,
        0,
        0,
        444,
        3068,
        1,
        0,
        0,
        0,
        446,
        3076,
        1,
        0,
        0,
        0,
        448,
        3081,
        1,
        0,
        0,
        0,
        450,
        3098,
        1,
        0,
        0,
        0,
        452,
        3104,
        1,
        0,
        0,
        0,
        454,
        3139,
        1,
        0,
        0,
        0,
        456,
        3141,
        1,
        0,
        0,
        0,
        458,
        3149,
        1,
        0,
        0,
        0,
        460,
        3157,
        1,
        0,
        0,
        0,
        462,
        3159,
        1,
        0,
        0,
        0,
        464,
        3170,
        1,
        0,
        0,
        0,
        466,
        3194,
        1,
        0,
        0,
        0,
        468,
        3199,
        1,
        0,
        0,
        0,
        470,
        3211,
        1,
        0,
        0,
        0,
        472,
        3228,
        1,
        0,
        0,
        0,
        474,
        3236,
        1,
        0,
        0,
        0,
        476,
        3247,
        1,
        0,
        0,
        0,
        478,
        3249,
        1,
        0,
        0,
        0,
        480,
        3273,
        1,
        0,
        0,
        0,
        482,
        3294,
        1,
        0,
        0,
        0,
        484,
        3307,
        1,
        0,
        0,
        0,
        486,
        3366,
        1,
        0,
        0,
        0,
        488,
        3368,
        1,
        0,
        0,
        0,
        490,
        3370,
        1,
        0,
        0,
        0,
        492,
        493,
        3,
        2,
        1,
        0,
        493,
        494,
        5,
        0,
        0,
        1,
        494,
        1,
        1,
        0,
        0,
        0,
        495,
        497,
        5,
        127,
        0,
        0,
        496,
        495,
        1,
        0,
        0,
        0,
        497,
        500,
        1,
        0,
        0,
        0,
        498,
        496,
        1,
        0,
        0,
        0,
        498,
        499,
        1,
        0,
        0,
        0,
        499,
        510,
        1,
        0,
        0,
        0,
        500,
        498,
        1,
        0,
        0,
        0,
        501,
        505,
        3,
        4,
        2,
        0,
        502,
        504,
        5,
        127,
        0,
        0,
        503,
        502,
        1,
        0,
        0,
        0,
        504,
        507,
        1,
        0,
        0,
        0,
        505,
        503,
        1,
        0,
        0,
        0,
        505,
        506,
        1,
        0,
        0,
        0,
        506,
        509,
        1,
        0,
        0,
        0,
        507,
        505,
        1,
        0,
        0,
        0,
        508,
        501,
        1,
        0,
        0,
        0,
        509,
        512,
        1,
        0,
        0,
        0,
        510,
        508,
        1,
        0,
        0,
        0,
        510,
        511,
        1,
        0,
        0,
        0,
        511,
        3,
        1,
        0,
        0,
        0,
        512,
        510,
        1,
        0,
        0,
        0,
        513,
        518,
        3,
        6,
        3,
        0,
        514,
        518,
        3,
        32,
        16,
        0,
        515,
        518,
        3,
        74,
        37,
        0,
        516,
        518,
        3,
        70,
        35,
        0,
        517,
        513,
        1,
        0,
        0,
        0,
        517,
        514,
        1,
        0,
        0,
        0,
        517,
        515,
        1,
        0,
        0,
        0,
        517,
        516,
        1,
        0,
        0,
        0,
        518,
        5,
        1,
        0,
        0,
        0,
        519,
        521,
        5,
        1,
        0,
        0,
        520,
        519,
        1,
        0,
        0,
        0,
        521,
        524,
        1,
        0,
        0,
        0,
        522,
        520,
        1,
        0,
        0,
        0,
        522,
        523,
        1,
        0,
        0,
        0,
        523,
        525,
        1,
        0,
        0,
        0,
        524,
        522,
        1,
        0,
        0,
        0,
        525,
        526,
        3,
        26,
        13,
        0,
        526,
        527,
        5,
        74,
        0,
        0,
        527,
        530,
        3,
        8,
        4,
        0,
        528,
        529,
        5,
        125,
        0,
        0,
        529,
        531,
        3,
        292,
        146,
        0,
        530,
        528,
        1,
        0,
        0,
        0,
        530,
        531,
        1,
        0,
        0,
        0,
        531,
        539,
        1,
        0,
        0,
        0,
        532,
        540,
        5,
        85,
        0,
        0,
        533,
        535,
        5,
        127,
        0,
        0,
        534,
        533,
        1,
        0,
        0,
        0,
        535,
        536,
        1,
        0,
        0,
        0,
        536,
        534,
        1,
        0,
        0,
        0,
        536,
        537,
        1,
        0,
        0,
        0,
        537,
        540,
        1,
        0,
        0,
        0,
        538,
        540,
        5,
        0,
        0,
        1,
        539,
        532,
        1,
        0,
        0,
        0,
        539,
        534,
        1,
        0,
        0,
        0,
        539,
        538,
        1,
        0,
        0,
        0,
        540,
        544,
        1,
        0,
        0,
        0,
        541,
        543,
        5,
        2,
        0,
        0,
        542,
        541,
        1,
        0,
        0,
        0,
        543,
        546,
        1,
        0,
        0,
        0,
        544,
        542,
        1,
        0,
        0,
        0,
        544,
        545,
        1,
        0,
        0,
        0,
        545,
        605,
        1,
        0,
        0,
        0,
        546,
        544,
        1,
        0,
        0,
        0,
        547,
        549,
        5,
        1,
        0,
        0,
        548,
        547,
        1,
        0,
        0,
        0,
        549,
        552,
        1,
        0,
        0,
        0,
        550,
        548,
        1,
        0,
        0,
        0,
        550,
        551,
        1,
        0,
        0,
        0,
        551,
        553,
        1,
        0,
        0,
        0,
        552,
        550,
        1,
        0,
        0,
        0,
        553,
        554,
        3,
        26,
        13,
        0,
        554,
        555,
        5,
        74,
        0,
        0,
        555,
        558,
        3,
        8,
        4,
        0,
        556,
        557,
        5,
        87,
        0,
        0,
        557,
        559,
        3,
        292,
        146,
        0,
        558,
        556,
        1,
        0,
        0,
        0,
        558,
        559,
        1,
        0,
        0,
        0,
        559,
        567,
        1,
        0,
        0,
        0,
        560,
        568,
        5,
        85,
        0,
        0,
        561,
        563,
        5,
        127,
        0,
        0,
        562,
        561,
        1,
        0,
        0,
        0,
        563,
        564,
        1,
        0,
        0,
        0,
        564,
        562,
        1,
        0,
        0,
        0,
        564,
        565,
        1,
        0,
        0,
        0,
        565,
        568,
        1,
        0,
        0,
        0,
        566,
        568,
        5,
        0,
        0,
        1,
        567,
        560,
        1,
        0,
        0,
        0,
        567,
        562,
        1,
        0,
        0,
        0,
        567,
        566,
        1,
        0,
        0,
        0,
        568,
        572,
        1,
        0,
        0,
        0,
        569,
        571,
        5,
        2,
        0,
        0,
        570,
        569,
        1,
        0,
        0,
        0,
        571,
        574,
        1,
        0,
        0,
        0,
        572,
        570,
        1,
        0,
        0,
        0,
        572,
        573,
        1,
        0,
        0,
        0,
        573,
        605,
        1,
        0,
        0,
        0,
        574,
        572,
        1,
        0,
        0,
        0,
        575,
        577,
        5,
        1,
        0,
        0,
        576,
        575,
        1,
        0,
        0,
        0,
        577,
        580,
        1,
        0,
        0,
        0,
        578,
        576,
        1,
        0,
        0,
        0,
        578,
        579,
        1,
        0,
        0,
        0,
        579,
        581,
        1,
        0,
        0,
        0,
        580,
        578,
        1,
        0,
        0,
        0,
        581,
        582,
        3,
        26,
        13,
        0,
        582,
        583,
        5,
        74,
        0,
        0,
        583,
        587,
        3,
        8,
        4,
        0,
        584,
        585,
        5,
        84,
        0,
        0,
        585,
        586,
        5,
        84,
        0,
        0,
        586,
        588,
        3,
        292,
        146,
        0,
        587,
        584,
        1,
        0,
        0,
        0,
        587,
        588,
        1,
        0,
        0,
        0,
        588,
        596,
        1,
        0,
        0,
        0,
        589,
        597,
        5,
        85,
        0,
        0,
        590,
        592,
        5,
        127,
        0,
        0,
        591,
        590,
        1,
        0,
        0,
        0,
        592,
        593,
        1,
        0,
        0,
        0,
        593,
        591,
        1,
        0,
        0,
        0,
        593,
        594,
        1,
        0,
        0,
        0,
        594,
        597,
        1,
        0,
        0,
        0,
        595,
        597,
        5,
        0,
        0,
        1,
        596,
        589,
        1,
        0,
        0,
        0,
        596,
        591,
        1,
        0,
        0,
        0,
        596,
        595,
        1,
        0,
        0,
        0,
        597,
        601,
        1,
        0,
        0,
        0,
        598,
        600,
        5,
        2,
        0,
        0,
        599,
        598,
        1,
        0,
        0,
        0,
        600,
        603,
        1,
        0,
        0,
        0,
        601,
        599,
        1,
        0,
        0,
        0,
        601,
        602,
        1,
        0,
        0,
        0,
        602,
        605,
        1,
        0,
        0,
        0,
        603,
        601,
        1,
        0,
        0,
        0,
        604,
        522,
        1,
        0,
        0,
        0,
        604,
        550,
        1,
        0,
        0,
        0,
        604,
        578,
        1,
        0,
        0,
        0,
        605,
        7,
        1,
        0,
        0,
        0,
        606,
        611,
        3,
        10,
        5,
        0,
        607,
        608,
        5,
        90,
        0,
        0,
        608,
        610,
        3,
        10,
        5,
        0,
        609,
        607,
        1,
        0,
        0,
        0,
        610,
        613,
        1,
        0,
        0,
        0,
        611,
        609,
        1,
        0,
        0,
        0,
        611,
        612,
        1,
        0,
        0,
        0,
        612,
        9,
        1,
        0,
        0,
        0,
        613,
        611,
        1,
        0,
        0,
        0,
        614,
        618,
        3,
        12,
        6,
        0,
        615,
        617,
        3,
        12,
        6,
        0,
        616,
        615,
        1,
        0,
        0,
        0,
        617,
        620,
        1,
        0,
        0,
        0,
        618,
        616,
        1,
        0,
        0,
        0,
        618,
        619,
        1,
        0,
        0,
        0,
        619,
        11,
        1,
        0,
        0,
        0,
        620,
        618,
        1,
        0,
        0,
        0,
        621,
        627,
        3,
        22,
        11,
        0,
        622,
        627,
        3,
        14,
        7,
        0,
        623,
        627,
        3,
        16,
        8,
        0,
        624,
        627,
        3,
        18,
        9,
        0,
        625,
        627,
        3,
        20,
        10,
        0,
        626,
        621,
        1,
        0,
        0,
        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,
        13,
        1,
        0,
        0,
        0,
        628,
        629,
        3,
        22,
        11,
        0,
        629,
        630,
        5,
        80,
        0,
        0,
        630,
        15,
        1,
        0,
        0,
        0,
        631,
        632,
        3,
        22,
        11,
        0,
        632,
        633,
        5,
        95,
        0,
        0,
        633,
        17,
        1,
        0,
        0,
        0,
        634,
        635,
        3,
        22,
        11,
        0,
        635,
        636,
        5,
        75,
        0,
        0,
        636,
        19,
        1,
        0,
        0,
        0,
        637,
        638,
        3,
        22,
        11,
        0,
        638,
        639,
        5,
        101,
        0,
        0,
        639,
        640,
        3,
        292,
        146,
        0,
        640,
        641,
        5,
        102,
        0,
        0,
        641,
        654,
        1,
        0,
        0,
        0,
        642,
        643,
        3,
        22,
        11,
        0,
        643,
        645,
        5,
        101,
        0,
        0,
        644,
        646,
        3,
        292,
        146,
        0,
        645,
        644,
        1,
        0,
        0,
        0,
        645,
        646,
        1,
        0,
        0,
        0,
        646,
        647,
        1,
        0,
        0,
        0,
        647,
        649,
        5,
        83,
        0,
        0,
        648,
        650,
        3,
        292,
        146,
        0,
        649,
        648,
        1,
        0,
        0,
        0,
        649,
        650,
        1,
        0,
        0,
        0,
        650,
        651,
        1,
        0,
        0,
        0,
        651,
        652,
        5,
        102,
        0,
        0,
        652,
        654,
        1,
        0,
        0,
        0,
        653,
        637,
        1,
        0,
        0,
        0,
        653,
        642,
        1,
        0,
        0,
        0,
        654,
        21,
        1,
        0,
        0,
        0,
        655,
        665,
        3,
        24,
        12,
        0,
        656,
        665,
        3,
        418,
        209,
        0,
        657,
        665,
        5,
        8,
        0,
        0,
        658,
        665,
        3,
        28,
        14,
        0,
        659,
        665,
        3,
        30,
        15,
        0,
        660,
        661,
        5,
        81,
        0,
        0,
        661,
        662,
        3,
        8,
        4,
        0,
        662,
        663,
        5,
        82,
        0,
        0,
        663,
        665,
        1,
        0,
        0,
        0,
        664,
        655,
        1,
        0,
        0,
        0,
        664,
        656,
        1,
        0,
        0,
        0,
        664,
        657,
        1,
        0,
        0,
        0,
        664,
        658,
        1,
        0,
        0,
        0,
        664,
        659,
        1,
        0,
        0,
        0,
        664,
        660,
        1,
        0,
        0,
        0,
        665,
        23,
        1,
        0,
        0,
        0,
        666,
        675,
        5,
        103,
        0,
        0,
        667,
        668,
        3,
        490,
        245,
        0,
        668,
        669,
        5,
        84,
        0,
        0,
        669,
        671,
        1,
        0,
        0,
        0,
        670,
        667,
        1,
        0,
        0,
        0,
        670,
        671,
        1,
        0,
        0,
        0,
        671,
        672,
        1,
        0,
        0,
        0,
        672,
        673,
        3,
        490,
        245,
        0,
        673,
        674,
        5,
        84,
        0,
        0,
        674,
        676,
        1,
        0,
        0,
        0,
        675,
        670,
        1,
        0,
        0,
        0,
        675,
        676,
        1,
        0,
        0,
        0,
        676,
        677,
        1,
        0,
        0,
        0,
        677,
        678,
        3,
        490,
        245,
        0,
        678,
        679,
        5,
        104,
        0,
        0,
        679,
        25,
        1,
        0,
        0,
        0,
        680,
        681,
        5,
        103,
        0,
        0,
        681,
        682,
        3,
        490,
        245,
        0,
        682,
        683,
        5,
        104,
        0,
        0,
        683,
        27,
        1,
        0,
        0,
        0,
        684,
        685,
        6,
        14,
        -1,
        0,
        685,
        686,
        3,
        490,
        245,
        0,
        686,
        705,
        1,
        0,
        0,
        0,
        687,
        688,
        10,
        4,
        0,
        0,
        688,
        689,
        5,
        79,
        0,
        0,
        689,
        704,
        3,
        490,
        245,
        0,
        690,
        691,
        10,
        3,
        0,
        0,
        691,
        692,
        5,
        88,
        0,
        0,
        692,
        693,
        3,
        358,
        179,
        0,
        693,
        694,
        5,
        89,
        0,
        0,
        694,
        704,
        1,
        0,
        0,
        0,
        695,
        696,
        10,
        2,
        0,
        0,
        696,
        704,
        3,
        444,
        222,
        0,
        697,
        698,
        10,
        1,
        0,
        0,
        698,
        700,
        5,
        81,
        0,
        0,
        699,
        701,
        3,
        448,
        224,
        0,
        700,
        699,
        1,
        0,
        0,
        0,
        700,
        701,
        1,
        0,
        0,
        0,
        701,
        702,
        1,
        0,
        0,
        0,
        702,
        704,
        5,
        82,
        0,
        0,
        703,
        687,
        1,
        0,
        0,
        0,
        703,
        690,
        1,
        0,
        0,
        0,
        703,
        695,
        1,
        0,
        0,
        0,
        703,
        697,
        1,
        0,
        0,
        0,
        704,
        707,
        1,
        0,
        0,
        0,
        705,
        703,
        1,
        0,
        0,
        0,
        705,
        706,
        1,
        0,
        0,
        0,
        706,
        29,
        1,
        0,
        0,
        0,
        707,
        705,
        1,
        0,
        0,
        0,
        708,
        710,
        5,
        88,
        0,
        0,
        709,
        711,
        5,
        91,
        0,
        0,
        710,
        709,
        1,
        0,
        0,
        0,
        710,
        711,
        1,
        0,
        0,
        0,
        711,
        712,
        1,
        0,
        0,
        0,
        712,
        713,
        3,
        418,
        209,
        0,
        713,
        714,
        5,
        89,
        0,
        0,
        714,
        31,
        1,
        0,
        0,
        0,
        715,
        717,
        5,
        1,
        0,
        0,
        716,
        715,
        1,
        0,
        0,
        0,
        717,
        720,
        1,
        0,
        0,
        0,
        718,
        716,
        1,
        0,
        0,
        0,
        718,
        719,
        1,
        0,
        0,
        0,
        719,
        721,
        1,
        0,
        0,
        0,
        720,
        718,
        1,
        0,
        0,
        0,
        721,
        722,
        5,
        48,
        0,
        0,
        722,
        726,
        3,
        34,
        17,
        0,
        723,
        725,
        5,
        2,
        0,
        0,
        724,
        723,
        1,
        0,
        0,
        0,
        725,
        728,
        1,
        0,
        0,
        0,
        726,
        724,
        1,
        0,
        0,
        0,
        726,
        727,
        1,
        0,
        0,
        0,
        727,
        779,
        1,
        0,
        0,
        0,
        728,
        726,
        1,
        0,
        0,
        0,
        729,
        731,
        5,
        1,
        0,
        0,
        730,
        729,
        1,
        0,
        0,
        0,
        731,
        734,
        1,
        0,
        0,
        0,
        732,
        730,
        1,
        0,
        0,
        0,
        732,
        733,
        1,
        0,
        0,
        0,
        733,
        735,
        1,
        0,
        0,
        0,
        734,
        732,
        1,
        0,
        0,
        0,
        735,
        736,
        5,
        54,
        0,
        0,
        736,
        744,
        3,
        48,
        24,
        0,
        737,
        745,
        5,
        85,
        0,
        0,
        738,
        740,
        5,
        127,
        0,
        0,
        739,
        738,
        1,
        0,
        0,
        0,
        740,
        741,
        1,
        0,
        0,
        0,
        741,
        739,
        1,
        0,
        0,
        0,
        741,
        742,
        1,
        0,
        0,
        0,
        742,
        745,
        1,
        0,
        0,
        0,
        743,
        745,
        5,
        0,
        0,
        1,
        744,
        737,
        1,
        0,
        0,
        0,
        744,
        739,
        1,
        0,
        0,
        0,
        744,
        743,
        1,
        0,
        0,
        0,
        745,
        749,
        1,
        0,
        0,
        0,
        746,
        748,
        5,
        2,
        0,
        0,
        747,
        746,
        1,
        0,
        0,
        0,
        748,
        751,
        1,
        0,
        0,
        0,
        749,
        747,
        1,
        0,
        0,
        0,
        749,
        750,
        1,
        0,
        0,
        0,
        750,
        779,
        1,
        0,
        0,
        0,
        751,
        749,
        1,
        0,
        0,
        0,
        752,
        754,
        5,
        1,
        0,
        0,
        753,
        752,
        1,
        0,
        0,
        0,
        754,
        757,
        1,
        0,
        0,
        0,
        755,
        753,
        1,
        0,
        0,
        0,
        755,
        756,
        1,
        0,
        0,
        0,
        756,
        758,
        1,
        0,
        0,
        0,
        757,
        755,
        1,
        0,
        0,
        0,
        758,
        759,
        5,
        53,
        0,
        0,
        759,
        767,
        3,
        48,
        24,
        0,
        760,
        768,
        5,
        85,
        0,
        0,
        761,
        763,
        5,
        127,
        0,
        0,
        762,
        761,
        1,
        0,
        0,
        0,
        763,
        764,
        1,
        0,
        0,
        0,
        764,
        762,
        1,
        0,
        0,
        0,
        764,
        765,
        1,
        0,
        0,
        0,
        765,
        768,
        1,
        0,
        0,
        0,
        766,
        768,
        5,
        0,
        0,
        1,
        767,
        760,
        1,
        0,
        0,
        0,
        767,
        762,
        1,
        0,
        0,
        0,
        767,
        766,
        1,
        0,
        0,
        0,
        768,
        772,
        1,
        0,
        0,
        0,
        769,
        771,
        5,
        2,
        0,
        0,
        770,
        769,
        1,
        0,
        0,
        0,
        771,
        774,
        1,
        0,
        0,
        0,
        772,
        770,
        1,
        0,
        0,
        0,
        772,
        773,
        1,
        0,
        0,
        0,
        773,
        779,
        1,
        0,
        0,
        0,
        774,
        772,
        1,
        0,
        0,
        0,
        775,
        776,
        3,
        34,
        17,
        0,
        776,
        777,
        5,
        85,
        0,
        0,
        777,
        779,
        1,
        0,
        0,
        0,
        778,
        718,
        1,
        0,
        0,
        0,
        778,
        732,
        1,
        0,
        0,
        0,
        778,
        755,
        1,
        0,
        0,
        0,
        778,
        775,
        1,
        0,
        0,
        0,
        779,
        33,
        1,
        0,
        0,
        0,
        780,
        781,
        3,
        40,
        20,
        0,
        781,
        782,
        5,
        111,
        0,
        0,
        782,
        783,
        3,
        40,
        20,
        0,
        783,
        784,
        7,
        0,
        0,
        0,
        784,
        787,
        1,
        0,
        0,
        0,
        785,
        787,
        3,
        36,
        18,
        0,
        786,
        780,
        1,
        0,
        0,
        0,
        786,
        785,
        1,
        0,
        0,
        0,
        787,
        35,
        1,
        0,
        0,
        0,
        788,
        789,
        5,
        51,
        0,
        0,
        789,
        790,
        3,
        26,
        13,
        0,
        790,
        791,
        5,
        33,
        0,
        0,
        791,
        792,
        3,
        56,
        28,
        0,
        792,
        799,
        5,
        84,
        0,
        0,
        793,
        794,
        5,
        127,
        0,
        0,
        794,
        795,
        5,
        1,
        0,
        0,
        795,
        796,
        3,
        36,
        18,
        0,
        796,
        797,
        5,
        2,
        0,
        0,
        797,
        800,
        1,
        0,
        0,
        0,
        798,
        800,
        3,
        36,
        18,
        0,
        799,
        793,
        1,
        0,
        0,
        0,
        799,
        798,
        1,
        0,
        0,
        0,
        800,
        997,
        1,
        0,
        0,
        0,
        801,
        802,
        5,
        52,
        0,
        0,
        802,
        803,
        3,
        26,
        13,
        0,
        803,
        804,
        5,
        33,
        0,
        0,
        804,
        805,
        3,
        56,
        28,
        0,
        805,
        812,
        5,
        84,
        0,
        0,
        806,
        807,
        5,
        127,
        0,
        0,
        807,
        808,
        5,
        1,
        0,
        0,
        808,
        809,
        3,
        36,
        18,
        0,
        809,
        810,
        5,
        2,
        0,
        0,
        810,
        813,
        1,
        0,
        0,
        0,
        811,
        813,
        3,
        36,
        18,
        0,
        812,
        806,
        1,
        0,
        0,
        0,
        812,
        811,
        1,
        0,
        0,
        0,
        813,
        997,
        1,
        0,
        0,
        0,
        814,
        815,
        5,
        55,
        0,
        0,
        815,
        816,
        5,
        81,
        0,
        0,
        816,
        817,
        3,
        38,
        19,
        0,
        817,
        820,
        5,
        28,
        0,
        0,
        818,
        821,
        3,
        26,
        13,
        0,
        819,
        821,
        3,
        490,
        245,
        0,
        820,
        818,
        1,
        0,
        0,
        0,
        820,
        819,
        1,
        0,
        0,
        0,
        821,
        822,
        1,
        0,
        0,
        0,
        822,
        823,
        5,
        33,
        0,
        0,
        823,
        824,
        3,
        54,
        27,
        0,
        824,
        832,
        5,
        82,
        0,
        0,
        825,
        833,
        5,
        85,
        0,
        0,
        826,
        828,
        5,
        127,
        0,
        0,
        827,
        826,
        1,
        0,
        0,
        0,
        828,
        829,
        1,
        0,
        0,
        0,
        829,
        827,
        1,
        0,
        0,
        0,
        829,
        830,
        1,
        0,
        0,
        0,
        830,
        833,
        1,
        0,
        0,
        0,
        831,
        833,
        5,
        0,
        0,
        1,
        832,
        825,
        1,
        0,
        0,
        0,
        832,
        827,
        1,
        0,
        0,
        0,
        832,
        831,
        1,
        0,
        0,
        0,
        833,
        997,
        1,
        0,
        0,
        0,
        834,
        835,
        5,
        55,
        0,
        0,
        835,
        836,
        5,
        81,
        0,
        0,
        836,
        837,
        5,
        88,
        0,
        0,
        837,
        838,
        3,
        38,
        19,
        0,
        838,
        841,
        5,
        28,
        0,
        0,
        839,
        842,
        3,
        26,
        13,
        0,
        840,
        842,
        3,
        490,
        245,
        0,
        841,
        839,
        1,
        0,
        0,
        0,
        841,
        840,
        1,
        0,
        0,
        0,
        842,
        843,
        1,
        0,
        0,
        0,
        843,
        844,
        5,
        33,
        0,
        0,
        844,
        845,
        3,
        54,
        27,
        0,
        845,
        846,
        5,
        89,
        0,
        0,
        846,
        854,
        5,
        82,
        0,
        0,
        847,
        855,
        5,
        85,
        0,
        0,
        848,
        850,
        5,
        127,
        0,
        0,
        849,
        848,
        1,
        0,
        0,
        0,
        850,
        851,
        1,
        0,
        0,
        0,
        851,
        849,
        1,
        0,
        0,
        0,
        851,
        852,
        1,
        0,
        0,
        0,
        852,
        855,
        1,
        0,
        0,
        0,
        853,
        855,
        5,
        0,
        0,
        1,
        854,
        847,
        1,
        0,
        0,
        0,
        854,
        849,
        1,
        0,
        0,
        0,
        854,
        853,
        1,
        0,
        0,
        0,
        855,
        997,
        1,
        0,
        0,
        0,
        856,
        857,
        5,
        55,
        0,
        0,
        857,
        858,
        5,
        81,
        0,
        0,
        858,
        859,
        5,
        81,
        0,
        0,
        859,
        860,
        3,
        38,
        19,
        0,
        860,
        863,
        5,
        28,
        0,
        0,
        861,
        864,
        3,
        26,
        13,
        0,
        862,
        864,
        3,
        490,
        245,
        0,
        863,
        861,
        1,
        0,
        0,
        0,
        863,
        862,
        1,
        0,
        0,
        0,
        864,
        865,
        1,
        0,
        0,
        0,
        865,
        866,
        5,
        33,
        0,
        0,
        866,
        867,
        3,
        54,
        27,
        0,
        867,
        868,
        5,
        89,
        0,
        0,
        868,
        876,
        5,
        82,
        0,
        0,
        869,
        877,
        5,
        85,
        0,
        0,
        870,
        872,
        5,
        127,
        0,
        0,
        871,
        870,
        1,
        0,
        0,
        0,
        872,
        873,
        1,
        0,
        0,
        0,
        873,
        871,
        1,
        0,
        0,
        0,
        873,
        874,
        1,
        0,
        0,
        0,
        874,
        877,
        1,
        0,
        0,
        0,
        875,
        877,
        5,
        0,
        0,
        1,
        876,
        869,
        1,
        0,
        0,
        0,
        876,
        871,
        1,
        0,
        0,
        0,
        876,
        875,
        1,
        0,
        0,
        0,
        877,
        997,
        1,
        0,
        0,
        0,
        878,
        879,
        5,
        55,
        0,
        0,
        879,
        880,
        5,
        81,
        0,
        0,
        880,
        881,
        5,
        101,
        0,
        0,
        881,
        882,
        3,
        38,
        19,
        0,
        882,
        885,
        5,
        28,
        0,
        0,
        883,
        886,
        3,
        26,
        13,
        0,
        884,
        886,
        3,
        490,
        245,
        0,
        885,
        883,
        1,
        0,
        0,
        0,
        885,
        884,
        1,
        0,
        0,
        0,
        886,
        887,
        1,
        0,
        0,
        0,
        887,
        888,
        5,
        33,
        0,
        0,
        888,
        889,
        3,
        54,
        27,
        0,
        889,
        890,
        5,
        102,
        0,
        0,
        890,
        898,
        5,
        82,
        0,
        0,
        891,
        899,
        5,
        85,
        0,
        0,
        892,
        894,
        5,
        127,
        0,
        0,
        893,
        892,
        1,
        0,
        0,
        0,
        894,
        895,
        1,
        0,
        0,
        0,
        895,
        893,
        1,
        0,
        0,
        0,
        895,
        896,
        1,
        0,
        0,
        0,
        896,
        899,
        1,
        0,
        0,
        0,
        897,
        899,
        5,
        0,
        0,
        1,
        898,
        891,
        1,
        0,
        0,
        0,
        898,
        893,
        1,
        0,
        0,
        0,
        898,
        897,
        1,
        0,
        0,
        0,
        899,
        997,
        1,
        0,
        0,
        0,
        900,
        901,
        5,
        56,
        0,
        0,
        901,
        902,
        5,
        81,
        0,
        0,
        902,
        903,
        3,
        38,
        19,
        0,
        903,
        906,
        5,
        28,
        0,
        0,
        904,
        907,
        3,
        26,
        13,
        0,
        905,
        907,
        3,
        490,
        245,
        0,
        906,
        904,
        1,
        0,
        0,
        0,
        906,
        905,
        1,
        0,
        0,
        0,
        907,
        908,
        1,
        0,
        0,
        0,
        908,
        909,
        5,
        33,
        0,
        0,
        909,
        910,
        3,
        54,
        27,
        0,
        910,
        918,
        5,
        82,
        0,
        0,
        911,
        919,
        5,
        85,
        0,
        0,
        912,
        914,
        5,
        127,
        0,
        0,
        913,
        912,
        1,
        0,
        0,
        0,
        914,
        915,
        1,
        0,
        0,
        0,
        915,
        913,
        1,
        0,
        0,
        0,
        915,
        916,
        1,
        0,
        0,
        0,
        916,
        919,
        1,
        0,
        0,
        0,
        917,
        919,
        5,
        0,
        0,
        1,
        918,
        911,
        1,
        0,
        0,
        0,
        918,
        913,
        1,
        0,
        0,
        0,
        918,
        917,
        1,
        0,
        0,
        0,
        919,
        997,
        1,
        0,
        0,
        0,
        920,
        921,
        5,
        56,
        0,
        0,
        921,
        922,
        5,
        81,
        0,
        0,
        922,
        923,
        5,
        81,
        0,
        0,
        923,
        924,
        3,
        38,
        19,
        0,
        924,
        927,
        5,
        28,
        0,
        0,
        925,
        928,
        3,
        26,
        13,
        0,
        926,
        928,
        3,
        490,
        245,
        0,
        927,
        925,
        1,
        0,
        0,
        0,
        927,
        926,
        1,
        0,
        0,
        0,
        928,
        929,
        1,
        0,
        0,
        0,
        929,
        930,
        5,
        33,
        0,
        0,
        930,
        931,
        3,
        54,
        27,
        0,
        931,
        932,
        5,
        82,
        0,
        0,
        932,
        940,
        5,
        82,
        0,
        0,
        933,
        941,
        5,
        85,
        0,
        0,
        934,
        936,
        5,
        127,
        0,
        0,
        935,
        934,
        1,
        0,
        0,
        0,
        936,
        937,
        1,
        0,
        0,
        0,
        937,
        935,
        1,
        0,
        0,
        0,
        937,
        938,
        1,
        0,
        0,
        0,
        938,
        941,
        1,
        0,
        0,
        0,
        939,
        941,
        5,
        0,
        0,
        1,
        940,
        933,
        1,
        0,
        0,
        0,
        940,
        935,
        1,
        0,
        0,
        0,
        940,
        939,
        1,
        0,
        0,
        0,
        941,
        997,
        1,
        0,
        0,
        0,
        942,
        943,
        5,
        56,
        0,
        0,
        943,
        944,
        5,
        81,
        0,
        0,
        944,
        945,
        5,
        88,
        0,
        0,
        945,
        946,
        3,
        38,
        19,
        0,
        946,
        949,
        5,
        28,
        0,
        0,
        947,
        950,
        3,
        26,
        13,
        0,
        948,
        950,
        3,
        490,
        245,
        0,
        949,
        947,
        1,
        0,
        0,
        0,
        949,
        948,
        1,
        0,
        0,
        0,
        950,
        951,
        1,
        0,
        0,
        0,
        951,
        952,
        5,
        33,
        0,
        0,
        952,
        953,
        3,
        54,
        27,
        0,
        953,
        954,
        5,
        89,
        0,
        0,
        954,
        962,
        5,
        82,
        0,
        0,
        955,
        963,
        5,
        85,
        0,
        0,
        956,
        958,
        5,
        127,
        0,
        0,
        957,
        956,
        1,
        0,
        0,
        0,
        958,
        959,
        1,
        0,
        0,
        0,
        959,
        957,
        1,
        0,
        0,
        0,
        959,
        960,
        1,
        0,
        0,
        0,
        960,
        963,
        1,
        0,
        0,
        0,
        961,
        963,
        5,
        0,
        0,
        1,
        962,
        955,
        1,
        0,
        0,
        0,
        962,
        957,
        1,
        0,
        0,
        0,
        962,
        961,
        1,
        0,
        0,
        0,
        963,
        997,
        1,
        0,
        0,
        0,
        964,
        965,
        5,
        56,
        0,
        0,
        965,
        966,
        5,
        81,
        0,
        0,
        966,
        967,
        5,
        101,
        0,
        0,
        967,
        968,
        3,
        38,
        19,
        0,
        968,
        971,
        5,
        28,
        0,
        0,
        969,
        972,
        3,
        26,
        13,
        0,
        970,
        972,
        3,
        490,
        245,
        0,
        971,
        969,
        1,
        0,
        0,
        0,
        971,
        970,
        1,
        0,
        0,
        0,
        972,
        973,
        1,
        0,
        0,
        0,
        973,
        974,
        5,
        33,
        0,
        0,
        974,
        975,
        3,
        54,
        27,
        0,
        975,
        976,
        5,
        102,
        0,
        0,
        976,
        984,
        5,
        82,
        0,
        0,
        977,
        985,
        5,
        85,
        0,
        0,
        978,
        980,
        5,
        127,
        0,
        0,
        979,
        978,
        1,
        0,
        0,
        0,
        980,
        981,
        1,
        0,
        0,
        0,
        981,
        979,
        1,
        0,
        0,
        0,
        981,
        982,
        1,
        0,
        0,
        0,
        982,
        985,
        1,
        0,
        0,
        0,
        983,
        985,
        5,
        0,
        0,
        1,
        984,
        977,
        1,
        0,
        0,
        0,
        984,
        979,
        1,
        0,
        0,
        0,
        984,
        983,
        1,
        0,
        0,
        0,
        985,
        997,
        1,
        0,
        0,
        0,
        986,
        994,
        3,
        40,
        20,
        0,
        987,
        995,
        5,
        85,
        0,
        0,
        988,
        990,
        5,
        127,
        0,
        0,
        989,
        988,
        1,
        0,
        0,
        0,
        990,
        991,
        1,
        0,
        0,
        0,
        991,
        989,
        1,
        0,
        0,
        0,
        991,
        992,
        1,
        0,
        0,
        0,
        992,
        995,
        1,
        0,
        0,
        0,
        993,
        995,
        5,
        0,
        0,
        1,
        994,
        987,
        1,
        0,
        0,
        0,
        994,
        989,
        1,
        0,
        0,
        0,
        994,
        993,
        1,
        0,
        0,
        0,
        995,
        997,
        1,
        0,
        0,
        0,
        996,
        788,
        1,
        0,
        0,
        0,
        996,
        801,
        1,
        0,
        0,
        0,
        996,
        814,
        1,
        0,
        0,
        0,
        996,
        834,
        1,
        0,
        0,
        0,
        996,
        856,
        1,
        0,
        0,
        0,
        996,
        878,
        1,
        0,
        0,
        0,
        996,
        900,
        1,
        0,
        0,
        0,
        996,
        920,
        1,
        0,
        0,
        0,
        996,
        942,
        1,
        0,
        0,
        0,
        996,
        964,
        1,
        0,
        0,
        0,
        996,
        986,
        1,
        0,
        0,
        0,
        997,
        37,
        1,
        0,
        0,
        0,
        998,
        999,
        5,
        55,
        0,
        0,
        999,
        1000,
        5,
        81,
        0,
        0,
        1000,
        1001,
        3,
        38,
        19,
        0,
        1001,
        1004,
        5,
        28,
        0,
        0,
        1002,
        1005,
        3,
        26,
        13,
        0,
        1003,
        1005,
        3,
        490,
        245,
        0,
        1004,
        1002,
        1,
        0,
        0,
        0,
        1004,
        1003,
        1,
        0,
        0,
        0,
        1005,
        1006,
        1,
        0,
        0,
        0,
        1006,
        1007,
        5,
        33,
        0,
        0,
        1007,
        1008,
        3,
        54,
        27,
        0,
        1008,
        1009,
        5,
        82,
        0,
        0,
        1009,
        1108,
        1,
        0,
        0,
        0,
        1010,
        1011,
        5,
        55,
        0,
        0,
        1011,
        1012,
        5,
        81,
        0,
        0,
        1012,
        1013,
        5,
        88,
        0,
        0,
        1013,
        1014,
        3,
        38,
        19,
        0,
        1014,
        1017,
        5,
        28,
        0,
        0,
        1015,
        1018,
        3,
        26,
        13,
        0,
        1016,
        1018,
        3,
        490,
        245,
        0,
        1017,
        1015,
        1,
        0,
        0,
        0,
        1017,
        1016,
        1,
        0,
        0,
        0,
        1018,
        1019,
        1,
        0,
        0,
        0,
        1019,
        1020,
        5,
        33,
        0,
        0,
        1020,
        1021,
        3,
        54,
        27,
        0,
        1021,
        1022,
        5,
        89,
        0,
        0,
        1022,
        1023,
        5,
        82,
        0,
        0,
        1023,
        1108,
        1,
        0,
        0,
        0,
        1024,
        1025,
        5,
        55,
        0,
        0,
        1025,
        1026,
        5,
        81,
        0,
        0,
        1026,
        1027,
        5,
        81,
        0,
        0,
        1027,
        1028,
        3,
        38,
        19,
        0,
        1028,
        1031,
        5,
        28,
        0,
        0,
        1029,
        1032,
        3,
        26,
        13,
        0,
        1030,
        1032,
        3,
        490,
        245,
        0,
        1031,
        1029,
        1,
        0,
        0,
        0,
        1031,
        1030,
        1,
        0,
        0,
        0,
        1032,
        1033,
        1,
        0,
        0,
        0,
        1033,
        1034,
        5,
        33,
        0,
        0,
        1034,
        1035,
        3,
        54,
        27,
        0,
        1035,
        1036,
        5,
        89,
        0,
        0,
        1036,
        1037,
        5,
        82,
        0,
        0,
        1037,
        1108,
        1,
        0,
        0,
        0,
        1038,
        1039,
        5,
        55,
        0,
        0,
        1039,
        1040,
        5,
        81,
        0,
        0,
        1040,
        1041,
        5,
        101,
        0,
        0,
        1041,
        1042,
        3,
        38,
        19,
        0,
        1042,
        1045,
        5,
        28,
        0,
        0,
        1043,
        1046,
        3,
        26,
        13,
        0,
        1044,
        1046,
        3,
        490,
        245,
        0,
        1045,
        1043,
        1,
        0,
        0,
        0,
        1045,
        1044,
        1,
        0,
        0,
        0,
        1046,
        1047,
        1,
        0,
        0,
        0,
        1047,
        1048,
        5,
        33,
        0,
        0,
        1048,
        1049,
        3,
        54,
        27,
        0,
        1049,
        1050,
        5,
        102,
        0,
        0,
        1050,
        1051,
        5,
        82,
        0,
        0,
        1051,
        1108,
        1,
        0,
        0,
        0,
        1052,
        1053,
        5,
        56,
        0,
        0,
        1053,
        1054,
        5,
        81,
        0,
        0,
        1054,
        1055,
        3,
        38,
        19,
        0,
        1055,
        1058,
        5,
        28,
        0,
        0,
        1056,
        1059,
        3,
        26,
        13,
        0,
        1057,
        1059,
        3,
        490,
        245,
        0,
        1058,
        1056,
        1,
        0,
        0,
        0,
        1058,
        1057,
        1,
        0,
        0,
        0,
        1059,
        1060,
        1,
        0,
        0,
        0,
        1060,
        1061,
        5,
        33,
        0,
        0,
        1061,
        1062,
        3,
        54,
        27,
        0,
        1062,
        1063,
        5,
        82,
        0,
        0,
        1063,
        1108,
        1,
        0,
        0,
        0,
        1064,
        1065,
        5,
        56,
        0,
        0,
        1065,
        1066,
        5,
        81,
        0,
        0,
        1066,
        1067,
        5,
        81,
        0,
        0,
        1067,
        1068,
        3,
        38,
        19,
        0,
        1068,
        1071,
        5,
        28,
        0,
        0,
        1069,
        1072,
        3,
        26,
        13,
        0,
        1070,
        1072,
        3,
        490,
        245,
        0,
        1071,
        1069,
        1,
        0,
        0,
        0,
        1071,
        1070,
        1,
        0,
        0,
        0,
        1072,
        1073,
        1,
        0,
        0,
        0,
        1073,
        1074,
        5,
        33,
        0,
        0,
        1074,
        1075,
        3,
        54,
        27,
        0,
        1075,
        1076,
        5,
        82,
        0,
        0,
        1076,
        1077,
        5,
        82,
        0,
        0,
        1077,
        1108,
        1,
        0,
        0,
        0,
        1078,
        1079,
        5,
        56,
        0,
        0,
        1079,
        1080,
        5,
        81,
        0,
        0,
        1080,
        1081,
        5,
        88,
        0,
        0,
        1081,
        1082,
        3,
        38,
        19,
        0,
        1082,
        1085,
        5,
        28,
        0,
        0,
        1083,
        1086,
        3,
        26,
        13,
        0,
        1084,
        1086,
        3,
        490,
        245,
        0,
        1085,
        1083,
        1,
        0,
        0,
        0,
        1085,
        1084,
        1,
        0,
        0,
        0,
        1086,
        1087,
        1,
        0,
        0,
        0,
        1087,
        1088,
        5,
        33,
        0,
        0,
        1088,
        1089,
        3,
        54,
        27,
        0,
        1089,
        1090,
        5,
        89,
        0,
        0,
        1090,
        1091,
        5,
        82,
        0,
        0,
        1091,
        1108,
        1,
        0,
        0,
        0,
        1092,
        1093,
        5,
        56,
        0,
        0,
        1093,
        1094,
        5,
        81,
        0,
        0,
        1094,
        1095,
        5,
        101,
        0,
        0,
        1095,
        1096,
        3,
        38,
        19,
        0,
        1096,
        1099,
        5,
        28,
        0,
        0,
        1097,
        1100,
        3,
        26,
        13,
        0,
        1098,
        1100,
        3,
        490,
        245,
        0,
        1099,
        1097,
        1,
        0,
        0,
        0,
        1099,
        1098,
        1,
        0,
        0,
        0,
        1100,
        1101,
        1,
        0,
        0,
        0,
        1101,
        1102,
        5,
        33,
        0,
        0,
        1102,
        1103,
        3,
        54,
        27,
        0,
        1103,
        1104,
        5,
        102,
        0,
        0,
        1104,
        1105,
        5,
        82,
        0,
        0,
        1105,
        1108,
        1,
        0,
        0,
        0,
        1106,
        1108,
        3,
        40,
        20,
        0,
        1107,
        998,
        1,
        0,
        0,
        0,
        1107,
        1010,
        1,
        0,
        0,
        0,
        1107,
        1024,
        1,
        0,
        0,
        0,
        1107,
        1038,
        1,
        0,
        0,
        0,
        1107,
        1052,
        1,
        0,
        0,
        0,
        1107,
        1064,
        1,
        0,
        0,
        0,
        1107,
        1078,
        1,
        0,
        0,
        0,
        1107,
        1092,
        1,
        0,
        0,
        0,
        1107,
        1106,
        1,
        0,
        0,
        0,
        1108,
        39,
        1,
        0,
        0,
        0,
        1109,
        1114,
        3,
        42,
        21,
        0,
        1110,
        1111,
        5,
        40,
        0,
        0,
        1111,
        1113,
        3,
        42,
        21,
        0,
        1112,
        1110,
        1,
        0,
        0,
        0,
        1113,
        1116,
        1,
        0,
        0,
        0,
        1114,
        1112,
        1,
        0,
        0,
        0,
        1114,
        1115,
        1,
        0,
        0,
        0,
        1115,
        41,
        1,
        0,
        0,
        0,
        1116,
        1114,
        1,
        0,
        0,
        0,
        1117,
        1122,
        3,
        44,
        22,
        0,
        1118,
        1119,
        5,
        12,
        0,
        0,
        1119,
        1121,
        3,
        44,
        22,
        0,
        1120,
        1118,
        1,
        0,
        0,
        0,
        1121,
        1124,
        1,
        0,
        0,
        0,
        1122,
        1120,
        1,
        0,
        0,
        0,
        1122,
        1123,
        1,
        0,
        0,
        0,
        1123,
        43,
        1,
        0,
        0,
        0,
        1124,
        1122,
        1,
        0,
        0,
        0,
        1125,
        1132,
        3,
        46,
        23,
        0,
        1126,
        1127,
        5,
        81,
        0,
        0,
        1127,
        1128,
        3,
        34,
        17,
        0,
        1128,
        1129,
        5,
        82,
        0,
        0,
        1129,
        1132,
        1,
        0,
        0,
        0,
        1130,
        1132,
        3,
        48,
        24,
        0,
        1131,
        1125,
        1,
        0,
        0,
        0,
        1131,
        1126,
        1,
        0,
        0,
        0,
        1131,
        1130,
        1,
        0,
        0,
        0,
        1132,
        45,
        1,
        0,
        0,
        0,
        1133,
        1134,
        3,
        48,
        24,
        0,
        1134,
        1135,
        7,
        1,
        0,
        0,
        1135,
        1136,
        3,
        48,
        24,
        0,
        1136,
        47,
        1,
        0,
        0,
        0,
        1137,
        1146,
        3,
        50,
        25,
        0,
        1138,
        1146,
        3,
        312,
        156,
        0,
        1139,
        1140,
        3,
        312,
        156,
        0,
        1140,
        1141,
        5,
        31,
        0,
        0,
        1141,
        1142,
        3,
        312,
        156,
        0,
        1142,
        1143,
        5,
        24,
        0,
        0,
        1143,
        1144,
        3,
        312,
        156,
        0,
        1144,
        1146,
        1,
        0,
        0,
        0,
        1145,
        1137,
        1,
        0,
        0,
        0,
        1145,
        1138,
        1,
        0,
        0,
        0,
        1145,
        1139,
        1,
        0,
        0,
        0,
        1146,
        49,
        1,
        0,
        0,
        0,
        1147,
        1148,
        5,
        90,
        0,
        0,
        1148,
        1149,
        3,
        56,
        28,
        0,
        1149,
        1150,
        5,
        90,
        0,
        0,
        1150,
        1158,
        1,
        0,
        0,
        0,
        1151,
        1152,
        5,
        57,
        0,
        0,
        1152,
        1153,
        5,
        81,
        0,
        0,
        1153,
        1154,
        3,
        54,
        27,
        0,
        1154,
        1155,
        5,
        82,
        0,
        0,
        1155,
        1158,
        1,
        0,
        0,
        0,
        1156,
        1158,
        3,
        52,
        26,
        0,
        1157,
        1147,
        1,
        0,
        0,
        0,
        1157,
        1151,
        1,
        0,
        0,
        0,
        1157,
        1156,
        1,
        0,
        0,
        0,
        1158,
        51,
        1,
        0,
        0,
        0,
        1159,
        1162,
        3,
        54,
        27,
        0,
        1160,
        1162,
        3,
        56,
        28,
        0,
        1161,
        1159,
        1,
        0,
        0,
        0,
        1161,
        1160,
        1,
        0,
        0,
        0,
        1162,
        53,
        1,
        0,
        0,
        0,
        1163,
        1164,
        5,
        80,
        0,
        0,
        1164,
        1168,
        3,
        56,
        28,
        0,
        1165,
        1166,
        5,
        86,
        0,
        0,
        1166,
        1168,
        3,
        56,
        28,
        0,
        1167,
        1163,
        1,
        0,
        0,
        0,
        1167,
        1165,
        1,
        0,
        0,
        0,
        1168,
        55,
        1,
        0,
        0,
        0,
        1169,
        1170,
        6,
        28,
        -1,
        0,
        1170,
        1171,
        3,
        58,
        29,
        0,
        1171,
        1180,
        1,
        0,
        0,
        0,
        1172,
        1173,
        10,
        2,
        0,
        0,
        1173,
        1174,
        5,
        79,
        0,
        0,
        1174,
        1179,
        3,
        58,
        29,
        0,
        1175,
        1176,
        10,
        1,
        0,
        0,
        1176,
        1177,
        5,
        78,
        0,
        0,
        1177,
        1179,
        3,
        58,
        29,
        0,
        1178,
        1172,
        1,
        0,
        0,
        0,
        1178,
        1175,
        1,
        0,
        0,
        0,
        1179,
        1182,
        1,
        0,
        0,
        0,
        1180,
        1178,
        1,
        0,
        0,
        0,
        1180,
        1181,
        1,
        0,
        0,
        0,
        1181,
        57,
        1,
        0,
        0,
        0,
        1182,
        1180,
        1,
        0,
        0,
        0,
        1183,
        1184,
        3,
        60,
        30,
        0,
        1184,
        1185,
        5,
        88,
        0,
        0,
        1185,
        1186,
        3,
        66,
        33,
        0,
        1186,
        1187,
        5,
        89,
        0,
        0,
        1187,
        1195,
        1,
        0,
        0,
        0,
        1188,
        1189,
        3,
        60,
        30,
        0,
        1189,
        1190,
        5,
        101,
        0,
        0,
        1190,
        1191,
        3,
        62,
        31,
        0,
        1191,
        1192,
        5,
        102,
        0,
        0,
        1192,
        1195,
        1,
        0,
        0,
        0,
        1193,
        1195,
        3,
        60,
        30,
        0,
        1194,
        1183,
        1,
        0,
        0,
        0,
        1194,
        1188,
        1,
        0,
        0,
        0,
        1194,
        1193,
        1,
        0,
        0,
        0,
        1195,
        59,
        1,
        0,
        0,
        0,
        1196,
        1202,
        3,
        26,
        13,
        0,
        1197,
        1198,
        5,
        81,
        0,
        0,
        1198,
        1199,
        3,
        56,
        28,
        0,
        1199,
        1200,
        5,
        82,
        0,
        0,
        1200,
        1202,
        1,
        0,
        0,
        0,
        1201,
        1196,
        1,
        0,
        0,
        0,
        1201,
        1197,
        1,
        0,
        0,
        0,
        1202,
        61,
        1,
        0,
        0,
        0,
        1203,
        1208,
        3,
        64,
        32,
        0,
        1204,
        1205,
        5,
        83,
        0,
        0,
        1205,
        1207,
        3,
        64,
        32,
        0,
        1206,
        1204,
        1,
        0,
        0,
        0,
        1207,
        1210,
        1,
        0,
        0,
        0,
        1208,
        1206,
        1,
        0,
        0,
        0,
        1208,
        1209,
        1,
        0,
        0,
        0,
        1209,
        1212,
        1,
        0,
        0,
        0,
        1210,
        1208,
        1,
        0,
        0,
        0,
        1211,
        1213,
        5,
        83,
        0,
        0,
        1212,
        1211,
        1,
        0,
        0,
        0,
        1212,
        1213,
        1,
        0,
        0,
        0,
        1213,
        63,
        1,
        0,
        0,
        0,
        1214,
        1215,
        5,
        80,
        0,
        0,
        1215,
        1218,
        3,
        26,
        13,
        0,
        1216,
        1217,
        5,
        84,
        0,
        0,
        1217,
        1219,
        3,
        68,
        34,
        0,
        1218,
        1216,
        1,
        0,
        0,
        0,
        1218,
        1219,
        1,
        0,
        0,
        0,
        1219,
        65,
        1,
        0,
        0,
        0,
        1220,
        1225,
        3,
        68,
        34,
        0,
        1221,
        1222,
        5,
        83,
        0,
        0,
        1222,
        1224,
        3,
        68,
        34,
        0,
        1223,
        1221,
        1,
        0,
        0,
        0,
        1224,
        1227,
        1,
        0,
        0,
        0,
        1225,
        1223,
        1,
        0,
        0,
        0,
        1225,
        1226,
        1,
        0,
        0,
        0,
        1226,
        1229,
        1,
        0,
        0,
        0,
        1227,
        1225,
        1,
        0,
        0,
        0,
        1228,
        1230,
        5,
        83,
        0,
        0,
        1229,
        1228,
        1,
        0,
        0,
        0,
        1229,
        1230,
        1,
        0,
        0,
        0,
        1230,
        67,
        1,
        0,
        0,
        0,
        1231,
        1251,
        5,
        8,
        0,
        0,
        1232,
        1234,
        5,
        8,
        0,
        0,
        1233,
        1232,
        1,
        0,
        0,
        0,
        1233,
        1234,
        1,
        0,
        0,
        0,
        1234,
        1235,
        1,
        0,
        0,
        0,
        1235,
        1237,
        5,
        84,
        0,
        0,
        1236,
        1238,
        5,
        8,
        0,
        0,
        1237,
        1236,
        1,
        0,
        0,
        0,
        1237,
        1238,
        1,
        0,
        0,
        0,
        1238,
        1251,
        1,
        0,
        0,
        0,
        1239,
        1241,
        5,
        8,
        0,
        0,
        1240,
        1239,
        1,
        0,
        0,
        0,
        1240,
        1241,
        1,
        0,
        0,
        0,
        1241,
        1242,
        1,
        0,
        0,
        0,
        1242,
        1244,
        5,
        84,
        0,
        0,
        1243,
        1245,
        5,
        8,
        0,
        0,
        1244,
        1243,
        1,
        0,
        0,
        0,
        1244,
        1245,
        1,
        0,
        0,
        0,
        1245,
        1246,
        1,
        0,
        0,
        0,
        1246,
        1248,
        5,
        84,
        0,
        0,
        1247,
        1249,
        5,
        8,
        0,
        0,
        1248,
        1247,
        1,
        0,
        0,
        0,
        1248,
        1249,
        1,
        0,
        0,
        0,
        1249,
        1251,
        1,
        0,
        0,
        0,
        1250,
        1231,
        1,
        0,
        0,
        0,
        1250,
        1233,
        1,
        0,
        0,
        0,
        1250,
        1240,
        1,
        0,
        0,
        0,
        1251,
        69,
        1,
        0,
        0,
        0,
        1252,
        1255,
        3,
        104,
        52,
        0,
        1253,
        1255,
        3,
        102,
        51,
        0,
        1254,
        1252,
        1,
        0,
        0,
        0,
        1254,
        1253,
        1,
        0,
        0,
        0,
        1255,
        71,
        1,
        0,
        0,
        0,
        1256,
        1258,
        5,
        127,
        0,
        0,
        1257,
        1256,
        1,
        0,
        0,
        0,
        1258,
        1261,
        1,
        0,
        0,
        0,
        1259,
        1257,
        1,
        0,
        0,
        0,
        1259,
        1260,
        1,
        0,
        0,
        0,
        1260,
        1262,
        1,
        0,
        0,
        0,
        1261,
        1259,
        1,
        0,
        0,
        0,
        1262,
        1266,
        3,
        96,
        48,
        0,
        1263,
        1265,
        5,
        127,
        0,
        0,
        1264,
        1263,
        1,
        0,
        0,
        0,
        1265,
        1268,
        1,
        0,
        0,
        0,
        1266,
        1264,
        1,
        0,
        0,
        0,
        1266,
        1267,
        1,
        0,
        0,
        0,
        1267,
        73,
        1,
        0,
        0,
        0,
        1268,
        1266,
        1,
        0,
        0,
        0,
        1269,
        1271,
        5,
        1,
        0,
        0,
        1270,
        1269,
        1,
        0,
        0,
        0,
        1271,
        1274,
        1,
        0,
        0,
        0,
        1272,
        1270,
        1,
        0,
        0,
        0,
        1272,
        1273,
        1,
        0,
        0,
        0,
        1273,
        1275,
        1,
        0,
        0,
        0,
        1274,
        1272,
        1,
        0,
        0,
        0,
        1275,
        1276,
        5,
        58,
        0,
        0,
        1276,
        1280,
        3,
        76,
        38,
        0,
        1277,
        1279,
        5,
        2,
        0,
        0,
        1278,
        1277,
        1,
        0,
        0,
        0,
        1279,
        1282,
        1,
        0,
        0,
        0,
        1280,
        1278,
        1,
        0,
        0,
        0,
        1280,
        1281,
        1,
        0,
        0,
        0,
        1281,
        75,
        1,
        0,
        0,
        0,
        1282,
        1280,
        1,
        0,
        0,
        0,
        1283,
        1287,
        3,
        78,
        39,
        0,
        1284,
        1286,
        3,
        80,
        40,
        0,
        1285,
        1284,
        1,
        0,
        0,
        0,
        1286,
        1289,
        1,
        0,
        0,
        0,
        1287,
        1285,
        1,
        0,
        0,
        0,
        1287,
        1288,
        1,
        0,
        0,
        0,
        1288,
        77,
        1,
        0,
        0,
        0,
        1289,
        1287,
        1,
        0,
        0,
        0,
        1290,
        1297,
        3,
        26,
        13,
        0,
        1291,
        1292,
        5,
        59,
        0,
        0,
        1292,
        1293,
        5,
        81,
        0,
        0,
        1293,
        1294,
        5,
        60,
        0,
        0,
        1294,
        1297,
        5,
        82,
        0,
        0,
        1295,
        1297,
        5,
        80,
        0,
        0,
        1296,
        1290,
        1,
        0,
        0,
        0,
        1296,
        1291,
        1,
        0,
        0,
        0,
        1296,
        1295,
        1,
        0,
        0,
        0,
        1297,
        79,
        1,
        0,
        0,
        0,
        1298,
        1300,
        3,
        82,
        41,
        0,
        1299,
        1301,
        5,
        129,
        0,
        0,
        1300,
        1299,
        1,
        0,
        0,
        0,
        1300,
        1301,
        1,
        0,
        0,
        0,
        1301,
        1303,
        1,
        0,
        0,
        0,
        1302,
        1304,
        5,
        87,
        0,
        0,
        1303,
        1302,
        1,
        0,
        0,
        0,
        1303,
        1304,
        1,
        0,
        0,
        0,
        1304,
        1306,
        1,
        0,
        0,
        0,
        1305,
        1307,
        5,
        129,
        0,
        0,
        1306,
        1305,
        1,
        0,
        0,
        0,
        1306,
        1307,
        1,
        0,
        0,
        0,
        1307,
        1308,
        1,
        0,
        0,
        0,
        1308,
        1310,
        3,
        84,
        42,
        0,
        1309,
        1311,
        5,
        129,
        0,
        0,
        1310,
        1309,
        1,
        0,
        0,
        0,
        1310,
        1311,
        1,
        0,
        0,
        0,
        1311,
        81,
        1,
        0,
        0,
        0,
        1312,
        1313,
        5,
        61,
        0,
        0,
        1313,
        83,
        1,
        0,
        0,
        0,
        1314,
        1315,
        3,
        228,
        114,
        0,
        1315,
        85,
        1,
        0,
        0,
        0,
        1316,
        1318,
        3,
        94,
        47,
        0,
        1317,
        1316,
        1,
        0,
        0,
        0,
        1317,
        1318,
        1,
        0,
        0,
        0,
        1318,
        1320,
        1,
        0,
        0,
        0,
        1319,
        1321,
        5,
        0,
        0,
        1,
        1320,
        1319,
        1,
        0,
        0,
        0,
        1320,
        1321,
        1,
        0,
        0,
        0,
        1321,
        87,
        1,
        0,
        0,
        0,
        1322,
        1323,
        3,
        98,
        49,
        0,
        1323,
        89,
        1,
        0,
        0,
        0,
        1324,
        1328,
        3,
        290,
        145,
        0,
        1325,
        1327,
        5,
        127,
        0,
        0,
        1326,
        1325,
        1,
        0,
        0,
        0,
        1327,
        1330,
        1,
        0,
        0,
        0,
        1328,
        1326,
        1,
        0,
        0,
        0,
        1328,
        1329,
        1,
        0,
        0,
        0,
        1329,
        1332,
        1,
        0,
        0,
        0,
        1330,
        1328,
        1,
        0,
        0,
        0,
        1331,
        1333,
        5,
        0,
        0,
        1,
        1332,
        1331,
        1,
        0,
        0,
        0,
        1332,
        1333,
        1,
        0,
        0,
        0,
        1333,
        91,
        1,
        0,
        0,
        0,
        1334,
        1336,
        5,
        81,
        0,
        0,
        1335,
        1337,
        3,
        486,
        243,
        0,
        1336,
        1335,
        1,
        0,
        0,
        0,
        1336,
        1337,
        1,
        0,
        0,
        0,
        1337,
        1338,
        1,
        0,
        0,
        0,
        1338,
        1339,
        5,
        82,
        0,
        0,
        1339,
        1340,
        5,
        111,
        0,
        0,
        1340,
        1344,
        3,
        292,
        146,
        0,
        1341,
        1343,
        5,
        127,
        0,
        0,
        1342,
        1341,
        1,
        0,
        0,
        0,
        1343,
        1346,
        1,
        0,
        0,
        0,
        1344,
        1342,
        1,
        0,
        0,
        0,
        1344,
        1345,
        1,
        0,
        0,
        0,
        1345,
        1348,
        1,
        0,
        0,
        0,
        1346,
        1344,
        1,
        0,
        0,
        0,
        1347,
        1349,
        5,
        0,
        0,
        1,
        1348,
        1347,
        1,
        0,
        0,
        0,
        1348,
        1349,
        1,
        0,
        0,
        0,
        1349,
        93,
        1,
        0,
        0,
        0,
        1350,
        1353,
        3,
        96,
        48,
        0,
        1351,
        1353,
        5,
        127,
        0,
        0,
        1352,
        1350,
        1,
        0,
        0,
        0,
        1352,
        1351,
        1,
        0,
        0,
        0,
        1353,
        1354,
        1,
        0,
        0,
        0,
        1354,
        1352,
        1,
        0,
        0,
        0,
        1354,
        1355,
        1,
        0,
        0,
        0,
        1355,
        95,
        1,
        0,
        0,
        0,
        1356,
        1359,
        3,
        104,
        52,
        0,
        1357,
        1359,
        3,
        100,
        50,
        0,
        1358,
        1356,
        1,
        0,
        0,
        0,
        1358,
        1357,
        1,
        0,
        0,
        0,
        1359,
        97,
        1,
        0,
        0,
        0,
        1360,
        1361,
        3,
        104,
        52,
        0,
        1361,
        1362,
        5,
        127,
        0,
        0,
        1362,
        1366,
        1,
        0,
        0,
        0,
        1363,
        1366,
        3,
        100,
        50,
        0,
        1364,
        1366,
        5,
        127,
        0,
        0,
        1365,
        1360,
        1,
        0,
        0,
        0,
        1365,
        1363,
        1,
        0,
        0,
        0,
        1365,
        1364,
        1,
        0,
        0,
        0,
        1366,
        99,
        1,
        0,
        0,
        0,
        1367,
        1372,
        3,
        102,
        51,
        0,
        1368,
        1369,
        5,
        85,
        0,
        0,
        1369,
        1371,
        3,
        102,
        51,
        0,
        1370,
        1368,
        1,
        0,
        0,
        0,
        1371,
        1374,
        1,
        0,
        0,
        0,
        1372,
        1370,
        1,
        0,
        0,
        0,
        1372,
        1373,
        1,
        0,
        0,
        0,
        1373,
        1376,
        1,
        0,
        0,
        0,
        1374,
        1372,
        1,
        0,
        0,
        0,
        1375,
        1377,
        5,
        85,
        0,
        0,
        1376,
        1375,
        1,
        0,
        0,
        0,
        1376,
        1377,
        1,
        0,
        0,
        0,
        1377,
        1390,
        1,
        0,
        0,
        0,
        1378,
        1380,
        5,
        127,
        0,
        0,
        1379,
        1378,
        1,
        0,
        0,
        0,
        1380,
        1381,
        1,
        0,
        0,
        0,
        1381,
        1379,
        1,
        0,
        0,
        0,
        1381,
        1382,
        1,
        0,
        0,
        0,
        1382,
        1391,
        1,
        0,
        0,
        0,
        1383,
        1385,
        5,
        127,
        0,
        0,
        1384,
        1383,
        1,
        0,
        0,
        0,
        1385,
        1388,
        1,
        0,
        0,
        0,
        1386,
        1384,
        1,
        0,
        0,
        0,
        1386,
        1387,
        1,
        0,
        0,
        0,
        1387,
        1389,
        1,
        0,
        0,
        0,
        1388,
        1386,
        1,
        0,
        0,
        0,
        1389,
        1391,
        5,
        0,
        0,
        1,
        1390,
        1379,
        1,
        0,
        0,
        0,
        1390,
        1386,
        1,
        0,
        0,
        0,
        1391,
        101,
        1,
        0,
        0,
        0,
        1392,
        1407,
        3,
        106,
        53,
        0,
        1393,
        1407,
        3,
        280,
        140,
        0,
        1394,
        1407,
        3,
        296,
        148,
        0,
        1395,
        1407,
        3,
        112,
        56,
        0,
        1396,
        1407,
        3,
        126,
        63,
        0,
        1397,
        1407,
        3,
        114,
        57,
        0,
        1398,
        1407,
        5,
        41,
        0,
        0,
        1399,
        1407,
        3,
        120,
        60,
        0,
        1400,
        1407,
        3,
        122,
        61,
        0,
        1401,
        1407,
        3,
        124,
        62,
        0,
        1402,
        1407,
        5,
        17,
        0,
        0,
        1403,
        1407,
        5,
        20,
        0,
        0,
        1404,
        1407,
        3,
        116,
        58,
        0,
        1405,
        1407,
        3,
        118,
        59,
        0,
        1406,
        1392,
        1,
        0,
        0,
        0,
        1406,
        1393,
        1,
        0,
        0,
        0,
        1406,
        1394,
        1,
        0,
        0,
        0,
        1406,
        1395,
        1,
        0,
        0,
        0,
        1406,
        1396,
        1,
        0,
        0,
        0,
        1406,
        1397,
        1,
        0,
        0,
        0,
        1406,
        1398,
        1,
        0,
        0,
        0,
        1406,
        1399,
        1,
        0,
        0,
        0,
        1406,
        1400,
        1,
        0,
        0,
        0,
        1406,
        1401,
        1,
        0,
        0,
        0,
        1406,
        1402,
        1,
        0,
        0,
        0,
        1406,
        1403,
        1,
        0,
        0,
        0,
        1406,
        1404,
        1,
        0,
        0,
        0,
        1406,
        1405,
        1,
        0,
        0,
        0,
        1407,
        103,
        1,
        0,
        0,
        0,
        1408,
        1417,
        3,
        152,
        76,
        0,
        1409,
        1417,
        3,
        186,
        93,
        0,
        1410,
        1417,
        3,
        148,
        74,
        0,
        1411,
        1417,
        3,
        196,
        98,
        0,
        1412,
        1417,
        3,
        194,
        97,
        0,
        1413,
        1417,
        3,
        200,
        100,
        0,
        1414,
        1417,
        3,
        192,
        96,
        0,
        1415,
        1417,
        3,
        208,
        104,
        0,
        1416,
        1408,
        1,
        0,
        0,
        0,
        1416,
        1409,
        1,
        0,
        0,
        0,
        1416,
        1410,
        1,
        0,
        0,
        0,
        1416,
        1411,
        1,
        0,
        0,
        0,
        1416,
        1412,
        1,
        0,
        0,
        0,
        1416,
        1413,
        1,
        0,
        0,
        0,
        1416,
        1414,
        1,
        0,
        0,
        0,
        1416,
        1415,
        1,
        0,
        0,
        0,
        1417,
        105,
        1,
        0,
        0,
        0,
        1418,
        1419,
        3,
        490,
        245,
        0,
        1419,
        1420,
        5,
        84,
        0,
        0,
        1420,
        1423,
        3,
        292,
        146,
        0,
        1421,
        1422,
        5,
        87,
        0,
        0,
        1422,
        1424,
        3,
        108,
        54,
        0,
        1423,
        1421,
        1,
        0,
        0,
        0,
        1423,
        1424,
        1,
        0,
        0,
        0,
        1424,
        1456,
        1,
        0,
        0,
        0,
        1425,
        1426,
        5,
        81,
        0,
        0,
        1426,
        1427,
        3,
        474,
        237,
        0,
        1427,
        1428,
        5,
        82,
        0,
        0,
        1428,
        1431,
        1,
        0,
        0,
        0,
        1429,
        1431,
        3,
        476,
        238,
        0,
        1430,
        1425,
        1,
        0,
        0,
        0,
        1430,
        1429,
        1,
        0,
        0,
        0,
        1431,
        1432,
        1,
        0,
        0,
        0,
        1432,
        1433,
        5,
        84,
        0,
        0,
        1433,
        1436,
        3,
        292,
        146,
        0,
        1434,
        1435,
        5,
        87,
        0,
        0,
        1435,
        1437,
        3,
        108,
        54,
        0,
        1436,
        1434,
        1,
        0,
        0,
        0,
        1436,
        1437,
        1,
        0,
        0,
        0,
        1437,
        1456,
        1,
        0,
        0,
        0,
        1438,
        1439,
        3,
        462,
        231,
        0,
        1439,
        1440,
        5,
        87,
        0,
        0,
        1440,
        1442,
        1,
        0,
        0,
        0,
        1441,
        1438,
        1,
        0,
        0,
        0,
        1442,
        1443,
        1,
        0,
        0,
        0,
        1443,
        1441,
        1,
        0,
        0,
        0,
        1443,
        1444,
        1,
        0,
        0,
        0,
        1444,
        1447,
        1,
        0,
        0,
        0,
        1445,
        1448,
        3,
        294,
        147,
        0,
        1446,
        1448,
        3,
        296,
        148,
        0,
        1447,
        1445,
        1,
        0,
        0,
        0,
        1447,
        1446,
        1,
        0,
        0,
        0,
        1448,
        1456,
        1,
        0,
        0,
        0,
        1449,
        1450,
        3,
        474,
        237,
        0,
        1450,
        1453,
        3,
        110,
        55,
        0,
        1451,
        1454,
        3,
        294,
        147,
        0,
        1452,
        1454,
        3,
        296,
        148,
        0,
        1453,
        1451,
        1,
        0,
        0,
        0,
        1453,
        1452,
        1,
        0,
        0,
        0,
        1454,
        1456,
        1,
        0,
        0,
        0,
        1455,
        1418,
        1,
        0,
        0,
        0,
        1455,
        1430,
        1,
        0,
        0,
        0,
        1455,
        1441,
        1,
        0,
        0,
        0,
        1455,
        1449,
        1,
        0,
        0,
        0,
        1456,
        107,
        1,
        0,
        0,
        0,
        1457,
        1460,
        3,
        294,
        147,
        0,
        1458,
        1460,
        3,
        296,
        148,
        0,
        1459,
        1457,
        1,
        0,
        0,
        0,
        1459,
        1458,
        1,
        0,
        0,
        0,
        1460,
        109,
        1,
        0,
        0,
        0,
        1461,
        1462,
        7,
        2,
        0,
        0,
        1462,
        111,
        1,
        0,
        0,
        0,
        1463,
        1465,
        5,
        43,
        0,
        0,
        1464,
        1466,
        3,
        296,
        148,
        0,
        1465,
        1464,
        1,
        0,
        0,
        0,
        1465,
        1466,
        1,
        0,
        0,
        0,
        1466,
        113,
        1,
        0,
        0,
        0,
        1467,
        1468,
        5,
        42,
        0,
        0,
        1468,
        1471,
        3,
        292,
        146,
        0,
        1469,
        1470,
        5,
        29,
        0,
        0,
        1470,
        1472,
        3,
        292,
        146,
        0,
        1471,
        1469,
        1,
        0,
        0,
        0,
        1471,
        1472,
        1,
        0,
        0,
        0,
        1472,
        1475,
        1,
        0,
        0,
        0,
        1473,
        1475,
        5,
        42,
        0,
        0,
        1474,
        1467,
        1,
        0,
        0,
        0,
        1474,
        1473,
        1,
        0,
        0,
        0,
        1475,
        115,
        1,
        0,
        0,
        0,
        1476,
        1477,
        5,
        30,
        0,
        0,
        1477,
        1482,
        3,
        490,
        245,
        0,
        1478,
        1479,
        5,
        83,
        0,
        0,
        1479,
        1481,
        3,
        490,
        245,
        0,
        1480,
        1478,
        1,
        0,
        0,
        0,
        1481,
        1484,
        1,
        0,
        0,
        0,
        1482,
        1480,
        1,
        0,
        0,
        0,
        1482,
        1483,
        1,
        0,
        0,
        0,
        1483,
        117,
        1,
        0,
        0,
        0,
        1484,
        1482,
        1,
        0,
        0,
        0,
        1485,
        1486,
        5,
        38,
        0,
        0,
        1486,
        1491,
        3,
        490,
        245,
        0,
        1487,
        1488,
        5,
        83,
        0,
        0,
        1488,
        1490,
        3,
        490,
        245,
        0,
        1489,
        1487,
        1,
        0,
        0,
        0,
        1490,
        1493,
        1,
        0,
        0,
        0,
        1491,
        1489,
        1,
        0,
        0,
        0,
        1491,
        1492,
        1,
        0,
        0,
        0,
        1492,
        119,
        1,
        0,
        0,
        0,
        1493,
        1491,
        1,
        0,
        0,
        0,
        1494,
        1495,
        5,
        22,
        0,
        0,
        1495,
        1496,
        3,
        480,
        240,
        0,
        1496,
        121,
        1,
        0,
        0,
        0,
        1497,
        1498,
        3,
        294,
        147,
        0,
        1498,
        123,
        1,
        0,
        0,
        0,
        1499,
        1500,
        5,
        14,
        0,
        0,
        1500,
        1503,
        3,
        292,
        146,
        0,
        1501,
        1502,
        5,
        83,
        0,
        0,
        1502,
        1504,
        3,
        292,
        146,
        0,
        1503,
        1501,
        1,
        0,
        0,
        0,
        1503,
        1504,
        1,
        0,
        0,
        0,
        1504,
        125,
        1,
        0,
        0,
        0,
        1505,
        1508,
        3,
        128,
        64,
        0,
        1506,
        1508,
        3,
        130,
        65,
        0,
        1507,
        1505,
        1,
        0,
        0,
        0,
        1507,
        1506,
        1,
        0,
        0,
        0,
        1508,
        127,
        1,
        0,
        0,
        0,
        1509,
        1510,
        5,
        32,
        0,
        0,
        1510,
        1511,
        3,
        138,
        69,
        0,
        1511,
        129,
        1,
        0,
        0,
        0,
        1512,
        1516,
        5,
        29,
        0,
        0,
        1513,
        1515,
        7,
        3,
        0,
        0,
        1514,
        1513,
        1,
        0,
        0,
        0,
        1515,
        1518,
        1,
        0,
        0,
        0,
        1516,
        1514,
        1,
        0,
        0,
        0,
        1516,
        1517,
        1,
        0,
        0,
        0,
        1517,
        1519,
        1,
        0,
        0,
        0,
        1518,
        1516,
        1,
        0,
        0,
        0,
        1519,
        1520,
        3,
        142,
        71,
        0,
        1520,
        1521,
        5,
        32,
        0,
        0,
        1521,
        1522,
        3,
        132,
        66,
        0,
        1522,
        1532,
        1,
        0,
        0,
        0,
        1523,
        1525,
        5,
        29,
        0,
        0,
        1524,
        1526,
        7,
        3,
        0,
        0,
        1525,
        1524,
        1,
        0,
        0,
        0,
        1526,
        1527,
        1,
        0,
        0,
        0,
        1527,
        1525,
        1,
        0,
        0,
        0,
        1527,
        1528,
        1,
        0,
        0,
        0,
        1528,
        1529,
        1,
        0,
        0,
        0,
        1529,
        1530,
        5,
        32,
        0,
        0,
        1530,
        1532,
        3,
        132,
        66,
        0,
        1531,
        1512,
        1,
        0,
        0,
        0,
        1531,
        1523,
        1,
        0,
        0,
        0,
        1532,
        131,
        1,
        0,
        0,
        0,
        1533,
        1534,
        5,
        81,
        0,
        0,
        1534,
        1536,
        3,
        134,
        67,
        0,
        1535,
        1537,
        5,
        83,
        0,
        0,
        1536,
        1535,
        1,
        0,
        0,
        0,
        1536,
        1537,
        1,
        0,
        0,
        0,
        1537,
        1538,
        1,
        0,
        0,
        0,
        1538,
        1539,
        5,
        82,
        0,
        0,
        1539,
        1543,
        1,
        0,
        0,
        0,
        1540,
        1543,
        3,
        134,
        67,
        0,
        1541,
        1543,
        5,
        80,
        0,
        0,
        1542,
        1533,
        1,
        0,
        0,
        0,
        1542,
        1540,
        1,
        0,
        0,
        0,
        1542,
        1541,
        1,
        0,
        0,
        0,
        1543,
        133,
        1,
        0,
        0,
        0,
        1544,
        1549,
        3,
        136,
        68,
        0,
        1545,
        1546,
        5,
        83,
        0,
        0,
        1546,
        1548,
        3,
        136,
        68,
        0,
        1547,
        1545,
        1,
        0,
        0,
        0,
        1548,
        1551,
        1,
        0,
        0,
        0,
        1549,
        1547,
        1,
        0,
        0,
        0,
        1549,
        1550,
        1,
        0,
        0,
        0,
        1550,
        135,
        1,
        0,
        0,
        0,
        1551,
        1549,
        1,
        0,
        0,
        0,
        1552,
        1555,
        3,
        490,
        245,
        0,
        1553,
        1554,
        5,
        13,
        0,
        0,
        1554,
        1556,
        3,
        490,
        245,
        0,
        1555,
        1553,
        1,
        0,
        0,
        0,
        1555,
        1556,
        1,
        0,
        0,
        0,
        1556,
        137,
        1,
        0,
        0,
        0,
        1557,
        1562,
        3,
        140,
        70,
        0,
        1558,
        1559,
        5,
        83,
        0,
        0,
        1559,
        1561,
        3,
        140,
        70,
        0,
        1560,
        1558,
        1,
        0,
        0,
        0,
        1561,
        1564,
        1,
        0,
        0,
        0,
        1562,
        1560,
        1,
        0,
        0,
        0,
        1562,
        1563,
        1,
        0,
        0,
        0,
        1563,
        139,
        1,
        0,
        0,
        0,
        1564,
        1562,
        1,
        0,
        0,
        0,
        1565,
        1568,
        3,
        142,
        71,
        0,
        1566,
        1567,
        5,
        13,
        0,
        0,
        1567,
        1569,
        3,
        490,
        245,
        0,
        1568,
        1566,
        1,
        0,
        0,
        0,
        1568,
        1569,
        1,
        0,
        0,
        0,
        1569,
        141,
        1,
        0,
        0,
        0,
        1570,
        1571,
        6,
        71,
        -1,
        0,
        1571,
        1572,
        3,
        490,
        245,
        0,
        1572,
        1578,
        1,
        0,
        0,
        0,
        1573,
        1574,
        10,
        2,
        0,
        0,
        1574,
        1575,
        5,
        79,
        0,
        0,
        1575,
        1577,
        3,
        490,
        245,
        0,
        1576,
        1573,
        1,
        0,
        0,
        0,
        1577,
        1580,
        1,
        0,
        0,
        0,
        1578,
        1576,
        1,
        0,
        0,
        0,
        1578,
        1579,
        1,
        0,
        0,
        0,
        1579,
        143,
        1,
        0,
        0,
        0,
        1580,
        1578,
        1,
        0,
        0,
        0,
        1581,
        1582,
        5,
        127,
        0,
        0,
        1582,
        1583,
        5,
        1,
        0,
        0,
        1583,
        1584,
        3,
        94,
        47,
        0,
        1584,
        1585,
        5,
        2,
        0,
        0,
        1585,
        1588,
        1,
        0,
        0,
        0,
        1586,
        1588,
        3,
        100,
        50,
        0,
        1587,
        1581,
        1,
        0,
        0,
        0,
        1587,
        1586,
        1,
        0,
        0,
        0,
        1588,
        145,
        1,
        0,
        0,
        0,
        1589,
        1590,
        5,
        110,
        0,
        0,
        1590,
        1591,
        3,
        306,
        153,
        0,
        1591,
        1592,
        5,
        127,
        0,
        0,
        1592,
        1594,
        1,
        0,
        0,
        0,
        1593,
        1589,
        1,
        0,
        0,
        0,
        1594,
        1595,
        1,
        0,
        0,
        0,
        1595,
        1593,
        1,
        0,
        0,
        0,
        1595,
        1596,
        1,
        0,
        0,
        0,
        1596,
        147,
        1,
        0,
        0,
        0,
        1597,
        1599,
        3,
        146,
        73,
        0,
        1598,
        1597,
        1,
        0,
        0,
        0,
        1598,
        1599,
        1,
        0,
        0,
        0,
        1599,
        1600,
        1,
        0,
        0,
        0,
        1600,
        1601,
        3,
        150,
        75,
        0,
        1601,
        149,
        1,
        0,
        0,
        0,
        1602,
        1603,
        5,
        19,
        0,
        0,
        1603,
        1605,
        3,
        490,
        245,
        0,
        1604,
        1606,
        3,
        282,
        141,
        0,
        1605,
        1604,
        1,
        0,
        0,
        0,
        1605,
        1606,
        1,
        0,
        0,
        0,
        1606,
        1612,
        1,
        0,
        0,
        0,
        1607,
        1609,
        5,
        81,
        0,
        0,
        1608,
        1610,
        3,
        448,
        224,
        0,
        1609,
        1608,
        1,
        0,
        0,
        0,
        1609,
        1610,
        1,
        0,
        0,
        0,
        1610,
        1611,
        1,
        0,
        0,
        0,
        1611,
        1613,
        5,
        82,
        0,
        0,
        1612,
        1607,
        1,
        0,
        0,
        0,
        1612,
        1613,
        1,
        0,
        0,
        0,
        1613,
        1614,
        1,
        0,
        0,
        0,
        1614,
        1615,
        5,
        84,
        0,
        0,
        1615,
        1616,
        3,
        144,
        72,
        0,
        1616,
        151,
        1,
        0,
        0,
        0,
        1617,
        1619,
        3,
        146,
        73,
        0,
        1618,
        1617,
        1,
        0,
        0,
        0,
        1618,
        1619,
        1,
        0,
        0,
        0,
        1619,
        1620,
        1,
        0,
        0,
        0,
        1620,
        1621,
        3,
        154,
        77,
        0,
        1621,
        153,
        1,
        0,
        0,
        0,
        1622,
        1624,
        5,
        15,
        0,
        0,
        1623,
        1622,
        1,
        0,
        0,
        0,
        1623,
        1624,
        1,
        0,
        0,
        0,
        1624,
        1625,
        1,
        0,
        0,
        0,
        1625,
        1626,
        5,
        21,
        0,
        0,
        1626,
        1628,
        3,
        490,
        245,
        0,
        1627,
        1629,
        3,
        282,
        141,
        0,
        1628,
        1627,
        1,
        0,
        0,
        0,
        1628,
        1629,
        1,
        0,
        0,
        0,
        1629,
        1630,
        1,
        0,
        0,
        0,
        1630,
        1632,
        5,
        81,
        0,
        0,
        1631,
        1633,
        3,
        156,
        78,
        0,
        1632,
        1631,
        1,
        0,
        0,
        0,
        1632,
        1633,
        1,
        0,
        0,
        0,
        1633,
        1634,
        1,
        0,
        0,
        0,
        1634,
        1637,
        5,
        82,
        0,
        0,
        1635,
        1636,
        5,
        111,
        0,
        0,
        1636,
        1638,
        3,
        292,
        146,
        0,
        1637,
        1635,
        1,
        0,
        0,
        0,
        1637,
        1638,
        1,
        0,
        0,
        0,
        1638,
        1639,
        1,
        0,
        0,
        0,
        1639,
        1641,
        5,
        84,
        0,
        0,
        1640,
        1642,
        3,
        488,
        244,
        0,
        1641,
        1640,
        1,
        0,
        0,
        0,
        1641,
        1642,
        1,
        0,
        0,
        0,
        1642,
        1643,
        1,
        0,
        0,
        0,
        1643,
        1644,
        3,
        144,
        72,
        0,
        1644,
        155,
        1,
        0,
        0,
        0,
        1645,
        1646,
        3,
        158,
        79,
        0,
        1646,
        157,
        1,
        0,
        0,
        0,
        1647,
        1651,
        3,
        160,
        80,
        0,
        1648,
        1650,
        3,
        168,
        84,
        0,
        1649,
        1648,
        1,
        0,
        0,
        0,
        1650,
        1653,
        1,
        0,
        0,
        0,
        1651,
        1649,
        1,
        0,
        0,
        0,
        1651,
        1652,
        1,
        0,
        0,
        0,
        1652,
        1657,
        1,
        0,
        0,
        0,
        1653,
        1651,
        1,
        0,
        0,
        0,
        1654,
        1656,
        3,
        172,
        86,
        0,
        1655,
        1654,
        1,
        0,
        0,
        0,
        1656,
        1659,
        1,
        0,
        0,
        0,
        1657,
        1655,
        1,
        0,
        0,
        0,
        1657,
        1658,
        1,
        0,
        0,
        0,
        1658,
        1661,
        1,
        0,
        0,
        0,
        1659,
        1657,
        1,
        0,
        0,
        0,
        1660,
        1662,
        3,
        164,
        82,
        0,
        1661,
        1660,
        1,
        0,
        0,
        0,
        1661,
        1662,
        1,
        0,
        0,
        0,
        1662,
        1697,
        1,
        0,
        0,
        0,
        1663,
        1667,
        3,
        162,
        81,
        0,
        1664,
        1666,
        3,
        172,
        86,
        0,
        1665,
        1664,
        1,
        0,
        0,
        0,
        1666,
        1669,
        1,
        0,
        0,
        0,
        1667,
        1665,
        1,
        0,
        0,
        0,
        1667,
        1668,
        1,
        0,
        0,
        0,
        1668,
        1671,
        1,
        0,
        0,
        0,
        1669,
        1667,
        1,
        0,
        0,
        0,
        1670,
        1672,
        3,
        164,
        82,
        0,
        1671,
        1670,
        1,
        0,
        0,
        0,
        1671,
        1672,
        1,
        0,
        0,
        0,
        1672,
        1697,
        1,
        0,
        0,
        0,
        1673,
        1675,
        3,
        168,
        84,
        0,
        1674,
        1673,
        1,
        0,
        0,
        0,
        1675,
        1676,
        1,
        0,
        0,
        0,
        1676,
        1674,
        1,
        0,
        0,
        0,
        1676,
        1677,
        1,
        0,
        0,
        0,
        1677,
        1681,
        1,
        0,
        0,
        0,
        1678,
        1680,
        3,
        172,
        86,
        0,
        1679,
        1678,
        1,
        0,
        0,
        0,
        1680,
        1683,
        1,
        0,
        0,
        0,
        1681,
        1679,
        1,
        0,
        0,
        0,
        1681,
        1682,
        1,
        0,
        0,
        0,
        1682,
        1685,
        1,
        0,
        0,
        0,
        1683,
        1681,
        1,
        0,
        0,
        0,
        1684,
        1686,
        3,
        164,
        82,
        0,
        1685,
        1684,
        1,
        0,
        0,
        0,
        1685,
        1686,
        1,
        0,
        0,
        0,
        1686,
        1697,
        1,
        0,
        0,
        0,
        1687,
        1689,
        3,
        172,
        86,
        0,
        1688,
        1687,
        1,
        0,
        0,
        0,
        1689,
        1690,
        1,
        0,
        0,
        0,
        1690,
        1688,
        1,
        0,
        0,
        0,
        1690,
        1691,
        1,
        0,
        0,
        0,
        1691,
        1693,
        1,
        0,
        0,
        0,
        1692,
        1694,
        3,
        164,
        82,
        0,
        1693,
        1692,
        1,
        0,
        0,
        0,
        1693,
        1694,
        1,
        0,
        0,
        0,
        1694,
        1697,
        1,
        0,
        0,
        0,
        1695,
        1697,
        3,
        164,
        82,
        0,
        1696,
        1647,
        1,
        0,
        0,
        0,
        1696,
        1663,
        1,
        0,
        0,
        0,
        1696,
        1674,
        1,
        0,
        0,
        0,
        1696,
        1688,
        1,
        0,
        0,
        0,
        1696,
        1695,
        1,
        0,
        0,
        0,
        1697,
        159,
        1,
        0,
        0,
        0,
        1698,
        1700,
        3,
        168,
        84,
        0,
        1699,
        1698,
        1,
        0,
        0,
        0,
        1700,
        1701,
        1,
        0,
        0,
        0,
        1701,
        1699,
        1,
        0,
        0,
        0,
        1701,
        1702,
        1,
        0,
        0,
        0,
        1702,
        1703,
        1,
        0,
        0,
        0,
        1703,
        1705,
        5,
        97,
        0,
        0,
        1704,
        1706,
        5,
        83,
        0,
        0,
        1705,
        1704,
        1,
        0,
        0,
        0,
        1705,
        1706,
        1,
        0,
        0,
        0,
        1706,
        161,
        1,
        0,
        0,
        0,
        1707,
        1709,
        3,
        168,
        84,
        0,
        1708,
        1707,
        1,
        0,
        0,
        0,
        1709,
        1712,
        1,
        0,
        0,
        0,
        1710,
        1708,
        1,
        0,
        0,
        0,
        1710,
        1711,
        1,
        0,
        0,
        0,
        1711,
        1714,
        1,
        0,
        0,
        0,
        1712,
        1710,
        1,
        0,
        0,
        0,
        1713,
        1715,
        3,
        172,
        86,
        0,
        1714,
        1713,
        1,
        0,
        0,
        0,
        1715,
        1716,
        1,
        0,
        0,
        0,
        1716,
        1714,
        1,
        0,
        0,
        0,
        1716,
        1717,
        1,
        0,
        0,
        0,
        1717,
        1718,
        1,
        0,
        0,
        0,
        1718,
        1720,
        5,
        97,
        0,
        0,
        1719,
        1721,
        5,
        83,
        0,
        0,
        1720,
        1719,
        1,
        0,
        0,
        0,
        1720,
        1721,
        1,
        0,
        0,
        0,
        1721,
        163,
        1,
        0,
        0,
        0,
        1722,
        1723,
        5,
        80,
        0,
        0,
        1723,
        1727,
        3,
        168,
        84,
        0,
        1724,
        1726,
        3,
        174,
        87,
        0,
        1725,
        1724,
        1,
        0,
        0,
        0,
        1726,
        1729,
        1,
        0,
        0,
        0,
        1727,
        1725,
        1,
        0,
        0,
        0,
        1727,
        1728,
        1,
        0,
        0,
        0,
        1728,
        1731,
        1,
        0,
        0,
        0,
        1729,
        1727,
        1,
        0,
        0,
        0,
        1730,
        1732,
        3,
        166,
        83,
        0,
        1731,
        1730,
        1,
        0,
        0,
        0,
        1731,
        1732,
        1,
        0,
        0,
        0,
        1732,
        1756,
        1,
        0,
        0,
        0,
        1733,
        1734,
        5,
        80,
        0,
        0,
        1734,
        1738,
        3,
        170,
        85,
        0,
        1735,
        1737,
        3,
        174,
        87,
        0,
        1736,
        1735,
        1,
        0,
        0,
        0,
        1737,
        1740,
        1,
        0,
        0,
        0,
        1738,
        1736,
        1,
        0,
        0,
        0,
        1738,
        1739,
        1,
        0,
        0,
        0,
        1739,
        1742,
        1,
        0,
        0,
        0,
        1740,
        1738,
        1,
        0,
        0,
        0,
        1741,
        1743,
        3,
        166,
        83,
        0,
        1742,
        1741,
        1,
        0,
        0,
        0,
        1742,
        1743,
        1,
        0,
        0,
        0,
        1743,
        1756,
        1,
        0,
        0,
        0,
        1744,
        1745,
        5,
        80,
        0,
        0,
        1745,
        1747,
        5,
        83,
        0,
        0,
        1746,
        1748,
        3,
        174,
        87,
        0,
        1747,
        1746,
        1,
        0,
        0,
        0,
        1748,
        1749,
        1,
        0,
        0,
        0,
        1749,
        1747,
        1,
        0,
        0,
        0,
        1749,
        1750,
        1,
        0,
        0,
        0,
        1750,
        1752,
        1,
        0,
        0,
        0,
        1751,
        1753,
        3,
        166,
        83,
        0,
        1752,
        1751,
        1,
        0,
        0,
        0,
        1752,
        1753,
        1,
        0,
        0,
        0,
        1753,
        1756,
        1,
        0,
        0,
        0,
        1754,
        1756,
        3,
        166,
        83,
        0,
        1755,
        1722,
        1,
        0,
        0,
        0,
        1755,
        1733,
        1,
        0,
        0,
        0,
        1755,
        1744,
        1,
        0,
        0,
        0,
        1755,
        1754,
        1,
        0,
        0,
        0,
        1756,
        165,
        1,
        0,
        0,
        0,
        1757,
        1758,
        5,
        86,
        0,
        0,
        1758,
        1759,
        3,
        168,
        84,
        0,
        1759,
        167,
        1,
        0,
        0,
        0,
        1760,
        1761,
        3,
        176,
        88,
        0,
        1761,
        1762,
        5,
        83,
        0,
        0,
        1762,
        1765,
        1,
        0,
        0,
        0,
        1763,
        1765,
        3,
        176,
        88,
        0,
        1764,
        1760,
        1,
        0,
        0,
        0,
        1764,
        1763,
        1,
        0,
        0,
        0,
        1765,
        169,
        1,
        0,
        0,
        0,
        1766,
        1767,
        3,
        178,
        89,
        0,
        1767,
        1768,
        5,
        83,
        0,
        0,
        1768,
        1771,
        1,
        0,
        0,
        0,
        1769,
        1771,
        3,
        178,
        89,
        0,
        1770,
        1766,
        1,
        0,
        0,
        0,
        1770,
        1769,
        1,
        0,
        0,
        0,
        1771,
        171,
        1,
        0,
        0,
        0,
        1772,
        1773,
        3,
        176,
        88,
        0,
        1773,
        1774,
        3,
        184,
        92,
        0,
        1774,
        1775,
        5,
        83,
        0,
        0,
        1775,
        1780,
        1,
        0,
        0,
        0,
        1776,
        1777,
        3,
        176,
        88,
        0,
        1777,
        1778,
        3,
        184,
        92,
        0,
        1778,
        1780,
        1,
        0,
        0,
        0,
        1779,
        1772,
        1,
        0,
        0,
        0,
        1779,
        1776,
        1,
        0,
        0,
        0,
        1780,
        173,
        1,
        0,
        0,
        0,
        1781,
        1783,
        3,
        176,
        88,
        0,
        1782,
        1784,
        3,
        184,
        92,
        0,
        1783,
        1782,
        1,
        0,
        0,
        0,
        1783,
        1784,
        1,
        0,
        0,
        0,
        1784,
        1785,
        1,
        0,
        0,
        0,
        1785,
        1786,
        5,
        83,
        0,
        0,
        1786,
        1792,
        1,
        0,
        0,
        0,
        1787,
        1789,
        3,
        176,
        88,
        0,
        1788,
        1790,
        3,
        184,
        92,
        0,
        1789,
        1788,
        1,
        0,
        0,
        0,
        1789,
        1790,
        1,
        0,
        0,
        0,
        1790,
        1792,
        1,
        0,
        0,
        0,
        1791,
        1781,
        1,
        0,
        0,
        0,
        1791,
        1787,
        1,
        0,
        0,
        0,
        1792,
        175,
        1,
        0,
        0,
        0,
        1793,
        1795,
        3,
        490,
        245,
        0,
        1794,
        1796,
        3,
        180,
        90,
        0,
        1795,
        1794,
        1,
        0,
        0,
        0,
        1795,
        1796,
        1,
        0,
        0,
        0,
        1796,
        177,
        1,
        0,
        0,
        0,
        1797,
        1798,
        3,
        490,
        245,
        0,
        1798,
        1799,
        3,
        182,
        91,
        0,
        1799,
        179,
        1,
        0,
        0,
        0,
        1800,
        1801,
        5,
        84,
        0,
        0,
        1801,
        1802,
        3,
        292,
        146,
        0,
        1802,
        181,
        1,
        0,
        0,
        0,
        1803,
        1804,
        5,
        84,
        0,
        0,
        1804,
        1805,
        3,
        298,
        149,
        0,
        1805,
        183,
        1,
        0,
        0,
        0,
        1806,
        1807,
        5,
        87,
        0,
        0,
        1807,
        1808,
        3,
        292,
        146,
        0,
        1808,
        185,
        1,
        0,
        0,
        0,
        1809,
        1810,
        5,
        31,
        0,
        0,
        1810,
        1811,
        3,
        306,
        153,
        0,
        1811,
        1812,
        5,
        84,
        0,
        0,
        1812,
        1813,
        3,
        144,
        72,
        0,
        1813,
        1814,
        3,
        188,
        94,
        0,
        1814,
        1823,
        1,
        0,
        0,
        0,
        1815,
        1816,
        5,
        31,
        0,
        0,
        1816,
        1817,
        3,
        306,
        153,
        0,
        1817,
        1818,
        5,
        84,
        0,
        0,
        1818,
        1820,
        3,
        144,
        72,
        0,
        1819,
        1821,
        3,
        190,
        95,
        0,
        1820,
        1819,
        1,
        0,
        0,
        0,
        1820,
        1821,
        1,
        0,
        0,
        0,
        1821,
        1823,
        1,
        0,
        0,
        0,
        1822,
        1809,
        1,
        0,
        0,
        0,
        1822,
        1815,
        1,
        0,
        0,
        0,
        1823,
        187,
        1,
        0,
        0,
        0,
        1824,
        1825,
        5,
        23,
        0,
        0,
        1825,
        1826,
        3,
        306,
        153,
        0,
        1826,
        1827,
        5,
        84,
        0,
        0,
        1827,
        1828,
        3,
        144,
        72,
        0,
        1828,
        1829,
        3,
        188,
        94,
        0,
        1829,
        1838,
        1,
        0,
        0,
        0,
        1830,
        1831,
        5,
        23,
        0,
        0,
        1831,
        1832,
        3,
        306,
        153,
        0,
        1832,
        1833,
        5,
        84,
        0,
        0,
        1833,
        1835,
        3,
        144,
        72,
        0,
        1834,
        1836,
        3,
        190,
        95,
        0,
        1835,
        1834,
        1,
        0,
        0,
        0,
        1835,
        1836,
        1,
        0,
        0,
        0,
        1836,
        1838,
        1,
        0,
        0,
        0,
        1837,
        1824,
        1,
        0,
        0,
        0,
        1837,
        1830,
        1,
        0,
        0,
        0,
        1838,
        189,
        1,
        0,
        0,
        0,
        1839,
        1840,
        5,
        24,
        0,
        0,
        1840,
        1841,
        5,
        84,
        0,
        0,
        1841,
        1842,
        3,
        144,
        72,
        0,
        1842,
        191,
        1,
        0,
        0,
        0,
        1843,
        1844,
        5,
        47,
        0,
        0,
        1844,
        1845,
        3,
        306,
        153,
        0,
        1845,
        1846,
        5,
        84,
        0,
        0,
        1846,
        1848,
        3,
        144,
        72,
        0,
        1847,
        1849,
        3,
        190,
        95,
        0,
        1848,
        1847,
        1,
        0,
        0,
        0,
        1848,
        1849,
        1,
        0,
        0,
        0,
        1849,
        193,
        1,
        0,
        0,
        0,
        1850,
        1851,
        5,
        28,
        0,
        0,
        1851,
        1852,
        3,
        462,
        231,
        0,
        1852,
        1853,
        5,
        33,
        0,
        0,
        1853,
        1854,
        3,
        296,
        148,
        0,
        1854,
        1855,
        5,
        84,
        0,
        0,
        1855,
        1857,
        3,
        144,
        72,
        0,
        1856,
        1858,
        3,
        190,
        95,
        0,
        1857,
        1856,
        1,
        0,
        0,
        0,
        1857,
        1858,
        1,
        0,
        0,
        0,
        1858,
        1870,
        1,
        0,
        0,
        0,
        1859,
        1860,
        5,
        15,
        0,
        0,
        1860,
        1861,
        5,
        28,
        0,
        0,
        1861,
        1862,
        3,
        462,
        231,
        0,
        1862,
        1863,
        5,
        33,
        0,
        0,
        1863,
        1864,
        3,
        296,
        148,
        0,
        1864,
        1865,
        5,
        84,
        0,
        0,
        1865,
        1867,
        3,
        144,
        72,
        0,
        1866,
        1868,
        3,
        190,
        95,
        0,
        1867,
        1866,
        1,
        0,
        0,
        0,
        1867,
        1868,
        1,
        0,
        0,
        0,
        1868,
        1870,
        1,
        0,
        0,
        0,
        1869,
        1850,
        1,
        0,
        0,
        0,
        1869,
        1859,
        1,
        0,
        0,
        0,
        1870,
        195,
        1,
        0,
        0,
        0,
        1871,
        1872,
        5,
        49,
        0,
        0,
        1872,
        1873,
        5,
        81,
        0,
        0,
        1873,
        1878,
        3,
        198,
        99,
        0,
        1874,
        1875,
        5,
        83,
        0,
        0,
        1875,
        1877,
        3,
        198,
        99,
        0,
        1876,
        1874,
        1,
        0,
        0,
        0,
        1877,
        1880,
        1,
        0,
        0,
        0,
        1878,
        1876,
        1,
        0,
        0,
        0,
        1878,
        1879,
        1,
        0,
        0,
        0,
        1879,
        1882,
        1,
        0,
        0,
        0,
        1880,
        1878,
        1,
        0,
        0,
        0,
        1881,
        1883,
        5,
        83,
        0,
        0,
        1882,
        1881,
        1,
        0,
        0,
        0,
        1882,
        1883,
        1,
        0,
        0,
        0,
        1883,
        1884,
        1,
        0,
        0,
        0,
        1884,
        1885,
        5,
        82,
        0,
        0,
        1885,
        1886,
        5,
        84,
        0,
        0,
        1886,
        1887,
        3,
        144,
        72,
        0,
        1887,
        1932,
        1,
        0,
        0,
        0,
        1888,
        1889,
        5,
        49,
        0,
        0,
        1889,
        1894,
        3,
        198,
        99,
        0,
        1890,
        1891,
        5,
        83,
        0,
        0,
        1891,
        1893,
        3,
        198,
        99,
        0,
        1892,
        1890,
        1,
        0,
        0,
        0,
        1893,
        1896,
        1,
        0,
        0,
        0,
        1894,
        1892,
        1,
        0,
        0,
        0,
        1894,
        1895,
        1,
        0,
        0,
        0,
        1895,
        1897,
        1,
        0,
        0,
        0,
        1896,
        1894,
        1,
        0,
        0,
        0,
        1897,
        1898,
        5,
        84,
        0,
        0,
        1898,
        1899,
        3,
        144,
        72,
        0,
        1899,
        1932,
        1,
        0,
        0,
        0,
        1900,
        1901,
        5,
        15,
        0,
        0,
        1901,
        1902,
        5,
        49,
        0,
        0,
        1902,
        1903,
        5,
        81,
        0,
        0,
        1903,
        1908,
        3,
        198,
        99,
        0,
        1904,
        1905,
        5,
        83,
        0,
        0,
        1905,
        1907,
        3,
        198,
        99,
        0,
        1906,
        1904,
        1,
        0,
        0,
        0,
        1907,
        1910,
        1,
        0,
        0,
        0,
        1908,
        1906,
        1,
        0,
        0,
        0,
        1908,
        1909,
        1,
        0,
        0,
        0,
        1909,
        1912,
        1,
        0,
        0,
        0,
        1910,
        1908,
        1,
        0,
        0,
        0,
        1911,
        1913,
        5,
        83,
        0,
        0,
        1912,
        1911,
        1,
        0,
        0,
        0,
        1912,
        1913,
        1,
        0,
        0,
        0,
        1913,
        1914,
        1,
        0,
        0,
        0,
        1914,
        1915,
        5,
        82,
        0,
        0,
        1915,
        1916,
        5,
        84,
        0,
        0,
        1916,
        1917,
        3,
        144,
        72,
        0,
        1917,
        1932,
        1,
        0,
        0,
        0,
        1918,
        1919,
        5,
        15,
        0,
        0,
        1919,
        1920,
        5,
        49,
        0,
        0,
        1920,
        1925,
        3,
        198,
        99,
        0,
        1921,
        1922,
        5,
        83,
        0,
        0,
        1922,
        1924,
        3,
        198,
        99,
        0,
        1923,
        1921,
        1,
        0,
        0,
        0,
        1924,
        1927,
        1,
        0,
        0,
        0,
        1925,
        1923,
        1,
        0,
        0,
        0,
        1925,
        1926,
        1,
        0,
        0,
        0,
        1926,
        1928,
        1,
        0,
        0,
        0,
        1927,
        1925,
        1,
        0,
        0,
        0,
        1928,
        1929,
        5,
        84,
        0,
        0,
        1929,
        1930,
        3,
        144,
        72,
        0,
        1930,
        1932,
        1,
        0,
        0,
        0,
        1931,
        1871,
        1,
        0,
        0,
        0,
        1931,
        1888,
        1,
        0,
        0,
        0,
        1931,
        1900,
        1,
        0,
        0,
        0,
        1931,
        1918,
        1,
        0,
        0,
        0,
        1932,
        197,
        1,
        0,
        0,
        0,
        1933,
        1934,
        3,
        292,
        146,
        0,
        1934,
        1935,
        5,
        13,
        0,
        0,
        1935,
        1936,
        3,
        468,
        234,
        0,
        1936,
        1939,
        1,
        0,
        0,
        0,
        1937,
        1939,
        3,
        292,
        146,
        0,
        1938,
        1933,
        1,
        0,
        0,
        0,
        1938,
        1937,
        1,
        0,
        0,
        0,
        1939,
        199,
        1,
        0,
        0,
        0,
        1940,
        1941,
        5,
        45,
        0,
        0,
        1941,
        1942,
        5,
        84,
        0,
        0,
        1942,
        1943,
        3,
        144,
        72,
        0,
        1943,
        1944,
        3,
        206,
        103,
        0,
        1944,
        1974,
        1,
        0,
        0,
        0,
        1945,
        1946,
        5,
        45,
        0,
        0,
        1946,
        1947,
        5,
        84,
        0,
        0,
        1947,
        1949,
        3,
        144,
        72,
        0,
        1948,
        1950,
        3,
        202,
        101,
        0,
        1949,
        1948,
        1,
        0,
        0,
        0,
        1950,
        1951,
        1,
        0,
        0,
        0,
        1951,
        1949,
        1,
        0,
        0,
        0,
        1951,
        1952,
        1,
        0,
        0,
        0,
        1952,
        1954,
        1,
        0,
        0,
        0,
        1953,
        1955,
        3,
        190,
        95,
        0,
        1954,
        1953,
        1,
        0,
        0,
        0,
        1954,
        1955,
        1,
        0,
        0,
        0,
        1955,
        1957,
        1,
        0,
        0,
        0,
        1956,
        1958,
        3,
        206,
        103,
        0,
        1957,
        1956,
        1,
        0,
        0,
        0,
        1957,
        1958,
        1,
        0,
        0,
        0,
        1958,
        1974,
        1,
        0,
        0,
        0,
        1959,
        1960,
        5,
        45,
        0,
        0,
        1960,
        1961,
        5,
        84,
        0,
        0,
        1961,
        1963,
        3,
        144,
        72,
        0,
        1962,
        1964,
        3,
        204,
        102,
        0,
        1963,
        1962,
        1,
        0,
        0,
        0,
        1964,
        1965,
        1,
        0,
        0,
        0,
        1965,
        1963,
        1,
        0,
        0,
        0,
        1965,
        1966,
        1,
        0,
        0,
        0,
        1966,
        1968,
        1,
        0,
        0,
        0,
        1967,
        1969,
        3,
        190,
        95,
        0,
        1968,
        1967,
        1,
        0,
        0,
        0,
        1968,
        1969,
        1,
        0,
        0,
        0,
        1969,
        1971,
        1,
        0,
        0,
        0,
        1970,
        1972,
        3,
        206,
        103,
        0,
        1971,
        1970,
        1,
        0,
        0,
        0,
        1971,
        1972,
        1,
        0,
        0,
        0,
        1972,
        1974,
        1,
        0,
        0,
        0,
        1973,
        1940,
        1,
        0,
        0,
        0,
        1973,
        1945,
        1,
        0,
        0,
        0,
        1973,
        1959,
        1,
        0,
        0,
        0,
        1974,
        201,
        1,
        0,
        0,
        0,
        1975,
        1976,
        5,
        25,
        0,
        0,
        1976,
        1979,
        3,
        292,
        146,
        0,
        1977,
        1978,
        5,
        13,
        0,
        0,
        1978,
        1980,
        3,
        490,
        245,
        0,
        1979,
        1977,
        1,
        0,
        0,
        0,
        1979,
        1980,
        1,
        0,
        0,
        0,
        1980,
        1981,
        1,
        0,
        0,
        0,
        1981,
        1982,
        5,
        84,
        0,
        0,
        1982,
        1983,
        3,
        144,
        72,
        0,
        1983,
        1988,
        1,
        0,
        0,
        0,
        1984,
        1985,
        5,
        25,
        0,
        0,
        1985,
        1986,
        5,
        84,
        0,
        0,
        1986,
        1988,
        3,
        144,
        72,
        0,
        1987,
        1975,
        1,
        0,
        0,
        0,
        1987,
        1984,
        1,
        0,
        0,
        0,
        1988,
        203,
        1,
        0,
        0,
        0,
        1989,
        1990,
        5,
        25,
        0,
        0,
        1990,
        1991,
        5,
        80,
        0,
        0,
        1991,
        1994,
        3,
        292,
        146,
        0,
        1992,
        1993,
        5,
        13,
        0,
        0,
        1993,
        1995,
        3,
        490,
        245,
        0,
        1994,
        1992,
        1,
        0,
        0,
        0,
        1994,
        1995,
        1,
        0,
        0,
        0,
        1995,
        1996,
        1,
        0,
        0,
        0,
        1996,
        1997,
        5,
        84,
        0,
        0,
        1997,
        1998,
        3,
        144,
        72,
        0,
        1998,
        205,
        1,
        0,
        0,
        0,
        1999,
        2000,
        5,
        27,
        0,
        0,
        2000,
        2001,
        5,
        84,
        0,
        0,
        2001,
        2002,
        3,
        144,
        72,
        0,
        2002,
        207,
        1,
        0,
        0,
        0,
        2003,
        2004,
        5,
        36,
        0,
        0,
        2004,
        2005,
        3,
        210,
        105,
        0,
        2005,
        2006,
        5,
        84,
        0,
        0,
        2006,
        2007,
        5,
        127,
        0,
        0,
        2007,
        2009,
        5,
        1,
        0,
        0,
        2008,
        2010,
        3,
        212,
        106,
        0,
        2009,
        2008,
        1,
        0,
        0,
        0,
        2010,
        2011,
        1,
        0,
        0,
        0,
        2011,
        2009,
        1,
        0,
        0,
        0,
        2011,
        2012,
        1,
        0,
        0,
        0,
        2012,
        2013,
        1,
        0,
        0,
        0,
        2013,
        2014,
        5,
        2,
        0,
        0,
        2014,
        209,
        1,
        0,
        0,
        0,
        2015,
        2016,
        3,
        302,
        151,
        0,
        2016,
        2018,
        5,
        83,
        0,
        0,
        2017,
        2019,
        3,
        300,
        150,
        0,
        2018,
        2017,
        1,
        0,
        0,
        0,
        2018,
        2019,
        1,
        0,
        0,
        0,
        2019,
        2022,
        1,
        0,
        0,
        0,
        2020,
        2022,
        3,
        306,
        153,
        0,
        2021,
        2015,
        1,
        0,
        0,
        0,
        2021,
        2020,
        1,
        0,
        0,
        0,
        2022,
        211,
        1,
        0,
        0,
        0,
        2023,
        2024,
        5,
        18,
        0,
        0,
        2024,
        2026,
        3,
        216,
        108,
        0,
        2025,
        2027,
        3,
        214,
        107,
        0,
        2026,
        2025,
        1,
        0,
        0,
        0,
        2026,
        2027,
        1,
        0,
        0,
        0,
        2027,
        2028,
        1,
        0,
        0,
        0,
        2028,
        2029,
        5,
        84,
        0,
        0,
        2029,
        2030,
        3,
        144,
        72,
        0,
        2030,
        213,
        1,
        0,
        0,
        0,
        2031,
        2032,
        5,
        31,
        0,
        0,
        2032,
        2033,
        3,
        306,
        153,
        0,
        2033,
        215,
        1,
        0,
        0,
        0,
        2034,
        2037,
        3,
        256,
        128,
        0,
        2035,
        2037,
        3,
        218,
        109,
        0,
        2036,
        2034,
        1,
        0,
        0,
        0,
        2036,
        2035,
        1,
        0,
        0,
        0,
        2037,
        217,
        1,
        0,
        0,
        0,
        2038,
        2041,
        3,
        220,
        110,
        0,
        2039,
        2041,
        3,
        222,
        111,
        0,
        2040,
        2038,
        1,
        0,
        0,
        0,
        2040,
        2039,
        1,
        0,
        0,
        0,
        2041,
        219,
        1,
        0,
        0,
        0,
        2042,
        2043,
        3,
        222,
        111,
        0,
        2043,
        2044,
        5,
        13,
        0,
        0,
        2044,
        2045,
        3,
        242,
        121,
        0,
        2045,
        221,
        1,
        0,
        0,
        0,
        2046,
        2051,
        3,
        224,
        112,
        0,
        2047,
        2048,
        5,
        90,
        0,
        0,
        2048,
        2050,
        3,
        224,
        112,
        0,
        2049,
        2047,
        1,
        0,
        0,
        0,
        2050,
        2053,
        1,
        0,
        0,
        0,
        2051,
        2049,
        1,
        0,
        0,
        0,
        2051,
        2052,
        1,
        0,
        0,
        0,
        2052,
        223,
        1,
        0,
        0,
        0,
        2053,
        2051,
        1,
        0,
        0,
        0,
        2054,
        2063,
        3,
        226,
        113,
        0,
        2055,
        2063,
        3,
        240,
        120,
        0,
        2056,
        2063,
        3,
        244,
        122,
        0,
        2057,
        2063,
        3,
        246,
        123,
        0,
        2058,
        2063,
        3,
        252,
        126,
        0,
        2059,
        2063,
        3,
        254,
        127,
        0,
        2060,
        2063,
        3,
        264,
        132,
        0,
        2061,
        2063,
        3,
        272,
        136,
        0,
        2062,
        2054,
        1,
        0,
        0,
        0,
        2062,
        2055,
        1,
        0,
        0,
        0,
        2062,
        2056,
        1,
        0,
        0,
        0,
        2062,
        2057,
        1,
        0,
        0,
        0,
        2062,
        2058,
        1,
        0,
        0,
        0,
        2062,
        2059,
        1,
        0,
        0,
        0,
        2062,
        2060,
        1,
        0,
        0,
        0,
        2062,
        2061,
        1,
        0,
        0,
        0,
        2063,
        225,
        1,
        0,
        0,
        0,
        2064,
        2071,
        3,
        232,
        116,
        0,
        2065,
        2071,
        3,
        230,
        115,
        0,
        2066,
        2071,
        3,
        420,
        210,
        0,
        2067,
        2071,
        5,
        37,
        0,
        0,
        2068,
        2071,
        5,
        44,
        0,
        0,
        2069,
        2071,
        5,
        26,
        0,
        0,
        2070,
        2064,
        1,
        0,
        0,
        0,
        2070,
        2065,
        1,
        0,
        0,
        0,
        2070,
        2066,
        1,
        0,
        0,
        0,
        2070,
        2067,
        1,
        0,
        0,
        0,
        2070,
        2068,
        1,
        0,
        0,
        0,
        2070,
        2069,
        1,
        0,
        0,
        0,
        2071,
        227,
        1,
        0,
        0,
        0,
        2072,
        2079,
        3,
        232,
        116,
        0,
        2073,
        2079,
        3,
        230,
        115,
        0,
        2074,
        2079,
        3,
        420,
        210,
        0,
        2075,
        2079,
        5,
        37,
        0,
        0,
        2076,
        2079,
        5,
        44,
        0,
        0,
        2077,
        2079,
        5,
        26,
        0,
        0,
        2078,
        2072,
        1,
        0,
        0,
        0,
        2078,
        2073,
        1,
        0,
        0,
        0,
        2078,
        2074,
        1,
        0,
        0,
        0,
        2078,
        2075,
        1,
        0,
        0,
        0,
        2078,
        2076,
        1,
        0,
        0,
        0,
        2078,
        2077,
        1,
        0,
        0,
        0,
        2079,
        229,
        1,
        0,
        0,
        0,
        2080,
        2081,
        3,
        234,
        117,
        0,
        2081,
        2082,
        5,
        95,
        0,
        0,
        2082,
        2083,
        3,
        238,
        119,
        0,
        2083,
        2089,
        1,
        0,
        0,
        0,
        2084,
        2085,
        3,
        234,
        117,
        0,
        2085,
        2086,
        5,
        96,
        0,
        0,
        2086,
        2087,
        3,
        238,
        119,
        0,
        2087,
        2089,
        1,
        0,
        0,
        0,
        2088,
        2080,
        1,
        0,
        0,
        0,
        2088,
        2084,
        1,
        0,
        0,
        0,
        2089,
        231,
        1,
        0,
        0,
        0,
        2090,
        2094,
        5,
        8,
        0,
        0,
        2091,
        2092,
        5,
        96,
        0,
        0,
        2092,
        2094,
        5,
        8,
        0,
        0,
        2093,
        2090,
        1,
        0,
        0,
        0,
        2093,
        2091,
        1,
        0,
        0,
        0,
        2094,
        233,
        1,
        0,
        0,
        0,
        2095,
        2099,
        3,
        236,
        118,
        0,
        2096,
        2097,
        5,
        96,
        0,
        0,
        2097,
        2099,
        3,
        236,
        118,
        0,
        2098,
        2095,
        1,
        0,
        0,
        0,
        2098,
        2096,
        1,
        0,
        0,
        0,
        2099,
        235,
        1,
        0,
        0,
        0,
        2100,
        2101,
        5,
        8,
        0,
        0,
        2101,
        237,
        1,
        0,
        0,
        0,
        2102,
        2103,
        5,
        8,
        0,
        0,
        2103,
        239,
        1,
        0,
        0,
        0,
        2104,
        2105,
        3,
        242,
        121,
        0,
        2105,
        241,
        1,
        0,
        0,
        0,
        2106,
        2107,
        3,
        490,
        245,
        0,
        2107,
        243,
        1,
        0,
        0,
        0,
        2108,
        2109,
        5,
        130,
        0,
        0,
        2109,
        245,
        1,
        0,
        0,
        0,
        2110,
        2111,
        3,
        248,
        124,
        0,
        2111,
        247,
        1,
        0,
        0,
        0,
        2112,
        2113,
        3,
        250,
        125,
        0,
        2113,
        2114,
        5,
        79,
        0,
        0,
        2114,
        2115,
        3,
        490,
        245,
        0,
        2115,
        249,
        1,
        0,
        0,
        0,
        2116,
        2117,
        6,
        125,
        -1,
        0,
        2117,
        2118,
        3,
        490,
        245,
        0,
        2118,
        2124,
        1,
        0,
        0,
        0,
        2119,
        2120,
        10,
        2,
        0,
        0,
        2120,
        2121,
        5,
        79,
        0,
        0,
        2121,
        2123,
        3,
        490,
        245,
        0,
        2122,
        2119,
        1,
        0,
        0,
        0,
        2123,
        2126,
        1,
        0,
        0,
        0,
        2124,
        2122,
        1,
        0,
        0,
        0,
        2124,
        2125,
        1,
        0,
        0,
        0,
        2125,
        251,
        1,
        0,
        0,
        0,
        2126,
        2124,
        1,
        0,
        0,
        0,
        2127,
        2128,
        5,
        81,
        0,
        0,
        2128,
        2129,
        3,
        218,
        109,
        0,
        2129,
        2130,
        5,
        82,
        0,
        0,
        2130,
        253,
        1,
        0,
        0,
        0,
        2131,
        2133,
        5,
        88,
        0,
        0,
        2132,
        2134,
        3,
        258,
        129,
        0,
        2133,
        2132,
        1,
        0,
        0,
        0,
        2133,
        2134,
        1,
        0,
        0,
        0,
        2134,
        2135,
        1,
        0,
        0,
        0,
        2135,
        2142,
        5,
        89,
        0,
        0,
        2136,
        2138,
        5,
        81,
        0,
        0,
        2137,
        2139,
        3,
        256,
        128,
        0,
        2138,
        2137,
        1,
        0,
        0,
        0,
        2138,
        2139,
        1,
        0,
        0,
        0,
        2139,
        2140,
        1,
        0,
        0,
        0,
        2140,
        2142,
        5,
        82,
        0,
        0,
        2141,
        2131,
        1,
        0,
        0,
        0,
        2141,
        2136,
        1,
        0,
        0,
        0,
        2142,
        255,
        1,
        0,
        0,
        0,
        2143,
        2144,
        3,
        260,
        130,
        0,
        2144,
        2146,
        5,
        83,
        0,
        0,
        2145,
        2147,
        3,
        258,
        129,
        0,
        2146,
        2145,
        1,
        0,
        0,
        0,
        2146,
        2147,
        1,
        0,
        0,
        0,
        2147,
        257,
        1,
        0,
        0,
        0,
        2148,
        2153,
        3,
        260,
        130,
        0,
        2149,
        2150,
        5,
        83,
        0,
        0,
        2150,
        2152,
        3,
        260,
        130,
        0,
        2151,
        2149,
        1,
        0,
        0,
        0,
        2152,
        2155,
        1,
        0,
        0,
        0,
        2153,
        2151,
        1,
        0,
        0,
        0,
        2153,
        2154,
        1,
        0,
        0,
        0,
        2154,
        2157,
        1,
        0,
        0,
        0,
        2155,
        2153,
        1,
        0,
        0,
        0,
        2156,
        2158,
        5,
        83,
        0,
        0,
        2157,
        2156,
        1,
        0,
        0,
        0,
        2157,
        2158,
        1,
        0,
        0,
        0,
        2158,
        259,
        1,
        0,
        0,
        0,
        2159,
        2162,
        3,
        262,
        131,
        0,
        2160,
        2162,
        3,
        218,
        109,
        0,
        2161,
        2159,
        1,
        0,
        0,
        0,
        2161,
        2160,
        1,
        0,
        0,
        0,
        2162,
        261,
        1,
        0,
        0,
        0,
        2163,
        2164,
        5,
        80,
        0,
        0,
        2164,
        2168,
        3,
        242,
        121,
        0,
        2165,
        2166,
        5,
        80,
        0,
        0,
        2166,
        2168,
        3,
        244,
        122,
        0,
        2167,
        2163,
        1,
        0,
        0,
        0,
        2167,
        2165,
        1,
        0,
        0,
        0,
        2168,
        263,
        1,
        0,
        0,
        0,
        2169,
        2170,
        5,
        101,
        0,
        0,
        2170,
        2195,
        5,
        102,
        0,
        0,
        2171,
        2172,
        5,
        101,
        0,
        0,
        2172,
        2174,
        3,
        270,
        135,
        0,
        2173,
        2175,
        5,
        83,
        0,
        0,
        2174,
        2173,
        1,
        0,
        0,
        0,
        2174,
        2175,
        1,
        0,
        0,
        0,
        2175,
        2176,
        1,
        0,
        0,
        0,
        2176,
        2177,
        5,
        102,
        0,
        0,
        2177,
        2195,
        1,
        0,
        0,
        0,
        2178,
        2179,
        5,
        101,
        0,
        0,
        2179,
        2180,
        3,
        266,
        133,
        0,
        2180,
        2181,
        5,
        83,
        0,
        0,
        2181,
        2183,
        3,
        270,
        135,
        0,
        2182,
        2184,
        5,
        83,
        0,
        0,
        2183,
        2182,
        1,
        0,
        0,
        0,
        2183,
        2184,
        1,
        0,
        0,
        0,
        2184,
        2185,
        1,
        0,
        0,
        0,
        2185,
        2186,
        5,
        102,
        0,
        0,
        2186,
        2195,
        1,
        0,
        0,
        0,
        2187,
        2188,
        5,
        101,
        0,
        0,
        2188,
        2190,
        3,
        266,
        133,
        0,
        2189,
        2191,
        5,
        83,
        0,
        0,
        2190,
        2189,
        1,
        0,
        0,
        0,
        2190,
        2191,
        1,
        0,
        0,
        0,
        2191,
        2192,
        1,
        0,
        0,
        0,
        2192,
        2193,
        5,
        102,
        0,
        0,
        2193,
        2195,
        1,
        0,
        0,
        0,
        2194,
        2169,
        1,
        0,
        0,
        0,
        2194,
        2171,
        1,
        0,
        0,
        0,
        2194,
        2178,
        1,
        0,
        0,
        0,
        2194,
        2187,
        1,
        0,
        0,
        0,
        2195,
        265,
        1,
        0,
        0,
        0,
        2196,
        2201,
        3,
        268,
        134,
        0,
        2197,
        2198,
        5,
        83,
        0,
        0,
        2198,
        2200,
        3,
        268,
        134,
        0,
        2199,
        2197,
        1,
        0,
        0,
        0,
        2200,
        2203,
        1,
        0,
        0,
        0,
        2201,
        2199,
        1,
        0,
        0,
        0,
        2201,
        2202,
        1,
        0,
        0,
        0,
        2202,
        267,
        1,
        0,
        0,
        0,
        2203,
        2201,
        1,
        0,
        0,
        0,
        2204,
        2207,
        3,
        228,
        114,
        0,
        2205,
        2207,
        3,
        248,
        124,
        0,
        2206,
        2204,
        1,
        0,
        0,
        0,
        2206,
        2205,
        1,
        0,
        0,
        0,
        2207,
        2208,
        1,
        0,
        0,
        0,
        2208,
        2209,
        5,
        84,
        0,
        0,
        2209,
        2210,
        3,
        218,
        109,
        0,
        2210,
        269,
        1,
        0,
        0,
        0,
        2211,
        2212,
        5,
        86,
        0,
        0,
        2212,
        2213,
        3,
        242,
        121,
        0,
        2213,
        271,
        1,
        0,
        0,
        0,
        2214,
        2215,
        3,
        250,
        125,
        0,
        2215,
        2216,
        5,
        81,
        0,
        0,
        2216,
        2217,
        5,
        82,
        0,
        0,
        2217,
        2245,
        1,
        0,
        0,
        0,
        2218,
        2219,
        3,
        250,
        125,
        0,
        2219,
        2220,
        5,
        81,
        0,
        0,
        2220,
        2222,
        3,
        274,
        137,
        0,
        2221,
        2223,
        5,
        83,
        0,
        0,
        2222,
        2221,
        1,
        0,
        0,
        0,
        2222,
        2223,
        1,
        0,
        0,
        0,
        2223,
        2224,
        1,
        0,
        0,
        0,
        2224,
        2225,
        5,
        82,
        0,
        0,
        2225,
        2245,
        1,
        0,
        0,
        0,
        2226,
        2227,
        3,
        250,
        125,
        0,
        2227,
        2228,
        5,
        81,
        0,
        0,
        2228,
        2230,
        3,
        276,
        138,
        0,
        2229,
        2231,
        5,
        83,
        0,
        0,
        2230,
        2229,
        1,
        0,
        0,
        0,
        2230,
        2231,
        1,
        0,
        0,
        0,
        2231,
        2232,
        1,
        0,
        0,
        0,
        2232,
        2233,
        5,
        82,
        0,
        0,
        2233,
        2245,
        1,
        0,
        0,
        0,
        2234,
        2235,
        3,
        250,
        125,
        0,
        2235,
        2236,
        5,
        81,
        0,
        0,
        2236,
        2237,
        3,
        274,
        137,
        0,
        2237,
        2238,
        5,
        83,
        0,
        0,
        2238,
        2240,
        3,
        276,
        138,
        0,
        2239,
        2241,
        5,
        83,
        0,
        0,
        2240,
        2239,
        1,
        0,
        0,
        0,
        2240,
        2241,
        1,
        0,
        0,
        0,
        2241,
        2242,
        1,
        0,
        0,
        0,
        2242,
        2243,
        5,
        82,
        0,
        0,
        2243,
        2245,
        1,
        0,
        0,
        0,
        2244,
        2214,
        1,
        0,
        0,
        0,
        2244,
        2218,
        1,
        0,
        0,
        0,
        2244,
        2226,
        1,
        0,
        0,
        0,
        2244,
        2234,
        1,
        0,
        0,
        0,
        2245,
        273,
        1,
        0,
        0,
        0,
        2246,
        2251,
        3,
        218,
        109,
        0,
        2247,
        2248,
        5,
        83,
        0,
        0,
        2248,
        2250,
        3,
        218,
        109,
        0,
        2249,
        2247,
        1,
        0,
        0,
        0,
        2250,
        2253,
        1,
        0,
        0,
        0,
        2251,
        2249,
        1,
        0,
        0,
        0,
        2251,
        2252,
        1,
        0,
        0,
        0,
        2252,
        275,
        1,
        0,
        0,
        0,
        2253,
        2251,
        1,
        0,
        0,
        0,
        2254,
        2259,
        3,
        278,
        139,
        0,
        2255,
        2256,
        5,
        83,
        0,
        0,
        2256,
        2258,
        3,
        278,
        139,
        0,
        2257,
        2255,
        1,
        0,
        0,
        0,
        2258,
        2261,
        1,
        0,
        0,
        0,
        2259,
        2257,
        1,
        0,
        0,
        0,
        2259,
        2260,
        1,
        0,
        0,
        0,
        2260,
        277,
        1,
        0,
        0,
        0,
        2261,
        2259,
        1,
        0,
        0,
        0,
        2262,
        2263,
        3,
        490,
        245,
        0,
        2263,
        2264,
        5,
        87,
        0,
        0,
        2264,
        2265,
        3,
        218,
        109,
        0,
        2265,
        279,
        1,
        0,
        0,
        0,
        2266,
        2267,
        5,
        46,
        0,
        0,
        2267,
        2269,
        3,
        490,
        245,
        0,
        2268,
        2270,
        3,
        282,
        141,
        0,
        2269,
        2268,
        1,
        0,
        0,
        0,
        2269,
        2270,
        1,
        0,
        0,
        0,
        2270,
        2271,
        1,
        0,
        0,
        0,
        2271,
        2272,
        5,
        87,
        0,
        0,
        2272,
        2273,
        3,
        292,
        146,
        0,
        2273,
        281,
        1,
        0,
        0,
        0,
        2274,
        2275,
        5,
        88,
        0,
        0,
        2275,
        2276,
        3,
        284,
        142,
        0,
        2276,
        2277,
        5,
        89,
        0,
        0,
        2277,
        283,
        1,
        0,
        0,
        0,
        2278,
        2283,
        3,
        286,
        143,
        0,
        2279,
        2280,
        5,
        83,
        0,
        0,
        2280,
        2282,
        3,
        286,
        143,
        0,
        2281,
        2279,
        1,
        0,
        0,
        0,
        2282,
        2285,
        1,
        0,
        0,
        0,
        2283,
        2281,
        1,
        0,
        0,
        0,
        2283,
        2284,
        1,
        0,
        0,
        0,
        2284,
        2287,
        1,
        0,
        0,
        0,
        2285,
        2283,
        1,
        0,
        0,
        0,
        2286,
        2288,
        5,
        83,
        0,
        0,
        2287,
        2286,
        1,
        0,
        0,
        0,
        2287,
        2288,
        1,
        0,
        0,
        0,
        2288,
        285,
        1,
        0,
        0,
        0,
        2289,
        2291,
        3,
        490,
        245,
        0,
        2290,
        2292,
        3,
        288,
        144,
        0,
        2291,
        2290,
        1,
        0,
        0,
        0,
        2291,
        2292,
        1,
        0,
        0,
        0,
        2292,
        2298,
        1,
        0,
        0,
        0,
        2293,
        2294,
        5,
        80,
        0,
        0,
        2294,
        2298,
        3,
        490,
        245,
        0,
        2295,
        2296,
        5,
        86,
        0,
        0,
        2296,
        2298,
        3,
        490,
        245,
        0,
        2297,
        2289,
        1,
        0,
        0,
        0,
        2297,
        2293,
        1,
        0,
        0,
        0,
        2297,
        2295,
        1,
        0,
        0,
        0,
        2298,
        287,
        1,
        0,
        0,
        0,
        2299,
        2300,
        5,
        84,
        0,
        0,
        2300,
        2301,
        3,
        292,
        146,
        0,
        2301,
        289,
        1,
        0,
        0,
        0,
        2302,
        2307,
        3,
        292,
        146,
        0,
        2303,
        2304,
        5,
        83,
        0,
        0,
        2304,
        2306,
        3,
        292,
        146,
        0,
        2305,
        2303,
        1,
        0,
        0,
        0,
        2306,
        2309,
        1,
        0,
        0,
        0,
        2307,
        2305,
        1,
        0,
        0,
        0,
        2307,
        2308,
        1,
        0,
        0,
        0,
        2308,
        2311,
        1,
        0,
        0,
        0,
        2309,
        2307,
        1,
        0,
        0,
        0,
        2310,
        2312,
        5,
        83,
        0,
        0,
        2311,
        2310,
        1,
        0,
        0,
        0,
        2311,
        2312,
        1,
        0,
        0,
        0,
        2312,
        291,
        1,
        0,
        0,
        0,
        2313,
        2314,
        3,
        308,
        154,
        0,
        2314,
        2315,
        5,
        31,
        0,
        0,
        2315,
        2316,
        3,
        308,
        154,
        0,
        2316,
        2317,
        5,
        24,
        0,
        0,
        2317,
        2318,
        3,
        292,
        146,
        0,
        2318,
        2322,
        1,
        0,
        0,
        0,
        2319,
        2322,
        3,
        308,
        154,
        0,
        2320,
        2322,
        3,
        366,
        183,
        0,
        2321,
        2313,
        1,
        0,
        0,
        0,
        2321,
        2319,
        1,
        0,
        0,
        0,
        2321,
        2320,
        1,
        0,
        0,
        0,
        2322,
        293,
        1,
        0,
        0,
        0,
        2323,
        2324,
        5,
        50,
        0,
        0,
        2324,
        2325,
        5,
        29,
        0,
        0,
        2325,
        2331,
        3,
        292,
        146,
        0,
        2326,
        2328,
        5,
        50,
        0,
        0,
        2327,
        2329,
        3,
        296,
        148,
        0,
        2328,
        2327,
        1,
        0,
        0,
        0,
        2328,
        2329,
        1,
        0,
        0,
        0,
        2329,
        2331,
        1,
        0,
        0,
        0,
        2330,
        2323,
        1,
        0,
        0,
        0,
        2330,
        2326,
        1,
        0,
        0,
        0,
        2331,
        295,
        1,
        0,
        0,
        0,
        2332,
        2337,
        3,
        298,
        149,
        0,
        2333,
        2334,
        5,
        83,
        0,
        0,
        2334,
        2336,
        3,
        298,
        149,
        0,
        2335,
        2333,
        1,
        0,
        0,
        0,
        2336,
        2339,
        1,
        0,
        0,
        0,
        2337,
        2335,
        1,
        0,
        0,
        0,
        2337,
        2338,
        1,
        0,
        0,
        0,
        2338,
        2341,
        1,
        0,
        0,
        0,
        2339,
        2337,
        1,
        0,
        0,
        0,
        2340,
        2342,
        5,
        83,
        0,
        0,
        2341,
        2340,
        1,
        0,
        0,
        0,
        2341,
        2342,
        1,
        0,
        0,
        0,
        2342,
        297,
        1,
        0,
        0,
        0,
        2343,
        2348,
        3,
        54,
        27,
        0,
        2344,
        2345,
        5,
        80,
        0,
        0,
        2345,
        2348,
        3,
        338,
        169,
        0,
        2346,
        2348,
        3,
        292,
        146,
        0,
        2347,
        2343,
        1,
        0,
        0,
        0,
        2347,
        2344,
        1,
        0,
        0,
        0,
        2347,
        2346,
        1,
        0,
        0,
        0,
        2348,
        299,
        1,
        0,
        0,
        0,
        2349,
        2354,
        3,
        302,
        151,
        0,
        2350,
        2351,
        5,
        83,
        0,
        0,
        2351,
        2353,
        3,
        302,
        151,
        0,
        2352,
        2350,
        1,
        0,
        0,
        0,
        2353,
        2356,
        1,
        0,
        0,
        0,
        2354,
        2352,
        1,
        0,
        0,
        0,
        2354,
        2355,
        1,
        0,
        0,
        0,
        2355,
        2358,
        1,
        0,
        0,
        0,
        2356,
        2354,
        1,
        0,
        0,
        0,
        2357,
        2359,
        5,
        83,
        0,
        0,
        2358,
        2357,
        1,
        0,
        0,
        0,
        2358,
        2359,
        1,
        0,
        0,
        0,
        2359,
        301,
        1,
        0,
        0,
        0,
        2360,
        2361,
        5,
        80,
        0,
        0,
        2361,
        2364,
        3,
        338,
        169,
        0,
        2362,
        2364,
        3,
        306,
        153,
        0,
        2363,
        2360,
        1,
        0,
        0,
        0,
        2363,
        2362,
        1,
        0,
        0,
        0,
        2364,
        303,
        1,
        0,
        0,
        0,
        2365,
        2366,
        3,
        490,
        245,
        0,
        2366,
        2367,
        5,
        125,
        0,
        0,
        2367,
        2368,
        3,
        292,
        146,
        0,
        2368,
        305,
        1,
        0,
        0,
        0,
        2369,
        2372,
        3,
        304,
        152,
        0,
        2370,
        2372,
        3,
        292,
        146,
        0,
        2371,
        2369,
        1,
        0,
        0,
        0,
        2371,
        2370,
        1,
        0,
        0,
        0,
        2372,
        307,
        1,
        0,
        0,
        0,
        2373,
        2378,
        3,
        310,
        155,
        0,
        2374,
        2375,
        5,
        40,
        0,
        0,
        2375,
        2377,
        3,
        310,
        155,
        0,
        2376,
        2374,
        1,
        0,
        0,
        0,
        2377,
        2380,
        1,
        0,
        0,
        0,
        2378,
        2376,
        1,
        0,
        0,
        0,
        2378,
        2379,
        1,
        0,
        0,
        0,
        2379,
        309,
        1,
        0,
        0,
        0,
        2380,
        2378,
        1,
        0,
        0,
        0,
        2381,
        2386,
        3,
        312,
        156,
        0,
        2382,
        2383,
        5,
        12,
        0,
        0,
        2383,
        2385,
        3,
        312,
        156,
        0,
        2384,
        2382,
        1,
        0,
        0,
        0,
        2385,
        2388,
        1,
        0,
        0,
        0,
        2386,
        2384,
        1,
        0,
        0,
        0,
        2386,
        2387,
        1,
        0,
        0,
        0,
        2387,
        311,
        1,
        0,
        0,
        0,
        2388,
        2386,
        1,
        0,
        0,
        0,
        2389,
        2390,
        5,
        39,
        0,
        0,
        2390,
        2393,
        3,
        312,
        156,
        0,
        2391,
        2393,
        3,
        314,
        157,
        0,
        2392,
        2389,
        1,
        0,
        0,
        0,
        2392,
        2391,
        1,
        0,
        0,
        0,
        2393,
        313,
        1,
        0,
        0,
        0,
        2394,
        2398,
        3,
        338,
        169,
        0,
        2395,
        2397,
        3,
        316,
        158,
        0,
        2396,
        2395,
        1,
        0,
        0,
        0,
        2397,
        2400,
        1,
        0,
        0,
        0,
        2398,
        2396,
        1,
        0,
        0,
        0,
        2398,
        2399,
        1,
        0,
        0,
        0,
        2399,
        315,
        1,
        0,
        0,
        0,
        2400,
        2398,
        1,
        0,
        0,
        0,
        2401,
        2412,
        3,
        318,
        159,
        0,
        2402,
        2412,
        3,
        320,
        160,
        0,
        2403,
        2412,
        3,
        322,
        161,
        0,
        2404,
        2412,
        3,
        324,
        162,
        0,
        2405,
        2412,
        3,
        326,
        163,
        0,
        2406,
        2412,
        3,
        328,
        164,
        0,
        2407,
        2412,
        3,
        330,
        165,
        0,
        2408,
        2412,
        3,
        332,
        166,
        0,
        2409,
        2412,
        3,
        334,
        167,
        0,
        2410,
        2412,
        3,
        336,
        168,
        0,
        2411,
        2401,
        1,
        0,
        0,
        0,
        2411,
        2402,
        1,
        0,
        0,
        0,
        2411,
        2403,
        1,
        0,
        0,
        0,
        2411,
        2404,
        1,
        0,
        0,
        0,
        2411,
        2405,
        1,
        0,
        0,
        0,
        2411,
        2406,
        1,
        0,
        0,
        0,
        2411,
        2407,
        1,
        0,
        0,
        0,
        2411,
        2408,
        1,
        0,
        0,
        0,
        2411,
        2409,
        1,
        0,
        0,
        0,
        2411,
        2410,
        1,
        0,
        0,
        0,
        2412,
        317,
        1,
        0,
        0,
        0,
        2413,
        2414,
        5,
        105,
        0,
        0,
        2414,
        2415,
        3,
        338,
        169,
        0,
        2415,
        319,
        1,
        0,
        0,
        0,
        2416,
        2417,
        5,
        109,
        0,
        0,
        2417,
        2421,
        3,
        338,
        169,
        0,
        2418,
        2419,
        5,
        108,
        0,
        0,
        2419,
        2421,
        3,
        338,
        169,
        0,
        2420,
        2416,
        1,
        0,
        0,
        0,
        2420,
        2418,
        1,
        0,
        0,
        0,
        2421,
        321,
        1,
        0,
        0,
        0,
        2422,
        2423,
        5,
        107,
        0,
        0,
        2423,
        2424,
        3,
        338,
        169,
        0,
        2424,
        323,
        1,
        0,
        0,
        0,
        2425,
        2426,
        5,
        103,
        0,
        0,
        2426,
        2427,
        3,
        338,
        169,
        0,
        2427,
        325,
        1,
        0,
        0,
        0,
        2428,
        2429,
        5,
        106,
        0,
        0,
        2429,
        2430,
        3,
        338,
        169,
        0,
        2430,
        327,
        1,
        0,
        0,
        0,
        2431,
        2432,
        5,
        104,
        0,
        0,
        2432,
        2433,
        3,
        338,
        169,
        0,
        2433,
        329,
        1,
        0,
        0,
        0,
        2434,
        2435,
        5,
        39,
        0,
        0,
        2435,
        2436,
        5,
        33,
        0,
        0,
        2436,
        2437,
        3,
        338,
        169,
        0,
        2437,
        331,
        1,
        0,
        0,
        0,
        2438,
        2439,
        5,
        33,
        0,
        0,
        2439,
        2440,
        3,
        338,
        169,
        0,
        2440,
        333,
        1,
        0,
        0,
        0,
        2441,
        2442,
        5,
        34,
        0,
        0,
        2442,
        2443,
        5,
        39,
        0,
        0,
        2443,
        2444,
        3,
        338,
        169,
        0,
        2444,
        335,
        1,
        0,
        0,
        0,
        2445,
        2446,
        5,
        34,
        0,
        0,
        2446,
        2447,
        3,
        338,
        169,
        0,
        2447,
        337,
        1,
        0,
        0,
        0,
        2448,
        2449,
        6,
        169,
        -1,
        0,
        2449,
        2450,
        3,
        340,
        170,
        0,
        2450,
        2456,
        1,
        0,
        0,
        0,
        2451,
        2452,
        10,
        2,
        0,
        0,
        2452,
        2453,
        5,
        90,
        0,
        0,
        2453,
        2455,
        3,
        340,
        170,
        0,
        2454,
        2451,
        1,
        0,
        0,
        0,
        2455,
        2458,
        1,
        0,
        0,
        0,
        2456,
        2454,
        1,
        0,
        0,
        0,
        2456,
        2457,
        1,
        0,
        0,
        0,
        2457,
        339,
        1,
        0,
        0,
        0,
        2458,
        2456,
        1,
        0,
        0,
        0,
        2459,
        2460,
        6,
        170,
        -1,
        0,
        2460,
        2461,
        3,
        342,
        171,
        0,
        2461,
        2467,
        1,
        0,
        0,
        0,
        2462,
        2463,
        10,
        2,
        0,
        0,
        2463,
        2464,
        5,
        91,
        0,
        0,
        2464,
        2466,
        3,
        342,
        171,
        0,
        2465,
        2462,
        1,
        0,
        0,
        0,
        2466,
        2469,
        1,
        0,
        0,
        0,
        2467,
        2465,
        1,
        0,
        0,
        0,
        2467,
        2468,
        1,
        0,
        0,
        0,
        2468,
        341,
        1,
        0,
        0,
        0,
        2469,
        2467,
        1,
        0,
        0,
        0,
        2470,
        2471,
        6,
        171,
        -1,
        0,
        2471,
        2472,
        3,
        344,
        172,
        0,
        2472,
        2478,
        1,
        0,
        0,
        0,
        2473,
        2474,
        10,
        2,
        0,
        0,
        2474,
        2475,
        5,
        92,
        0,
        0,
        2475,
        2477,
        3,
        344,
        172,
        0,
        2476,
        2473,
        1,
        0,
        0,
        0,
        2477,
        2480,
        1,
        0,
        0,
        0,
        2478,
        2476,
        1,
        0,
        0,
        0,
        2478,
        2479,
        1,
        0,
        0,
        0,
        2479,
        343,
        1,
        0,
        0,
        0,
        2480,
        2478,
        1,
        0,
        0,
        0,
        2481,
        2482,
        6,
        172,
        -1,
        0,
        2482,
        2483,
        3,
        346,
        173,
        0,
        2483,
        2492,
        1,
        0,
        0,
        0,
        2484,
        2485,
        10,
        3,
        0,
        0,
        2485,
        2486,
        5,
        93,
        0,
        0,
        2486,
        2491,
        3,
        346,
        173,
        0,
        2487,
        2488,
        10,
        2,
        0,
        0,
        2488,
        2489,
        5,
        94,
        0,
        0,
        2489,
        2491,
        3,
        346,
        173,
        0,
        2490,
        2484,
        1,
        0,
        0,
        0,
        2490,
        2487,
        1,
        0,
        0,
        0,
        2491,
        2494,
        1,
        0,
        0,
        0,
        2492,
        2490,
        1,
        0,
        0,
        0,
        2492,
        2493,
        1,
        0,
        0,
        0,
        2493,
        345,
        1,
        0,
        0,
        0,
        2494,
        2492,
        1,
        0,
        0,
        0,
        2495,
        2496,
        6,
        173,
        -1,
        0,
        2496,
        2497,
        3,
        348,
        174,
        0,
        2497,
        2506,
        1,
        0,
        0,
        0,
        2498,
        2499,
        10,
        3,
        0,
        0,
        2499,
        2500,
        5,
        95,
        0,
        0,
        2500,
        2505,
        3,
        348,
        174,
        0,
        2501,
        2502,
        10,
        2,
        0,
        0,
        2502,
        2503,
        5,
        96,
        0,
        0,
        2503,
        2505,
        3,
        348,
        174,
        0,
        2504,
        2498,
        1,
        0,
        0,
        0,
        2504,
        2501,
        1,
        0,
        0,
        0,
        2505,
        2508,
        1,
        0,
        0,
        0,
        2506,
        2504,
        1,
        0,
        0,
        0,
        2506,
        2507,
        1,
        0,
        0,
        0,
        2507,
        347,
        1,
        0,
        0,
        0,
        2508,
        2506,
        1,
        0,
        0,
        0,
        2509,
        2510,
        6,
        174,
        -1,
        0,
        2510,
        2511,
        3,
        350,
        175,
        0,
        2511,
        2529,
        1,
        0,
        0,
        0,
        2512,
        2513,
        10,
        6,
        0,
        0,
        2513,
        2514,
        5,
        80,
        0,
        0,
        2514,
        2528,
        3,
        350,
        175,
        0,
        2515,
        2516,
        10,
        5,
        0,
        0,
        2516,
        2517,
        5,
        97,
        0,
        0,
        2517,
        2528,
        3,
        350,
        175,
        0,
        2518,
        2519,
        10,
        4,
        0,
        0,
        2519,
        2520,
        5,
        99,
        0,
        0,
        2520,
        2528,
        3,
        350,
        175,
        0,
        2521,
        2522,
        10,
        3,
        0,
        0,
        2522,
        2523,
        5,
        98,
        0,
        0,
        2523,
        2528,
        3,
        350,
        175,
        0,
        2524,
        2525,
        10,
        2,
        0,
        0,
        2525,
        2526,
        5,
        110,
        0,
        0,
        2526,
        2528,
        3,
        350,
        175,
        0,
        2527,
        2512,
        1,
        0,
        0,
        0,
        2527,
        2515,
        1,
        0,
        0,
        0,
        2527,
        2518,
        1,
        0,
        0,
        0,
        2527,
        2521,
        1,
        0,
        0,
        0,
        2527,
        2524,
        1,
        0,
        0,
        0,
        2528,
        2531,
        1,
        0,
        0,
        0,
        2529,
        2527,
        1,
        0,
        0,
        0,
        2529,
        2530,
        1,
        0,
        0,
        0,
        2530,
        349,
        1,
        0,
        0,
        0,
        2531,
        2529,
        1,
        0,
        0,
        0,
        2532,
        2533,
        5,
        95,
        0,
        0,
        2533,
        2540,
        3,
        350,
        175,
        0,
        2534,
        2535,
        5,
        96,
        0,
        0,
        2535,
        2540,
        3,
        350,
        175,
        0,
        2536,
        2537,
        5,
        100,
        0,
        0,
        2537,
        2540,
        3,
        350,
        175,
        0,
        2538,
        2540,
        3,
        352,
        176,
        0,
        2539,
        2532,
        1,
        0,
        0,
        0,
        2539,
        2534,
        1,
        0,
        0,
        0,
        2539,
        2536,
        1,
        0,
        0,
        0,
        2539,
        2538,
        1,
        0,
        0,
        0,
        2540,
        351,
        1,
        0,
        0,
        0,
        2541,
        2542,
        3,
        354,
        177,
        0,
        2542,
        2543,
        5,
        86,
        0,
        0,
        2543,
        2544,
        3,
        350,
        175,
        0,
        2544,
        2547,
        1,
        0,
        0,
        0,
        2545,
        2547,
        3,
        354,
        177,
        0,
        2546,
        2541,
        1,
        0,
        0,
        0,
        2546,
        2545,
        1,
        0,
        0,
        0,
        2547,
        353,
        1,
        0,
        0,
        0,
        2548,
        2549,
        5,
        16,
        0,
        0,
        2549,
        2552,
        3,
        356,
        178,
        0,
        2550,
        2552,
        3,
        356,
        178,
        0,
        2551,
        2548,
        1,
        0,
        0,
        0,
        2551,
        2550,
        1,
        0,
        0,
        0,
        2552,
        355,
        1,
        0,
        0,
        0,
        2553,
        2554,
        6,
        178,
        -1,
        0,
        2554,
        2555,
        3,
        362,
        181,
        0,
        2555,
        2574,
        1,
        0,
        0,
        0,
        2556,
        2557,
        10,
        5,
        0,
        0,
        2557,
        2558,
        5,
        79,
        0,
        0,
        2558,
        2573,
        3,
        490,
        245,
        0,
        2559,
        2560,
        10,
        4,
        0,
        0,
        2560,
        2573,
        3,
        444,
        222,
        0,
        2561,
        2562,
        10,
        3,
        0,
        0,
        2562,
        2564,
        5,
        81,
        0,
        0,
        2563,
        2565,
        3,
        448,
        224,
        0,
        2564,
        2563,
        1,
        0,
        0,
        0,
        2564,
        2565,
        1,
        0,
        0,
        0,
        2565,
        2566,
        1,
        0,
        0,
        0,
        2566,
        2573,
        5,
        82,
        0,
        0,
        2567,
        2568,
        10,
        2,
        0,
        0,
        2568,
        2569,
        5,
        88,
        0,
        0,
        2569,
        2570,
        3,
        358,
        179,
        0,
        2570,
        2571,
        5,
        89,
        0,
        0,
        2571,
        2573,
        1,
        0,
        0,
        0,
        2572,
        2556,
        1,
        0,
        0,
        0,
        2572,
        2559,
        1,
        0,
        0,
        0,
        2572,
        2561,
        1,
        0,
        0,
        0,
        2572,
        2567,
        1,
        0,
        0,
        0,
        2573,
        2576,
        1,
        0,
        0,
        0,
        2574,
        2572,
        1,
        0,
        0,
        0,
        2574,
        2575,
        1,
        0,
        0,
        0,
        2575,
        357,
        1,
        0,
        0,
        0,
        2576,
        2574,
        1,
        0,
        0,
        0,
        2577,
        2580,
        3,
        360,
        180,
        0,
        2578,
        2580,
        3,
        456,
        228,
        0,
        2579,
        2577,
        1,
        0,
        0,
        0,
        2579,
        2578,
        1,
        0,
        0,
        0,
        2580,
        2588,
        1,
        0,
        0,
        0,
        2581,
        2584,
        5,
        83,
        0,
        0,
        2582,
        2585,
        3,
        360,
        180,
        0,
        2583,
        2585,
        3,
        456,
        228,
        0,
        2584,
        2582,
        1,
        0,
        0,
        0,
        2584,
        2583,
        1,
        0,
        0,
        0,
        2585,
        2587,
        1,
        0,
        0,
        0,
        2586,
        2581,
        1,
        0,
        0,
        0,
        2587,
        2590,
        1,
        0,
        0,
        0,
        2588,
        2586,
        1,
        0,
        0,
        0,
        2588,
        2589,
        1,
        0,
        0,
        0,
        2589,
        2592,
        1,
        0,
        0,
        0,
        2590,
        2588,
        1,
        0,
        0,
        0,
        2591,
        2593,
        5,
        83,
        0,
        0,
        2592,
        2591,
        1,
        0,
        0,
        0,
        2592,
        2593,
        1,
        0,
        0,
        0,
        2593,
        359,
        1,
        0,
        0,
        0,
        2594,
        2596,
        3,
        292,
        146,
        0,
        2595,
        2594,
        1,
        0,
        0,
        0,
        2595,
        2596,
        1,
        0,
        0,
        0,
        2596,
        2597,
        1,
        0,
        0,
        0,
        2597,
        2599,
        5,
        84,
        0,
        0,
        2598,
        2600,
        3,
        292,
        146,
        0,
        2599,
        2598,
        1,
        0,
        0,
        0,
        2599,
        2600,
        1,
        0,
        0,
        0,
        2600,
        2605,
        1,
        0,
        0,
        0,
        2601,
        2603,
        5,
        84,
        0,
        0,
        2602,
        2604,
        3,
        292,
        146,
        0,
        2603,
        2602,
        1,
        0,
        0,
        0,
        2603,
        2604,
        1,
        0,
        0,
        0,
        2604,
        2606,
        1,
        0,
        0,
        0,
        2605,
        2601,
        1,
        0,
        0,
        0,
        2605,
        2606,
        1,
        0,
        0,
        0,
        2606,
        2609,
        1,
        0,
        0,
        0,
        2607,
        2609,
        3,
        306,
        153,
        0,
        2608,
        2595,
        1,
        0,
        0,
        0,
        2608,
        2607,
        1,
        0,
        0,
        0,
        2609,
        361,
        1,
        0,
        0,
        0,
        2610,
        2634,
        3,
        50,
        25,
        0,
        2611,
        2634,
        3,
        490,
        245,
        0,
        2612,
        2634,
        5,
        44,
        0,
        0,
        2613,
        2634,
        5,
        26,
        0,
        0,
        2614,
        2634,
        5,
        37,
        0,
        0,
        2615,
        2634,
        3,
        420,
        210,
        0,
        2616,
        2634,
        5,
        8,
        0,
        0,
        2617,
        2621,
        3,
        424,
        212,
        0,
        2618,
        2621,
        3,
        364,
        182,
        0,
        2619,
        2621,
        3,
        444,
        222,
        0,
        2620,
        2617,
        1,
        0,
        0,
        0,
        2620,
        2618,
        1,
        0,
        0,
        0,
        2620,
        2619,
        1,
        0,
        0,
        0,
        2621,
        2634,
        1,
        0,
        0,
        0,
        2622,
        2625,
        3,
        422,
        211,
        0,
        2623,
        2625,
        3,
        440,
        220,
        0,
        2624,
        2622,
        1,
        0,
        0,
        0,
        2624,
        2623,
        1,
        0,
        0,
        0,
        2625,
        2634,
        1,
        0,
        0,
        0,
        2626,
        2631,
        3,
        428,
        214,
        0,
        2627,
        2631,
        3,
        426,
        213,
        0,
        2628,
        2631,
        3,
        446,
        223,
        0,
        2629,
        2631,
        3,
        442,
        221,
        0,
        2630,
        2626,
        1,
        0,
        0,
        0,
        2630,
        2627,
        1,
        0,
        0,
        0,
        2630,
        2628,
        1,
        0,
        0,
        0,
        2630,
        2629,
        1,
        0,
        0,
        0,
        2631,
        2634,
        1,
        0,
        0,
        0,
        2632,
        2634,
        5,
        77,
        0,
        0,
        2633,
        2610,
        1,
        0,
        0,
        0,
        2633,
        2611,
        1,
        0,
        0,
        0,
        2633,
        2612,
        1,
        0,
        0,
        0,
        2633,
        2613,
        1,
        0,
        0,
        0,
        2633,
        2614,
        1,
        0,
        0,
        0,
        2633,
        2615,
        1,
        0,
        0,
        0,
        2633,
        2616,
        1,
        0,
        0,
        0,
        2633,
        2620,
        1,
        0,
        0,
        0,
        2633,
        2624,
        1,
        0,
        0,
        0,
        2633,
        2630,
        1,
        0,
        0,
        0,
        2633,
        2632,
        1,
        0,
        0,
        0,
        2634,
        363,
        1,
        0,
        0,
        0,
        2635,
        2638,
        5,
        81,
        0,
        0,
        2636,
        2639,
        3,
        294,
        147,
        0,
        2637,
        2639,
        3,
        306,
        153,
        0,
        2638,
        2636,
        1,
        0,
        0,
        0,
        2638,
        2637,
        1,
        0,
        0,
        0,
        2639,
        2640,
        1,
        0,
        0,
        0,
        2640,
        2641,
        5,
        82,
        0,
        0,
        2641,
        365,
        1,
        0,
        0,
        0,
        2642,
        2644,
        5,
        35,
        0,
        0,
        2643,
        2645,
        3,
        368,
        184,
        0,
        2644,
        2643,
        1,
        0,
        0,
        0,
        2644,
        2645,
        1,
        0,
        0,
        0,
        2645,
        2646,
        1,
        0,
        0,
        0,
        2646,
        2647,
        5,
        84,
        0,
        0,
        2647,
        2648,
        3,
        292,
        146,
        0,
        2648,
        367,
        1,
        0,
        0,
        0,
        2649,
        2650,
        3,
        370,
        185,
        0,
        2650,
        369,
        1,
        0,
        0,
        0,
        2651,
        2655,
        3,
        372,
        186,
        0,
        2652,
        2654,
        3,
        380,
        190,
        0,
        2653,
        2652,
        1,
        0,
        0,
        0,
        2654,
        2657,
        1,
        0,
        0,
        0,
        2655,
        2653,
        1,
        0,
        0,
        0,
        2655,
        2656,
        1,
        0,
        0,
        0,
        2656,
        2661,
        1,
        0,
        0,
        0,
        2657,
        2655,
        1,
        0,
        0,
        0,
        2658,
        2660,
        3,
        382,
        191,
        0,
        2659,
        2658,
        1,
        0,
        0,
        0,
        2660,
        2663,
        1,
        0,
        0,
        0,
        2661,
        2659,
        1,
        0,
        0,
        0,
        2661,
        2662,
        1,
        0,
        0,
        0,
        2662,
        2665,
        1,
        0,
        0,
        0,
        2663,
        2661,
        1,
        0,
        0,
        0,
        2664,
        2666,
        3,
        376,
        188,
        0,
        2665,
        2664,
        1,
        0,
        0,
        0,
        2665,
        2666,
        1,
        0,
        0,
        0,
        2666,
        2701,
        1,
        0,
        0,
        0,
        2667,
        2671,
        3,
        374,
        187,
        0,
        2668,
        2670,
        3,
        382,
        191,
        0,
        2669,
        2668,
        1,
        0,
        0,
        0,
        2670,
        2673,
        1,
        0,
        0,
        0,
        2671,
        2669,
        1,
        0,
        0,
        0,
        2671,
        2672,
        1,
        0,
        0,
        0,
        2672,
        2675,
        1,
        0,
        0,
        0,
        2673,
        2671,
        1,
        0,
        0,
        0,
        2674,
        2676,
        3,
        376,
        188,
        0,
        2675,
        2674,
        1,
        0,
        0,
        0,
        2675,
        2676,
        1,
        0,
        0,
        0,
        2676,
        2701,
        1,
        0,
        0,
        0,
        2677,
        2679,
        3,
        380,
        190,
        0,
        2678,
        2677,
        1,
        0,
        0,
        0,
        2679,
        2680,
        1,
        0,
        0,
        0,
        2680,
        2678,
        1,
        0,
        0,
        0,
        2680,
        2681,
        1,
        0,
        0,
        0,
        2681,
        2685,
        1,
        0,
        0,
        0,
        2682,
        2684,
        3,
        382,
        191,
        0,
        2683,
        2682,
        1,
        0,
        0,
        0,
        2684,
        2687,
        1,
        0,
        0,
        0,
        2685,
        2683,
        1,
        0,
        0,
        0,
        2685,
        2686,
        1,
        0,
        0,
        0,
        2686,
        2689,
        1,
        0,
        0,
        0,
        2687,
        2685,
        1,
        0,
        0,
        0,
        2688,
        2690,
        3,
        376,
        188,
        0,
        2689,
        2688,
        1,
        0,
        0,
        0,
        2689,
        2690,
        1,
        0,
        0,
        0,
        2690,
        2701,
        1,
        0,
        0,
        0,
        2691,
        2693,
        3,
        382,
        191,
        0,
        2692,
        2691,
        1,
        0,
        0,
        0,
        2693,
        2694,
        1,
        0,
        0,
        0,
        2694,
        2692,
        1,
        0,
        0,
        0,
        2694,
        2695,
        1,
        0,
        0,
        0,
        2695,
        2697,
        1,
        0,
        0,
        0,
        2696,
        2698,
        3,
        376,
        188,
        0,
        2697,
        2696,
        1,
        0,
        0,
        0,
        2697,
        2698,
        1,
        0,
        0,
        0,
        2698,
        2701,
        1,
        0,
        0,
        0,
        2699,
        2701,
        3,
        376,
        188,
        0,
        2700,
        2651,
        1,
        0,
        0,
        0,
        2700,
        2667,
        1,
        0,
        0,
        0,
        2700,
        2678,
        1,
        0,
        0,
        0,
        2700,
        2692,
        1,
        0,
        0,
        0,
        2700,
        2699,
        1,
        0,
        0,
        0,
        2701,
        371,
        1,
        0,
        0,
        0,
        2702,
        2704,
        3,
        380,
        190,
        0,
        2703,
        2702,
        1,
        0,
        0,
        0,
        2704,
        2705,
        1,
        0,
        0,
        0,
        2705,
        2703,
        1,
        0,
        0,
        0,
        2705,
        2706,
        1,
        0,
        0,
        0,
        2706,
        2707,
        1,
        0,
        0,
        0,
        2707,
        2709,
        5,
        97,
        0,
        0,
        2708,
        2710,
        5,
        83,
        0,
        0,
        2709,
        2708,
        1,
        0,
        0,
        0,
        2709,
        2710,
        1,
        0,
        0,
        0,
        2710,
        373,
        1,
        0,
        0,
        0,
        2711,
        2713,
        3,
        380,
        190,
        0,
        2712,
        2711,
        1,
        0,
        0,
        0,
        2713,
        2716,
        1,
        0,
        0,
        0,
        2714,
        2712,
        1,
        0,
        0,
        0,
        2714,
        2715,
        1,
        0,
        0,
        0,
        2715,
        2718,
        1,
        0,
        0,
        0,
        2716,
        2714,
        1,
        0,
        0,
        0,
        2717,
        2719,
        3,
        382,
        191,
        0,
        2718,
        2717,
        1,
        0,
        0,
        0,
        2719,
        2720,
        1,
        0,
        0,
        0,
        2720,
        2718,
        1,
        0,
        0,
        0,
        2720,
        2721,
        1,
        0,
        0,
        0,
        2721,
        2722,
        1,
        0,
        0,
        0,
        2722,
        2724,
        5,
        97,
        0,
        0,
        2723,
        2725,
        5,
        83,
        0,
        0,
        2724,
        2723,
        1,
        0,
        0,
        0,
        2724,
        2725,
        1,
        0,
        0,
        0,
        2725,
        375,
        1,
        0,
        0,
        0,
        2726,
        2727,
        5,
        80,
        0,
        0,
        2727,
        2731,
        3,
        380,
        190,
        0,
        2728,
        2730,
        3,
        384,
        192,
        0,
        2729,
        2728,
        1,
        0,
        0,
        0,
        2730,
        2733,
        1,
        0,
        0,
        0,
        2731,
        2729,
        1,
        0,
        0,
        0,
        2731,
        2732,
        1,
        0,
        0,
        0,
        2732,
        2735,
        1,
        0,
        0,
        0,
        2733,
        2731,
        1,
        0,
        0,
        0,
        2734,
        2736,
        3,
        378,
        189,
        0,
        2735,
        2734,
        1,
        0,
        0,
        0,
        2735,
        2736,
        1,
        0,
        0,
        0,
        2736,
        2749,
        1,
        0,
        0,
        0,
        2737,
        2738,
        5,
        80,
        0,
        0,
        2738,
        2740,
        5,
        83,
        0,
        0,
        2739,
        2741,
        3,
        384,
        192,
        0,
        2740,
        2739,
        1,
        0,
        0,
        0,
        2741,
        2742,
        1,
        0,
        0,
        0,
        2742,
        2740,
        1,
        0,
        0,
        0,
        2742,
        2743,
        1,
        0,
        0,
        0,
        2743,
        2745,
        1,
        0,
        0,
        0,
        2744,
        2746,
        3,
        378,
        189,
        0,
        2745,
        2744,
        1,
        0,
        0,
        0,
        2745,
        2746,
        1,
        0,
        0,
        0,
        2746,
        2749,
        1,
        0,
        0,
        0,
        2747,
        2749,
        3,
        378,
        189,
        0,
        2748,
        2726,
        1,
        0,
        0,
        0,
        2748,
        2737,
        1,
        0,
        0,
        0,
        2748,
        2747,
        1,
        0,
        0,
        0,
        2749,
        377,
        1,
        0,
        0,
        0,
        2750,
        2751,
        5,
        86,
        0,
        0,
        2751,
        2752,
        3,
        380,
        190,
        0,
        2752,
        379,
        1,
        0,
        0,
        0,
        2753,
        2755,
        3,
        386,
        193,
        0,
        2754,
        2756,
        5,
        83,
        0,
        0,
        2755,
        2754,
        1,
        0,
        0,
        0,
        2755,
        2756,
        1,
        0,
        0,
        0,
        2756,
        381,
        1,
        0,
        0,
        0,
        2757,
        2758,
        3,
        386,
        193,
        0,
        2758,
        2760,
        3,
        184,
        92,
        0,
        2759,
        2761,
        5,
        83,
        0,
        0,
        2760,
        2759,
        1,
        0,
        0,
        0,
        2760,
        2761,
        1,
        0,
        0,
        0,
        2761,
        383,
        1,
        0,
        0,
        0,
        2762,
        2764,
        3,
        386,
        193,
        0,
        2763,
        2765,
        3,
        184,
        92,
        0,
        2764,
        2763,
        1,
        0,
        0,
        0,
        2764,
        2765,
        1,
        0,
        0,
        0,
        2765,
        2767,
        1,
        0,
        0,
        0,
        2766,
        2768,
        5,
        83,
        0,
        0,
        2767,
        2766,
        1,
        0,
        0,
        0,
        2767,
        2768,
        1,
        0,
        0,
        0,
        2768,
        385,
        1,
        0,
        0,
        0,
        2769,
        2770,
        3,
        490,
        245,
        0,
        2770,
        387,
        1,
        0,
        0,
        0,
        2771,
        2774,
        3,
        408,
        204,
        0,
        2772,
        2774,
        3,
        396,
        198,
        0,
        2773,
        2771,
        1,
        0,
        0,
        0,
        2773,
        2772,
        1,
        0,
        0,
        0,
        2774,
        389,
        1,
        0,
        0,
        0,
        2775,
        2778,
        3,
        408,
        204,
        0,
        2776,
        2778,
        3,
        398,
        199,
        0,
        2777,
        2775,
        1,
        0,
        0,
        0,
        2777,
        2776,
        1,
        0,
        0,
        0,
        2778,
        391,
        1,
        0,
        0,
        0,
        2779,
        2782,
        3,
        408,
        204,
        0,
        2780,
        2782,
        3,
        402,
        201,
        0,
        2781,
        2779,
        1,
        0,
        0,
        0,
        2781,
        2780,
        1,
        0,
        0,
        0,
        2782,
        393,
        1,
        0,
        0,
        0,
        2783,
        2786,
        3,
        408,
        204,
        0,
        2784,
        2786,
        3,
        404,
        202,
        0,
        2785,
        2783,
        1,
        0,
        0,
        0,
        2785,
        2784,
        1,
        0,
        0,
        0,
        2786,
        395,
        1,
        0,
        0,
        0,
        2787,
        2791,
        3,
        406,
        203,
        0,
        2788,
        2791,
        5,
        66,
        0,
        0,
        2789,
        2791,
        5,
        64,
        0,
        0,
        2790,
        2787,
        1,
        0,
        0,
        0,
        2790,
        2788,
        1,
        0,
        0,
        0,
        2790,
        2789,
        1,
        0,
        0,
        0,
        2791,
        397,
        1,
        0,
        0,
        0,
        2792,
        2796,
        3,
        406,
        203,
        0,
        2793,
        2796,
        5,
        65,
        0,
        0,
        2794,
        2796,
        5,
        63,
        0,
        0,
        2795,
        2792,
        1,
        0,
        0,
        0,
        2795,
        2793,
        1,
        0,
        0,
        0,
        2795,
        2794,
        1,
        0,
        0,
        0,
        2796,
        399,
        1,
        0,
        0,
        0,
        2797,
        2801,
        3,
        406,
        203,
        0,
        2798,
        2801,
        5,
        66,
        0,
        0,
        2799,
        2801,
        5,
        65,
        0,
        0,
        2800,
        2797,
        1,
        0,
        0,
        0,
        2800,
        2798,
        1,
        0,
        0,
        0,
        2800,
        2799,
        1,
        0,
        0,
        0,
        2801,
        401,
        1,
        0,
        0,
        0,
        2802,
        2806,
        3,
        406,
        203,
        0,
        2803,
        2806,
        5,
        127,
        0,
        0,
        2804,
        2806,
        5,
        66,
        0,
        0,
        2805,
        2802,
        1,
        0,
        0,
        0,
        2805,
        2803,
        1,
        0,
        0,
        0,
        2805,
        2804,
        1,
        0,
        0,
        0,
        2806,
        403,
        1,
        0,
        0,
        0,
        2807,
        2811,
        3,
        406,
        203,
        0,
        2808,
        2811,
        5,
        127,
        0,
        0,
        2809,
        2811,
        5,
        65,
        0,
        0,
        2810,
        2807,
        1,
        0,
        0,
        0,
        2810,
        2808,
        1,
        0,
        0,
        0,
        2810,
        2809,
        1,
        0,
        0,
        0,
        2811,
        405,
        1,
        0,
        0,
        0,
        2812,
        2919,
        5,
        8,
        0,
        0,
        2813,
        2919,
        5,
        10,
        0,
        0,
        2814,
        2919,
        5,
        11,
        0,
        0,
        2815,
        2919,
        5,
        12,
        0,
        0,
        2816,
        2919,
        5,
        13,
        0,
        0,
        2817,
        2919,
        5,
        14,
        0,
        0,
        2818,
        2919,
        5,
        15,
        0,
        0,
        2819,
        2919,
        5,
        16,
        0,
        0,
        2820,
        2919,
        5,
        17,
        0,
        0,
        2821,
        2919,
        5,
        18,
        0,
        0,
        2822,
        2919,
        5,
        19,
        0,
        0,
        2823,
        2919,
        5,
        20,
        0,
        0,
        2824,
        2919,
        5,
        21,
        0,
        0,
        2825,
        2919,
        5,
        22,
        0,
        0,
        2826,
        2919,
        5,
        23,
        0,
        0,
        2827,
        2919,
        5,
        24,
        0,
        0,
        2828,
        2919,
        5,
        25,
        0,
        0,
        2829,
        2919,
        5,
        26,
        0,
        0,
        2830,
        2919,
        5,
        27,
        0,
        0,
        2831,
        2919,
        5,
        28,
        0,
        0,
        2832,
        2919,
        5,
        29,
        0,
        0,
        2833,
        2919,
        5,
        30,
        0,
        0,
        2834,
        2919,
        5,
        31,
        0,
        0,
        2835,
        2919,
        5,
        32,
        0,
        0,
        2836,
        2919,
        5,
        33,
        0,
        0,
        2837,
        2919,
        5,
        34,
        0,
        0,
        2838,
        2919,
        5,
        35,
        0,
        0,
        2839,
        2919,
        5,
        36,
        0,
        0,
        2840,
        2919,
        5,
        37,
        0,
        0,
        2841,
        2919,
        5,
        38,
        0,
        0,
        2842,
        2919,
        5,
        39,
        0,
        0,
        2843,
        2919,
        5,
        40,
        0,
        0,
        2844,
        2919,
        5,
        41,
        0,
        0,
        2845,
        2919,
        5,
        42,
        0,
        0,
        2846,
        2919,
        5,
        43,
        0,
        0,
        2847,
        2919,
        5,
        44,
        0,
        0,
        2848,
        2919,
        5,
        45,
        0,
        0,
        2849,
        2919,
        5,
        46,
        0,
        0,
        2850,
        2919,
        5,
        47,
        0,
        0,
        2851,
        2919,
        5,
        48,
        0,
        0,
        2852,
        2919,
        5,
        49,
        0,
        0,
        2853,
        2919,
        5,
        50,
        0,
        0,
        2854,
        2919,
        5,
        51,
        0,
        0,
        2855,
        2919,
        5,
        52,
        0,
        0,
        2856,
        2919,
        5,
        53,
        0,
        0,
        2857,
        2919,
        5,
        54,
        0,
        0,
        2858,
        2919,
        5,
        55,
        0,
        0,
        2859,
        2919,
        5,
        56,
        0,
        0,
        2860,
        2919,
        5,
        57,
        0,
        0,
        2861,
        2919,
        5,
        61,
        0,
        0,
        2862,
        2919,
        5,
        74,
        0,
        0,
        2863,
        2919,
        5,
        75,
        0,
        0,
        2864,
        2919,
        5,
        79,
        0,
        0,
        2865,
        2919,
        5,
        78,
        0,
        0,
        2866,
        2919,
        5,
        77,
        0,
        0,
        2867,
        2919,
        5,
        80,
        0,
        0,
        2868,
        2919,
        5,
        81,
        0,
        0,
        2869,
        2919,
        5,
        82,
        0,
        0,
        2870,
        2919,
        5,
        83,
        0,
        0,
        2871,
        2919,
        5,
        84,
        0,
        0,
        2872,
        2919,
        5,
        85,
        0,
        0,
        2873,
        2919,
        5,
        86,
        0,
        0,
        2874,
        2919,
        5,
        87,
        0,
        0,
        2875,
        2919,
        5,
        88,
        0,
        0,
        2876,
        2919,
        5,
        89,
        0,
        0,
        2877,
        2919,
        5,
        90,
        0,
        0,
        2878,
        2919,
        5,
        91,
        0,
        0,
        2879,
        2919,
        5,
        92,
        0,
        0,
        2880,
        2919,
        5,
        93,
        0,
        0,
        2881,
        2919,
        5,
        94,
        0,
        0,
        2882,
        2919,
        5,
        95,
        0,
        0,
        2883,
        2919,
        5,
        96,
        0,
        0,
        2884,
        2919,
        5,
        97,
        0,
        0,
        2885,
        2919,
        5,
        98,
        0,
        0,
        2886,
        2919,
        5,
        99,
        0,
        0,
        2887,
        2919,
        5,
        100,
        0,
        0,
        2888,
        2889,
        5,
        101,
        0,
        0,
        2889,
        2919,
        5,
        101,
        0,
        0,
        2890,
        2891,
        5,
        102,
        0,
        0,
        2891,
        2919,
        5,
        102,
        0,
        0,
        2892,
        2919,
        5,
        103,
        0,
        0,
        2893,
        2919,
        5,
        104,
        0,
        0,
        2894,
        2919,
        5,
        105,
        0,
        0,
        2895,
        2919,
        5,
        106,
        0,
        0,
        2896,
        2919,
        5,
        107,
        0,
        0,
        2897,
        2919,
        5,
        108,
        0,
        0,
        2898,
        2919,
        5,
        109,
        0,
        0,
        2899,
        2919,
        5,
        110,
        0,
        0,
        2900,
        2919,
        5,
        111,
        0,
        0,
        2901,
        2919,
        5,
        112,
        0,
        0,
        2902,
        2919,
        5,
        113,
        0,
        0,
        2903,
        2919,
        5,
        114,
        0,
        0,
        2904,
        2919,
        5,
        115,
        0,
        0,
        2905,
        2919,
        5,
        116,
        0,
        0,
        2906,
        2919,
        5,
        117,
        0,
        0,
        2907,
        2919,
        5,
        118,
        0,
        0,
        2908,
        2919,
        5,
        119,
        0,
        0,
        2909,
        2919,
        5,
        120,
        0,
        0,
        2910,
        2919,
        5,
        121,
        0,
        0,
        2911,
        2919,
        5,
        122,
        0,
        0,
        2912,
        2919,
        5,
        123,
        0,
        0,
        2913,
        2919,
        5,
        124,
        0,
        0,
        2914,
        2919,
        5,
        125,
        0,
        0,
        2915,
        2919,
        5,
        126,
        0,
        0,
        2916,
        2919,
        5,
        128,
        0,
        0,
        2917,
        2919,
        5,
        131,
        0,
        0,
        2918,
        2812,
        1,
        0,
        0,
        0,
        2918,
        2813,
        1,
        0,
        0,
        0,
        2918,
        2814,
        1,
        0,
        0,
        0,
        2918,
        2815,
        1,
        0,
        0,
        0,
        2918,
        2816,
        1,
        0,
        0,
        0,
        2918,
        2817,
        1,
        0,
        0,
        0,
        2918,
        2818,
        1,
        0,
        0,
        0,
        2918,
        2819,
        1,
        0,
        0,
        0,
        2918,
        2820,
        1,
        0,
        0,
        0,
        2918,
        2821,
        1,
        0,
        0,
        0,
        2918,
        2822,
        1,
        0,
        0,
        0,
        2918,
        2823,
        1,
        0,
        0,
        0,
        2918,
        2824,
        1,
        0,
        0,
        0,
        2918,
        2825,
        1,
        0,
        0,
        0,
        2918,
        2826,
        1,
        0,
        0,
        0,
        2918,
        2827,
        1,
        0,
        0,
        0,
        2918,
        2828,
        1,
        0,
        0,
        0,
        2918,
        2829,
        1,
        0,
        0,
        0,
        2918,
        2830,
        1,
        0,
        0,
        0,
        2918,
        2831,
        1,
        0,
        0,
        0,
        2918,
        2832,
        1,
        0,
        0,
        0,
        2918,
        2833,
        1,
        0,
        0,
        0,
        2918,
        2834,
        1,
        0,
        0,
        0,
        2918,
        2835,
        1,
        0,
        0,
        0,
        2918,
        2836,
        1,
        0,
        0,
        0,
        2918,
        2837,
        1,
        0,
        0,
        0,
        2918,
        2838,
        1,
        0,
        0,
        0,
        2918,
        2839,
        1,
        0,
        0,
        0,
        2918,
        2840,
        1,
        0,
        0,
        0,
        2918,
        2841,
        1,
        0,
        0,
        0,
        2918,
        2842,
        1,
        0,
        0,
        0,
        2918,
        2843,
        1,
        0,
        0,
        0,
        2918,
        2844,
        1,
        0,
        0,
        0,
        2918,
        2845,
        1,
        0,
        0,
        0,
        2918,
        2846,
        1,
        0,
        0,
        0,
        2918,
        2847,
        1,
        0,
        0,
        0,
        2918,
        2848,
        1,
        0,
        0,
        0,
        2918,
        2849,
        1,
        0,
        0,
        0,
        2918,
        2850,
        1,
        0,
        0,
        0,
        2918,
        2851,
        1,
        0,
        0,
        0,
        2918,
        2852,
        1,
        0,
        0,
        0,
        2918,
        2853,
        1,
        0,
        0,
        0,
        2918,
        2854,
        1,
        0,
        0,
        0,
        2918,
        2855,
        1,
        0,
        0,
        0,
        2918,
        2856,
        1,
        0,
        0,
        0,
        2918,
        2857,
        1,
        0,
        0,
        0,
        2918,
        2858,
        1,
        0,
        0,
        0,
        2918,
        2859,
        1,
        0,
        0,
        0,
        2918,
        2860,
        1,
        0,
        0,
        0,
        2918,
        2861,
        1,
        0,
        0,
        0,
        2918,
        2862,
        1,
        0,
        0,
        0,
        2918,
        2863,
        1,
        0,
        0,
        0,
        2918,
        2864,
        1,
        0,
        0,
        0,
        2918,
        2865,
        1,
        0,
        0,
        0,
        2918,
        2866,
        1,
        0,
        0,
        0,
        2918,
        2867,
        1,
        0,
        0,
        0,
        2918,
        2868,
        1,
        0,
        0,
        0,
        2918,
        2869,
        1,
        0,
        0,
        0,
        2918,
        2870,
        1,
        0,
        0,
        0,
        2918,
        2871,
        1,
        0,
        0,
        0,
        2918,
        2872,
        1,
        0,
        0,
        0,
        2918,
        2873,
        1,
        0,
        0,
        0,
        2918,
        2874,
        1,
        0,
        0,
        0,
        2918,
        2875,
        1,
        0,
        0,
        0,
        2918,
        2876,
        1,
        0,
        0,
        0,
        2918,
        2877,
        1,
        0,
        0,
        0,
        2918,
        2878,
        1,
        0,
        0,
        0,
        2918,
        2879,
        1,
        0,
        0,
        0,
        2918,
        2880,
        1,
        0,
        0,
        0,
        2918,
        2881,
        1,
        0,
        0,
        0,
        2918,
        2882,
        1,
        0,
        0,
        0,
        2918,
        2883,
        1,
        0,
        0,
        0,
        2918,
        2884,
        1,
        0,
        0,
        0,
        2918,
        2885,
        1,
        0,
        0,
        0,
        2918,
        2886,
        1,
        0,
        0,
        0,
        2918,
        2887,
        1,
        0,
        0,
        0,
        2918,
        2888,
        1,
        0,
        0,
        0,
        2918,
        2890,
        1,
        0,
        0,
        0,
        2918,
        2892,
        1,
        0,
        0,
        0,
        2918,
        2893,
        1,
        0,
        0,
        0,
        2918,
        2894,
        1,
        0,
        0,
        0,
        2918,
        2895,
        1,
        0,
        0,
        0,
        2918,
        2896,
        1,
        0,
        0,
        0,
        2918,
        2897,
        1,
        0,
        0,
        0,
        2918,
        2898,
        1,
        0,
        0,
        0,
        2918,
        2899,
        1,
        0,
        0,
        0,
        2918,
        2900,
        1,
        0,
        0,
        0,
        2918,
        2901,
        1,
        0,
        0,
        0,
        2918,
        2902,
        1,
        0,
        0,
        0,
        2918,
        2903,
        1,
        0,
        0,
        0,
        2918,
        2904,
        1,
        0,
        0,
        0,
        2918,
        2905,
        1,
        0,
        0,
        0,
        2918,
        2906,
        1,
        0,
        0,
        0,
        2918,
        2907,
        1,
        0,
        0,
        0,
        2918,
        2908,
        1,
        0,
        0,
        0,
        2918,
        2909,
        1,
        0,
        0,
        0,
        2918,
        2910,
        1,
        0,
        0,
        0,
        2918,
        2911,
        1,
        0,
        0,
        0,
        2918,
        2912,
        1,
        0,
        0,
        0,
        2918,
        2913,
        1,
        0,
        0,
        0,
        2918,
        2914,
        1,
        0,
        0,
        0,
        2918,
        2915,
        1,
        0,
        0,
        0,
        2918,
        2916,
        1,
        0,
        0,
        0,
        2918,
        2917,
        1,
        0,
        0,
        0,
        2919,
        2920,
        1,
        0,
        0,
        0,
        2920,
        2918,
        1,
        0,
        0,
        0,
        2920,
        2921,
        1,
        0,
        0,
        0,
        2921,
        407,
        1,
        0,
        0,
        0,
        2922,
        2925,
        5,
        101,
        0,
        0,
        2923,
        2926,
        3,
        294,
        147,
        0,
        2924,
        2926,
        3,
        296,
        148,
        0,
        2925,
        2923,
        1,
        0,
        0,
        0,
        2925,
        2924,
        1,
        0,
        0,
        0,
        2926,
        2928,
        1,
        0,
        0,
        0,
        2927,
        2929,
        5,
        87,
        0,
        0,
        2928,
        2927,
        1,
        0,
        0,
        0,
        2928,
        2929,
        1,
        0,
        0,
        0,
        2929,
        2931,
        1,
        0,
        0,
        0,
        2930,
        2932,
        3,
        410,
        205,
        0,
        2931,
        2930,
        1,
        0,
        0,
        0,
        2931,
        2932,
        1,
        0,
        0,
        0,
        2932,
        2934,
        1,
        0,
        0,
        0,
        2933,
        2935,
        3,
        412,
        206,
        0,
        2934,
        2933,
        1,
        0,
        0,
        0,
        2934,
        2935,
        1,
        0,
        0,
        0,
        2935,
        2936,
        1,
        0,
        0,
        0,
        2936,
        2937,
        5,
        102,
        0,
        0,
        2937,
        409,
        1,
        0,
        0,
        0,
        2938,
        2939,
        5,
        126,
        0,
        0,
        2939,
        2940,
        3,
        490,
        245,
        0,
        2940,
        411,
        1,
        0,
        0,
        0,
        2941,
        2945,
        5,
        84,
        0,
        0,
        2942,
        2944,
        3,
        414,
        207,
        0,
        2943,
        2942,
        1,
        0,
        0,
        0,
        2944,
        2947,
        1,
        0,
        0,
        0,
        2945,
        2943,
        1,
        0,
        0,
        0,
        2945,
        2946,
        1,
        0,
        0,
        0,
        2946,
        413,
        1,
        0,
        0,
        0,
        2947,
        2945,
        1,
        0,
        0,
        0,
        2948,
        2951,
        3,
        408,
        204,
        0,
        2949,
        2951,
        3,
        400,
        200,
        0,
        2950,
        2948,
        1,
        0,
        0,
        0,
        2950,
        2949,
        1,
        0,
        0,
        0,
        2951,
        415,
        1,
        0,
        0,
        0,
        2952,
        2956,
        5,
        3,
        0,
        0,
        2953,
        2955,
        3,
        388,
        194,
        0,
        2954,
        2953,
        1,
        0,
        0,
        0,
        2955,
        2958,
        1,
        0,
        0,
        0,
        2956,
        2954,
        1,
        0,
        0,
        0,
        2956,
        2957,
        1,
        0,
        0,
        0,
        2957,
        2959,
        1,
        0,
        0,
        0,
        2958,
        2956,
        1,
        0,
        0,
        0,
        2959,
        2985,
        5,
        65,
        0,
        0,
        2960,
        2964,
        5,
        4,
        0,
        0,
        2961,
        2963,
        3,
        390,
        195,
        0,
        2962,
        2961,
        1,
        0,
        0,
        0,
        2963,
        2966,
        1,
        0,
        0,
        0,
        2964,
        2962,
        1,
        0,
        0,
        0,
        2964,
        2965,
        1,
        0,
        0,
        0,
        2965,
        2967,
        1,
        0,
        0,
        0,
        2966,
        2964,
        1,
        0,
        0,
        0,
        2967,
        2985,
        5,
        66,
        0,
        0,
        2968,
        2972,
        5,
        5,
        0,
        0,
        2969,
        2971,
        3,
        392,
        196,
        0,
        2970,
        2969,
        1,
        0,
        0,
        0,
        2971,
        2974,
        1,
        0,
        0,
        0,
        2972,
        2970,
        1,
        0,
        0,
        0,
        2972,
        2973,
        1,
        0,
        0,
        0,
        2973,
        2975,
        1,
        0,
        0,
        0,
        2974,
        2972,
        1,
        0,
        0,
        0,
        2975,
        2985,
        5,
        63,
        0,
        0,
        2976,
        2980,
        5,
        6,
        0,
        0,
        2977,
        2979,
        3,
        394,
        197,
        0,
        2978,
        2977,
        1,
        0,
        0,
        0,
        2979,
        2982,
        1,
        0,
        0,
        0,
        2980,
        2978,
        1,
        0,
        0,
        0,
        2980,
        2981,
        1,
        0,
        0,
        0,
        2981,
        2983,
        1,
        0,
        0,
        0,
        2982,
        2980,
        1,
        0,
        0,
        0,
        2983,
        2985,
        5,
        64,
        0,
        0,
        2984,
        2952,
        1,
        0,
        0,
        0,
        2984,
        2960,
        1,
        0,
        0,
        0,
        2984,
        2968,
        1,
        0,
        0,
        0,
        2984,
        2976,
        1,
        0,
        0,
        0,
        2985,
        417,
        1,
        0,
        0,
        0,
        2986,
        2987,
        5,
        7,
        0,
        0,
        2987,
        419,
        1,
        0,
        0,
        0,
        2988,
        2991,
        3,
        416,
        208,
        0,
        2989,
        2991,
        3,
        418,
        209,
        0,
        2990,
        2988,
        1,
        0,
        0,
        0,
        2990,
        2989,
        1,
        0,
        0,
        0,
        2991,
        2992,
        1,
        0,
        0,
        0,
        2992,
        2990,
        1,
        0,
        0,
        0,
        2992,
        2993,
        1,
        0,
        0,
        0,
        2993,
        421,
        1,
        0,
        0,
        0,
        2994,
        2996,
        5,
        88,
        0,
        0,
        2995,
        2997,
        3,
        300,
        150,
        0,
        2996,
        2995,
        1,
        0,
        0,
        0,
        2996,
        2997,
        1,
        0,
        0,
        0,
        2997,
        2998,
        1,
        0,
        0,
        0,
        2998,
        2999,
        5,
        89,
        0,
        0,
        2999,
        423,
        1,
        0,
        0,
        0,
        3000,
        3005,
        5,
        81,
        0,
        0,
        3001,
        3002,
        3,
        302,
        151,
        0,
        3002,
        3003,
        5,
        83,
        0,
        0,
        3003,
        3004,
        3,
        300,
        150,
        0,
        3004,
        3006,
        1,
        0,
        0,
        0,
        3005,
        3001,
        1,
        0,
        0,
        0,
        3005,
        3006,
        1,
        0,
        0,
        0,
        3006,
        3007,
        1,
        0,
        0,
        0,
        3007,
        3008,
        5,
        82,
        0,
        0,
        3008,
        425,
        1,
        0,
        0,
        0,
        3009,
        3010,
        5,
        101,
        0,
        0,
        3010,
        3011,
        3,
        300,
        150,
        0,
        3011,
        3012,
        5,
        102,
        0,
        0,
        3012,
        427,
        1,
        0,
        0,
        0,
        3013,
        3015,
        5,
        101,
        0,
        0,
        3014,
        3016,
        3,
        430,
        215,
        0,
        3015,
        3014,
        1,
        0,
        0,
        0,
        3015,
        3016,
        1,
        0,
        0,
        0,
        3016,
        3017,
        1,
        0,
        0,
        0,
        3017,
        3018,
        5,
        102,
        0,
        0,
        3018,
        429,
        1,
        0,
        0,
        0,
        3019,
        3024,
        3,
        432,
        216,
        0,
        3020,
        3021,
        5,
        83,
        0,
        0,
        3021,
        3023,
        3,
        432,
        216,
        0,
        3022,
        3020,
        1,
        0,
        0,
        0,
        3023,
        3026,
        1,
        0,
        0,
        0,
        3024,
        3022,
        1,
        0,
        0,
        0,
        3024,
        3025,
        1,
        0,
        0,
        0,
        3025,
        3028,
        1,
        0,
        0,
        0,
        3026,
        3024,
        1,
        0,
        0,
        0,
        3027,
        3029,
        5,
        83,
        0,
        0,
        3028,
        3027,
        1,
        0,
        0,
        0,
        3028,
        3029,
        1,
        0,
        0,
        0,
        3029,
        431,
        1,
        0,
        0,
        0,
        3030,
        3031,
        5,
        86,
        0,
        0,
        3031,
        3034,
        3,
        338,
        169,
        0,
        3032,
        3034,
        3,
        434,
        217,
        0,
        3033,
        3030,
        1,
        0,
        0,
        0,
        3033,
        3032,
        1,
        0,
        0,
        0,
        3034,
        433,
        1,
        0,
        0,
        0,
        3035,
        3036,
        3,
        292,
        146,
        0,
        3036,
        3037,
        5,
        84,
        0,
        0,
        3037,
        3038,
        3,
        292,
        146,
        0,
        3038,
        435,
        1,
        0,
        0,
        0,
        3039,
        3041,
        3,
        438,
        219,
        0,
        3040,
        3039,
        1,
        0,
        0,
        0,
        3041,
        3042,
        1,
        0,
        0,
        0,
        3042,
        3040,
        1,
        0,
        0,
        0,
        3042,
        3043,
        1,
        0,
        0,
        0,
        3043,
        437,
        1,
        0,
        0,
        0,
        3044,
        3046,
        5,
        15,
        0,
        0,
        3045,
        3044,
        1,
        0,
        0,
        0,
        3045,
        3046,
        1,
        0,
        0,
        0,
        3046,
        3047,
        1,
        0,
        0,
        0,
        3047,
        3048,
        5,
        28,
        0,
        0,
        3048,
        3049,
        3,
        462,
        231,
        0,
        3049,
        3050,
        5,
        33,
        0,
        0,
        3050,
        3055,
        3,
        308,
        154,
        0,
        3051,
        3052,
        5,
        31,
        0,
        0,
        3052,
        3054,
        3,
        308,
        154,
        0,
        3053,
        3051,
        1,
        0,
        0,
        0,
        3054,
        3057,
        1,
        0,
        0,
        0,
        3055,
        3053,
        1,
        0,
        0,
        0,
        3055,
        3056,
        1,
        0,
        0,
        0,
        3056,
        439,
        1,
        0,
        0,
        0,
        3057,
        3055,
        1,
        0,
        0,
        0,
        3058,
        3059,
        5,
        88,
        0,
        0,
        3059,
        3060,
        3,
        306,
        153,
        0,
        3060,
        3061,
        3,
        436,
        218,
        0,
        3061,
        3062,
        5,
        89,
        0,
        0,
        3062,
        441,
        1,
        0,
        0,
        0,
        3063,
        3064,
        5,
        101,
        0,
        0,
        3064,
        3065,
        3,
        306,
        153,
        0,
        3065,
        3066,
        3,
        436,
        218,
        0,
        3066,
        3067,
        5,
        102,
        0,
        0,
        3067,
        443,
        1,
        0,
        0,
        0,
        3068,
        3071,
        5,
        81,
        0,
        0,
        3069,
        3072,
        3,
        304,
        152,
        0,
        3070,
        3072,
        3,
        292,
        146,
        0,
        3071,
        3069,
        1,
        0,
        0,
        0,
        3071,
        3070,
        1,
        0,
        0,
        0,
        3072,
        3073,
        1,
        0,
        0,
        0,
        3073,
        3074,
        3,
        436,
        218,
        0,
        3074,
        3075,
        5,
        82,
        0,
        0,
        3075,
        445,
        1,
        0,
        0,
        0,
        3076,
        3077,
        5,
        101,
        0,
        0,
        3077,
        3078,
        3,
        434,
        217,
        0,
        3078,
        3079,
        3,
        436,
        218,
        0,
        3079,
        3080,
        5,
        102,
        0,
        0,
        3080,
        447,
        1,
        0,
        0,
        0,
        3081,
        3083,
        3,
        450,
        225,
        0,
        3082,
        3084,
        5,
        83,
        0,
        0,
        3083,
        3082,
        1,
        0,
        0,
        0,
        3083,
        3084,
        1,
        0,
        0,
        0,
        3084,
        449,
        1,
        0,
        0,
        0,
        3085,
        3090,
        3,
        452,
        226,
        0,
        3086,
        3087,
        5,
        83,
        0,
        0,
        3087,
        3089,
        3,
        452,
        226,
        0,
        3088,
        3086,
        1,
        0,
        0,
        0,
        3089,
        3092,
        1,
        0,
        0,
        0,
        3090,
        3088,
        1,
        0,
        0,
        0,
        3090,
        3091,
        1,
        0,
        0,
        0,
        3091,
        3095,
        1,
        0,
        0,
        0,
        3092,
        3090,
        1,
        0,
        0,
        0,
        3093,
        3094,
        5,
        83,
        0,
        0,
        3094,
        3096,
        3,
        454,
        227,
        0,
        3095,
        3093,
        1,
        0,
        0,
        0,
        3095,
        3096,
        1,
        0,
        0,
        0,
        3096,
        3099,
        1,
        0,
        0,
        0,
        3097,
        3099,
        3,
        454,
        227,
        0,
        3098,
        3085,
        1,
        0,
        0,
        0,
        3098,
        3097,
        1,
        0,
        0,
        0,
        3099,
        451,
        1,
        0,
        0,
        0,
        3100,
        3105,
        3,
        54,
        27,
        0,
        3101,
        3105,
        3,
        456,
        228,
        0,
        3102,
        3105,
        3,
        304,
        152,
        0,
        3103,
        3105,
        3,
        292,
        146,
        0,
        3104,
        3100,
        1,
        0,
        0,
        0,
        3104,
        3101,
        1,
        0,
        0,
        0,
        3104,
        3102,
        1,
        0,
        0,
        0,
        3104,
        3103,
        1,
        0,
        0,
        0,
        3105,
        453,
        1,
        0,
        0,
        0,
        3106,
        3111,
        3,
        458,
        229,
        0,
        3107,
        3108,
        5,
        83,
        0,
        0,
        3108,
        3110,
        3,
        458,
        229,
        0,
        3109,
        3107,
        1,
        0,
        0,
        0,
        3110,
        3113,
        1,
        0,
        0,
        0,
        3111,
        3109,
        1,
        0,
        0,
        0,
        3111,
        3112,
        1,
        0,
        0,
        0,
        3112,
        3114,
        1,
        0,
        0,
        0,
        3113,
        3111,
        1,
        0,
        0,
        0,
        3114,
        3115,
        5,
        83,
        0,
        0,
        3115,
        3120,
        3,
        460,
        230,
        0,
        3116,
        3117,
        5,
        83,
        0,
        0,
        3117,
        3119,
        3,
        460,
        230,
        0,
        3118,
        3116,
        1,
        0,
        0,
        0,
        3119,
        3122,
        1,
        0,
        0,
        0,
        3120,
        3118,
        1,
        0,
        0,
        0,
        3120,
        3121,
        1,
        0,
        0,
        0,
        3121,
        3140,
        1,
        0,
        0,
        0,
        3122,
        3120,
        1,
        0,
        0,
        0,
        3123,
        3128,
        3,
        458,
        229,
        0,
        3124,
        3125,
        5,
        83,
        0,
        0,
        3125,
        3127,
        3,
        458,
        229,
        0,
        3126,
        3124,
        1,
        0,
        0,
        0,
        3127,
        3130,
        1,
        0,
        0,
        0,
        3128,
        3126,
        1,
        0,
        0,
        0,
        3128,
        3129,
        1,
        0,
        0,
        0,
        3129,
        3140,
        1,
        0,
        0,
        0,
        3130,
        3128,
        1,
        0,
        0,
        0,
        3131,
        3136,
        3,
        460,
        230,
        0,
        3132,
        3133,
        5,
        83,
        0,
        0,
        3133,
        3135,
        3,
        460,
        230,
        0,
        3134,
        3132,
        1,
        0,
        0,
        0,
        3135,
        3138,
        1,
        0,
        0,
        0,
        3136,
        3134,
        1,
        0,
        0,
        0,
        3136,
        3137,
        1,
        0,
        0,
        0,
        3137,
        3140,
        1,
        0,
        0,
        0,
        3138,
        3136,
        1,
        0,
        0,
        0,
        3139,
        3106,
        1,
        0,
        0,
        0,
        3139,
        3123,
        1,
        0,
        0,
        0,
        3139,
        3131,
        1,
        0,
        0,
        0,
        3140,
        455,
        1,
        0,
        0,
        0,
        3141,
        3142,
        5,
        80,
        0,
        0,
        3142,
        3143,
        3,
        292,
        146,
        0,
        3143,
        457,
        1,
        0,
        0,
        0,
        3144,
        3145,
        3,
        490,
        245,
        0,
        3145,
        3146,
        5,
        87,
        0,
        0,
        3146,
        3147,
        3,
        292,
        146,
        0,
        3147,
        3150,
        1,
        0,
        0,
        0,
        3148,
        3150,
        3,
        456,
        228,
        0,
        3149,
        3144,
        1,
        0,
        0,
        0,
        3149,
        3148,
        1,
        0,
        0,
        0,
        3150,
        459,
        1,
        0,
        0,
        0,
        3151,
        3152,
        3,
        490,
        245,
        0,
        3152,
        3153,
        5,
        87,
        0,
        0,
        3153,
        3154,
        3,
        292,
        146,
        0,
        3154,
        3158,
        1,
        0,
        0,
        0,
        3155,
        3156,
        5,
        86,
        0,
        0,
        3156,
        3158,
        3,
        292,
        146,
        0,
        3157,
        3151,
        1,
        0,
        0,
        0,
        3157,
        3155,
        1,
        0,
        0,
        0,
        3158,
        461,
        1,
        0,
        0,
        0,
        3159,
        3164,
        3,
        468,
        234,
        0,
        3160,
        3161,
        5,
        83,
        0,
        0,
        3161,
        3163,
        3,
        468,
        234,
        0,
        3162,
        3160,
        1,
        0,
        0,
        0,
        3163,
        3166,
        1,
        0,
        0,
        0,
        3164,
        3162,
        1,
        0,
        0,
        0,
        3164,
        3165,
        1,
        0,
        0,
        0,
        3165,
        3168,
        1,
        0,
        0,
        0,
        3166,
        3164,
        1,
        0,
        0,
        0,
        3167,
        3169,
        5,
        83,
        0,
        0,
        3168,
        3167,
        1,
        0,
        0,
        0,
        3168,
        3169,
        1,
        0,
        0,
        0,
        3169,
        463,
        1,
        0,
        0,
        0,
        3170,
        3175,
        3,
        468,
        234,
        0,
        3171,
        3172,
        5,
        83,
        0,
        0,
        3172,
        3174,
        3,
        468,
        234,
        0,
        3173,
        3171,
        1,
        0,
        0,
        0,
        3174,
        3177,
        1,
        0,
        0,
        0,
        3175,
        3173,
        1,
        0,
        0,
        0,
        3175,
        3176,
        1,
        0,
        0,
        0,
        3176,
        3179,
        1,
        0,
        0,
        0,
        3177,
        3175,
        1,
        0,
        0,
        0,
        3178,
        3180,
        5,
        83,
        0,
        0,
        3179,
        3178,
        1,
        0,
        0,
        0,
        3179,
        3180,
        1,
        0,
        0,
        0,
        3180,
        465,
        1,
        0,
        0,
        0,
        3181,
        3184,
        3,
        468,
        234,
        0,
        3182,
        3183,
        5,
        83,
        0,
        0,
        3183,
        3185,
        3,
        468,
        234,
        0,
        3184,
        3182,
        1,
        0,
        0,
        0,
        3185,
        3186,
        1,
        0,
        0,
        0,
        3186,
        3184,
        1,
        0,
        0,
        0,
        3186,
        3187,
        1,
        0,
        0,
        0,
        3187,
        3189,
        1,
        0,
        0,
        0,
        3188,
        3190,
        5,
        83,
        0,
        0,
        3189,
        3188,
        1,
        0,
        0,
        0,
        3189,
        3190,
        1,
        0,
        0,
        0,
        3190,
        3195,
        1,
        0,
        0,
        0,
        3191,
        3192,
        3,
        468,
        234,
        0,
        3192,
        3193,
        5,
        83,
        0,
        0,
        3193,
        3195,
        1,
        0,
        0,
        0,
        3194,
        3181,
        1,
        0,
        0,
        0,
        3194,
        3191,
        1,
        0,
        0,
        0,
        3195,
        467,
        1,
        0,
        0,
        0,
        3196,
        3197,
        5,
        80,
        0,
        0,
        3197,
        3200,
        3,
        468,
        234,
        0,
        3198,
        3200,
        3,
        470,
        235,
        0,
        3199,
        3196,
        1,
        0,
        0,
        0,
        3199,
        3198,
        1,
        0,
        0,
        0,
        3200,
        469,
        1,
        0,
        0,
        0,
        3201,
        3202,
        3,
        478,
        239,
        0,
        3202,
        3203,
        5,
        79,
        0,
        0,
        3203,
        3204,
        3,
        490,
        245,
        0,
        3204,
        3212,
        1,
        0,
        0,
        0,
        3205,
        3206,
        3,
        478,
        239,
        0,
        3206,
        3207,
        5,
        88,
        0,
        0,
        3207,
        3208,
        3,
        358,
        179,
        0,
        3208,
        3209,
        5,
        89,
        0,
        0,
        3209,
        3212,
        1,
        0,
        0,
        0,
        3210,
        3212,
        3,
        472,
        236,
        0,
        3211,
        3201,
        1,
        0,
        0,
        0,
        3211,
        3205,
        1,
        0,
        0,
        0,
        3211,
        3210,
        1,
        0,
        0,
        0,
        3212,
        471,
        1,
        0,
        0,
        0,
        3213,
        3229,
        3,
        490,
        245,
        0,
        3214,
        3215,
        5,
        81,
        0,
        0,
        3215,
        3216,
        3,
        470,
        235,
        0,
        3216,
        3217,
        5,
        82,
        0,
        0,
        3217,
        3229,
        1,
        0,
        0,
        0,
        3218,
        3220,
        5,
        81,
        0,
        0,
        3219,
        3221,
        3,
        466,
        233,
        0,
        3220,
        3219,
        1,
        0,
        0,
        0,
        3220,
        3221,
        1,
        0,
        0,
        0,
        3221,
        3222,
        1,
        0,
        0,
        0,
        3222,
        3229,
        5,
        82,
        0,
        0,
        3223,
        3225,
        5,
        88,
        0,
        0,
        3224,
        3226,
        3,
        464,
        232,
        0,
        3225,
        3224,
        1,
        0,
        0,
        0,
        3225,
        3226,
        1,
        0,
        0,
        0,
        3226,
        3227,
        1,
        0,
        0,
        0,
        3227,
        3229,
        5,
        89,
        0,
        0,
        3228,
        3213,
        1,
        0,
        0,
        0,
        3228,
        3214,
        1,
        0,
        0,
        0,
        3228,
        3218,
        1,
        0,
        0,
        0,
        3228,
        3223,
        1,
        0,
        0,
        0,
        3229,
        473,
        1,
        0,
        0,
        0,
        3230,
        3237,
        3,
        476,
        238,
        0,
        3231,
        3237,
        3,
        490,
        245,
        0,
        3232,
        3233,
        5,
        81,
        0,
        0,
        3233,
        3234,
        3,
        474,
        237,
        0,
        3234,
        3235,
        5,
        82,
        0,
        0,
        3235,
        3237,
        1,
        0,
        0,
        0,
        3236,
        3230,
        1,
        0,
        0,
        0,
        3236,
        3231,
        1,
        0,
        0,
        0,
        3236,
        3232,
        1,
        0,
        0,
        0,
        3237,
        475,
        1,
        0,
        0,
        0,
        3238,
        3239,
        3,
        478,
        239,
        0,
        3239,
        3240,
        5,
        79,
        0,
        0,
        3240,
        3241,
        3,
        490,
        245,
        0,
        3241,
        3248,
        1,
        0,
        0,
        0,
        3242,
        3243,
        3,
        478,
        239,
        0,
        3243,
        3244,
        5,
        88,
        0,
        0,
        3244,
        3245,
        3,
        358,
        179,
        0,
        3245,
        3246,
        5,
        89,
        0,
        0,
        3246,
        3248,
        1,
        0,
        0,
        0,
        3247,
        3238,
        1,
        0,
        0,
        0,
        3247,
        3242,
        1,
        0,
        0,
        0,
        3248,
        477,
        1,
        0,
        0,
        0,
        3249,
        3250,
        6,
        239,
        -1,
        0,
        3250,
        3251,
        3,
        362,
        181,
        0,
        3251,
        3270,
        1,
        0,
        0,
        0,
        3252,
        3253,
        10,
        5,
        0,
        0,
        3253,
        3254,
        5,
        79,
        0,
        0,
        3254,
        3269,
        3,
        490,
        245,
        0,
        3255,
        3256,
        10,
        4,
        0,
        0,
        3256,
        3257,
        5,
        88,
        0,
        0,
        3257,
        3258,
        3,
        358,
        179,
        0,
        3258,
        3259,
        5,
        89,
        0,
        0,
        3259,
        3269,
        1,
        0,
        0,
        0,
        3260,
        3261,
        10,
        3,
        0,
        0,
        3261,
        3269,
        3,
        444,
        222,
        0,
        3262,
        3263,
        10,
        2,
        0,
        0,
        3263,
        3265,
        5,
        81,
        0,
        0,
        3264,
        3266,
        3,
        448,
        224,
        0,
        3265,
        3264,
        1,
        0,
        0,
        0,
        3265,
        3266,
        1,
        0,
        0,
        0,
        3266,
        3267,
        1,
        0,
        0,
        0,
        3267,
        3269,
        5,
        82,
        0,
        0,
        3268,
        3252,
        1,
        0,
        0,
        0,
        3268,
        3255,
        1,
        0,
        0,
        0,
        3268,
        3260,
        1,
        0,
        0,
        0,
        3268,
        3262,
        1,
        0,
        0,
        0,
        3269,
        3272,
        1,
        0,
        0,
        0,
        3270,
        3268,
        1,
        0,
        0,
        0,
        3270,
        3271,
        1,
        0,
        0,
        0,
        3271,
        479,
        1,
        0,
        0,
        0,
        3272,
        3270,
        1,
        0,
        0,
        0,
        3273,
        3278,
        3,
        482,
        241,
        0,
        3274,
        3275,
        5,
        83,
        0,
        0,
        3275,
        3277,
        3,
        482,
        241,
        0,
        3276,
        3274,
        1,
        0,
        0,
        0,
        3277,
        3280,
        1,
        0,
        0,
        0,
        3278,
        3276,
        1,
        0,
        0,
        0,
        3278,
        3279,
        1,
        0,
        0,
        0,
        3279,
        3282,
        1,
        0,
        0,
        0,
        3280,
        3278,
        1,
        0,
        0,
        0,
        3281,
        3283,
        5,
        83,
        0,
        0,
        3282,
        3281,
        1,
        0,
        0,
        0,
        3282,
        3283,
        1,
        0,
        0,
        0,
        3283,
        481,
        1,
        0,
        0,
        0,
        3284,
        3285,
        3,
        478,
        239,
        0,
        3285,
        3286,
        5,
        79,
        0,
        0,
        3286,
        3287,
        3,
        490,
        245,
        0,
        3287,
        3295,
        1,
        0,
        0,
        0,
        3288,
        3289,
        3,
        478,
        239,
        0,
        3289,
        3290,
        5,
        88,
        0,
        0,
        3290,
        3291,
        3,
        358,
        179,
        0,
        3291,
        3292,
        5,
        89,
        0,
        0,
        3292,
        3295,
        1,
        0,
        0,
        0,
        3293,
        3295,
        3,
        484,
        242,
        0,
        3294,
        3284,
        1,
        0,
        0,
        0,
        3294,
        3288,
        1,
        0,
        0,
        0,
        3294,
        3293,
        1,
        0,
        0,
        0,
        3295,
        483,
        1,
        0,
        0,
        0,
        3296,
        3308,
        3,
        490,
        245,
        0,
        3297,
        3299,
        5,
        81,
        0,
        0,
        3298,
        3300,
        3,
        480,
        240,
        0,
        3299,
        3298,
        1,
        0,
        0,
        0,
        3299,
        3300,
        1,
        0,
        0,
        0,
        3300,
        3301,
        1,
        0,
        0,
        0,
        3301,
        3308,
        5,
        82,
        0,
        0,
        3302,
        3304,
        5,
        88,
        0,
        0,
        3303,
        3305,
        3,
        480,
        240,
        0,
        3304,
        3303,
        1,
        0,
        0,
        0,
        3304,
        3305,
        1,
        0,
        0,
        0,
        3305,
        3306,
        1,
        0,
        0,
        0,
        3306,
        3308,
        5,
        89,
        0,
        0,
        3307,
        3296,
        1,
        0,
        0,
        0,
        3307,
        3297,
        1,
        0,
        0,
        0,
        3307,
        3302,
        1,
        0,
        0,
        0,
        3308,
        485,
        1,
        0,
        0,
        0,
        3309,
        3314,
        3,
        292,
        146,
        0,
        3310,
        3311,
        5,
        83,
        0,
        0,
        3311,
        3313,
        3,
        292,
        146,
        0,
        3312,
        3310,
        1,
        0,
        0,
        0,
        3313,
        3316,
        1,
        0,
        0,
        0,
        3314,
        3312,
        1,
        0,
        0,
        0,
        3314,
        3315,
        1,
        0,
        0,
        0,
        3315,
        3317,
        1,
        0,
        0,
        0,
        3316,
        3314,
        1,
        0,
        0,
        0,
        3317,
        3318,
        5,
        83,
        0,
        0,
        3318,
        3319,
        5,
        80,
        0,
        0,
        3319,
        3320,
        3,
        292,
        146,
        0,
        3320,
        3321,
        5,
        83,
        0,
        0,
        3321,
        3322,
        5,
        86,
        0,
        0,
        3322,
        3323,
        3,
        292,
        146,
        0,
        3323,
        3367,
        1,
        0,
        0,
        0,
        3324,
        3329,
        3,
        292,
        146,
        0,
        3325,
        3326,
        5,
        83,
        0,
        0,
        3326,
        3328,
        3,
        292,
        146,
        0,
        3327,
        3325,
        1,
        0,
        0,
        0,
        3328,
        3331,
        1,
        0,
        0,
        0,
        3329,
        3327,
        1,
        0,
        0,
        0,
        3329,
        3330,
        1,
        0,
        0,
        0,
        3330,
        3332,
        1,
        0,
        0,
        0,
        3331,
        3329,
        1,
        0,
        0,
        0,
        3332,
        3333,
        5,
        83,
        0,
        0,
        3333,
        3334,
        5,
        80,
        0,
        0,
        3334,
        3335,
        3,
        292,
        146,
        0,
        3335,
        3367,
        1,
        0,
        0,
        0,
        3336,
        3341,
        3,
        292,
        146,
        0,
        3337,
        3338,
        5,
        83,
        0,
        0,
        3338,
        3340,
        3,
        292,
        146,
        0,
        3339,
        3337,
        1,
        0,
        0,
        0,
        3340,
        3343,
        1,
        0,
        0,
        0,
        3341,
        3339,
        1,
        0,
        0,
        0,
        3341,
        3342,
        1,
        0,
        0,
        0,
        3342,
        3344,
        1,
        0,
        0,
        0,
        3343,
        3341,
        1,
        0,
        0,
        0,
        3344,
        3345,
        5,
        83,
        0,
        0,
        3345,
        3346,
        5,
        86,
        0,
        0,
        3346,
        3347,
        3,
        292,
        146,
        0,
        3347,
        3367,
        1,
        0,
        0,
        0,
        3348,
        3349,
        5,
        80,
        0,
        0,
        3349,
        3350,
        3,
        292,
        146,
        0,
        3350,
        3351,
        5,
        83,
        0,
        0,
        3351,
        3352,
        5,
        86,
        0,
        0,
        3352,
        3353,
        3,
        292,
        146,
        0,
        3353,
        3367,
        1,
        0,
        0,
        0,
        3354,
        3355,
        5,
        80,
        0,
        0,
        3355,
        3367,
        3,
        292,
        146,
        0,
        3356,
        3357,
        5,
        86,
        0,
        0,
        3357,
        3367,
        3,
        292,
        146,
        0,
        3358,
        3363,
        3,
        292,
        146,
        0,
        3359,
        3360,
        5,
        83,
        0,
        0,
        3360,
        3362,
        3,
        292,
        146,
        0,
        3361,
        3359,
        1,
        0,
        0,
        0,
        3362,
        3365,
        1,
        0,
        0,
        0,
        3363,
        3361,
        1,
        0,
        0,
        0,
        3363,
        3364,
        1,
        0,
        0,
        0,
        3364,
        3367,
        1,
        0,
        0,
        0,
        3365,
        3363,
        1,
        0,
        0,
        0,
        3366,
        3309,
        1,
        0,
        0,
        0,
        3366,
        3324,
        1,
        0,
        0,
        0,
        3366,
        3336,
        1,
        0,
        0,
        0,
        3366,
        3348,
        1,
        0,
        0,
        0,
        3366,
        3354,
        1,
        0,
        0,
        0,
        3366,
        3356,
        1,
        0,
        0,
        0,
        3366,
        3358,
        1,
        0,
        0,
        0,
        3367,
        487,
        1,
        0,
        0,
        0,
        3368,
        3369,
        5,
        127,
        0,
        0,
        3369,
        489,
        1,
        0,
        0,
        0,
        3370,
        3371,
        7,
        4,
        0,
        0,
        3371,
        491,
        1,
        0,
        0,
        0,
        413,
        498,
        505,
        510,
        517,
        522,
        530,
        536,
        539,
        544,
        550,
        558,
        564,
        567,
        572,
        578,
        587,
        593,
        596,
        601,
        604,
        611,
        618,
        626,
        645,
        649,
        653,
        664,
        670,
        675,
        700,
        703,
        705,
        710,
        718,
        726,
        732,
        741,
        744,
        749,
        755,
        764,
        767,
        772,
        778,
        786,
        799,
        812,
        820,
        829,
        832,
        841,
        851,
        854,
        863,
        873,
        876,
        885,
        895,
        898,
        906,
        915,
        918,
        927,
        937,
        940,
        949,
        959,
        962,
        971,
        981,
        984,
        991,
        994,
        996,
        1004,
        1017,
        1031,
        1045,
        1058,
        1071,
        1085,
        1099,
        1107,
        1114,
        1122,
        1131,
        1145,
        1157,
        1161,
        1167,
        1178,
        1180,
        1194,
        1201,
        1208,
        1212,
        1218,
        1225,
        1229,
        1233,
        1237,
        1240,
        1244,
        1248,
        1250,
        1254,
        1259,
        1266,
        1272,
        1280,
        1287,
        1296,
        1300,
        1303,
        1306,
        1310,
        1317,
        1320,
        1328,
        1332,
        1336,
        1344,
        1348,
        1352,
        1354,
        1358,
        1365,
        1372,
        1376,
        1381,
        1386,
        1390,
        1406,
        1416,
        1423,
        1430,
        1436,
        1443,
        1447,
        1453,
        1455,
        1459,
        1465,
        1471,
        1474,
        1482,
        1491,
        1503,
        1507,
        1516,
        1527,
        1531,
        1536,
        1542,
        1549,
        1555,
        1562,
        1568,
        1578,
        1587,
        1595,
        1598,
        1605,
        1609,
        1612,
        1618,
        1623,
        1628,
        1632,
        1637,
        1641,
        1651,
        1657,
        1661,
        1667,
        1671,
        1676,
        1681,
        1685,
        1690,
        1693,
        1696,
        1701,
        1705,
        1710,
        1716,
        1720,
        1727,
        1731,
        1738,
        1742,
        1749,
        1752,
        1755,
        1764,
        1770,
        1779,
        1783,
        1789,
        1791,
        1795,
        1820,
        1822,
        1835,
        1837,
        1848,
        1857,
        1867,
        1869,
        1878,
        1882,
        1894,
        1908,
        1912,
        1925,
        1931,
        1938,
        1951,
        1954,
        1957,
        1965,
        1968,
        1971,
        1973,
        1979,
        1987,
        1994,
        2011,
        2018,
        2021,
        2026,
        2036,
        2040,
        2051,
        2062,
        2070,
        2078,
        2088,
        2093,
        2098,
        2124,
        2133,
        2138,
        2141,
        2146,
        2153,
        2157,
        2161,
        2167,
        2174,
        2183,
        2190,
        2194,
        2201,
        2206,
        2222,
        2230,
        2240,
        2244,
        2251,
        2259,
        2269,
        2283,
        2287,
        2291,
        2297,
        2307,
        2311,
        2321,
        2328,
        2330,
        2337,
        2341,
        2347,
        2354,
        2358,
        2363,
        2371,
        2378,
        2386,
        2392,
        2398,
        2411,
        2420,
        2456,
        2467,
        2478,
        2490,
        2492,
        2504,
        2506,
        2527,
        2529,
        2539,
        2546,
        2551,
        2564,
        2572,
        2574,
        2579,
        2584,
        2588,
        2592,
        2595,
        2599,
        2603,
        2605,
        2608,
        2620,
        2624,
        2630,
        2633,
        2638,
        2644,
        2655,
        2661,
        2665,
        2671,
        2675,
        2680,
        2685,
        2689,
        2694,
        2697,
        2700,
        2705,
        2709,
        2714,
        2720,
        2724,
        2731,
        2735,
        2742,
        2745,
        2748,
        2755,
        2760,
        2764,
        2767,
        2773,
        2777,
        2781,
        2785,
        2790,
        2795,
        2800,
        2805,
        2810,
        2918,
        2920,
        2925,
        2928,
        2931,
        2934,
        2945,
        2950,
        2956,
        2964,
        2972,
        2980,
        2984,
        2990,
        2992,
        2996,
        3005,
        3015,
        3024,
        3028,
        3033,
        3042,
        3045,
        3055,
        3071,
        3083,
        3090,
        3095,
        3098,
        3104,
        3111,
        3120,
        3128,
        3136,
        3139,
        3149,
        3157,
        3164,
        3168,
        3175,
        3179,
        3186,
        3189,
        3194,
        3199,
        3211,
        3220,
        3225,
        3228,
        3236,
        3247,
        3265,
        3268,
        3270,
        3278,
        3282,
        3294,
        3299,
        3304,
        3307,
        3314,
        3329,
        3341,
        3363,
        3366,
    ]


class FandangoParser(Parser):

    grammarFileName = "FandangoParser.g4"

    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]

    sharedContextCache = PredictionContextCache()

    literalNames = [
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "'<py>'",
        "'</py>'",
        "'and'",
        "'as'",
        "'assert'",
        "'async'",
        "'await'",
        "'break'",
        "'case'",
        "'class'",
        "'continue'",
        "'def'",
        "'del'",
        "'elif'",
        "'else'",
        "'except'",
        "'False'",
        "'finally'",
        "'for'",
        "'from'",
        "'global'",
        "'if'",
        "'import'",
        "'in'",
        "'is'",
        "'lambda'",
        "'match'",
        "'None'",
        "'nonlocal'",
        "'not'",
        "'or'",
        "'pass'",
        "'raise'",
        "'return'",
        "'True'",
        "'try'",
        "'type'",
        "'while'",
        "'where'",
        "'with'",
        "'yield'",
        "'forall'",
        "'exists'",
        "'maximizing'",
        "'minimizing'",
        "'any'",
        "'all'",
        "'len'",
        "'setting'",
        "'all_with_type'",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        '\'"""\'',
        "'''''",
        "'\"'",
        "'''",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "'::='",
        "'?'",
        "'\\'",
        "'...'",
        "'..'",
        "'.'",
        "'*'",
        "'('",
        "')'",
        "','",
        "':'",
        "';'",
        "'**'",
        "'='",
        "'['",
        "']'",
        "'|'",
        "'^'",
        "'&'",
        "'<<'",
        "'>>'",
        "'+'",
        "'-'",
        "'/'",
        "'%'",
        "'//'",
        "'~'",
        "'{'",
        "'}'",
        "'<'",
        "'>'",
        "'=='",
        "'>='",
        "'<='",
        "'<>'",
        "'!='",
        "'@'",
        "'->'",
        "'+='",
        "'-='",
        "'*='",
        "'@='",
        "'/='",
        "'%='",
        "'&='",
        "'|='",
        "'^='",
        "'<<='",
        "'>>='",
        "'**='",
        "'//='",
        "':='",
        "'!'",
        "<INVALID>",
        "<INVALID>",
        "<INVALID>",
        "'_'",
    ]

    symbolicNames = [
        "<INVALID>",
        "INDENT",
        "DEDENT",
        "FSTRING_START_QUOTE",
        "FSTRING_START_SINGLE_QUOTE",
        "FSTRING_START_TRIPLE_QUOTE",
        "FSTRING_START_TRIPLE_SINGLE_QUOTE",
        "STRING",
        "NUMBER",
        "INTEGER",
        "PYTHON_START",
        "PYTHON_END",
        "AND",
        "AS",
        "ASSERT",
        "ASYNC",
        "AWAIT",
        "BREAK",
        "CASE",
        "CLASS",
        "CONTINUE",
        "DEF",
        "DEL",
        "ELIF",
        "ELSE",
        "EXCEPT",
        "FALSE",
        "FINALLY",
        "FOR",
        "FROM",
        "GLOBAL",
        "IF",
        "IMPORT",
        "IN",
        "IS",
        "LAMBDA",
        "MATCH",
        "NONE",
        "NONLOCAL",
        "NOT",
        "OR",
        "PASS",
        "RAISE",
        "RETURN",
        "TRUE",
        "TRY",
        "TYPE",
        "WHILE",
        "WHERE",
        "WITH",
        "YIELD",
        "FORALL",
        "EXISTS",
        "MAXIMIZING",
        "MINIMIZING",
        "ANY",
        "ALL",
        "LEN",
        "SETTING",
        "ALL_WITH_TYPE",
        "NODE_TYPES",
        "NAME",
        "STRING_LITERAL",
        "FSTRING_END_TRIPLE_QUOTE",
        "FSTRING_END_TRIPLE_SINGLE_QUOTE",
        "FSTRING_END_QUOTE",
        "FSTRING_END_SINGLE_QUOTE",
        "BYTES_LITERAL",
        "DECIMAL_INTEGER",
        "OCT_INTEGER",
        "HEX_INTEGER",
        "BIN_INTEGER",
        "FLOAT_NUMBER",
        "IMAG_NUMBER",
        "GRAMMAR_ASSIGN",
        "QUESTION",
        "BACKSLASH",
        "ELLIPSIS",
        "DOTDOT",
        "DOT",
        "STAR",
        "OPEN_PAREN",
        "CLOSE_PAREN",
        "COMMA",
        "COLON",
        "SEMI_COLON",
        "POWER",
        "ASSIGN",
        "OPEN_BRACK",
        "CLOSE_BRACK",
        "OR_OP",
        "XOR",
        "AND_OP",
        "LEFT_SHIFT",
        "RIGHT_SHIFT",
        "ADD",
        "MINUS",
        "DIV",
        "MOD",
        "IDIV",
        "NOT_OP",
        "OPEN_BRACE",
        "CLOSE_BRACE",
        "LESS_THAN",
        "GREATER_THAN",
        "EQUALS",
        "GT_EQ",
        "LT_EQ",
        "NOT_EQ_1",
        "NOT_EQ_2",
        "AT",
        "ARROW",
        "ADD_ASSIGN",
        "SUB_ASSIGN",
        "MULT_ASSIGN",
        "AT_ASSIGN",
        "DIV_ASSIGN",
        "MOD_ASSIGN",
        "AND_ASSIGN",
        "OR_ASSIGN",
        "XOR_ASSIGN",
        "LEFT_SHIFT_ASSIGN",
        "RIGHT_SHIFT_ASSIGN",
        "POWER_ASSIGN",
        "IDIV_ASSIGN",
        "EXPR_ASSIGN",
        "EXCL",
        "NEWLINE",
        "SKIP_",
        "SPACES",
        "UNDERSCORE",
        "UNKNOWN_CHAR",
    ]

    RULE_fandango = 0
    RULE_program = 1
    RULE_statement = 2
    RULE_production = 3
    RULE_alternative = 4
    RULE_concatenation = 5
    RULE_operator = 6
    RULE_kleene = 7
    RULE_plus = 8
    RULE_option = 9
    RULE_repeat = 10
    RULE_symbol = 11
    RULE_nonterminal_right = 12
    RULE_nonterminal = 13
    RULE_generator_call = 14
    RULE_char_set = 15
    RULE_constraint = 16
    RULE_implies = 17
    RULE_quantifier = 18
    RULE_quantifier_in_line = 19
    RULE_formula_disjunction = 20
    RULE_formula_conjunction = 21
    RULE_formula_atom = 22
    RULE_formula_comparison = 23
    RULE_expr = 24
    RULE_selector_length = 25
    RULE_star_selection_or_dot_selection = 26
    RULE_star_selection = 27
    RULE_dot_selection = 28
    RULE_selection = 29
    RULE_base_selection = 30
    RULE_rs_pairs = 31
    RULE_rs_pair = 32
    RULE_rs_slices = 33
    RULE_rs_slice = 34
    RULE_python = 35
    RULE_python_tag = 36
    RULE_grammar_setting = 37
    RULE_grammar_setting_content = 38
    RULE_grammar_selector = 39
    RULE_grammar_rule = 40
    RULE_grammar_setting_key = 41
    RULE_grammar_setting_value = 42
    RULE_python_file = 43
    RULE_interactive = 44
    RULE_eval = 45
    RULE_func_type = 46
    RULE_statements = 47
    RULE_stmt = 48
    RULE_statement_newline = 49
    RULE_simple_stmts = 50
    RULE_simple_stmt = 51
    RULE_compound_stmt = 52
    RULE_assignment = 53
    RULE_annotated_rhs = 54
    RULE_augassign = 55
    RULE_return_stmt = 56
    RULE_raise_stmt = 57
    RULE_global_stmt = 58
    RULE_nonlocal_stmt = 59
    RULE_del_stmt = 60
    RULE_yield_stmt = 61
    RULE_assert_stmt = 62
    RULE_import_stmt = 63
    RULE_import_name = 64
    RULE_import_from = 65
    RULE_import_from_targets = 66
    RULE_import_from_as_names = 67
    RULE_import_from_as_name = 68
    RULE_dotted_as_names = 69
    RULE_dotted_as_name = 70
    RULE_dotted_name = 71
    RULE_block = 72
    RULE_decorators = 73
    RULE_class_def = 74
    RULE_class_def_raw = 75
    RULE_function_def = 76
    RULE_function_def_raw = 77
    RULE_params = 78
    RULE_parameters = 79
    RULE_slash_no_default = 80
    RULE_slash_with_default = 81
    RULE_star_etc = 82
    RULE_kwds = 83
    RULE_param_no_default = 84
    RULE_param_no_default_star_annotation = 85
    RULE_param_with_default = 86
    RULE_param_maybe_default = 87
    RULE_param = 88
    RULE_param_star_annotation = 89
    RULE_annotation = 90
    RULE_star_annotation = 91
    RULE_default = 92
    RULE_if_stmt = 93
    RULE_elif_stmt = 94
    RULE_else_block = 95
    RULE_while_stmt = 96
    RULE_for_stmt = 97
    RULE_with_stmt = 98
    RULE_with_item = 99
    RULE_try_stmt = 100
    RULE_except_block = 101
    RULE_except_star_block = 102
    RULE_finally_block = 103
    RULE_match_stmt = 104
    RULE_subject_expr = 105
    RULE_case_block = 106
    RULE_guard = 107
    RULE_patterns = 108
    RULE_pattern = 109
    RULE_as_pattern = 110
    RULE_or_pattern = 111
    RULE_closed_pattern = 112
    RULE_literal_pattern = 113
    RULE_literal_expr = 114
    RULE_complex_number = 115
    RULE_signed_number = 116
    RULE_signed_real_number = 117
    RULE_real_number = 118
    RULE_imaginary_number = 119
    RULE_capture_pattern = 120
    RULE_pattern_capture_target = 121
    RULE_wildcard_pattern = 122
    RULE_value_pattern = 123
    RULE_attr = 124
    RULE_name_or_attr = 125
    RULE_group_pattern = 126
    RULE_sequence_pattern = 127
    RULE_open_sequence_pattern = 128
    RULE_maybe_sequence_pattern = 129
    RULE_maybe_star_pattern = 130
    RULE_star_pattern = 131
    RULE_mapping_pattern = 132
    RULE_items_pattern = 133
    RULE_key_value_pattern = 134
    RULE_double_star_pattern = 135
    RULE_class_pattern = 136
    RULE_positional_patterns = 137
    RULE_keyword_patterns = 138
    RULE_keyword_pattern = 139
    RULE_type_alias = 140
    RULE_type_params = 141
    RULE_type_param_seq = 142
    RULE_type_param = 143
    RULE_type_param_bound = 144
    RULE_expressions = 145
    RULE_expression = 146
    RULE_yield_expr = 147
    RULE_star_expressions = 148
    RULE_star_expression = 149
    RULE_star_named_expressions = 150
    RULE_star_named_expression = 151
    RULE_assignment_expression = 152
    RULE_named_expression = 153
    RULE_disjunction = 154
    RULE_conjunction = 155
    RULE_inversion = 156
    RULE_comparison = 157
    RULE_compare_op_bitwise_or_pair = 158
    RULE_eq_bitwise_or = 159
    RULE_noteq_bitwise_or = 160
    RULE_lte_bitwise_or = 161
    RULE_lt_bitwise_or = 162
    RULE_gte_bitwise_or = 163
    RULE_gt_bitwise_or = 164
    RULE_notin_bitwise_or = 165
    RULE_in_bitwise_or = 166
    RULE_isnot_bitwise_or = 167
    RULE_is_bitwise_or = 168
    RULE_bitwise_or = 169
    RULE_bitwise_xor = 170
    RULE_bitwise_and = 171
    RULE_shift_expr = 172
    RULE_sum = 173
    RULE_term = 174
    RULE_factor = 175
    RULE_power = 176
    RULE_await_primary = 177
    RULE_primary = 178
    RULE_slices = 179
    RULE_slice = 180
    RULE_atom = 181
    RULE_group = 182
    RULE_lambdef = 183
    RULE_lambda_params = 184
    RULE_lambda_parameters = 185
    RULE_lambda_slash_no_default = 186
    RULE_lambda_slash_with_default = 187
    RULE_lambda_star_etc = 188
    RULE_lambda_kwds = 189
    RULE_lambda_param_no_default = 190
    RULE_lambda_param_with_default = 191
    RULE_lambda_param_maybe_default = 192
    RULE_lambda_param = 193
    RULE_fstring_middle_no_quote = 194
    RULE_fstring_middle_no_single_quote = 195
    RULE_fstring_middle_breaks_no_triple_quote = 196
    RULE_fstring_middle_breaks_no_triple_single_quote = 197
    RULE_fstring_any_no_quote = 198
    RULE_fstring_any_no_single_quote = 199
    RULE_fstring_middle = 200
    RULE_fstring_any_breaks_no_triple_quote = 201
    RULE_fstring_any_breaks_no_triple_single_quote = 202
    RULE_fstring_any = 203
    RULE_fstring_replacement_field = 204
    RULE_fstring_conversion = 205
    RULE_fstring_full_format_spec = 206
    RULE_fstring_format_spec = 207
    RULE_fstring = 208
    RULE_string = 209
    RULE_strings = 210
    RULE_list = 211
    RULE_tuple = 212
    RULE_set = 213
    RULE_dict = 214
    RULE_double_starred_kvpairs = 215
    RULE_double_starred_kvpair = 216
    RULE_kvpair = 217
    RULE_for_if_clauses = 218
    RULE_for_if_clause = 219
    RULE_listcomp = 220
    RULE_setcomp = 221
    RULE_genexp = 222
    RULE_dictcomp = 223
    RULE_arguments = 224
    RULE_args = 225
    RULE_arg = 226
    RULE_kwargs = 227
    RULE_starred_expression = 228
    RULE_kwarg_or_starred = 229
    RULE_kwarg_or_double_starred = 230
    RULE_star_targets = 231
    RULE_star_targets_list_seq = 232
    RULE_star_targets_tuple_seq = 233
    RULE_star_target = 234
    RULE_target_with_star_atom = 235
    RULE_star_atom = 236
    RULE_single_target = 237
    RULE_single_subscript_attribute_target = 238
    RULE_t_primary = 239
    RULE_del_targets = 240
    RULE_del_target = 241
    RULE_del_t_atom = 242
    RULE_type_expressions = 243
    RULE_func_type_comment = 244
    RULE_identifier = 245

    ruleNames = [
        "fandango",
        "program",
        "statement",
        "production",
        "alternative",
        "concatenation",
        "operator",
        "kleene",
        "plus",
        "option",
        "repeat",
        "symbol",
        "nonterminal_right",
        "nonterminal",
        "generator_call",
        "char_set",
        "constraint",
        "implies",
        "quantifier",
        "quantifier_in_line",
        "formula_disjunction",
        "formula_conjunction",
        "formula_atom",
        "formula_comparison",
        "expr",
        "selector_length",
        "star_selection_or_dot_selection",
        "star_selection",
        "dot_selection",
        "selection",
        "base_selection",
        "rs_pairs",
        "rs_pair",
        "rs_slices",
        "rs_slice",
        "python",
        "python_tag",
        "grammar_setting",
        "grammar_setting_content",
        "grammar_selector",
        "grammar_rule",
        "grammar_setting_key",
        "grammar_setting_value",
        "python_file",
        "interactive",
        "eval",
        "func_type",
        "statements",
        "stmt",
        "statement_newline",
        "simple_stmts",
        "simple_stmt",
        "compound_stmt",
        "assignment",
        "annotated_rhs",
        "augassign",
        "return_stmt",
        "raise_stmt",
        "global_stmt",
        "nonlocal_stmt",
        "del_stmt",
        "yield_stmt",
        "assert_stmt",
        "import_stmt",
        "import_name",
        "import_from",
        "import_from_targets",
        "import_from_as_names",
        "import_from_as_name",
        "dotted_as_names",
        "dotted_as_name",
        "dotted_name",
        "block",
        "decorators",
        "class_def",
        "class_def_raw",
        "function_def",
        "function_def_raw",
        "params",
        "parameters",
        "slash_no_default",
        "slash_with_default",
        "star_etc",
        "kwds",
        "param_no_default",
        "param_no_default_star_annotation",
        "param_with_default",
        "param_maybe_default",
        "param",
        "param_star_annotation",
        "annotation",
        "star_annotation",
        "default",
        "if_stmt",
        "elif_stmt",
        "else_block",
        "while_stmt",
        "for_stmt",
        "with_stmt",
        "with_item",
        "try_stmt",
        "except_block",
        "except_star_block",
        "finally_block",
        "match_stmt",
        "subject_expr",
        "case_block",
        "guard",
        "patterns",
        "pattern",
        "as_pattern",
        "or_pattern",
        "closed_pattern",
        "literal_pattern",
        "literal_expr",
        "complex_number",
        "signed_number",
        "signed_real_number",
        "real_number",
        "imaginary_number",
        "capture_pattern",
        "pattern_capture_target",
        "wildcard_pattern",
        "value_pattern",
        "attr",
        "name_or_attr",
        "group_pattern",
        "sequence_pattern",
        "open_sequence_pattern",
        "maybe_sequence_pattern",
        "maybe_star_pattern",
        "star_pattern",
        "mapping_pattern",
        "items_pattern",
        "key_value_pattern",
        "double_star_pattern",
        "class_pattern",
        "positional_patterns",
        "keyword_patterns",
        "keyword_pattern",
        "type_alias",
        "type_params",
        "type_param_seq",
        "type_param",
        "type_param_bound",
        "expressions",
        "expression",
        "yield_expr",
        "star_expressions",
        "star_expression",
        "star_named_expressions",
        "star_named_expression",
        "assignment_expression",
        "named_expression",
        "disjunction",
        "conjunction",
        "inversion",
        "comparison",
        "compare_op_bitwise_or_pair",
        "eq_bitwise_or",
        "noteq_bitwise_or",
        "lte_bitwise_or",
        "lt_bitwise_or",
        "gte_bitwise_or",
        "gt_bitwise_or",
        "notin_bitwise_or",
        "in_bitwise_or",
        "isnot_bitwise_or",
        "is_bitwise_or",
        "bitwise_or",
        "bitwise_xor",
        "bitwise_and",
        "shift_expr",
        "sum",
        "term",
        "factor",
        "power",
        "await_primary",
        "primary",
        "slices",
        "slice",
        "atom",
        "group",
        "lambdef",
        "lambda_params",
        "lambda_parameters",
        "lambda_slash_no_default",
        "lambda_slash_with_default",
        "lambda_star_etc",
        "lambda_kwds",
        "lambda_param_no_default",
        "lambda_param_with_default",
        "lambda_param_maybe_default",
        "lambda_param",
        "fstring_middle_no_quote",
        "fstring_middle_no_single_quote",
        "fstring_middle_breaks_no_triple_quote",
        "fstring_middle_breaks_no_triple_single_quote",
        "fstring_any_no_quote",
        "fstring_any_no_single_quote",
        "fstring_middle",
        "fstring_any_breaks_no_triple_quote",
        "fstring_any_breaks_no_triple_single_quote",
        "fstring_any",
        "fstring_replacement_field",
        "fstring_conversion",
        "fstring_full_format_spec",
        "fstring_format_spec",
        "fstring",
        "string",
        "strings",
        "list",
        "tuple",
        "set",
        "dict",
        "double_starred_kvpairs",
        "double_starred_kvpair",
        "kvpair",
        "for_if_clauses",
        "for_if_clause",
        "listcomp",
        "setcomp",
        "genexp",
        "dictcomp",
        "arguments",
        "args",
        "arg",
        "kwargs",
        "starred_expression",
        "kwarg_or_starred",
        "kwarg_or_double_starred",
        "star_targets",
        "star_targets_list_seq",
        "star_targets_tuple_seq",
        "star_target",
        "target_with_star_atom",
        "star_atom",
        "single_target",
        "single_subscript_attribute_target",
        "t_primary",
        "del_targets",
        "del_target",
        "del_t_atom",
        "type_expressions",
        "func_type_comment",
        "identifier",
    ]

    EOF = Token.EOF
    INDENT = 1
    DEDENT = 2
    FSTRING_START_QUOTE = 3
    FSTRING_START_SINGLE_QUOTE = 4
    FSTRING_START_TRIPLE_QUOTE = 5
    FSTRING_START_TRIPLE_SINGLE_QUOTE = 6
    STRING = 7
    NUMBER = 8
    INTEGER = 9
    PYTHON_START = 10
    PYTHON_END = 11
    AND = 12
    AS = 13
    ASSERT = 14
    ASYNC = 15
    AWAIT = 16
    BREAK = 17
    CASE = 18
    CLASS = 19
    CONTINUE = 20
    DEF = 21
    DEL = 22
    ELIF = 23
    ELSE = 24
    EXCEPT = 25
    FALSE = 26
    FINALLY = 27
    FOR = 28
    FROM = 29
    GLOBAL = 30
    IF = 31
    IMPORT = 32
    IN = 33
    IS = 34
    LAMBDA = 35
    MATCH = 36
    NONE = 37
    NONLOCAL = 38
    NOT = 39
    OR = 40
    PASS = 41
    RAISE = 42
    RETURN = 43
    TRUE = 44
    TRY = 45
    TYPE = 46
    WHILE = 47
    WHERE = 48
    WITH = 49
    YIELD = 50
    FORALL = 51
    EXISTS = 52
    MAXIMIZING = 53
    MINIMIZING = 54
    ANY = 55
    ALL = 56
    LEN = 57
    SETTING = 58
    ALL_WITH_TYPE = 59
    NODE_TYPES = 60
    NAME = 61
    STRING_LITERAL = 62
    FSTRING_END_TRIPLE_QUOTE = 63
    FSTRING_END_TRIPLE_SINGLE_QUOTE = 64
    FSTRING_END_QUOTE = 65
    FSTRING_END_SINGLE_QUOTE = 66
    BYTES_LITERAL = 67
    DECIMAL_INTEGER = 68
    OCT_INTEGER = 69
    HEX_INTEGER = 70
    BIN_INTEGER = 71
    FLOAT_NUMBER = 72
    IMAG_NUMBER = 73
    GRAMMAR_ASSIGN = 74
    QUESTION = 75
    BACKSLASH = 76
    ELLIPSIS = 77
    DOTDOT = 78
    DOT = 79
    STAR = 80
    OPEN_PAREN = 81
    CLOSE_PAREN = 82
    COMMA = 83
    COLON = 84
    SEMI_COLON = 85
    POWER = 86
    ASSIGN = 87
    OPEN_BRACK = 88
    CLOSE_BRACK = 89
    OR_OP = 90
    XOR = 91
    AND_OP = 92
    LEFT_SHIFT = 93
    RIGHT_SHIFT = 94
    ADD = 95
    MINUS = 96
    DIV = 97
    MOD = 98
    IDIV = 99
    NOT_OP = 100
    OPEN_BRACE = 101
    CLOSE_BRACE = 102
    LESS_THAN = 103
    GREATER_THAN = 104
    EQUALS = 105
    GT_EQ = 106
    LT_EQ = 107
    NOT_EQ_1 = 108
    NOT_EQ_2 = 109
    AT = 110
    ARROW = 111
    ADD_ASSIGN = 112
    SUB_ASSIGN = 113
    MULT_ASSIGN = 114
    AT_ASSIGN = 115
    DIV_ASSIGN = 116
    MOD_ASSIGN = 117
    AND_ASSIGN = 118
    OR_ASSIGN = 119
    XOR_ASSIGN = 120
    LEFT_SHIFT_ASSIGN = 121
    RIGHT_SHIFT_ASSIGN = 122
    POWER_ASSIGN = 123
    IDIV_ASSIGN = 124
    EXPR_ASSIGN = 125
    EXCL = 126
    NEWLINE = 127
    SKIP_ = 128
    SPACES = 129
    UNDERSCORE = 130
    UNKNOWN_CHAR = 131

    def __init__(self, input: TokenStream, output: TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.13.2")
        self._interp = ParserATNSimulator(
            self, self.atn, self.decisionsToDFA, self.sharedContextCache
        )
        self._predicates = None

    class FandangoContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def program(self):
            return self.getTypedRuleContext(FandangoParser.ProgramContext, 0)

        def EOF(self):
            return self.getToken(FandangoParser.EOF, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_fandango

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFandango"):
                return visitor.visitFandango(self)
            else:
                return visitor.visitChildren(self)

    def fandango(self):

        localctx = FandangoParser.FandangoContext(self, self._ctx, self.state)
        self.enterRule(localctx, 0, self.RULE_fandango)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 492
            self.program()
            self.state = 493
            self.match(FandangoParser.EOF)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ProgramContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def statement(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.StatementContext)
            else:
                return self.getTypedRuleContext(FandangoParser.StatementContext, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_program

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitProgram"):
                return visitor.visitProgram(self)
            else:
                return visitor.visitChildren(self)

    def program(self):

        localctx = FandangoParser.ProgramContext(self, self._ctx, self.state)
        self.enterRule(localctx, 2, self.RULE_program)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 498
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 127:
                self.state = 495
                self.match(FandangoParser.NEWLINE)
                self.state = 500
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 510
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (
                ((_la) & ~0x3F) == 0 and ((1 << _la) & 2882302636042469882) != 0
            ) or (
                (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 8683006489) != 0
            ):
                self.state = 501
                self.statement()
                self.state = 505
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 127:
                    self.state = 502
                    self.match(FandangoParser.NEWLINE)
                    self.state = 507
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 512
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class StatementContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def production(self):
            return self.getTypedRuleContext(FandangoParser.ProductionContext, 0)

        def constraint(self):
            return self.getTypedRuleContext(FandangoParser.ConstraintContext, 0)

        def grammar_setting(self):
            return self.getTypedRuleContext(FandangoParser.Grammar_settingContext, 0)

        def python(self):
            return self.getTypedRuleContext(FandangoParser.PythonContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_statement

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStatement"):
                return visitor.visitStatement(self)
            else:
                return visitor.visitChildren(self)

    def statement(self):

        localctx = FandangoParser.StatementContext(self, self._ctx, self.state)
        self.enterRule(localctx, 4, self.RULE_statement)
        try:
            self.state = 517
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 3, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 513
                self.production()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 514
                self.constraint()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 515
                self.grammar_setting()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 516
                self.python()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ProductionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def nonterminal(self):
            return self.getTypedRuleContext(FandangoParser.NonterminalContext, 0)

        def GRAMMAR_ASSIGN(self):
            return self.getToken(FandangoParser.GRAMMAR_ASSIGN, 0)

        def alternative(self):
            return self.getTypedRuleContext(FandangoParser.AlternativeContext, 0)

        def SEMI_COLON(self):
            return self.getToken(FandangoParser.SEMI_COLON, 0)

        def EOF(self):
            return self.getToken(FandangoParser.EOF, 0)

        def INDENT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.INDENT)
            else:
                return self.getToken(FandangoParser.INDENT, i)

        def EXPR_ASSIGN(self):
            return self.getToken(FandangoParser.EXPR_ASSIGN, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def DEDENT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DEDENT)
            else:
                return self.getToken(FandangoParser.DEDENT, i)

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def ASSIGN(self):
            return self.getToken(FandangoParser.ASSIGN, 0)

        def COLON(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COLON)
            else:
                return self.getToken(FandangoParser.COLON, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_production

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitProduction"):
                return visitor.visitProduction(self)
            else:
                return visitor.visitChildren(self)

    def production(self):

        localctx = FandangoParser.ProductionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 6, self.RULE_production)
        self._la = 0  # Token type
        try:
            self.state = 604
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 19, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 522
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 1:
                    self.state = 519
                    self.match(FandangoParser.INDENT)
                    self.state = 524
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 525
                self.nonterminal()
                self.state = 526
                self.match(FandangoParser.GRAMMAR_ASSIGN)
                self.state = 527
                self.alternative()
                self.state = 530
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 125:
                    self.state = 528
                    self.match(FandangoParser.EXPR_ASSIGN)
                    self.state = 529
                    self.expression()

                self.state = 539
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 532
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 534
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 533
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 536
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 6, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 538
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 544
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 2:
                    self.state = 541
                    self.match(FandangoParser.DEDENT)
                    self.state = 546
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 550
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 1:
                    self.state = 547
                    self.match(FandangoParser.INDENT)
                    self.state = 552
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 553
                self.nonterminal()
                self.state = 554
                self.match(FandangoParser.GRAMMAR_ASSIGN)
                self.state = 555
                self.alternative()
                self.state = 558
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 87:
                    self.state = 556
                    self.match(FandangoParser.ASSIGN)
                    self.state = 557
                    self.expression()

                self.state = 567
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 560
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 562
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 561
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 564
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 11, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 566
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 572
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 2:
                    self.state = 569
                    self.match(FandangoParser.DEDENT)
                    self.state = 574
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 578
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 1:
                    self.state = 575
                    self.match(FandangoParser.INDENT)
                    self.state = 580
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 581
                self.nonterminal()
                self.state = 582
                self.match(FandangoParser.GRAMMAR_ASSIGN)
                self.state = 583
                self.alternative()
                self.state = 587
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 84:
                    self.state = 584
                    self.match(FandangoParser.COLON)
                    self.state = 585
                    self.match(FandangoParser.COLON)
                    self.state = 586
                    self.expression()

                self.state = 596
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 589
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 591
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 590
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 593
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 16, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 595
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 601
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 2:
                    self.state = 598
                    self.match(FandangoParser.DEDENT)
                    self.state = 603
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class AlternativeContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def concatenation(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ConcatenationContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ConcatenationContext, i)

        def OR_OP(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OR_OP)
            else:
                return self.getToken(FandangoParser.OR_OP, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_alternative

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAlternative"):
                return visitor.visitAlternative(self)
            else:
                return visitor.visitChildren(self)

    def alternative(self):

        localctx = FandangoParser.AlternativeContext(self, self._ctx, self.state)
        self.enterRule(localctx, 8, self.RULE_alternative)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 606
            self.concatenation()
            self.state = 611
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 90:
                self.state = 607
                self.match(FandangoParser.OR_OP)
                self.state = 608
                self.concatenation()
                self.state = 613
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ConcatenationContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def operator(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.OperatorContext)
            else:
                return self.getTypedRuleContext(FandangoParser.OperatorContext, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_concatenation

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitConcatenation"):
                return visitor.visitConcatenation(self)
            else:
                return visitor.visitChildren(self)

    def concatenation(self):

        localctx = FandangoParser.ConcatenationContext(self, self._ctx, self.state)
        self.enterRule(localctx, 10, self.RULE_concatenation)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 614
            self.operator()
            self.state = 618
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while (
                ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346442112) != 0
            ) or ((((_la - 81)) & ~0x3F) == 0 and ((1 << (_la - 81)) & 4194433) != 0):
                self.state = 615
                self.operator()
                self.state = 620
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class OperatorContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def symbol(self):
            return self.getTypedRuleContext(FandangoParser.SymbolContext, 0)

        def kleene(self):
            return self.getTypedRuleContext(FandangoParser.KleeneContext, 0)

        def plus(self):
            return self.getTypedRuleContext(FandangoParser.PlusContext, 0)

        def option(self):
            return self.getTypedRuleContext(FandangoParser.OptionContext, 0)

        def repeat(self):
            return self.getTypedRuleContext(FandangoParser.RepeatContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_operator

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitOperator"):
                return visitor.visitOperator(self)
            else:
                return visitor.visitChildren(self)

    def operator(self):

        localctx = FandangoParser.OperatorContext(self, self._ctx, self.state)
        self.enterRule(localctx, 12, self.RULE_operator)
        try:
            self.state = 626
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 22, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 621
                self.symbol()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 622
                self.kleene()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 623
                self.plus()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 624
                self.option()
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 625
                self.repeat()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class KleeneContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def symbol(self):
            return self.getTypedRuleContext(FandangoParser.SymbolContext, 0)

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_kleene

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitKleene"):
                return visitor.visitKleene(self)
            else:
                return visitor.visitChildren(self)

    def kleene(self):

        localctx = FandangoParser.KleeneContext(self, self._ctx, self.state)
        self.enterRule(localctx, 14, self.RULE_kleene)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 628
            self.symbol()
            self.state = 629
            self.match(FandangoParser.STAR)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class PlusContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def symbol(self):
            return self.getTypedRuleContext(FandangoParser.SymbolContext, 0)

        def ADD(self):
            return self.getToken(FandangoParser.ADD, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_plus

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPlus"):
                return visitor.visitPlus(self)
            else:
                return visitor.visitChildren(self)

    def plus(self):

        localctx = FandangoParser.PlusContext(self, self._ctx, self.state)
        self.enterRule(localctx, 16, self.RULE_plus)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 631
            self.symbol()
            self.state = 632
            self.match(FandangoParser.ADD)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class OptionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def symbol(self):
            return self.getTypedRuleContext(FandangoParser.SymbolContext, 0)

        def QUESTION(self):
            return self.getToken(FandangoParser.QUESTION, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_option

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitOption"):
                return visitor.visitOption(self)
            else:
                return visitor.visitChildren(self)

    def option(self):

        localctx = FandangoParser.OptionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 18, self.RULE_option)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 634
            self.symbol()
            self.state = 635
            self.match(FandangoParser.QUESTION)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class RepeatContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def symbol(self):
            return self.getTypedRuleContext(FandangoParser.SymbolContext, 0)

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ExpressionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ExpressionContext, i)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_repeat

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitRepeat"):
                return visitor.visitRepeat(self)
            else:
                return visitor.visitChildren(self)

    def repeat(self):

        localctx = FandangoParser.RepeatContext(self, self._ctx, self.state)
        self.enterRule(localctx, 20, self.RULE_repeat)
        self._la = 0  # Token type
        try:
            self.state = 653
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 25, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 637
                self.symbol()
                self.state = 638
                self.match(FandangoParser.OPEN_BRACE)

                self.state = 639
                self.expression()
                self.state = 640
                self.match(FandangoParser.CLOSE_BRACE)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 642
                self.symbol()
                self.state = 643
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 645
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
                ):
                    self.state = 644
                    self.expression()

                self.state = 647
                self.match(FandangoParser.COMMA)
                self.state = 649
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
                ):
                    self.state = 648
                    self.expression()

                self.state = 651
                self.match(FandangoParser.CLOSE_BRACE)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class SymbolContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def nonterminal_right(self):
            return self.getTypedRuleContext(FandangoParser.Nonterminal_rightContext, 0)

        def string(self):
            return self.getTypedRuleContext(FandangoParser.StringContext, 0)

        def NUMBER(self):
            return self.getToken(FandangoParser.NUMBER, 0)

        def generator_call(self):
            return self.getTypedRuleContext(FandangoParser.Generator_callContext, 0)

        def char_set(self):
            return self.getTypedRuleContext(FandangoParser.Char_setContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def alternative(self):
            return self.getTypedRuleContext(FandangoParser.AlternativeContext, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_symbol

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSymbol"):
                return visitor.visitSymbol(self)
            else:
                return visitor.visitChildren(self)

    def symbol(self):

        localctx = FandangoParser.SymbolContext(self, self._ctx, self.state)
        self.enterRule(localctx, 22, self.RULE_symbol)
        try:
            self.state = 664
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [103]:
                self.enterOuterAlt(localctx, 1)
                self.state = 655
                self.nonterminal_right()
                pass
            elif token in [7]:
                self.enterOuterAlt(localctx, 2)
                self.state = 656
                self.string()
                pass
            elif token in [8]:
                self.enterOuterAlt(localctx, 3)
                self.state = 657
                self.match(FandangoParser.NUMBER)
                pass
            elif token in [55, 56, 57, 61]:
                self.enterOuterAlt(localctx, 4)
                self.state = 658
                self.generator_call(0)
                pass
            elif token in [88]:
                self.enterOuterAlt(localctx, 5)
                self.state = 659
                self.char_set()
                pass
            elif token in [81]:
                self.enterOuterAlt(localctx, 6)
                self.state = 660
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 661
                self.alternative()
                self.state = 662
                self.match(FandangoParser.CLOSE_PAREN)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Nonterminal_rightContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def LESS_THAN(self):
            return self.getToken(FandangoParser.LESS_THAN, 0)

        def identifier(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.IdentifierContext)
            else:
                return self.getTypedRuleContext(FandangoParser.IdentifierContext, i)

        def GREATER_THAN(self):
            return self.getToken(FandangoParser.GREATER_THAN, 0)

        def COLON(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COLON)
            else:
                return self.getToken(FandangoParser.COLON, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_nonterminal_right

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitNonterminal_right"):
                return visitor.visitNonterminal_right(self)
            else:
                return visitor.visitChildren(self)

    def nonterminal_right(self):

        localctx = FandangoParser.Nonterminal_rightContext(self, self._ctx, self.state)
        self.enterRule(localctx, 24, self.RULE_nonterminal_right)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 666
            self.match(FandangoParser.LESS_THAN)
            self.state = 675
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 28, self._ctx)
            if la_ == 1:
                self.state = 670
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input, 27, self._ctx)
                if la_ == 1:
                    self.state = 667
                    self.identifier()
                    self.state = 668
                    self.match(FandangoParser.COLON)

                self.state = 672
                self.identifier()
                self.state = 673
                self.match(FandangoParser.COLON)

            self.state = 677
            self.identifier()
            self.state = 678
            self.match(FandangoParser.GREATER_THAN)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class NonterminalContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def LESS_THAN(self):
            return self.getToken(FandangoParser.LESS_THAN, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def GREATER_THAN(self):
            return self.getToken(FandangoParser.GREATER_THAN, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_nonterminal

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitNonterminal"):
                return visitor.visitNonterminal(self)
            else:
                return visitor.visitChildren(self)

    def nonterminal(self):

        localctx = FandangoParser.NonterminalContext(self, self._ctx, self.state)
        self.enterRule(localctx, 26, self.RULE_nonterminal)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 680
            self.match(FandangoParser.LESS_THAN)
            self.state = 681
            self.identifier()
            self.state = 682
            self.match(FandangoParser.GREATER_THAN)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Generator_callContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def generator_call(self):
            return self.getTypedRuleContext(FandangoParser.Generator_callContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def slices(self):
            return self.getTypedRuleContext(FandangoParser.SlicesContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def genexp(self):
            return self.getTypedRuleContext(FandangoParser.GenexpContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def arguments(self):
            return self.getTypedRuleContext(FandangoParser.ArgumentsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_generator_call

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGenerator_call"):
                return visitor.visitGenerator_call(self)
            else:
                return visitor.visitChildren(self)

    def generator_call(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.Generator_callContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 28
        self.enterRecursionRule(localctx, 28, self.RULE_generator_call, _p)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 685
            self.identifier()
            self._ctx.stop = self._input.LT(-1)
            self.state = 705
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 31, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    self.state = 703
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input, 30, self._ctx)
                    if la_ == 1:
                        localctx = FandangoParser.Generator_callContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_generator_call
                        )
                        self.state = 687
                        if not self.precpred(self._ctx, 4):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 4)"
                            )
                        self.state = 688
                        self.match(FandangoParser.DOT)
                        self.state = 689
                        self.identifier()
                        pass

                    elif la_ == 2:
                        localctx = FandangoParser.Generator_callContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_generator_call
                        )
                        self.state = 690
                        if not self.precpred(self._ctx, 3):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 3)"
                            )
                        self.state = 691
                        self.match(FandangoParser.OPEN_BRACK)
                        self.state = 692
                        self.slices()
                        self.state = 693
                        self.match(FandangoParser.CLOSE_BRACK)
                        pass

                    elif la_ == 3:
                        localctx = FandangoParser.Generator_callContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_generator_call
                        )
                        self.state = 695
                        if not self.precpred(self._ctx, 2):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 2)"
                            )
                        self.state = 696
                        self.genexp()
                        pass

                    elif la_ == 4:
                        localctx = FandangoParser.Generator_callContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_generator_call
                        )
                        self.state = 697
                        if not self.precpred(self._ctx, 1):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 1)"
                            )
                        self.state = 698
                        self.match(FandangoParser.OPEN_PAREN)
                        self.state = 700
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if (
                            ((_la) & ~0x3F) == 0
                            and ((1 << _la) & 2558062902154166776) != 0
                        ) or (
                            (((_la - 77)) & ~0x3F) == 0
                            and ((1 << (_la - 77)) & 93071897) != 0
                        ):
                            self.state = 699
                            self.arguments()

                        self.state = 702
                        self.match(FandangoParser.CLOSE_PAREN)
                        pass

                self.state = 707
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 31, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class Char_setContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def string(self):
            return self.getTypedRuleContext(FandangoParser.StringContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def XOR(self):
            return self.getToken(FandangoParser.XOR, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_char_set

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitChar_set"):
                return visitor.visitChar_set(self)
            else:
                return visitor.visitChildren(self)

    def char_set(self):

        localctx = FandangoParser.Char_setContext(self, self._ctx, self.state)
        self.enterRule(localctx, 30, self.RULE_char_set)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 708
            self.match(FandangoParser.OPEN_BRACK)
            self.state = 710
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 91:
                self.state = 709
                self.match(FandangoParser.XOR)

            self.state = 712
            self.string()
            self.state = 713
            self.match(FandangoParser.CLOSE_BRACK)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ConstraintContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def WHERE(self):
            return self.getToken(FandangoParser.WHERE, 0)

        def implies(self):
            return self.getTypedRuleContext(FandangoParser.ImpliesContext, 0)

        def INDENT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.INDENT)
            else:
                return self.getToken(FandangoParser.INDENT, i)

        def DEDENT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DEDENT)
            else:
                return self.getToken(FandangoParser.DEDENT, i)

        def MINIMIZING(self):
            return self.getToken(FandangoParser.MINIMIZING, 0)

        def expr(self):
            return self.getTypedRuleContext(FandangoParser.ExprContext, 0)

        def SEMI_COLON(self):
            return self.getToken(FandangoParser.SEMI_COLON, 0)

        def EOF(self):
            return self.getToken(FandangoParser.EOF, 0)

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def MAXIMIZING(self):
            return self.getToken(FandangoParser.MAXIMIZING, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_constraint

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitConstraint"):
                return visitor.visitConstraint(self)
            else:
                return visitor.visitChildren(self)

    def constraint(self):

        localctx = FandangoParser.ConstraintContext(self, self._ctx, self.state)
        self.enterRule(localctx, 32, self.RULE_constraint)
        self._la = 0  # Token type
        try:
            self.state = 778
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 43, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 718
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 1:
                    self.state = 715
                    self.match(FandangoParser.INDENT)
                    self.state = 720
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 721
                self.match(FandangoParser.WHERE)
                self.state = 722
                self.implies()
                self.state = 726
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 2:
                    self.state = 723
                    self.match(FandangoParser.DEDENT)
                    self.state = 728
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 732
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 1:
                    self.state = 729
                    self.match(FandangoParser.INDENT)
                    self.state = 734
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 735
                self.match(FandangoParser.MINIMIZING)
                self.state = 736
                self.expr()
                self.state = 744
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 737
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 739
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 738
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 741
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 36, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 743
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 749
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 2:
                    self.state = 746
                    self.match(FandangoParser.DEDENT)
                    self.state = 751
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 755
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 1:
                    self.state = 752
                    self.match(FandangoParser.INDENT)
                    self.state = 757
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 758
                self.match(FandangoParser.MAXIMIZING)
                self.state = 759
                self.expr()
                self.state = 767
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 760
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 762
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 761
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 764
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 40, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 766
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 772
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 2:
                    self.state = 769
                    self.match(FandangoParser.DEDENT)
                    self.state = 774
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 775
                self.implies()
                self.state = 776
                self.match(FandangoParser.SEMI_COLON)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ImpliesContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def formula_disjunction(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Formula_disjunctionContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Formula_disjunctionContext, i
                )

        def ARROW(self):
            return self.getToken(FandangoParser.ARROW, 0)

        def SEMI_COLON(self):
            return self.getToken(FandangoParser.SEMI_COLON, 0)

        def NEWLINE(self):
            return self.getToken(FandangoParser.NEWLINE, 0)

        def EOF(self):
            return self.getToken(FandangoParser.EOF, 0)

        def quantifier(self):
            return self.getTypedRuleContext(FandangoParser.QuantifierContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_implies

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitImplies"):
                return visitor.visitImplies(self)
            else:
                return visitor.visitChildren(self)

    def implies(self):

        localctx = FandangoParser.ImpliesContext(self, self._ctx, self.state)
        self.enterRule(localctx, 34, self.RULE_implies)
        self._la = 0  # Token type
        try:
            self.state = 786
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 44, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 780
                self.formula_disjunction()
                self.state = 781
                self.match(FandangoParser.ARROW)
                self.state = 782
                self.formula_disjunction()
                self.state = 783
                _la = self._input.LA(1)
                if not (_la == -1 or _la == 85 or _la == 127):
                    self._errHandler.recoverInline(self)
                else:
                    self._errHandler.reportMatch(self)
                    self.consume()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 785
                self.quantifier()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class QuantifierContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def FORALL(self):
            return self.getToken(FandangoParser.FORALL, 0)

        def nonterminal(self):
            return self.getTypedRuleContext(FandangoParser.NonterminalContext, 0)

        def IN(self):
            return self.getToken(FandangoParser.IN, 0)

        def dot_selection(self):
            return self.getTypedRuleContext(FandangoParser.Dot_selectionContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def INDENT(self):
            return self.getToken(FandangoParser.INDENT, 0)

        def quantifier(self):
            return self.getTypedRuleContext(FandangoParser.QuantifierContext, 0)

        def DEDENT(self):
            return self.getToken(FandangoParser.DEDENT, 0)

        def EXISTS(self):
            return self.getToken(FandangoParser.EXISTS, 0)

        def ANY(self):
            return self.getToken(FandangoParser.ANY, 0)

        def OPEN_PAREN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OPEN_PAREN)
            else:
                return self.getToken(FandangoParser.OPEN_PAREN, i)

        def quantifier_in_line(self):
            return self.getTypedRuleContext(FandangoParser.Quantifier_in_lineContext, 0)

        def FOR(self):
            return self.getToken(FandangoParser.FOR, 0)

        def star_selection(self):
            return self.getTypedRuleContext(FandangoParser.Star_selectionContext, 0)

        def CLOSE_PAREN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.CLOSE_PAREN)
            else:
                return self.getToken(FandangoParser.CLOSE_PAREN, i)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def SEMI_COLON(self):
            return self.getToken(FandangoParser.SEMI_COLON, 0)

        def EOF(self):
            return self.getToken(FandangoParser.EOF, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def ALL(self):
            return self.getToken(FandangoParser.ALL, 0)

        def formula_disjunction(self):
            return self.getTypedRuleContext(
                FandangoParser.Formula_disjunctionContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_quantifier

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitQuantifier"):
                return visitor.visitQuantifier(self)
            else:
                return visitor.visitChildren(self)

    def quantifier(self):

        localctx = FandangoParser.QuantifierContext(self, self._ctx, self.state)
        self.enterRule(localctx, 36, self.RULE_quantifier)
        try:
            self.state = 996
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 73, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 788
                self.match(FandangoParser.FORALL)
                self.state = 789
                self.nonterminal()
                self.state = 790
                self.match(FandangoParser.IN)
                self.state = 791
                self.dot_selection(0)
                self.state = 792
                self.match(FandangoParser.COLON)
                self.state = 799
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [127]:
                    self.state = 793
                    self.match(FandangoParser.NEWLINE)
                    self.state = 794
                    self.match(FandangoParser.INDENT)
                    self.state = 795
                    self.quantifier()
                    self.state = 796
                    self.match(FandangoParser.DEDENT)
                    pass
                elif token in [
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    16,
                    26,
                    37,
                    39,
                    44,
                    51,
                    52,
                    55,
                    56,
                    57,
                    61,
                    77,
                    80,
                    81,
                    86,
                    88,
                    90,
                    95,
                    96,
                    100,
                    101,
                    103,
                ]:
                    self.state = 798
                    self.quantifier()
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 801
                self.match(FandangoParser.EXISTS)
                self.state = 802
                self.nonterminal()
                self.state = 803
                self.match(FandangoParser.IN)
                self.state = 804
                self.dot_selection(0)
                self.state = 805
                self.match(FandangoParser.COLON)
                self.state = 812
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [127]:
                    self.state = 806
                    self.match(FandangoParser.NEWLINE)
                    self.state = 807
                    self.match(FandangoParser.INDENT)
                    self.state = 808
                    self.quantifier()
                    self.state = 809
                    self.match(FandangoParser.DEDENT)
                    pass
                elif token in [
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    16,
                    26,
                    37,
                    39,
                    44,
                    51,
                    52,
                    55,
                    56,
                    57,
                    61,
                    77,
                    80,
                    81,
                    86,
                    88,
                    90,
                    95,
                    96,
                    100,
                    101,
                    103,
                ]:
                    self.state = 811
                    self.quantifier()
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 814
                self.match(FandangoParser.ANY)
                self.state = 815
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 816
                self.quantifier_in_line()
                self.state = 817
                self.match(FandangoParser.FOR)
                self.state = 820
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 818
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 819
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 822
                self.match(FandangoParser.IN)
                self.state = 823
                self.star_selection()
                self.state = 824
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 832
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 825
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 827
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 826
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 829
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 48, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 831
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 834
                self.match(FandangoParser.ANY)
                self.state = 835
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 836
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 837
                self.quantifier_in_line()
                self.state = 838
                self.match(FandangoParser.FOR)
                self.state = 841
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 839
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 840
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 843
                self.match(FandangoParser.IN)
                self.state = 844
                self.star_selection()
                self.state = 845
                self.match(FandangoParser.CLOSE_BRACK)
                self.state = 846
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 854
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 847
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 849
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 848
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 851
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 51, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 853
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 856
                self.match(FandangoParser.ANY)
                self.state = 857
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 858
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 859
                self.quantifier_in_line()
                self.state = 860
                self.match(FandangoParser.FOR)
                self.state = 863
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 861
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 862
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 865
                self.match(FandangoParser.IN)
                self.state = 866
                self.star_selection()
                self.state = 867
                self.match(FandangoParser.CLOSE_BRACK)
                self.state = 868
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 876
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 869
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 871
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 870
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 873
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 54, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 875
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 878
                self.match(FandangoParser.ANY)
                self.state = 879
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 880
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 881
                self.quantifier_in_line()
                self.state = 882
                self.match(FandangoParser.FOR)
                self.state = 885
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 883
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 884
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 887
                self.match(FandangoParser.IN)
                self.state = 888
                self.star_selection()
                self.state = 889
                self.match(FandangoParser.CLOSE_BRACE)
                self.state = 890
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 898
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 891
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 893
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 892
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 895
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 57, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 897
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 7:
                self.enterOuterAlt(localctx, 7)
                self.state = 900
                self.match(FandangoParser.ALL)
                self.state = 901
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 902
                self.quantifier_in_line()
                self.state = 903
                self.match(FandangoParser.FOR)
                self.state = 906
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 904
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 905
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 908
                self.match(FandangoParser.IN)
                self.state = 909
                self.star_selection()
                self.state = 910
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 918
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 911
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 913
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 912
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 915
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 60, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 917
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 8:
                self.enterOuterAlt(localctx, 8)
                self.state = 920
                self.match(FandangoParser.ALL)
                self.state = 921
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 922
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 923
                self.quantifier_in_line()
                self.state = 924
                self.match(FandangoParser.FOR)
                self.state = 927
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 925
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 926
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 929
                self.match(FandangoParser.IN)
                self.state = 930
                self.star_selection()
                self.state = 931
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 932
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 940
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 933
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 935
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 934
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 937
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 63, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 939
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 9:
                self.enterOuterAlt(localctx, 9)
                self.state = 942
                self.match(FandangoParser.ALL)
                self.state = 943
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 944
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 945
                self.quantifier_in_line()
                self.state = 946
                self.match(FandangoParser.FOR)
                self.state = 949
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 947
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 948
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 951
                self.match(FandangoParser.IN)
                self.state = 952
                self.star_selection()
                self.state = 953
                self.match(FandangoParser.CLOSE_BRACK)
                self.state = 954
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 962
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 955
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 957
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 956
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 959
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 66, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 961
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 10:
                self.enterOuterAlt(localctx, 10)
                self.state = 964
                self.match(FandangoParser.ALL)
                self.state = 965
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 966
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 967
                self.quantifier_in_line()
                self.state = 968
                self.match(FandangoParser.FOR)
                self.state = 971
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 969
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 970
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 973
                self.match(FandangoParser.IN)
                self.state = 974
                self.star_selection()
                self.state = 975
                self.match(FandangoParser.CLOSE_BRACE)
                self.state = 976
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 984
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 977
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 979
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 978
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 981
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 69, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 983
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 11:
                self.enterOuterAlt(localctx, 11)
                self.state = 986
                self.formula_disjunction()
                self.state = 994
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [85]:
                    self.state = 987
                    self.match(FandangoParser.SEMI_COLON)
                    pass
                elif token in [127]:
                    self.state = 989
                    self._errHandler.sync(self)
                    _alt = 1
                    while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                        if _alt == 1:
                            self.state = 988
                            self.match(FandangoParser.NEWLINE)

                        else:
                            raise NoViableAltException(self)
                        self.state = 991
                        self._errHandler.sync(self)
                        _alt = self._interp.adaptivePredict(self._input, 71, self._ctx)

                    pass
                elif token in [-1]:
                    self.state = 993
                    self.match(FandangoParser.EOF)
                    pass
                else:
                    raise NoViableAltException(self)

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Quantifier_in_lineContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def ANY(self):
            return self.getToken(FandangoParser.ANY, 0)

        def OPEN_PAREN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OPEN_PAREN)
            else:
                return self.getToken(FandangoParser.OPEN_PAREN, i)

        def quantifier_in_line(self):
            return self.getTypedRuleContext(FandangoParser.Quantifier_in_lineContext, 0)

        def FOR(self):
            return self.getToken(FandangoParser.FOR, 0)

        def IN(self):
            return self.getToken(FandangoParser.IN, 0)

        def star_selection(self):
            return self.getTypedRuleContext(FandangoParser.Star_selectionContext, 0)

        def CLOSE_PAREN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.CLOSE_PAREN)
            else:
                return self.getToken(FandangoParser.CLOSE_PAREN, i)

        def nonterminal(self):
            return self.getTypedRuleContext(FandangoParser.NonterminalContext, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def ALL(self):
            return self.getToken(FandangoParser.ALL, 0)

        def formula_disjunction(self):
            return self.getTypedRuleContext(
                FandangoParser.Formula_disjunctionContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_quantifier_in_line

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitQuantifier_in_line"):
                return visitor.visitQuantifier_in_line(self)
            else:
                return visitor.visitChildren(self)

    def quantifier_in_line(self):

        localctx = FandangoParser.Quantifier_in_lineContext(self, self._ctx, self.state)
        self.enterRule(localctx, 38, self.RULE_quantifier_in_line)
        try:
            self.state = 1107
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 82, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 998
                self.match(FandangoParser.ANY)
                self.state = 999
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1000
                self.quantifier_in_line()
                self.state = 1001
                self.match(FandangoParser.FOR)
                self.state = 1004
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 1002
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 1003
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1006
                self.match(FandangoParser.IN)
                self.state = 1007
                self.star_selection()
                self.state = 1008
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1010
                self.match(FandangoParser.ANY)
                self.state = 1011
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1012
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 1013
                self.quantifier_in_line()
                self.state = 1014
                self.match(FandangoParser.FOR)
                self.state = 1017
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 1015
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 1016
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1019
                self.match(FandangoParser.IN)
                self.state = 1020
                self.star_selection()
                self.state = 1021
                self.match(FandangoParser.CLOSE_BRACK)
                self.state = 1022
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1024
                self.match(FandangoParser.ANY)
                self.state = 1025
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1026
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1027
                self.quantifier_in_line()
                self.state = 1028
                self.match(FandangoParser.FOR)
                self.state = 1031
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 1029
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 1030
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1033
                self.match(FandangoParser.IN)
                self.state = 1034
                self.star_selection()
                self.state = 1035
                self.match(FandangoParser.CLOSE_BRACK)
                self.state = 1036
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 1038
                self.match(FandangoParser.ANY)
                self.state = 1039
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1040
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 1041
                self.quantifier_in_line()
                self.state = 1042
                self.match(FandangoParser.FOR)
                self.state = 1045
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 1043
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 1044
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1047
                self.match(FandangoParser.IN)
                self.state = 1048
                self.star_selection()
                self.state = 1049
                self.match(FandangoParser.CLOSE_BRACE)
                self.state = 1050
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 1052
                self.match(FandangoParser.ALL)
                self.state = 1053
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1054
                self.quantifier_in_line()
                self.state = 1055
                self.match(FandangoParser.FOR)
                self.state = 1058
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 1056
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 1057
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1060
                self.match(FandangoParser.IN)
                self.state = 1061
                self.star_selection()
                self.state = 1062
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 1064
                self.match(FandangoParser.ALL)
                self.state = 1065
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1066
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1067
                self.quantifier_in_line()
                self.state = 1068
                self.match(FandangoParser.FOR)
                self.state = 1071
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 1069
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 1070
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1073
                self.match(FandangoParser.IN)
                self.state = 1074
                self.star_selection()
                self.state = 1075
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 1076
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 7:
                self.enterOuterAlt(localctx, 7)
                self.state = 1078
                self.match(FandangoParser.ALL)
                self.state = 1079
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1080
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 1081
                self.quantifier_in_line()
                self.state = 1082
                self.match(FandangoParser.FOR)
                self.state = 1085
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 1083
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 1084
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1087
                self.match(FandangoParser.IN)
                self.state = 1088
                self.star_selection()
                self.state = 1089
                self.match(FandangoParser.CLOSE_BRACK)
                self.state = 1090
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 8:
                self.enterOuterAlt(localctx, 8)
                self.state = 1092
                self.match(FandangoParser.ALL)
                self.state = 1093
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1094
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 1095
                self.quantifier_in_line()
                self.state = 1096
                self.match(FandangoParser.FOR)
                self.state = 1099
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [103]:
                    self.state = 1097
                    self.nonterminal()
                    pass
                elif token in [55, 56, 57, 61]:
                    self.state = 1098
                    self.identifier()
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1101
                self.match(FandangoParser.IN)
                self.state = 1102
                self.star_selection()
                self.state = 1103
                self.match(FandangoParser.CLOSE_BRACE)
                self.state = 1104
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 9:
                self.enterOuterAlt(localctx, 9)
                self.state = 1106
                self.formula_disjunction()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Formula_disjunctionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def formula_conjunction(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Formula_conjunctionContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Formula_conjunctionContext, i
                )

        def OR(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OR)
            else:
                return self.getToken(FandangoParser.OR, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_formula_disjunction

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFormula_disjunction"):
                return visitor.visitFormula_disjunction(self)
            else:
                return visitor.visitChildren(self)

    def formula_disjunction(self):

        localctx = FandangoParser.Formula_disjunctionContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 40, self.RULE_formula_disjunction)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1109
            self.formula_conjunction()
            self.state = 1114
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 40:
                self.state = 1110
                self.match(FandangoParser.OR)
                self.state = 1111
                self.formula_conjunction()
                self.state = 1116
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Formula_conjunctionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def formula_atom(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Formula_atomContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Formula_atomContext, i)

        def AND(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AND)
            else:
                return self.getToken(FandangoParser.AND, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_formula_conjunction

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFormula_conjunction"):
                return visitor.visitFormula_conjunction(self)
            else:
                return visitor.visitChildren(self)

    def formula_conjunction(self):

        localctx = FandangoParser.Formula_conjunctionContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 42, self.RULE_formula_conjunction)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1117
            self.formula_atom()
            self.state = 1122
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 12:
                self.state = 1118
                self.match(FandangoParser.AND)
                self.state = 1119
                self.formula_atom()
                self.state = 1124
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Formula_atomContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def formula_comparison(self):
            return self.getTypedRuleContext(FandangoParser.Formula_comparisonContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def implies(self):
            return self.getTypedRuleContext(FandangoParser.ImpliesContext, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def expr(self):
            return self.getTypedRuleContext(FandangoParser.ExprContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_formula_atom

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFormula_atom"):
                return visitor.visitFormula_atom(self)
            else:
                return visitor.visitChildren(self)

    def formula_atom(self):

        localctx = FandangoParser.Formula_atomContext(self, self._ctx, self.state)
        self.enterRule(localctx, 44, self.RULE_formula_atom)
        try:
            self.state = 1131
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 85, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1125
                self.formula_comparison()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1126
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1127
                self.implies()
                self.state = 1128
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1130
                self.expr()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Formula_comparisonContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def expr(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ExprContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ExprContext, i)

        def LESS_THAN(self):
            return self.getToken(FandangoParser.LESS_THAN, 0)

        def GREATER_THAN(self):
            return self.getToken(FandangoParser.GREATER_THAN, 0)

        def EQUALS(self):
            return self.getToken(FandangoParser.EQUALS, 0)

        def GT_EQ(self):
            return self.getToken(FandangoParser.GT_EQ, 0)

        def LT_EQ(self):
            return self.getToken(FandangoParser.LT_EQ, 0)

        def NOT_EQ_1(self):
            return self.getToken(FandangoParser.NOT_EQ_1, 0)

        def NOT_EQ_2(self):
            return self.getToken(FandangoParser.NOT_EQ_2, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_formula_comparison

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFormula_comparison"):
                return visitor.visitFormula_comparison(self)
            else:
                return visitor.visitChildren(self)

    def formula_comparison(self):

        localctx = FandangoParser.Formula_comparisonContext(self, self._ctx, self.state)
        self.enterRule(localctx, 46, self.RULE_formula_comparison)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1133
            self.expr()
            self.state = 1134
            _la = self._input.LA(1)
            if not (((((_la - 103)) & ~0x3F) == 0 and ((1 << (_la - 103)) & 127) != 0)):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
            self.state = 1135
            self.expr()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ExprContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def selector_length(self):
            return self.getTypedRuleContext(FandangoParser.Selector_lengthContext, 0)

        def inversion(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.InversionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.InversionContext, i)

        def IF(self):
            return self.getToken(FandangoParser.IF, 0)

        def ELSE(self):
            return self.getToken(FandangoParser.ELSE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_expr

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitExpr"):
                return visitor.visitExpr(self)
            else:
                return visitor.visitChildren(self)

    def expr(self):

        localctx = FandangoParser.ExprContext(self, self._ctx, self.state)
        self.enterRule(localctx, 48, self.RULE_expr)
        try:
            self.state = 1145
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 86, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1137
                self.selector_length()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1138
                self.inversion()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1139
                self.inversion()
                self.state = 1140
                self.match(FandangoParser.IF)
                self.state = 1141
                self.inversion()
                self.state = 1142
                self.match(FandangoParser.ELSE)
                self.state = 1143
                self.inversion()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Selector_lengthContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OR_OP(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OR_OP)
            else:
                return self.getToken(FandangoParser.OR_OP, i)

        def dot_selection(self):
            return self.getTypedRuleContext(FandangoParser.Dot_selectionContext, 0)

        def LEN(self):
            return self.getToken(FandangoParser.LEN, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def star_selection(self):
            return self.getTypedRuleContext(FandangoParser.Star_selectionContext, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def star_selection_or_dot_selection(self):
            return self.getTypedRuleContext(
                FandangoParser.Star_selection_or_dot_selectionContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_selector_length

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSelector_length"):
                return visitor.visitSelector_length(self)
            else:
                return visitor.visitChildren(self)

    def selector_length(self):

        localctx = FandangoParser.Selector_lengthContext(self, self._ctx, self.state)
        self.enterRule(localctx, 50, self.RULE_selector_length)
        try:
            self.state = 1157
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [90]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1147
                self.match(FandangoParser.OR_OP)
                self.state = 1148
                self.dot_selection(0)
                self.state = 1149
                self.match(FandangoParser.OR_OP)
                pass
            elif token in [57]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1151
                self.match(FandangoParser.LEN)
                self.state = 1152
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1153
                self.star_selection()
                self.state = 1154
                self.match(FandangoParser.CLOSE_PAREN)
                pass
            elif token in [80, 81, 86, 103]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1156
                self.star_selection_or_dot_selection()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_selection_or_dot_selectionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_selection(self):
            return self.getTypedRuleContext(FandangoParser.Star_selectionContext, 0)

        def dot_selection(self):
            return self.getTypedRuleContext(FandangoParser.Dot_selectionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_selection_or_dot_selection

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_selection_or_dot_selection"):
                return visitor.visitStar_selection_or_dot_selection(self)
            else:
                return visitor.visitChildren(self)

    def star_selection_or_dot_selection(self):

        localctx = FandangoParser.Star_selection_or_dot_selectionContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 52, self.RULE_star_selection_or_dot_selection)
        try:
            self.state = 1161
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [80, 86]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1159
                self.star_selection()
                pass
            elif token in [81, 103]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1160
                self.dot_selection(0)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_selectionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def dot_selection(self):
            return self.getTypedRuleContext(FandangoParser.Dot_selectionContext, 0)

        def POWER(self):
            return self.getToken(FandangoParser.POWER, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_selection

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_selection"):
                return visitor.visitStar_selection(self)
            else:
                return visitor.visitChildren(self)

    def star_selection(self):

        localctx = FandangoParser.Star_selectionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 54, self.RULE_star_selection)
        try:
            self.state = 1167
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [80]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1163
                self.match(FandangoParser.STAR)
                self.state = 1164
                self.dot_selection(0)
                pass
            elif token in [86]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1165
                self.match(FandangoParser.POWER)
                self.state = 1166
                self.dot_selection(0)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Dot_selectionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def selection(self):
            return self.getTypedRuleContext(FandangoParser.SelectionContext, 0)

        def dot_selection(self):
            return self.getTypedRuleContext(FandangoParser.Dot_selectionContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def DOTDOT(self):
            return self.getToken(FandangoParser.DOTDOT, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_dot_selection

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDot_selection"):
                return visitor.visitDot_selection(self)
            else:
                return visitor.visitChildren(self)

    def dot_selection(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.Dot_selectionContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 56
        self.enterRecursionRule(localctx, 56, self.RULE_dot_selection, _p)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1170
            self.selection()
            self._ctx.stop = self._input.LT(-1)
            self.state = 1180
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 91, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    self.state = 1178
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input, 90, self._ctx)
                    if la_ == 1:
                        localctx = FandangoParser.Dot_selectionContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_dot_selection
                        )
                        self.state = 1172
                        if not self.precpred(self._ctx, 2):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 2)"
                            )
                        self.state = 1173
                        self.match(FandangoParser.DOT)
                        self.state = 1174
                        self.selection()
                        pass

                    elif la_ == 2:
                        localctx = FandangoParser.Dot_selectionContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_dot_selection
                        )
                        self.state = 1175
                        if not self.precpred(self._ctx, 1):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 1)"
                            )
                        self.state = 1176
                        self.match(FandangoParser.DOTDOT)
                        self.state = 1177
                        self.selection()
                        pass

                self.state = 1182
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 91, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class SelectionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def base_selection(self):
            return self.getTypedRuleContext(FandangoParser.Base_selectionContext, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def rs_slices(self):
            return self.getTypedRuleContext(FandangoParser.Rs_slicesContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def rs_pairs(self):
            return self.getTypedRuleContext(FandangoParser.Rs_pairsContext, 0)

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_selection

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSelection"):
                return visitor.visitSelection(self)
            else:
                return visitor.visitChildren(self)

    def selection(self):

        localctx = FandangoParser.SelectionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 58, self.RULE_selection)
        try:
            self.state = 1194
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 92, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1183
                self.base_selection()
                self.state = 1184
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 1185
                self.rs_slices()
                self.state = 1186
                self.match(FandangoParser.CLOSE_BRACK)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1188
                self.base_selection()
                self.state = 1189
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 1190
                self.rs_pairs()
                self.state = 1191
                self.match(FandangoParser.CLOSE_BRACE)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1193
                self.base_selection()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Base_selectionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def nonterminal(self):
            return self.getTypedRuleContext(FandangoParser.NonterminalContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def dot_selection(self):
            return self.getTypedRuleContext(FandangoParser.Dot_selectionContext, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_base_selection

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitBase_selection"):
                return visitor.visitBase_selection(self)
            else:
                return visitor.visitChildren(self)

    def base_selection(self):

        localctx = FandangoParser.Base_selectionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 60, self.RULE_base_selection)
        try:
            self.state = 1201
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [103]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1196
                self.nonterminal()
                pass
            elif token in [81]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1197
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1198
                self.dot_selection(0)
                self.state = 1199
                self.match(FandangoParser.CLOSE_PAREN)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Rs_pairsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def rs_pair(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Rs_pairContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Rs_pairContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_rs_pairs

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitRs_pairs"):
                return visitor.visitRs_pairs(self)
            else:
                return visitor.visitChildren(self)

    def rs_pairs(self):

        localctx = FandangoParser.Rs_pairsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 62, self.RULE_rs_pairs)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1203
            self.rs_pair()
            self.state = 1208
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 94, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 1204
                    self.match(FandangoParser.COMMA)
                    self.state = 1205
                    self.rs_pair()
                self.state = 1210
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 94, self._ctx)

            self.state = 1212
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 1211
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Rs_pairContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def nonterminal(self):
            return self.getTypedRuleContext(FandangoParser.NonterminalContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def rs_slice(self):
            return self.getTypedRuleContext(FandangoParser.Rs_sliceContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_rs_pair

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitRs_pair"):
                return visitor.visitRs_pair(self)
            else:
                return visitor.visitChildren(self)

    def rs_pair(self):

        localctx = FandangoParser.Rs_pairContext(self, self._ctx, self.state)
        self.enterRule(localctx, 64, self.RULE_rs_pair)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1214
            self.match(FandangoParser.STAR)
            self.state = 1215
            self.nonterminal()
            self.state = 1218
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 84:
                self.state = 1216
                self.match(FandangoParser.COLON)
                self.state = 1217
                self.rs_slice()

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Rs_slicesContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def rs_slice(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Rs_sliceContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Rs_sliceContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_rs_slices

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitRs_slices"):
                return visitor.visitRs_slices(self)
            else:
                return visitor.visitChildren(self)

    def rs_slices(self):

        localctx = FandangoParser.Rs_slicesContext(self, self._ctx, self.state)
        self.enterRule(localctx, 66, self.RULE_rs_slices)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1220
            self.rs_slice()
            self.state = 1225
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 97, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 1221
                    self.match(FandangoParser.COMMA)
                    self.state = 1222
                    self.rs_slice()
                self.state = 1227
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 97, self._ctx)

            self.state = 1229
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 1228
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Rs_sliceContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NUMBER(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NUMBER)
            else:
                return self.getToken(FandangoParser.NUMBER, i)

        def COLON(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COLON)
            else:
                return self.getToken(FandangoParser.COLON, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_rs_slice

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitRs_slice"):
                return visitor.visitRs_slice(self)
            else:
                return visitor.visitChildren(self)

    def rs_slice(self):

        localctx = FandangoParser.Rs_sliceContext(self, self._ctx, self.state)
        self.enterRule(localctx, 68, self.RULE_rs_slice)
        self._la = 0  # Token type
        try:
            self.state = 1250
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 104, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1231
                self.match(FandangoParser.NUMBER)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1233
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 8:
                    self.state = 1232
                    self.match(FandangoParser.NUMBER)

                self.state = 1235
                self.match(FandangoParser.COLON)
                self.state = 1237
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 8:
                    self.state = 1236
                    self.match(FandangoParser.NUMBER)

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1240
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 8:
                    self.state = 1239
                    self.match(FandangoParser.NUMBER)

                self.state = 1242
                self.match(FandangoParser.COLON)
                self.state = 1244
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 8:
                    self.state = 1243
                    self.match(FandangoParser.NUMBER)

                self.state = 1246
                self.match(FandangoParser.COLON)
                self.state = 1248
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 8:
                    self.state = 1247
                    self.match(FandangoParser.NUMBER)

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class PythonContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def compound_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Compound_stmtContext, 0)

        def simple_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Simple_stmtContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_python

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPython"):
                return visitor.visitPython(self)
            else:
                return visitor.visitChildren(self)

    def python(self):

        localctx = FandangoParser.PythonContext(self, self._ctx, self.state)
        self.enterRule(localctx, 70, self.RULE_python)
        try:
            self.state = 1254
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [15, 19, 21, 28, 31, 36, 45, 47, 49, 110]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1252
                self.compound_stmt()
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                14,
                16,
                17,
                20,
                22,
                26,
                29,
                30,
                32,
                35,
                37,
                38,
                39,
                41,
                42,
                43,
                44,
                46,
                50,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                95,
                96,
                100,
                101,
                103,
            ]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1253
                self.simple_stmt()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Python_tagContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def stmt(self):
            return self.getTypedRuleContext(FandangoParser.StmtContext, 0)

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_python_tag

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPython_tag"):
                return visitor.visitPython_tag(self)
            else:
                return visitor.visitChildren(self)

    def python_tag(self):

        localctx = FandangoParser.Python_tagContext(self, self._ctx, self.state)
        self.enterRule(localctx, 72, self.RULE_python_tag)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1259
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 127:
                self.state = 1256
                self.match(FandangoParser.NEWLINE)
                self.state = 1261
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 1262
            self.stmt()
            self.state = 1266
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 127:
                self.state = 1263
                self.match(FandangoParser.NEWLINE)
                self.state = 1268
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Grammar_settingContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def SETTING(self):
            return self.getToken(FandangoParser.SETTING, 0)

        def grammar_setting_content(self):
            return self.getTypedRuleContext(
                FandangoParser.Grammar_setting_contentContext, 0
            )

        def INDENT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.INDENT)
            else:
                return self.getToken(FandangoParser.INDENT, i)

        def DEDENT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DEDENT)
            else:
                return self.getToken(FandangoParser.DEDENT, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_grammar_setting

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGrammar_setting"):
                return visitor.visitGrammar_setting(self)
            else:
                return visitor.visitChildren(self)

    def grammar_setting(self):

        localctx = FandangoParser.Grammar_settingContext(self, self._ctx, self.state)
        self.enterRule(localctx, 74, self.RULE_grammar_setting)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1272
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 1:
                self.state = 1269
                self.match(FandangoParser.INDENT)
                self.state = 1274
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 1275
            self.match(FandangoParser.SETTING)
            self.state = 1276
            self.grammar_setting_content()
            self.state = 1280
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 2:
                self.state = 1277
                self.match(FandangoParser.DEDENT)
                self.state = 1282
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Grammar_setting_contentContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def grammar_selector(self):
            return self.getTypedRuleContext(FandangoParser.Grammar_selectorContext, 0)

        def grammar_rule(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Grammar_ruleContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Grammar_ruleContext, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_grammar_setting_content

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGrammar_setting_content"):
                return visitor.visitGrammar_setting_content(self)
            else:
                return visitor.visitChildren(self)

    def grammar_setting_content(self):

        localctx = FandangoParser.Grammar_setting_contentContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 76, self.RULE_grammar_setting_content)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1283
            self.grammar_selector()
            self.state = 1287
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 110, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 1284
                    self.grammar_rule()
                self.state = 1289
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 110, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Grammar_selectorContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def nonterminal(self):
            return self.getTypedRuleContext(FandangoParser.NonterminalContext, 0)

        def ALL_WITH_TYPE(self):
            return self.getToken(FandangoParser.ALL_WITH_TYPE, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def NODE_TYPES(self):
            return self.getToken(FandangoParser.NODE_TYPES, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_grammar_selector

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGrammar_selector"):
                return visitor.visitGrammar_selector(self)
            else:
                return visitor.visitChildren(self)

    def grammar_selector(self):

        localctx = FandangoParser.Grammar_selectorContext(self, self._ctx, self.state)
        self.enterRule(localctx, 78, self.RULE_grammar_selector)
        try:
            self.state = 1296
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [103]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1290
                self.nonterminal()
                pass
            elif token in [59]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1291
                self.match(FandangoParser.ALL_WITH_TYPE)
                self.state = 1292
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1293
                self.match(FandangoParser.NODE_TYPES)
                self.state = 1294
                self.match(FandangoParser.CLOSE_PAREN)
                pass
            elif token in [80]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1295
                self.match(FandangoParser.STAR)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Grammar_ruleContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def grammar_setting_key(self):
            return self.getTypedRuleContext(
                FandangoParser.Grammar_setting_keyContext, 0
            )

        def grammar_setting_value(self):
            return self.getTypedRuleContext(
                FandangoParser.Grammar_setting_valueContext, 0
            )

        def SPACES(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.SPACES)
            else:
                return self.getToken(FandangoParser.SPACES, i)

        def ASSIGN(self):
            return self.getToken(FandangoParser.ASSIGN, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_grammar_rule

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGrammar_rule"):
                return visitor.visitGrammar_rule(self)
            else:
                return visitor.visitChildren(self)

    def grammar_rule(self):

        localctx = FandangoParser.Grammar_ruleContext(self, self._ctx, self.state)
        self.enterRule(localctx, 80, self.RULE_grammar_rule)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1298
            self.grammar_setting_key()
            self.state = 1300
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 112, self._ctx)
            if la_ == 1:
                self.state = 1299
                self.match(FandangoParser.SPACES)

            self.state = 1303
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 87:
                self.state = 1302
                self.match(FandangoParser.ASSIGN)

            self.state = 1306
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 129:
                self.state = 1305
                self.match(FandangoParser.SPACES)

            self.state = 1308
            self.grammar_setting_value()
            self.state = 1310
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 129:
                self.state = 1309
                self.match(FandangoParser.SPACES)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Grammar_setting_keyContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NAME(self):
            return self.getToken(FandangoParser.NAME, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_grammar_setting_key

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGrammar_setting_key"):
                return visitor.visitGrammar_setting_key(self)
            else:
                return visitor.visitChildren(self)

    def grammar_setting_key(self):

        localctx = FandangoParser.Grammar_setting_keyContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 82, self.RULE_grammar_setting_key)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1312
            self.match(FandangoParser.NAME)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Grammar_setting_valueContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def literal_expr(self):
            return self.getTypedRuleContext(FandangoParser.Literal_exprContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_grammar_setting_value

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGrammar_setting_value"):
                return visitor.visitGrammar_setting_value(self)
            else:
                return visitor.visitChildren(self)

    def grammar_setting_value(self):

        localctx = FandangoParser.Grammar_setting_valueContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 84, self.RULE_grammar_setting_value)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1314
            self.literal_expr()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Python_fileContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def statements(self):
            return self.getTypedRuleContext(FandangoParser.StatementsContext, 0)

        def EOF(self):
            return self.getToken(FandangoParser.EOF, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_python_file

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPython_file"):
                return visitor.visitPython_file(self)
            else:
                return visitor.visitChildren(self)

    def python_file(self):

        localctx = FandangoParser.Python_fileContext(self, self._ctx, self.state)
        self.enterRule(localctx, 86, self.RULE_python_file)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1317
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (((_la) & ~0x3F) == 0 and ((1 << _la) & 2560013787708768760) != 0) or (
                (((_la - 77)) & ~0x3F) == 0
                and ((1 << (_la - 77)) & 1125908589849113) != 0
            ):
                self.state = 1316
                self.statements()

            self.state = 1320
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 117, self._ctx)
            if la_ == 1:
                self.state = 1319
                self.match(FandangoParser.EOF)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class InteractiveContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def statement_newline(self):
            return self.getTypedRuleContext(FandangoParser.Statement_newlineContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_interactive

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitInteractive"):
                return visitor.visitInteractive(self)
            else:
                return visitor.visitChildren(self)

    def interactive(self):

        localctx = FandangoParser.InteractiveContext(self, self._ctx, self.state)
        self.enterRule(localctx, 88, self.RULE_interactive)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1322
            self.statement_newline()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class EvalContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def expressions(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionsContext, 0)

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def EOF(self):
            return self.getToken(FandangoParser.EOF, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_eval

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitEval"):
                return visitor.visitEval(self)
            else:
                return visitor.visitChildren(self)

    def eval_(self):

        localctx = FandangoParser.EvalContext(self, self._ctx, self.state)
        self.enterRule(localctx, 90, self.RULE_eval)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1324
            self.expressions()
            self.state = 1328
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 127:
                self.state = 1325
                self.match(FandangoParser.NEWLINE)
                self.state = 1330
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 1332
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 119, self._ctx)
            if la_ == 1:
                self.state = 1331
                self.match(FandangoParser.EOF)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Func_typeContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def ARROW(self):
            return self.getToken(FandangoParser.ARROW, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def type_expressions(self):
            return self.getTypedRuleContext(FandangoParser.Type_expressionsContext, 0)

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def EOF(self):
            return self.getToken(FandangoParser.EOF, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_func_type

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFunc_type"):
                return visitor.visitFunc_type(self)
            else:
                return visitor.visitChildren(self)

    def func_type(self):

        localctx = FandangoParser.Func_typeContext(self, self._ctx, self.state)
        self.enterRule(localctx, 92, self.RULE_func_type)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1334
            self.match(FandangoParser.OPEN_PAREN)
            self.state = 1336
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0) or (
                (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
            ):
                self.state = 1335
                self.type_expressions()

            self.state = 1338
            self.match(FandangoParser.CLOSE_PAREN)
            self.state = 1339
            self.match(FandangoParser.ARROW)
            self.state = 1340
            self.expression()
            self.state = 1344
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 127:
                self.state = 1341
                self.match(FandangoParser.NEWLINE)
                self.state = 1346
                self._errHandler.sync(self)
                _la = self._input.LA(1)

            self.state = 1348
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 122, self._ctx)
            if la_ == 1:
                self.state = 1347
                self.match(FandangoParser.EOF)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class StatementsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def stmt(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.StmtContext)
            else:
                return self.getTypedRuleContext(FandangoParser.StmtContext, i)

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_statements

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStatements"):
                return visitor.visitStatements(self)
            else:
                return visitor.visitChildren(self)

    def statements(self):

        localctx = FandangoParser.StatementsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 94, self.RULE_statements)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1352
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while True:
                self.state = 1352
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    14,
                    15,
                    16,
                    17,
                    19,
                    20,
                    21,
                    22,
                    26,
                    28,
                    29,
                    30,
                    31,
                    32,
                    35,
                    36,
                    37,
                    38,
                    39,
                    41,
                    42,
                    43,
                    44,
                    45,
                    46,
                    47,
                    49,
                    50,
                    55,
                    56,
                    57,
                    61,
                    77,
                    80,
                    81,
                    86,
                    88,
                    90,
                    95,
                    96,
                    100,
                    101,
                    103,
                    110,
                ]:
                    self.state = 1350
                    self.stmt()
                    pass
                elif token in [127]:
                    self.state = 1351
                    self.match(FandangoParser.NEWLINE)
                    pass
                else:
                    raise NoViableAltException(self)

                self.state = 1354
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if not (
                    (((_la) & ~0x3F) == 0 and ((1 << _la) & 2560013787708768760) != 0)
                    or (
                        (((_la - 77)) & ~0x3F) == 0
                        and ((1 << (_la - 77)) & 1125908589849113) != 0
                    )
                ):
                    break

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class StmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def compound_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Compound_stmtContext, 0)

        def simple_stmts(self):
            return self.getTypedRuleContext(FandangoParser.Simple_stmtsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStmt"):
                return visitor.visitStmt(self)
            else:
                return visitor.visitChildren(self)

    def stmt(self):

        localctx = FandangoParser.StmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 96, self.RULE_stmt)
        try:
            self.state = 1358
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [15, 19, 21, 28, 31, 36, 45, 47, 49, 110]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1356
                self.compound_stmt()
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                14,
                16,
                17,
                20,
                22,
                26,
                29,
                30,
                32,
                35,
                37,
                38,
                39,
                41,
                42,
                43,
                44,
                46,
                50,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                95,
                96,
                100,
                101,
                103,
            ]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1357
                self.simple_stmts()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Statement_newlineContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def compound_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Compound_stmtContext, 0)

        def NEWLINE(self):
            return self.getToken(FandangoParser.NEWLINE, 0)

        def simple_stmts(self):
            return self.getTypedRuleContext(FandangoParser.Simple_stmtsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_statement_newline

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStatement_newline"):
                return visitor.visitStatement_newline(self)
            else:
                return visitor.visitChildren(self)

    def statement_newline(self):

        localctx = FandangoParser.Statement_newlineContext(self, self._ctx, self.state)
        self.enterRule(localctx, 98, self.RULE_statement_newline)
        try:
            self.state = 1365
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [15, 19, 21, 28, 31, 36, 45, 47, 49, 110]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1360
                self.compound_stmt()
                self.state = 1361
                self.match(FandangoParser.NEWLINE)
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                14,
                16,
                17,
                20,
                22,
                26,
                29,
                30,
                32,
                35,
                37,
                38,
                39,
                41,
                42,
                43,
                44,
                46,
                50,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                95,
                96,
                100,
                101,
                103,
            ]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1363
                self.simple_stmts()
                pass
            elif token in [127]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1364
                self.match(FandangoParser.NEWLINE)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Simple_stmtsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def simple_stmt(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Simple_stmtContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Simple_stmtContext, i)

        def EOF(self):
            return self.getToken(FandangoParser.EOF, 0)

        def SEMI_COLON(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.SEMI_COLON)
            else:
                return self.getToken(FandangoParser.SEMI_COLON, i)

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_simple_stmts

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSimple_stmts"):
                return visitor.visitSimple_stmts(self)
            else:
                return visitor.visitChildren(self)

    def simple_stmts(self):

        localctx = FandangoParser.Simple_stmtsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 100, self.RULE_simple_stmts)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1367
            self.simple_stmt()
            self.state = 1372
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 127, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 1368
                    self.match(FandangoParser.SEMI_COLON)
                    self.state = 1369
                    self.simple_stmt()
                self.state = 1374
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 127, self._ctx)

            self.state = 1376
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 85:
                self.state = 1375
                self.match(FandangoParser.SEMI_COLON)

            self.state = 1390
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 131, self._ctx)
            if la_ == 1:
                self.state = 1379
                self._errHandler.sync(self)
                _alt = 1
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 1378
                        self.match(FandangoParser.NEWLINE)

                    else:
                        raise NoViableAltException(self)
                    self.state = 1381
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 129, self._ctx)

                pass

            elif la_ == 2:
                self.state = 1386
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 127:
                    self.state = 1383
                    self.match(FandangoParser.NEWLINE)
                    self.state = 1388
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 1389
                self.match(FandangoParser.EOF)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Simple_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def assignment(self):
            return self.getTypedRuleContext(FandangoParser.AssignmentContext, 0)

        def type_alias(self):
            return self.getTypedRuleContext(FandangoParser.Type_aliasContext, 0)

        def star_expressions(self):
            return self.getTypedRuleContext(FandangoParser.Star_expressionsContext, 0)

        def return_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Return_stmtContext, 0)

        def import_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Import_stmtContext, 0)

        def raise_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Raise_stmtContext, 0)

        def PASS(self):
            return self.getToken(FandangoParser.PASS, 0)

        def del_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Del_stmtContext, 0)

        def yield_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Yield_stmtContext, 0)

        def assert_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Assert_stmtContext, 0)

        def BREAK(self):
            return self.getToken(FandangoParser.BREAK, 0)

        def CONTINUE(self):
            return self.getToken(FandangoParser.CONTINUE, 0)

        def global_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Global_stmtContext, 0)

        def nonlocal_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Nonlocal_stmtContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_simple_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSimple_stmt"):
                return visitor.visitSimple_stmt(self)
            else:
                return visitor.visitChildren(self)

    def simple_stmt(self):

        localctx = FandangoParser.Simple_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 102, self.RULE_simple_stmt)
        try:
            self.state = 1406
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 132, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1392
                self.assignment()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1393
                self.type_alias()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1394
                self.star_expressions()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 1395
                self.return_stmt()
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 1396
                self.import_stmt()
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 1397
                self.raise_stmt()
                pass

            elif la_ == 7:
                self.enterOuterAlt(localctx, 7)
                self.state = 1398
                self.match(FandangoParser.PASS)
                pass

            elif la_ == 8:
                self.enterOuterAlt(localctx, 8)
                self.state = 1399
                self.del_stmt()
                pass

            elif la_ == 9:
                self.enterOuterAlt(localctx, 9)
                self.state = 1400
                self.yield_stmt()
                pass

            elif la_ == 10:
                self.enterOuterAlt(localctx, 10)
                self.state = 1401
                self.assert_stmt()
                pass

            elif la_ == 11:
                self.enterOuterAlt(localctx, 11)
                self.state = 1402
                self.match(FandangoParser.BREAK)
                pass

            elif la_ == 12:
                self.enterOuterAlt(localctx, 12)
                self.state = 1403
                self.match(FandangoParser.CONTINUE)
                pass

            elif la_ == 13:
                self.enterOuterAlt(localctx, 13)
                self.state = 1404
                self.global_stmt()
                pass

            elif la_ == 14:
                self.enterOuterAlt(localctx, 14)
                self.state = 1405
                self.nonlocal_stmt()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Compound_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def function_def(self):
            return self.getTypedRuleContext(FandangoParser.Function_defContext, 0)

        def if_stmt(self):
            return self.getTypedRuleContext(FandangoParser.If_stmtContext, 0)

        def class_def(self):
            return self.getTypedRuleContext(FandangoParser.Class_defContext, 0)

        def with_stmt(self):
            return self.getTypedRuleContext(FandangoParser.With_stmtContext, 0)

        def for_stmt(self):
            return self.getTypedRuleContext(FandangoParser.For_stmtContext, 0)

        def try_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Try_stmtContext, 0)

        def while_stmt(self):
            return self.getTypedRuleContext(FandangoParser.While_stmtContext, 0)

        def match_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Match_stmtContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_compound_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitCompound_stmt"):
                return visitor.visitCompound_stmt(self)
            else:
                return visitor.visitChildren(self)

    def compound_stmt(self):

        localctx = FandangoParser.Compound_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 104, self.RULE_compound_stmt)
        try:
            self.state = 1416
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 133, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1408
                self.function_def()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1409
                self.if_stmt()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1410
                self.class_def()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 1411
                self.with_stmt()
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 1412
                self.for_stmt()
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 1413
                self.try_stmt()
                pass

            elif la_ == 7:
                self.enterOuterAlt(localctx, 7)
                self.state = 1414
                self.while_stmt()
                pass

            elif la_ == 8:
                self.enterOuterAlt(localctx, 8)
                self.state = 1415
                self.match_stmt()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class AssignmentContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ASSIGN)
            else:
                return self.getToken(FandangoParser.ASSIGN, i)

        def annotated_rhs(self):
            return self.getTypedRuleContext(FandangoParser.Annotated_rhsContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def single_target(self):
            return self.getTypedRuleContext(FandangoParser.Single_targetContext, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def single_subscript_attribute_target(self):
            return self.getTypedRuleContext(
                FandangoParser.Single_subscript_attribute_targetContext, 0
            )

        def yield_expr(self):
            return self.getTypedRuleContext(FandangoParser.Yield_exprContext, 0)

        def star_expressions(self):
            return self.getTypedRuleContext(FandangoParser.Star_expressionsContext, 0)

        def star_targets(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Star_targetsContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Star_targetsContext, i)

        def augassign(self):
            return self.getTypedRuleContext(FandangoParser.AugassignContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_assignment

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAssignment"):
                return visitor.visitAssignment(self)
            else:
                return visitor.visitChildren(self)

    def assignment(self):

        localctx = FandangoParser.AssignmentContext(self, self._ctx, self.state)
        self.enterRule(localctx, 106, self.RULE_assignment)
        self._la = 0  # Token type
        try:
            self.state = 1455
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 140, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1418
                self.identifier()
                self.state = 1419
                self.match(FandangoParser.COLON)
                self.state = 1420
                self.expression()
                self.state = 1423
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 87:
                    self.state = 1421
                    self.match(FandangoParser.ASSIGN)
                    self.state = 1422
                    self.annotated_rhs()

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1430
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input, 135, self._ctx)
                if la_ == 1:
                    self.state = 1425
                    self.match(FandangoParser.OPEN_PAREN)
                    self.state = 1426
                    self.single_target()
                    self.state = 1427
                    self.match(FandangoParser.CLOSE_PAREN)
                    pass

                elif la_ == 2:
                    self.state = 1429
                    self.single_subscript_attribute_target()
                    pass

                self.state = 1432
                self.match(FandangoParser.COLON)
                self.state = 1433
                self.expression()
                self.state = 1436
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 87:
                    self.state = 1434
                    self.match(FandangoParser.ASSIGN)
                    self.state = 1435
                    self.annotated_rhs()

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1441
                self._errHandler.sync(self)
                _alt = 1
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 1438
                        self.star_targets()
                        self.state = 1439
                        self.match(FandangoParser.ASSIGN)

                    else:
                        raise NoViableAltException(self)
                    self.state = 1443
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 137, self._ctx)

                self.state = 1447
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [50]:
                    self.state = 1445
                    self.yield_expr()
                    pass
                elif token in [
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    16,
                    26,
                    35,
                    37,
                    39,
                    44,
                    55,
                    56,
                    57,
                    61,
                    77,
                    80,
                    81,
                    86,
                    88,
                    90,
                    95,
                    96,
                    100,
                    101,
                    103,
                ]:
                    self.state = 1446
                    self.star_expressions()
                    pass
                else:
                    raise NoViableAltException(self)

                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 1449
                self.single_target()
                self.state = 1450
                self.augassign()
                self.state = 1453
                self._errHandler.sync(self)
                token = self._input.LA(1)
                if token in [50]:
                    self.state = 1451
                    self.yield_expr()
                    pass
                elif token in [
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    16,
                    26,
                    35,
                    37,
                    39,
                    44,
                    55,
                    56,
                    57,
                    61,
                    77,
                    80,
                    81,
                    86,
                    88,
                    90,
                    95,
                    96,
                    100,
                    101,
                    103,
                ]:
                    self.state = 1452
                    self.star_expressions()
                    pass
                else:
                    raise NoViableAltException(self)

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Annotated_rhsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def yield_expr(self):
            return self.getTypedRuleContext(FandangoParser.Yield_exprContext, 0)

        def star_expressions(self):
            return self.getTypedRuleContext(FandangoParser.Star_expressionsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_annotated_rhs

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAnnotated_rhs"):
                return visitor.visitAnnotated_rhs(self)
            else:
                return visitor.visitChildren(self)

    def annotated_rhs(self):

        localctx = FandangoParser.Annotated_rhsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 108, self.RULE_annotated_rhs)
        try:
            self.state = 1459
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [50]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1457
                self.yield_expr()
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                16,
                26,
                35,
                37,
                39,
                44,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                95,
                96,
                100,
                101,
                103,
            ]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1458
                self.star_expressions()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class AugassignContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def ADD_ASSIGN(self):
            return self.getToken(FandangoParser.ADD_ASSIGN, 0)

        def SUB_ASSIGN(self):
            return self.getToken(FandangoParser.SUB_ASSIGN, 0)

        def MULT_ASSIGN(self):
            return self.getToken(FandangoParser.MULT_ASSIGN, 0)

        def AT_ASSIGN(self):
            return self.getToken(FandangoParser.AT_ASSIGN, 0)

        def DIV_ASSIGN(self):
            return self.getToken(FandangoParser.DIV_ASSIGN, 0)

        def MOD_ASSIGN(self):
            return self.getToken(FandangoParser.MOD_ASSIGN, 0)

        def AND_ASSIGN(self):
            return self.getToken(FandangoParser.AND_ASSIGN, 0)

        def OR_ASSIGN(self):
            return self.getToken(FandangoParser.OR_ASSIGN, 0)

        def XOR_ASSIGN(self):
            return self.getToken(FandangoParser.XOR_ASSIGN, 0)

        def LEFT_SHIFT_ASSIGN(self):
            return self.getToken(FandangoParser.LEFT_SHIFT_ASSIGN, 0)

        def RIGHT_SHIFT_ASSIGN(self):
            return self.getToken(FandangoParser.RIGHT_SHIFT_ASSIGN, 0)

        def POWER_ASSIGN(self):
            return self.getToken(FandangoParser.POWER_ASSIGN, 0)

        def IDIV_ASSIGN(self):
            return self.getToken(FandangoParser.IDIV_ASSIGN, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_augassign

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAugassign"):
                return visitor.visitAugassign(self)
            else:
                return visitor.visitChildren(self)

    def augassign(self):

        localctx = FandangoParser.AugassignContext(self, self._ctx, self.state)
        self.enterRule(localctx, 110, self.RULE_augassign)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1461
            _la = self._input.LA(1)
            if not (
                ((((_la - 112)) & ~0x3F) == 0 and ((1 << (_la - 112)) & 8191) != 0)
            ):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Return_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def RETURN(self):
            return self.getToken(FandangoParser.RETURN, 0)

        def star_expressions(self):
            return self.getTypedRuleContext(FandangoParser.Star_expressionsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_return_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitReturn_stmt"):
                return visitor.visitReturn_stmt(self)
            else:
                return visitor.visitChildren(self)

    def return_stmt(self):

        localctx = FandangoParser.Return_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 112, self.RULE_return_stmt)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1463
            self.match(FandangoParser.RETURN)
            self.state = 1465
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 142, self._ctx)
            if la_ == 1:
                self.state = 1464
                self.star_expressions()

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Raise_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def RAISE(self):
            return self.getToken(FandangoParser.RAISE, 0)

        def expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ExpressionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ExpressionContext, i)

        def FROM(self):
            return self.getToken(FandangoParser.FROM, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_raise_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitRaise_stmt"):
                return visitor.visitRaise_stmt(self)
            else:
                return visitor.visitChildren(self)

    def raise_stmt(self):

        localctx = FandangoParser.Raise_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 114, self.RULE_raise_stmt)
        try:
            self.state = 1474
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 144, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1467
                self.match(FandangoParser.RAISE)
                self.state = 1468
                self.expression()
                self.state = 1471
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input, 143, self._ctx)
                if la_ == 1:
                    self.state = 1469
                    self.match(FandangoParser.FROM)
                    self.state = 1470
                    self.expression()

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1473
                self.match(FandangoParser.RAISE)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Global_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def GLOBAL(self):
            return self.getToken(FandangoParser.GLOBAL, 0)

        def identifier(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.IdentifierContext)
            else:
                return self.getTypedRuleContext(FandangoParser.IdentifierContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_global_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGlobal_stmt"):
                return visitor.visitGlobal_stmt(self)
            else:
                return visitor.visitChildren(self)

    def global_stmt(self):

        localctx = FandangoParser.Global_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 116, self.RULE_global_stmt)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1476
            self.match(FandangoParser.GLOBAL)
            self.state = 1477
            self.identifier()
            self.state = 1482
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 83:
                self.state = 1478
                self.match(FandangoParser.COMMA)
                self.state = 1479
                self.identifier()
                self.state = 1484
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Nonlocal_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NONLOCAL(self):
            return self.getToken(FandangoParser.NONLOCAL, 0)

        def identifier(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.IdentifierContext)
            else:
                return self.getTypedRuleContext(FandangoParser.IdentifierContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_nonlocal_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitNonlocal_stmt"):
                return visitor.visitNonlocal_stmt(self)
            else:
                return visitor.visitChildren(self)

    def nonlocal_stmt(self):

        localctx = FandangoParser.Nonlocal_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 118, self.RULE_nonlocal_stmt)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1485
            self.match(FandangoParser.NONLOCAL)
            self.state = 1486
            self.identifier()
            self.state = 1491
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 83:
                self.state = 1487
                self.match(FandangoParser.COMMA)
                self.state = 1488
                self.identifier()
                self.state = 1493
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Del_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def DEL(self):
            return self.getToken(FandangoParser.DEL, 0)

        def del_targets(self):
            return self.getTypedRuleContext(FandangoParser.Del_targetsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_del_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDel_stmt"):
                return visitor.visitDel_stmt(self)
            else:
                return visitor.visitChildren(self)

    def del_stmt(self):

        localctx = FandangoParser.Del_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 120, self.RULE_del_stmt)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1494
            self.match(FandangoParser.DEL)
            self.state = 1495
            self.del_targets()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Yield_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def yield_expr(self):
            return self.getTypedRuleContext(FandangoParser.Yield_exprContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_yield_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitYield_stmt"):
                return visitor.visitYield_stmt(self)
            else:
                return visitor.visitChildren(self)

    def yield_stmt(self):

        localctx = FandangoParser.Yield_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 122, self.RULE_yield_stmt)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1497
            self.yield_expr()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Assert_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def ASSERT(self):
            return self.getToken(FandangoParser.ASSERT, 0)

        def expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ExpressionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ExpressionContext, i)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_assert_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAssert_stmt"):
                return visitor.visitAssert_stmt(self)
            else:
                return visitor.visitChildren(self)

    def assert_stmt(self):

        localctx = FandangoParser.Assert_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 124, self.RULE_assert_stmt)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1499
            self.match(FandangoParser.ASSERT)
            self.state = 1500
            self.expression()
            self.state = 1503
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 1501
                self.match(FandangoParser.COMMA)
                self.state = 1502
                self.expression()

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Import_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def import_name(self):
            return self.getTypedRuleContext(FandangoParser.Import_nameContext, 0)

        def import_from(self):
            return self.getTypedRuleContext(FandangoParser.Import_fromContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_import_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitImport_stmt"):
                return visitor.visitImport_stmt(self)
            else:
                return visitor.visitChildren(self)

    def import_stmt(self):

        localctx = FandangoParser.Import_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 126, self.RULE_import_stmt)
        try:
            self.state = 1507
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [32]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1505
                self.import_name()
                pass
            elif token in [29]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1506
                self.import_from()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Import_nameContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def IMPORT(self):
            return self.getToken(FandangoParser.IMPORT, 0)

        def dotted_as_names(self):
            return self.getTypedRuleContext(FandangoParser.Dotted_as_namesContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_import_name

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitImport_name"):
                return visitor.visitImport_name(self)
            else:
                return visitor.visitChildren(self)

    def import_name(self):

        localctx = FandangoParser.Import_nameContext(self, self._ctx, self.state)
        self.enterRule(localctx, 128, self.RULE_import_name)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1509
            self.match(FandangoParser.IMPORT)
            self.state = 1510
            self.dotted_as_names()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Import_fromContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def FROM(self):
            return self.getToken(FandangoParser.FROM, 0)

        def dotted_name(self):
            return self.getTypedRuleContext(FandangoParser.Dotted_nameContext, 0)

        def IMPORT(self):
            return self.getToken(FandangoParser.IMPORT, 0)

        def import_from_targets(self):
            return self.getTypedRuleContext(
                FandangoParser.Import_from_targetsContext, 0
            )

        def DOT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DOT)
            else:
                return self.getToken(FandangoParser.DOT, i)

        def ELLIPSIS(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ELLIPSIS)
            else:
                return self.getToken(FandangoParser.ELLIPSIS, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_import_from

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitImport_from"):
                return visitor.visitImport_from(self)
            else:
                return visitor.visitChildren(self)

    def import_from(self):

        localctx = FandangoParser.Import_fromContext(self, self._ctx, self.state)
        self.enterRule(localctx, 130, self.RULE_import_from)
        self._la = 0  # Token type
        try:
            self.state = 1531
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 151, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1512
                self.match(FandangoParser.FROM)
                self.state = 1516
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 77 or _la == 79:
                    self.state = 1513
                    _la = self._input.LA(1)
                    if not (_la == 77 or _la == 79):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()
                    self.state = 1518
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 1519
                self.dotted_name(0)
                self.state = 1520
                self.match(FandangoParser.IMPORT)
                self.state = 1521
                self.import_from_targets()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1523
                self.match(FandangoParser.FROM)
                self.state = 1525
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while True:
                    self.state = 1524
                    _la = self._input.LA(1)
                    if not (_la == 77 or _la == 79):
                        self._errHandler.recoverInline(self)
                    else:
                        self._errHandler.reportMatch(self)
                        self.consume()
                    self.state = 1527
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if not (_la == 77 or _la == 79):
                        break

                self.state = 1529
                self.match(FandangoParser.IMPORT)
                self.state = 1530
                self.import_from_targets()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Import_from_targetsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def import_from_as_names(self):
            return self.getTypedRuleContext(
                FandangoParser.Import_from_as_namesContext, 0
            )

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_import_from_targets

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitImport_from_targets"):
                return visitor.visitImport_from_targets(self)
            else:
                return visitor.visitChildren(self)

    def import_from_targets(self):

        localctx = FandangoParser.Import_from_targetsContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 132, self.RULE_import_from_targets)
        self._la = 0  # Token type
        try:
            self.state = 1542
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [81]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1533
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1534
                self.import_from_as_names()
                self.state = 1536
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 1535
                    self.match(FandangoParser.COMMA)

                self.state = 1538
                self.match(FandangoParser.CLOSE_PAREN)
                pass
            elif token in [55, 56, 57, 61]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1540
                self.import_from_as_names()
                pass
            elif token in [80]:
                self.enterOuterAlt(localctx, 3)
                self.state = 1541
                self.match(FandangoParser.STAR)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Import_from_as_namesContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def import_from_as_name(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Import_from_as_nameContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Import_from_as_nameContext, i
                )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_import_from_as_names

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitImport_from_as_names"):
                return visitor.visitImport_from_as_names(self)
            else:
                return visitor.visitChildren(self)

    def import_from_as_names(self):

        localctx = FandangoParser.Import_from_as_namesContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 134, self.RULE_import_from_as_names)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1544
            self.import_from_as_name()
            self.state = 1549
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 154, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 1545
                    self.match(FandangoParser.COMMA)
                    self.state = 1546
                    self.import_from_as_name()
                self.state = 1551
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 154, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Import_from_as_nameContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.IdentifierContext)
            else:
                return self.getTypedRuleContext(FandangoParser.IdentifierContext, i)

        def AS(self):
            return self.getToken(FandangoParser.AS, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_import_from_as_name

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitImport_from_as_name"):
                return visitor.visitImport_from_as_name(self)
            else:
                return visitor.visitChildren(self)

    def import_from_as_name(self):

        localctx = FandangoParser.Import_from_as_nameContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 136, self.RULE_import_from_as_name)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1552
            self.identifier()
            self.state = 1555
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 13:
                self.state = 1553
                self.match(FandangoParser.AS)
                self.state = 1554
                self.identifier()

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Dotted_as_namesContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def dotted_as_name(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Dotted_as_nameContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Dotted_as_nameContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_dotted_as_names

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDotted_as_names"):
                return visitor.visitDotted_as_names(self)
            else:
                return visitor.visitChildren(self)

    def dotted_as_names(self):

        localctx = FandangoParser.Dotted_as_namesContext(self, self._ctx, self.state)
        self.enterRule(localctx, 138, self.RULE_dotted_as_names)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1557
            self.dotted_as_name()
            self.state = 1562
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 83:
                self.state = 1558
                self.match(FandangoParser.COMMA)
                self.state = 1559
                self.dotted_as_name()
                self.state = 1564
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Dotted_as_nameContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def dotted_name(self):
            return self.getTypedRuleContext(FandangoParser.Dotted_nameContext, 0)

        def AS(self):
            return self.getToken(FandangoParser.AS, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_dotted_as_name

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDotted_as_name"):
                return visitor.visitDotted_as_name(self)
            else:
                return visitor.visitChildren(self)

    def dotted_as_name(self):

        localctx = FandangoParser.Dotted_as_nameContext(self, self._ctx, self.state)
        self.enterRule(localctx, 140, self.RULE_dotted_as_name)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1565
            self.dotted_name(0)
            self.state = 1568
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 13:
                self.state = 1566
                self.match(FandangoParser.AS)
                self.state = 1567
                self.identifier()

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Dotted_nameContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def dotted_name(self):
            return self.getTypedRuleContext(FandangoParser.Dotted_nameContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_dotted_name

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDotted_name"):
                return visitor.visitDotted_name(self)
            else:
                return visitor.visitChildren(self)

    def dotted_name(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.Dotted_nameContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 142
        self.enterRecursionRule(localctx, 142, self.RULE_dotted_name, _p)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1571
            self.identifier()
            self._ctx.stop = self._input.LT(-1)
            self.state = 1578
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 158, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    localctx = FandangoParser.Dotted_nameContext(
                        self, _parentctx, _parentState
                    )
                    self.pushNewRecursionContext(
                        localctx, _startState, self.RULE_dotted_name
                    )
                    self.state = 1573
                    if not self.precpred(self._ctx, 2):
                        from antlr4.error.Errors import FailedPredicateException

                        raise FailedPredicateException(
                            self, "self.precpred(self._ctx, 2)"
                        )
                    self.state = 1574
                    self.match(FandangoParser.DOT)
                    self.state = 1575
                    self.identifier()
                self.state = 1580
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 158, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class BlockContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NEWLINE(self):
            return self.getToken(FandangoParser.NEWLINE, 0)

        def INDENT(self):
            return self.getToken(FandangoParser.INDENT, 0)

        def statements(self):
            return self.getTypedRuleContext(FandangoParser.StatementsContext, 0)

        def DEDENT(self):
            return self.getToken(FandangoParser.DEDENT, 0)

        def simple_stmts(self):
            return self.getTypedRuleContext(FandangoParser.Simple_stmtsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_block

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitBlock"):
                return visitor.visitBlock(self)
            else:
                return visitor.visitChildren(self)

    def block(self):

        localctx = FandangoParser.BlockContext(self, self._ctx, self.state)
        self.enterRule(localctx, 144, self.RULE_block)
        try:
            self.state = 1587
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [127]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1581
                self.match(FandangoParser.NEWLINE)
                self.state = 1582
                self.match(FandangoParser.INDENT)
                self.state = 1583
                self.statements()
                self.state = 1584
                self.match(FandangoParser.DEDENT)
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                14,
                16,
                17,
                20,
                22,
                26,
                29,
                30,
                32,
                35,
                37,
                38,
                39,
                41,
                42,
                43,
                44,
                46,
                50,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                95,
                96,
                100,
                101,
                103,
            ]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1586
                self.simple_stmts()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class DecoratorsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def AT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AT)
            else:
                return self.getToken(FandangoParser.AT, i)

        def named_expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Named_expressionContext)
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Named_expressionContext, i
                )

        def NEWLINE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NEWLINE)
            else:
                return self.getToken(FandangoParser.NEWLINE, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_decorators

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDecorators"):
                return visitor.visitDecorators(self)
            else:
                return visitor.visitChildren(self)

    def decorators(self):

        localctx = FandangoParser.DecoratorsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 146, self.RULE_decorators)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1593
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while True:
                self.state = 1589
                self.match(FandangoParser.AT)
                self.state = 1590
                self.named_expression()
                self.state = 1591
                self.match(FandangoParser.NEWLINE)
                self.state = 1595
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if not (_la == 110):
                    break

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Class_defContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def class_def_raw(self):
            return self.getTypedRuleContext(FandangoParser.Class_def_rawContext, 0)

        def decorators(self):
            return self.getTypedRuleContext(FandangoParser.DecoratorsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_class_def

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitClass_def"):
                return visitor.visitClass_def(self)
            else:
                return visitor.visitChildren(self)

    def class_def(self):

        localctx = FandangoParser.Class_defContext(self, self._ctx, self.state)
        self.enterRule(localctx, 148, self.RULE_class_def)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1598
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 110:
                self.state = 1597
                self.decorators()

            self.state = 1600
            self.class_def_raw()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Class_def_rawContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def CLASS(self):
            return self.getToken(FandangoParser.CLASS, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def type_params(self):
            return self.getTypedRuleContext(FandangoParser.Type_paramsContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def arguments(self):
            return self.getTypedRuleContext(FandangoParser.ArgumentsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_class_def_raw

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitClass_def_raw"):
                return visitor.visitClass_def_raw(self)
            else:
                return visitor.visitChildren(self)

    def class_def_raw(self):

        localctx = FandangoParser.Class_def_rawContext(self, self._ctx, self.state)
        self.enterRule(localctx, 150, self.RULE_class_def_raw)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1602
            self.match(FandangoParser.CLASS)
            self.state = 1603
            self.identifier()
            self.state = 1605
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 88:
                self.state = 1604
                self.type_params()

            self.state = 1612
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 81:
                self.state = 1607
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1609
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
                ):
                    self.state = 1608
                    self.arguments()

                self.state = 1611
                self.match(FandangoParser.CLOSE_PAREN)

            self.state = 1614
            self.match(FandangoParser.COLON)
            self.state = 1615
            self.block()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Function_defContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def function_def_raw(self):
            return self.getTypedRuleContext(FandangoParser.Function_def_rawContext, 0)

        def decorators(self):
            return self.getTypedRuleContext(FandangoParser.DecoratorsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_function_def

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFunction_def"):
                return visitor.visitFunction_def(self)
            else:
                return visitor.visitChildren(self)

    def function_def(self):

        localctx = FandangoParser.Function_defContext(self, self._ctx, self.state)
        self.enterRule(localctx, 152, self.RULE_function_def)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1618
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 110:
                self.state = 1617
                self.decorators()

            self.state = 1620
            self.function_def_raw()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Function_def_rawContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def DEF(self):
            return self.getToken(FandangoParser.DEF, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def ASYNC(self):
            return self.getToken(FandangoParser.ASYNC, 0)

        def type_params(self):
            return self.getTypedRuleContext(FandangoParser.Type_paramsContext, 0)

        def params(self):
            return self.getTypedRuleContext(FandangoParser.ParamsContext, 0)

        def ARROW(self):
            return self.getToken(FandangoParser.ARROW, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def func_type_comment(self):
            return self.getTypedRuleContext(FandangoParser.Func_type_commentContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_function_def_raw

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFunction_def_raw"):
                return visitor.visitFunction_def_raw(self)
            else:
                return visitor.visitChildren(self)

    def function_def_raw(self):

        localctx = FandangoParser.Function_def_rawContext(self, self._ctx, self.state)
        self.enterRule(localctx, 154, self.RULE_function_def_raw)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1623
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 15:
                self.state = 1622
                self.match(FandangoParser.ASYNC)

            self.state = 1625
            self.match(FandangoParser.DEF)
            self.state = 1626
            self.identifier()
            self.state = 1628
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 88:
                self.state = 1627
                self.type_params()

            self.state = 1630
            self.match(FandangoParser.OPEN_PAREN)
            self.state = 1632
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (((_la - 55)) & ~0x3F) == 0 and ((1 << (_la - 55)) & 2181038151) != 0:
                self.state = 1631
                self.params()

            self.state = 1634
            self.match(FandangoParser.CLOSE_PAREN)
            self.state = 1637
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 111:
                self.state = 1635
                self.match(FandangoParser.ARROW)
                self.state = 1636
                self.expression()

            self.state = 1639
            self.match(FandangoParser.COLON)
            self.state = 1641
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 170, self._ctx)
            if la_ == 1:
                self.state = 1640
                self.func_type_comment()

            self.state = 1643
            self.block()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ParamsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def parameters(self):
            return self.getTypedRuleContext(FandangoParser.ParametersContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_params

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitParams"):
                return visitor.visitParams(self)
            else:
                return visitor.visitChildren(self)

    def params(self):

        localctx = FandangoParser.ParamsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 156, self.RULE_params)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1645
            self.parameters()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ParametersContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def slash_no_default(self):
            return self.getTypedRuleContext(FandangoParser.Slash_no_defaultContext, 0)

        def param_no_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Param_no_defaultContext)
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Param_no_defaultContext, i
                )

        def param_with_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Param_with_defaultContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Param_with_defaultContext, i
                )

        def star_etc(self):
            return self.getTypedRuleContext(FandangoParser.Star_etcContext, 0)

        def slash_with_default(self):
            return self.getTypedRuleContext(FandangoParser.Slash_with_defaultContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_parameters

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitParameters"):
                return visitor.visitParameters(self)
            else:
                return visitor.visitChildren(self)

    def parameters(self):

        localctx = FandangoParser.ParametersContext(self, self._ctx, self.state)
        self.enterRule(localctx, 158, self.RULE_parameters)
        self._la = 0  # Token type
        try:
            self.state = 1696
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 181, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1647
                self.slash_no_default()
                self.state = 1651
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 171, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 1648
                        self.param_no_default()
                    self.state = 1653
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 171, self._ctx)

                self.state = 1657
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0:
                    self.state = 1654
                    self.param_with_default()
                    self.state = 1659
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 1661
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 80 or _la == 86:
                    self.state = 1660
                    self.star_etc()

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1663
                self.slash_with_default()
                self.state = 1667
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0:
                    self.state = 1664
                    self.param_with_default()
                    self.state = 1669
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 1671
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 80 or _la == 86:
                    self.state = 1670
                    self.star_etc()

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1674
                self._errHandler.sync(self)
                _alt = 1
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 1673
                        self.param_no_default()

                    else:
                        raise NoViableAltException(self)
                    self.state = 1676
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 176, self._ctx)

                self.state = 1681
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0:
                    self.state = 1678
                    self.param_with_default()
                    self.state = 1683
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 1685
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 80 or _la == 86:
                    self.state = 1684
                    self.star_etc()

                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 1688
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while True:
                    self.state = 1687
                    self.param_with_default()
                    self.state = 1690
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if not (
                        (
                            ((_la) & ~0x3F) == 0
                            and ((1 << _la) & 2558044588346441728) != 0
                        )
                    ):
                        break

                self.state = 1693
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 80 or _la == 86:
                    self.state = 1692
                    self.star_etc()

                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 1695
                self.star_etc()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Slash_no_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def DIV(self):
            return self.getToken(FandangoParser.DIV, 0)

        def param_no_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Param_no_defaultContext)
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Param_no_defaultContext, i
                )

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_slash_no_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSlash_no_default"):
                return visitor.visitSlash_no_default(self)
            else:
                return visitor.visitChildren(self)

    def slash_no_default(self):

        localctx = FandangoParser.Slash_no_defaultContext(self, self._ctx, self.state)
        self.enterRule(localctx, 160, self.RULE_slash_no_default)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1699
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while True:
                self.state = 1698
                self.param_no_default()
                self.state = 1701
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if not (
                    (((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0)
                ):
                    break

            self.state = 1703
            self.match(FandangoParser.DIV)
            self.state = 1705
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 1704
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Slash_with_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def DIV(self):
            return self.getToken(FandangoParser.DIV, 0)

        def param_no_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Param_no_defaultContext)
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Param_no_defaultContext, i
                )

        def param_with_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Param_with_defaultContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Param_with_defaultContext, i
                )

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_slash_with_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSlash_with_default"):
                return visitor.visitSlash_with_default(self)
            else:
                return visitor.visitChildren(self)

    def slash_with_default(self):

        localctx = FandangoParser.Slash_with_defaultContext(self, self._ctx, self.state)
        self.enterRule(localctx, 162, self.RULE_slash_with_default)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1710
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 184, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 1707
                    self.param_no_default()
                self.state = 1712
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 184, self._ctx)

            self.state = 1714
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while True:
                self.state = 1713
                self.param_with_default()
                self.state = 1716
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if not (
                    (((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0)
                ):
                    break

            self.state = 1718
            self.match(FandangoParser.DIV)
            self.state = 1720
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 1719
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_etcContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def param_no_default(self):
            return self.getTypedRuleContext(FandangoParser.Param_no_defaultContext, 0)

        def param_maybe_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Param_maybe_defaultContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Param_maybe_defaultContext, i
                )

        def kwds(self):
            return self.getTypedRuleContext(FandangoParser.KwdsContext, 0)

        def param_no_default_star_annotation(self):
            return self.getTypedRuleContext(
                FandangoParser.Param_no_default_star_annotationContext, 0
            )

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_etc

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_etc"):
                return visitor.visitStar_etc(self)
            else:
                return visitor.visitChildren(self)

    def star_etc(self):

        localctx = FandangoParser.Star_etcContext(self, self._ctx, self.state)
        self.enterRule(localctx, 164, self.RULE_star_etc)
        self._la = 0  # Token type
        try:
            self.state = 1755
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 193, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1722
                self.match(FandangoParser.STAR)
                self.state = 1723
                self.param_no_default()
                self.state = 1727
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0:
                    self.state = 1724
                    self.param_maybe_default()
                    self.state = 1729
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 1731
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 86:
                    self.state = 1730
                    self.kwds()

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1733
                self.match(FandangoParser.STAR)
                self.state = 1734
                self.param_no_default_star_annotation()
                self.state = 1738
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0:
                    self.state = 1735
                    self.param_maybe_default()
                    self.state = 1740
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 1742
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 86:
                    self.state = 1741
                    self.kwds()

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1744
                self.match(FandangoParser.STAR)
                self.state = 1745
                self.match(FandangoParser.COMMA)
                self.state = 1747
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while True:
                    self.state = 1746
                    self.param_maybe_default()
                    self.state = 1749
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if not (
                        (
                            ((_la) & ~0x3F) == 0
                            and ((1 << _la) & 2558044588346441728) != 0
                        )
                    ):
                        break

                self.state = 1752
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 86:
                    self.state = 1751
                    self.kwds()

                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 1754
                self.kwds()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class KwdsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def POWER(self):
            return self.getToken(FandangoParser.POWER, 0)

        def param_no_default(self):
            return self.getTypedRuleContext(FandangoParser.Param_no_defaultContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_kwds

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitKwds"):
                return visitor.visitKwds(self)
            else:
                return visitor.visitChildren(self)

    def kwds(self):

        localctx = FandangoParser.KwdsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 166, self.RULE_kwds)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1757
            self.match(FandangoParser.POWER)
            self.state = 1758
            self.param_no_default()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Param_no_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def param(self):
            return self.getTypedRuleContext(FandangoParser.ParamContext, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_param_no_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitParam_no_default"):
                return visitor.visitParam_no_default(self)
            else:
                return visitor.visitChildren(self)

    def param_no_default(self):

        localctx = FandangoParser.Param_no_defaultContext(self, self._ctx, self.state)
        self.enterRule(localctx, 168, self.RULE_param_no_default)
        try:
            self.state = 1764
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 194, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1760
                self.param()
                self.state = 1761
                self.match(FandangoParser.COMMA)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1763
                self.param()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Param_no_default_star_annotationContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def param_star_annotation(self):
            return self.getTypedRuleContext(
                FandangoParser.Param_star_annotationContext, 0
            )

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_param_no_default_star_annotation

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitParam_no_default_star_annotation"):
                return visitor.visitParam_no_default_star_annotation(self)
            else:
                return visitor.visitChildren(self)

    def param_no_default_star_annotation(self):

        localctx = FandangoParser.Param_no_default_star_annotationContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 170, self.RULE_param_no_default_star_annotation)
        try:
            self.state = 1770
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 195, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1766
                self.param_star_annotation()
                self.state = 1767
                self.match(FandangoParser.COMMA)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1769
                self.param_star_annotation()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Param_with_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def param(self):
            return self.getTypedRuleContext(FandangoParser.ParamContext, 0)

        def default(self):
            return self.getTypedRuleContext(FandangoParser.DefaultContext, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_param_with_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitParam_with_default"):
                return visitor.visitParam_with_default(self)
            else:
                return visitor.visitChildren(self)

    def param_with_default(self):

        localctx = FandangoParser.Param_with_defaultContext(self, self._ctx, self.state)
        self.enterRule(localctx, 172, self.RULE_param_with_default)
        try:
            self.state = 1779
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 196, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1772
                self.param()
                self.state = 1773
                self.default()
                self.state = 1774
                self.match(FandangoParser.COMMA)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1776
                self.param()
                self.state = 1777
                self.default()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Param_maybe_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def param(self):
            return self.getTypedRuleContext(FandangoParser.ParamContext, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def default(self):
            return self.getTypedRuleContext(FandangoParser.DefaultContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_param_maybe_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitParam_maybe_default"):
                return visitor.visitParam_maybe_default(self)
            else:
                return visitor.visitChildren(self)

    def param_maybe_default(self):

        localctx = FandangoParser.Param_maybe_defaultContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 174, self.RULE_param_maybe_default)
        self._la = 0  # Token type
        try:
            self.state = 1791
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 199, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1781
                self.param()
                self.state = 1783
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 87:
                    self.state = 1782
                    self.default()

                self.state = 1785
                self.match(FandangoParser.COMMA)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1787
                self.param()
                self.state = 1789
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 87:
                    self.state = 1788
                    self.default()

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ParamContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def annotation(self):
            return self.getTypedRuleContext(FandangoParser.AnnotationContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_param

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitParam"):
                return visitor.visitParam(self)
            else:
                return visitor.visitChildren(self)

    def param(self):

        localctx = FandangoParser.ParamContext(self, self._ctx, self.state)
        self.enterRule(localctx, 176, self.RULE_param)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1793
            self.identifier()
            self.state = 1795
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 84:
                self.state = 1794
                self.annotation()

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Param_star_annotationContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def star_annotation(self):
            return self.getTypedRuleContext(FandangoParser.Star_annotationContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_param_star_annotation

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitParam_star_annotation"):
                return visitor.visitParam_star_annotation(self)
            else:
                return visitor.visitChildren(self)

    def param_star_annotation(self):

        localctx = FandangoParser.Param_star_annotationContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 178, self.RULE_param_star_annotation)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1797
            self.identifier()
            self.state = 1798
            self.star_annotation()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class AnnotationContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_annotation

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAnnotation"):
                return visitor.visitAnnotation(self)
            else:
                return visitor.visitChildren(self)

    def annotation(self):

        localctx = FandangoParser.AnnotationContext(self, self._ctx, self.state)
        self.enterRule(localctx, 180, self.RULE_annotation)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1800
            self.match(FandangoParser.COLON)
            self.state = 1801
            self.expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_annotationContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def star_expression(self):
            return self.getTypedRuleContext(FandangoParser.Star_expressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_annotation

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_annotation"):
                return visitor.visitStar_annotation(self)
            else:
                return visitor.visitChildren(self)

    def star_annotation(self):

        localctx = FandangoParser.Star_annotationContext(self, self._ctx, self.state)
        self.enterRule(localctx, 182, self.RULE_star_annotation)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1803
            self.match(FandangoParser.COLON)
            self.state = 1804
            self.star_expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class DefaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def ASSIGN(self):
            return self.getToken(FandangoParser.ASSIGN, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDefault"):
                return visitor.visitDefault(self)
            else:
                return visitor.visitChildren(self)

    def default(self):

        localctx = FandangoParser.DefaultContext(self, self._ctx, self.state)
        self.enterRule(localctx, 184, self.RULE_default)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1806
            self.match(FandangoParser.ASSIGN)
            self.state = 1807
            self.expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class If_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def IF(self):
            return self.getToken(FandangoParser.IF, 0)

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def elif_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Elif_stmtContext, 0)

        def else_block(self):
            return self.getTypedRuleContext(FandangoParser.Else_blockContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_if_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitIf_stmt"):
                return visitor.visitIf_stmt(self)
            else:
                return visitor.visitChildren(self)

    def if_stmt(self):

        localctx = FandangoParser.If_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 186, self.RULE_if_stmt)
        self._la = 0  # Token type
        try:
            self.state = 1822
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 202, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1809
                self.match(FandangoParser.IF)
                self.state = 1810
                self.named_expression()
                self.state = 1811
                self.match(FandangoParser.COLON)
                self.state = 1812
                self.block()
                self.state = 1813
                self.elif_stmt()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1815
                self.match(FandangoParser.IF)
                self.state = 1816
                self.named_expression()
                self.state = 1817
                self.match(FandangoParser.COLON)
                self.state = 1818
                self.block()
                self.state = 1820
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 24:
                    self.state = 1819
                    self.else_block()

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Elif_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def ELIF(self):
            return self.getToken(FandangoParser.ELIF, 0)

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def elif_stmt(self):
            return self.getTypedRuleContext(FandangoParser.Elif_stmtContext, 0)

        def else_block(self):
            return self.getTypedRuleContext(FandangoParser.Else_blockContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_elif_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitElif_stmt"):
                return visitor.visitElif_stmt(self)
            else:
                return visitor.visitChildren(self)

    def elif_stmt(self):

        localctx = FandangoParser.Elif_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 188, self.RULE_elif_stmt)
        self._la = 0  # Token type
        try:
            self.state = 1837
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 204, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1824
                self.match(FandangoParser.ELIF)
                self.state = 1825
                self.named_expression()
                self.state = 1826
                self.match(FandangoParser.COLON)
                self.state = 1827
                self.block()
                self.state = 1828
                self.elif_stmt()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1830
                self.match(FandangoParser.ELIF)
                self.state = 1831
                self.named_expression()
                self.state = 1832
                self.match(FandangoParser.COLON)
                self.state = 1833
                self.block()
                self.state = 1835
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 24:
                    self.state = 1834
                    self.else_block()

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Else_blockContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def ELSE(self):
            return self.getToken(FandangoParser.ELSE, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_else_block

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitElse_block"):
                return visitor.visitElse_block(self)
            else:
                return visitor.visitChildren(self)

    def else_block(self):

        localctx = FandangoParser.Else_blockContext(self, self._ctx, self.state)
        self.enterRule(localctx, 190, self.RULE_else_block)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1839
            self.match(FandangoParser.ELSE)
            self.state = 1840
            self.match(FandangoParser.COLON)
            self.state = 1841
            self.block()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class While_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def WHILE(self):
            return self.getToken(FandangoParser.WHILE, 0)

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def else_block(self):
            return self.getTypedRuleContext(FandangoParser.Else_blockContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_while_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitWhile_stmt"):
                return visitor.visitWhile_stmt(self)
            else:
                return visitor.visitChildren(self)

    def while_stmt(self):

        localctx = FandangoParser.While_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 192, self.RULE_while_stmt)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1843
            self.match(FandangoParser.WHILE)
            self.state = 1844
            self.named_expression()
            self.state = 1845
            self.match(FandangoParser.COLON)
            self.state = 1846
            self.block()
            self.state = 1848
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 24:
                self.state = 1847
                self.else_block()

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class For_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def FOR(self):
            return self.getToken(FandangoParser.FOR, 0)

        def star_targets(self):
            return self.getTypedRuleContext(FandangoParser.Star_targetsContext, 0)

        def IN(self):
            return self.getToken(FandangoParser.IN, 0)

        def star_expressions(self):
            return self.getTypedRuleContext(FandangoParser.Star_expressionsContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def else_block(self):
            return self.getTypedRuleContext(FandangoParser.Else_blockContext, 0)

        def ASYNC(self):
            return self.getToken(FandangoParser.ASYNC, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_for_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFor_stmt"):
                return visitor.visitFor_stmt(self)
            else:
                return visitor.visitChildren(self)

    def for_stmt(self):

        localctx = FandangoParser.For_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 194, self.RULE_for_stmt)
        self._la = 0  # Token type
        try:
            self.state = 1869
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [28]:
                self.enterOuterAlt(localctx, 1)
                self.state = 1850
                self.match(FandangoParser.FOR)
                self.state = 1851
                self.star_targets()
                self.state = 1852
                self.match(FandangoParser.IN)
                self.state = 1853
                self.star_expressions()
                self.state = 1854
                self.match(FandangoParser.COLON)
                self.state = 1855
                self.block()
                self.state = 1857
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 24:
                    self.state = 1856
                    self.else_block()

                pass
            elif token in [15]:
                self.enterOuterAlt(localctx, 2)
                self.state = 1859
                self.match(FandangoParser.ASYNC)
                self.state = 1860
                self.match(FandangoParser.FOR)
                self.state = 1861
                self.star_targets()
                self.state = 1862
                self.match(FandangoParser.IN)
                self.state = 1863
                self.star_expressions()
                self.state = 1864
                self.match(FandangoParser.COLON)
                self.state = 1865
                self.block()
                self.state = 1867
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 24:
                    self.state = 1866
                    self.else_block()

                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class With_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def WITH(self):
            return self.getToken(FandangoParser.WITH, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def with_item(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.With_itemContext)
            else:
                return self.getTypedRuleContext(FandangoParser.With_itemContext, i)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def ASYNC(self):
            return self.getToken(FandangoParser.ASYNC, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_with_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitWith_stmt"):
                return visitor.visitWith_stmt(self)
            else:
                return visitor.visitChildren(self)

    def with_stmt(self):

        localctx = FandangoParser.With_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 196, self.RULE_with_stmt)
        self._la = 0  # Token type
        try:
            self.state = 1931
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 215, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1871
                self.match(FandangoParser.WITH)
                self.state = 1872
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1873
                self.with_item()
                self.state = 1878
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 209, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 1874
                        self.match(FandangoParser.COMMA)
                        self.state = 1875
                        self.with_item()
                    self.state = 1880
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 209, self._ctx)

                self.state = 1882
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 1881
                    self.match(FandangoParser.COMMA)

                self.state = 1884
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 1885
                self.match(FandangoParser.COLON)
                self.state = 1886
                self.block()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1888
                self.match(FandangoParser.WITH)
                self.state = 1889
                self.with_item()
                self.state = 1894
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 83:
                    self.state = 1890
                    self.match(FandangoParser.COMMA)
                    self.state = 1891
                    self.with_item()
                    self.state = 1896
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 1897
                self.match(FandangoParser.COLON)
                self.state = 1898
                self.block()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1900
                self.match(FandangoParser.ASYNC)
                self.state = 1901
                self.match(FandangoParser.WITH)
                self.state = 1902
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 1903
                self.with_item()
                self.state = 1908
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 212, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 1904
                        self.match(FandangoParser.COMMA)
                        self.state = 1905
                        self.with_item()
                    self.state = 1910
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 212, self._ctx)

                self.state = 1912
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 1911
                    self.match(FandangoParser.COMMA)

                self.state = 1914
                self.match(FandangoParser.CLOSE_PAREN)
                self.state = 1915
                self.match(FandangoParser.COLON)
                self.state = 1916
                self.block()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 1918
                self.match(FandangoParser.ASYNC)
                self.state = 1919
                self.match(FandangoParser.WITH)
                self.state = 1920
                self.with_item()
                self.state = 1925
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 83:
                    self.state = 1921
                    self.match(FandangoParser.COMMA)
                    self.state = 1922
                    self.with_item()
                    self.state = 1927
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 1928
                self.match(FandangoParser.COLON)
                self.state = 1929
                self.block()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class With_itemContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def AS(self):
            return self.getToken(FandangoParser.AS, 0)

        def star_target(self):
            return self.getTypedRuleContext(FandangoParser.Star_targetContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_with_item

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitWith_item"):
                return visitor.visitWith_item(self)
            else:
                return visitor.visitChildren(self)

    def with_item(self):

        localctx = FandangoParser.With_itemContext(self, self._ctx, self.state)
        self.enterRule(localctx, 198, self.RULE_with_item)
        try:
            self.state = 1938
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 216, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1933
                self.expression()
                self.state = 1934
                self.match(FandangoParser.AS)
                self.state = 1935
                self.star_target()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1937
                self.expression()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Try_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def TRY(self):
            return self.getToken(FandangoParser.TRY, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def finally_block(self):
            return self.getTypedRuleContext(FandangoParser.Finally_blockContext, 0)

        def except_block(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Except_blockContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Except_blockContext, i)

        def else_block(self):
            return self.getTypedRuleContext(FandangoParser.Else_blockContext, 0)

        def except_star_block(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Except_star_blockContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Except_star_blockContext, i
                )

        def getRuleIndex(self):
            return FandangoParser.RULE_try_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitTry_stmt"):
                return visitor.visitTry_stmt(self)
            else:
                return visitor.visitChildren(self)

    def try_stmt(self):

        localctx = FandangoParser.Try_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 200, self.RULE_try_stmt)
        self._la = 0  # Token type
        try:
            self.state = 1973
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 223, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1940
                self.match(FandangoParser.TRY)
                self.state = 1941
                self.match(FandangoParser.COLON)
                self.state = 1942
                self.block()
                self.state = 1943
                self.finally_block()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1945
                self.match(FandangoParser.TRY)
                self.state = 1946
                self.match(FandangoParser.COLON)
                self.state = 1947
                self.block()
                self.state = 1949
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while True:
                    self.state = 1948
                    self.except_block()
                    self.state = 1951
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if not (_la == 25):
                        break

                self.state = 1954
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 24:
                    self.state = 1953
                    self.else_block()

                self.state = 1957
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 27:
                    self.state = 1956
                    self.finally_block()

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 1959
                self.match(FandangoParser.TRY)
                self.state = 1960
                self.match(FandangoParser.COLON)
                self.state = 1961
                self.block()
                self.state = 1963
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while True:
                    self.state = 1962
                    self.except_star_block()
                    self.state = 1965
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if not (_la == 25):
                        break

                self.state = 1968
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 24:
                    self.state = 1967
                    self.else_block()

                self.state = 1971
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 27:
                    self.state = 1970
                    self.finally_block()

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Except_blockContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def EXCEPT(self):
            return self.getToken(FandangoParser.EXCEPT, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def AS(self):
            return self.getToken(FandangoParser.AS, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_except_block

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitExcept_block"):
                return visitor.visitExcept_block(self)
            else:
                return visitor.visitChildren(self)

    def except_block(self):

        localctx = FandangoParser.Except_blockContext(self, self._ctx, self.state)
        self.enterRule(localctx, 202, self.RULE_except_block)
        self._la = 0  # Token type
        try:
            self.state = 1987
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 225, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 1975
                self.match(FandangoParser.EXCEPT)
                self.state = 1976
                self.expression()
                self.state = 1979
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 13:
                    self.state = 1977
                    self.match(FandangoParser.AS)
                    self.state = 1978
                    self.identifier()

                self.state = 1981
                self.match(FandangoParser.COLON)
                self.state = 1982
                self.block()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 1984
                self.match(FandangoParser.EXCEPT)
                self.state = 1985
                self.match(FandangoParser.COLON)
                self.state = 1986
                self.block()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Except_star_blockContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def EXCEPT(self):
            return self.getToken(FandangoParser.EXCEPT, 0)

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def AS(self):
            return self.getToken(FandangoParser.AS, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_except_star_block

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitExcept_star_block"):
                return visitor.visitExcept_star_block(self)
            else:
                return visitor.visitChildren(self)

    def except_star_block(self):

        localctx = FandangoParser.Except_star_blockContext(self, self._ctx, self.state)
        self.enterRule(localctx, 204, self.RULE_except_star_block)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1989
            self.match(FandangoParser.EXCEPT)
            self.state = 1990
            self.match(FandangoParser.STAR)
            self.state = 1991
            self.expression()
            self.state = 1994
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 13:
                self.state = 1992
                self.match(FandangoParser.AS)
                self.state = 1993
                self.identifier()

            self.state = 1996
            self.match(FandangoParser.COLON)
            self.state = 1997
            self.block()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Finally_blockContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def FINALLY(self):
            return self.getToken(FandangoParser.FINALLY, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_finally_block

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFinally_block"):
                return visitor.visitFinally_block(self)
            else:
                return visitor.visitChildren(self)

    def finally_block(self):

        localctx = FandangoParser.Finally_blockContext(self, self._ctx, self.state)
        self.enterRule(localctx, 206, self.RULE_finally_block)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 1999
            self.match(FandangoParser.FINALLY)
            self.state = 2000
            self.match(FandangoParser.COLON)
            self.state = 2001
            self.block()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Match_stmtContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def MATCH(self):
            return self.getToken(FandangoParser.MATCH, 0)

        def subject_expr(self):
            return self.getTypedRuleContext(FandangoParser.Subject_exprContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def NEWLINE(self):
            return self.getToken(FandangoParser.NEWLINE, 0)

        def INDENT(self):
            return self.getToken(FandangoParser.INDENT, 0)

        def DEDENT(self):
            return self.getToken(FandangoParser.DEDENT, 0)

        def case_block(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Case_blockContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Case_blockContext, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_match_stmt

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitMatch_stmt"):
                return visitor.visitMatch_stmt(self)
            else:
                return visitor.visitChildren(self)

    def match_stmt(self):

        localctx = FandangoParser.Match_stmtContext(self, self._ctx, self.state)
        self.enterRule(localctx, 208, self.RULE_match_stmt)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2003
            self.match(FandangoParser.MATCH)
            self.state = 2004
            self.subject_expr()
            self.state = 2005
            self.match(FandangoParser.COLON)
            self.state = 2006
            self.match(FandangoParser.NEWLINE)
            self.state = 2007
            self.match(FandangoParser.INDENT)
            self.state = 2009
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while True:
                self.state = 2008
                self.case_block()
                self.state = 2011
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if not (_la == 18):
                    break

            self.state = 2013
            self.match(FandangoParser.DEDENT)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Subject_exprContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_named_expression(self):
            return self.getTypedRuleContext(
                FandangoParser.Star_named_expressionContext, 0
            )

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def star_named_expressions(self):
            return self.getTypedRuleContext(
                FandangoParser.Star_named_expressionsContext, 0
            )

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_subject_expr

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSubject_expr"):
                return visitor.visitSubject_expr(self)
            else:
                return visitor.visitChildren(self)

    def subject_expr(self):

        localctx = FandangoParser.Subject_exprContext(self, self._ctx, self.state)
        self.enterRule(localctx, 210, self.RULE_subject_expr)
        self._la = 0  # Token type
        try:
            self.state = 2021
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 229, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2015
                self.star_named_expression()
                self.state = 2016
                self.match(FandangoParser.COMMA)
                self.state = 2018
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
                ):
                    self.state = 2017
                    self.star_named_expressions()

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2020
                self.named_expression()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Case_blockContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def CASE(self):
            return self.getToken(FandangoParser.CASE, 0)

        def patterns(self):
            return self.getTypedRuleContext(FandangoParser.PatternsContext, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def block(self):
            return self.getTypedRuleContext(FandangoParser.BlockContext, 0)

        def guard(self):
            return self.getTypedRuleContext(FandangoParser.GuardContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_case_block

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitCase_block"):
                return visitor.visitCase_block(self)
            else:
                return visitor.visitChildren(self)

    def case_block(self):

        localctx = FandangoParser.Case_blockContext(self, self._ctx, self.state)
        self.enterRule(localctx, 212, self.RULE_case_block)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2023
            self.match(FandangoParser.CASE)
            self.state = 2024
            self.patterns()
            self.state = 2026
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 31:
                self.state = 2025
                self.guard()

            self.state = 2028
            self.match(FandangoParser.COLON)
            self.state = 2029
            self.block()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class GuardContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def IF(self):
            return self.getToken(FandangoParser.IF, 0)

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_guard

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGuard"):
                return visitor.visitGuard(self)
            else:
                return visitor.visitChildren(self)

    def guard(self):

        localctx = FandangoParser.GuardContext(self, self._ctx, self.state)
        self.enterRule(localctx, 214, self.RULE_guard)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2031
            self.match(FandangoParser.IF)
            self.state = 2032
            self.named_expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class PatternsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def open_sequence_pattern(self):
            return self.getTypedRuleContext(
                FandangoParser.Open_sequence_patternContext, 0
            )

        def pattern(self):
            return self.getTypedRuleContext(FandangoParser.PatternContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_patterns

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPatterns"):
                return visitor.visitPatterns(self)
            else:
                return visitor.visitChildren(self)

    def patterns(self):

        localctx = FandangoParser.PatternsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 216, self.RULE_patterns)
        try:
            self.state = 2036
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 231, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2034
                self.open_sequence_pattern()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2035
                self.pattern()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class PatternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def as_pattern(self):
            return self.getTypedRuleContext(FandangoParser.As_patternContext, 0)

        def or_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Or_patternContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPattern"):
                return visitor.visitPattern(self)
            else:
                return visitor.visitChildren(self)

    def pattern(self):

        localctx = FandangoParser.PatternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 218, self.RULE_pattern)
        try:
            self.state = 2040
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 232, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2038
                self.as_pattern()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2039
                self.or_pattern()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class As_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def or_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Or_patternContext, 0)

        def AS(self):
            return self.getToken(FandangoParser.AS, 0)

        def pattern_capture_target(self):
            return self.getTypedRuleContext(
                FandangoParser.Pattern_capture_targetContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_as_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAs_pattern"):
                return visitor.visitAs_pattern(self)
            else:
                return visitor.visitChildren(self)

    def as_pattern(self):

        localctx = FandangoParser.As_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 220, self.RULE_as_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2042
            self.or_pattern()
            self.state = 2043
            self.match(FandangoParser.AS)
            self.state = 2044
            self.pattern_capture_target()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Or_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def closed_pattern(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Closed_patternContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Closed_patternContext, i)

        def OR_OP(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OR_OP)
            else:
                return self.getToken(FandangoParser.OR_OP, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_or_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitOr_pattern"):
                return visitor.visitOr_pattern(self)
            else:
                return visitor.visitChildren(self)

    def or_pattern(self):

        localctx = FandangoParser.Or_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 222, self.RULE_or_pattern)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2046
            self.closed_pattern()
            self.state = 2051
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 90:
                self.state = 2047
                self.match(FandangoParser.OR_OP)
                self.state = 2048
                self.closed_pattern()
                self.state = 2053
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Closed_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def literal_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Literal_patternContext, 0)

        def capture_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Capture_patternContext, 0)

        def wildcard_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Wildcard_patternContext, 0)

        def value_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Value_patternContext, 0)

        def group_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Group_patternContext, 0)

        def sequence_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Sequence_patternContext, 0)

        def mapping_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Mapping_patternContext, 0)

        def class_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Class_patternContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_closed_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitClosed_pattern"):
                return visitor.visitClosed_pattern(self)
            else:
                return visitor.visitChildren(self)

    def closed_pattern(self):

        localctx = FandangoParser.Closed_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 224, self.RULE_closed_pattern)
        try:
            self.state = 2062
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 234, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2054
                self.literal_pattern()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2055
                self.capture_pattern()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2056
                self.wildcard_pattern()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 2057
                self.value_pattern()
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 2058
                self.group_pattern()
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 2059
                self.sequence_pattern()
                pass

            elif la_ == 7:
                self.enterOuterAlt(localctx, 7)
                self.state = 2060
                self.mapping_pattern()
                pass

            elif la_ == 8:
                self.enterOuterAlt(localctx, 8)
                self.state = 2061
                self.class_pattern()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Literal_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def signed_number(self):
            return self.getTypedRuleContext(FandangoParser.Signed_numberContext, 0)

        def complex_number(self):
            return self.getTypedRuleContext(FandangoParser.Complex_numberContext, 0)

        def strings(self):
            return self.getTypedRuleContext(FandangoParser.StringsContext, 0)

        def NONE(self):
            return self.getToken(FandangoParser.NONE, 0)

        def TRUE(self):
            return self.getToken(FandangoParser.TRUE, 0)

        def FALSE(self):
            return self.getToken(FandangoParser.FALSE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_literal_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLiteral_pattern"):
                return visitor.visitLiteral_pattern(self)
            else:
                return visitor.visitChildren(self)

    def literal_pattern(self):

        localctx = FandangoParser.Literal_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 226, self.RULE_literal_pattern)
        try:
            self.state = 2070
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 235, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2064
                self.signed_number()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2065
                self.complex_number()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2066
                self.strings()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 2067
                self.match(FandangoParser.NONE)
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 2068
                self.match(FandangoParser.TRUE)
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 2069
                self.match(FandangoParser.FALSE)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Literal_exprContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def signed_number(self):
            return self.getTypedRuleContext(FandangoParser.Signed_numberContext, 0)

        def complex_number(self):
            return self.getTypedRuleContext(FandangoParser.Complex_numberContext, 0)

        def strings(self):
            return self.getTypedRuleContext(FandangoParser.StringsContext, 0)

        def NONE(self):
            return self.getToken(FandangoParser.NONE, 0)

        def TRUE(self):
            return self.getToken(FandangoParser.TRUE, 0)

        def FALSE(self):
            return self.getToken(FandangoParser.FALSE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_literal_expr

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLiteral_expr"):
                return visitor.visitLiteral_expr(self)
            else:
                return visitor.visitChildren(self)

    def literal_expr(self):

        localctx = FandangoParser.Literal_exprContext(self, self._ctx, self.state)
        self.enterRule(localctx, 228, self.RULE_literal_expr)
        try:
            self.state = 2078
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 236, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2072
                self.signed_number()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2073
                self.complex_number()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2074
                self.strings()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 2075
                self.match(FandangoParser.NONE)
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 2076
                self.match(FandangoParser.TRUE)
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 2077
                self.match(FandangoParser.FALSE)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Complex_numberContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def signed_real_number(self):
            return self.getTypedRuleContext(FandangoParser.Signed_real_numberContext, 0)

        def ADD(self):
            return self.getToken(FandangoParser.ADD, 0)

        def imaginary_number(self):
            return self.getTypedRuleContext(FandangoParser.Imaginary_numberContext, 0)

        def MINUS(self):
            return self.getToken(FandangoParser.MINUS, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_complex_number

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitComplex_number"):
                return visitor.visitComplex_number(self)
            else:
                return visitor.visitChildren(self)

    def complex_number(self):

        localctx = FandangoParser.Complex_numberContext(self, self._ctx, self.state)
        self.enterRule(localctx, 230, self.RULE_complex_number)
        try:
            self.state = 2088
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 237, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2080
                self.signed_real_number()
                self.state = 2081
                self.match(FandangoParser.ADD)
                self.state = 2082
                self.imaginary_number()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2084
                self.signed_real_number()
                self.state = 2085
                self.match(FandangoParser.MINUS)
                self.state = 2086
                self.imaginary_number()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Signed_numberContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NUMBER(self):
            return self.getToken(FandangoParser.NUMBER, 0)

        def MINUS(self):
            return self.getToken(FandangoParser.MINUS, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_signed_number

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSigned_number"):
                return visitor.visitSigned_number(self)
            else:
                return visitor.visitChildren(self)

    def signed_number(self):

        localctx = FandangoParser.Signed_numberContext(self, self._ctx, self.state)
        self.enterRule(localctx, 232, self.RULE_signed_number)
        try:
            self.state = 2093
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [8]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2090
                self.match(FandangoParser.NUMBER)
                pass
            elif token in [96]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2091
                self.match(FandangoParser.MINUS)
                self.state = 2092
                self.match(FandangoParser.NUMBER)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Signed_real_numberContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def real_number(self):
            return self.getTypedRuleContext(FandangoParser.Real_numberContext, 0)

        def MINUS(self):
            return self.getToken(FandangoParser.MINUS, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_signed_real_number

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSigned_real_number"):
                return visitor.visitSigned_real_number(self)
            else:
                return visitor.visitChildren(self)

    def signed_real_number(self):

        localctx = FandangoParser.Signed_real_numberContext(self, self._ctx, self.state)
        self.enterRule(localctx, 234, self.RULE_signed_real_number)
        try:
            self.state = 2098
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [8]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2095
                self.real_number()
                pass
            elif token in [96]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2096
                self.match(FandangoParser.MINUS)
                self.state = 2097
                self.real_number()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Real_numberContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NUMBER(self):
            return self.getToken(FandangoParser.NUMBER, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_real_number

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitReal_number"):
                return visitor.visitReal_number(self)
            else:
                return visitor.visitChildren(self)

    def real_number(self):

        localctx = FandangoParser.Real_numberContext(self, self._ctx, self.state)
        self.enterRule(localctx, 236, self.RULE_real_number)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2100
            self.match(FandangoParser.NUMBER)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Imaginary_numberContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NUMBER(self):
            return self.getToken(FandangoParser.NUMBER, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_imaginary_number

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitImaginary_number"):
                return visitor.visitImaginary_number(self)
            else:
                return visitor.visitChildren(self)

    def imaginary_number(self):

        localctx = FandangoParser.Imaginary_numberContext(self, self._ctx, self.state)
        self.enterRule(localctx, 238, self.RULE_imaginary_number)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2102
            self.match(FandangoParser.NUMBER)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Capture_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def pattern_capture_target(self):
            return self.getTypedRuleContext(
                FandangoParser.Pattern_capture_targetContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_capture_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitCapture_pattern"):
                return visitor.visitCapture_pattern(self)
            else:
                return visitor.visitChildren(self)

    def capture_pattern(self):

        localctx = FandangoParser.Capture_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 240, self.RULE_capture_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2104
            self.pattern_capture_target()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Pattern_capture_targetContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_pattern_capture_target

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPattern_capture_target"):
                return visitor.visitPattern_capture_target(self)
            else:
                return visitor.visitChildren(self)

    def pattern_capture_target(self):

        localctx = FandangoParser.Pattern_capture_targetContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 242, self.RULE_pattern_capture_target)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2106
            self.identifier()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Wildcard_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def UNDERSCORE(self):
            return self.getToken(FandangoParser.UNDERSCORE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_wildcard_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitWildcard_pattern"):
                return visitor.visitWildcard_pattern(self)
            else:
                return visitor.visitChildren(self)

    def wildcard_pattern(self):

        localctx = FandangoParser.Wildcard_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 244, self.RULE_wildcard_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2108
            self.match(FandangoParser.UNDERSCORE)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Value_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def attr(self):
            return self.getTypedRuleContext(FandangoParser.AttrContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_value_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitValue_pattern"):
                return visitor.visitValue_pattern(self)
            else:
                return visitor.visitChildren(self)

    def value_pattern(self):

        localctx = FandangoParser.Value_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 246, self.RULE_value_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2110
            self.attr()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class AttrContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def name_or_attr(self):
            return self.getTypedRuleContext(FandangoParser.Name_or_attrContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_attr

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAttr"):
                return visitor.visitAttr(self)
            else:
                return visitor.visitChildren(self)

    def attr(self):

        localctx = FandangoParser.AttrContext(self, self._ctx, self.state)
        self.enterRule(localctx, 248, self.RULE_attr)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2112
            self.name_or_attr(0)
            self.state = 2113
            self.match(FandangoParser.DOT)
            self.state = 2114
            self.identifier()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Name_or_attrContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def name_or_attr(self):
            return self.getTypedRuleContext(FandangoParser.Name_or_attrContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_name_or_attr

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitName_or_attr"):
                return visitor.visitName_or_attr(self)
            else:
                return visitor.visitChildren(self)

    def name_or_attr(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.Name_or_attrContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 250
        self.enterRecursionRule(localctx, 250, self.RULE_name_or_attr, _p)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2117
            self.identifier()
            self._ctx.stop = self._input.LT(-1)
            self.state = 2124
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 240, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    localctx = FandangoParser.Name_or_attrContext(
                        self, _parentctx, _parentState
                    )
                    self.pushNewRecursionContext(
                        localctx, _startState, self.RULE_name_or_attr
                    )
                    self.state = 2119
                    if not self.precpred(self._ctx, 2):
                        from antlr4.error.Errors import FailedPredicateException

                        raise FailedPredicateException(
                            self, "self.precpred(self._ctx, 2)"
                        )
                    self.state = 2120
                    self.match(FandangoParser.DOT)
                    self.state = 2121
                    self.identifier()
                self.state = 2126
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 240, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class Group_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def pattern(self):
            return self.getTypedRuleContext(FandangoParser.PatternContext, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_group_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGroup_pattern"):
                return visitor.visitGroup_pattern(self)
            else:
                return visitor.visitChildren(self)

    def group_pattern(self):

        localctx = FandangoParser.Group_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 252, self.RULE_group_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2127
            self.match(FandangoParser.OPEN_PAREN)
            self.state = 2128
            self.pattern()
            self.state = 2129
            self.match(FandangoParser.CLOSE_PAREN)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Sequence_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def maybe_sequence_pattern(self):
            return self.getTypedRuleContext(
                FandangoParser.Maybe_sequence_patternContext, 0
            )

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def open_sequence_pattern(self):
            return self.getTypedRuleContext(
                FandangoParser.Open_sequence_patternContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_sequence_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSequence_pattern"):
                return visitor.visitSequence_pattern(self)
            else:
                return visitor.visitChildren(self)

    def sequence_pattern(self):

        localctx = FandangoParser.Sequence_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 254, self.RULE_sequence_pattern)
        self._la = 0  # Token type
        try:
            self.state = 2141
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [88]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2131
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 2133
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062318038548984) != 0
                ) or (
                    (((_la - 80)) & ~0x3F) == 0
                    and ((1 << (_la - 80)) & 1125899909005571) != 0
                ):
                    self.state = 2132
                    self.maybe_sequence_pattern()

                self.state = 2135
                self.match(FandangoParser.CLOSE_BRACK)
                pass
            elif token in [81]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2136
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 2138
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062318038548984) != 0
                ) or (
                    (((_la - 80)) & ~0x3F) == 0
                    and ((1 << (_la - 80)) & 1125899909005571) != 0
                ):
                    self.state = 2137
                    self.open_sequence_pattern()

                self.state = 2140
                self.match(FandangoParser.CLOSE_PAREN)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Open_sequence_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def maybe_star_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Maybe_star_patternContext, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def maybe_sequence_pattern(self):
            return self.getTypedRuleContext(
                FandangoParser.Maybe_sequence_patternContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_open_sequence_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitOpen_sequence_pattern"):
                return visitor.visitOpen_sequence_pattern(self)
            else:
                return visitor.visitChildren(self)

    def open_sequence_pattern(self):

        localctx = FandangoParser.Open_sequence_patternContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 256, self.RULE_open_sequence_pattern)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2143
            self.maybe_star_pattern()
            self.state = 2144
            self.match(FandangoParser.COMMA)
            self.state = 2146
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062318038548984) != 0) or (
                (((_la - 80)) & ~0x3F) == 0
                and ((1 << (_la - 80)) & 1125899909005571) != 0
            ):
                self.state = 2145
                self.maybe_sequence_pattern()

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Maybe_sequence_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def maybe_star_pattern(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Maybe_star_patternContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Maybe_star_patternContext, i
                )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_maybe_sequence_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitMaybe_sequence_pattern"):
                return visitor.visitMaybe_sequence_pattern(self)
            else:
                return visitor.visitChildren(self)

    def maybe_sequence_pattern(self):

        localctx = FandangoParser.Maybe_sequence_patternContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 258, self.RULE_maybe_sequence_pattern)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2148
            self.maybe_star_pattern()
            self.state = 2153
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 245, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2149
                    self.match(FandangoParser.COMMA)
                    self.state = 2150
                    self.maybe_star_pattern()
                self.state = 2155
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 245, self._ctx)

            self.state = 2157
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2156
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Maybe_star_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Star_patternContext, 0)

        def pattern(self):
            return self.getTypedRuleContext(FandangoParser.PatternContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_maybe_star_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitMaybe_star_pattern"):
                return visitor.visitMaybe_star_pattern(self)
            else:
                return visitor.visitChildren(self)

    def maybe_star_pattern(self):

        localctx = FandangoParser.Maybe_star_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 260, self.RULE_maybe_star_pattern)
        try:
            self.state = 2161
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [80]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2159
                self.star_pattern()
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                26,
                37,
                44,
                55,
                56,
                57,
                61,
                81,
                88,
                96,
                101,
                130,
            ]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2160
                self.pattern()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def pattern_capture_target(self):
            return self.getTypedRuleContext(
                FandangoParser.Pattern_capture_targetContext, 0
            )

        def wildcard_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Wildcard_patternContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_pattern"):
                return visitor.visitStar_pattern(self)
            else:
                return visitor.visitChildren(self)

    def star_pattern(self):

        localctx = FandangoParser.Star_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 262, self.RULE_star_pattern)
        try:
            self.state = 2167
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 248, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2163
                self.match(FandangoParser.STAR)
                self.state = 2164
                self.pattern_capture_target()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2165
                self.match(FandangoParser.STAR)
                self.state = 2166
                self.wildcard_pattern()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Mapping_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def double_star_pattern(self):
            return self.getTypedRuleContext(
                FandangoParser.Double_star_patternContext, 0
            )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def items_pattern(self):
            return self.getTypedRuleContext(FandangoParser.Items_patternContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_mapping_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitMapping_pattern"):
                return visitor.visitMapping_pattern(self)
            else:
                return visitor.visitChildren(self)

    def mapping_pattern(self):

        localctx = FandangoParser.Mapping_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 264, self.RULE_mapping_pattern)
        self._la = 0  # Token type
        try:
            self.state = 2194
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 252, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2169
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 2170
                self.match(FandangoParser.CLOSE_BRACE)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2171
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 2172
                self.double_star_pattern()
                self.state = 2174
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 2173
                    self.match(FandangoParser.COMMA)

                self.state = 2176
                self.match(FandangoParser.CLOSE_BRACE)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2178
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 2179
                self.items_pattern()
                self.state = 2180
                self.match(FandangoParser.COMMA)
                self.state = 2181
                self.double_star_pattern()
                self.state = 2183
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 2182
                    self.match(FandangoParser.COMMA)

                self.state = 2185
                self.match(FandangoParser.CLOSE_BRACE)
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 2187
                self.match(FandangoParser.OPEN_BRACE)
                self.state = 2188
                self.items_pattern()
                self.state = 2190
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 2189
                    self.match(FandangoParser.COMMA)

                self.state = 2192
                self.match(FandangoParser.CLOSE_BRACE)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Items_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def key_value_pattern(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Key_value_patternContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Key_value_patternContext, i
                )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_items_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitItems_pattern"):
                return visitor.visitItems_pattern(self)
            else:
                return visitor.visitChildren(self)

    def items_pattern(self):

        localctx = FandangoParser.Items_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 266, self.RULE_items_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2196
            self.key_value_pattern()
            self.state = 2201
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 253, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2197
                    self.match(FandangoParser.COMMA)
                    self.state = 2198
                    self.key_value_pattern()
                self.state = 2203
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 253, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Key_value_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def pattern(self):
            return self.getTypedRuleContext(FandangoParser.PatternContext, 0)

        def literal_expr(self):
            return self.getTypedRuleContext(FandangoParser.Literal_exprContext, 0)

        def attr(self):
            return self.getTypedRuleContext(FandangoParser.AttrContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_key_value_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitKey_value_pattern"):
                return visitor.visitKey_value_pattern(self)
            else:
                return visitor.visitChildren(self)

    def key_value_pattern(self):

        localctx = FandangoParser.Key_value_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 268, self.RULE_key_value_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2206
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [3, 4, 5, 6, 7, 8, 26, 37, 44, 96]:
                self.state = 2204
                self.literal_expr()
                pass
            elif token in [55, 56, 57, 61]:
                self.state = 2205
                self.attr()
                pass
            else:
                raise NoViableAltException(self)

            self.state = 2208
            self.match(FandangoParser.COLON)
            self.state = 2209
            self.pattern()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Double_star_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def POWER(self):
            return self.getToken(FandangoParser.POWER, 0)

        def pattern_capture_target(self):
            return self.getTypedRuleContext(
                FandangoParser.Pattern_capture_targetContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_double_star_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDouble_star_pattern"):
                return visitor.visitDouble_star_pattern(self)
            else:
                return visitor.visitChildren(self)

    def double_star_pattern(self):

        localctx = FandangoParser.Double_star_patternContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 270, self.RULE_double_star_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2211
            self.match(FandangoParser.POWER)
            self.state = 2212
            self.pattern_capture_target()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Class_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def name_or_attr(self):
            return self.getTypedRuleContext(FandangoParser.Name_or_attrContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def positional_patterns(self):
            return self.getTypedRuleContext(
                FandangoParser.Positional_patternsContext, 0
            )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def keyword_patterns(self):
            return self.getTypedRuleContext(FandangoParser.Keyword_patternsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_class_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitClass_pattern"):
                return visitor.visitClass_pattern(self)
            else:
                return visitor.visitChildren(self)

    def class_pattern(self):

        localctx = FandangoParser.Class_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 272, self.RULE_class_pattern)
        self._la = 0  # Token type
        try:
            self.state = 2244
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 258, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2214
                self.name_or_attr(0)
                self.state = 2215
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 2216
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2218
                self.name_or_attr(0)
                self.state = 2219
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 2220
                self.positional_patterns()
                self.state = 2222
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 2221
                    self.match(FandangoParser.COMMA)

                self.state = 2224
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2226
                self.name_or_attr(0)
                self.state = 2227
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 2228
                self.keyword_patterns()
                self.state = 2230
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 2229
                    self.match(FandangoParser.COMMA)

                self.state = 2232
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 2234
                self.name_or_attr(0)
                self.state = 2235
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 2236
                self.positional_patterns()
                self.state = 2237
                self.match(FandangoParser.COMMA)
                self.state = 2238
                self.keyword_patterns()
                self.state = 2240
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 2239
                    self.match(FandangoParser.COMMA)

                self.state = 2242
                self.match(FandangoParser.CLOSE_PAREN)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Positional_patternsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def pattern(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.PatternContext)
            else:
                return self.getTypedRuleContext(FandangoParser.PatternContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_positional_patterns

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPositional_patterns"):
                return visitor.visitPositional_patterns(self)
            else:
                return visitor.visitChildren(self)

    def positional_patterns(self):

        localctx = FandangoParser.Positional_patternsContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 274, self.RULE_positional_patterns)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2246
            self.pattern()
            self.state = 2251
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 259, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2247
                    self.match(FandangoParser.COMMA)
                    self.state = 2248
                    self.pattern()
                self.state = 2253
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 259, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Keyword_patternsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def keyword_pattern(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Keyword_patternContext)
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Keyword_patternContext, i
                )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_keyword_patterns

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitKeyword_patterns"):
                return visitor.visitKeyword_patterns(self)
            else:
                return visitor.visitChildren(self)

    def keyword_patterns(self):

        localctx = FandangoParser.Keyword_patternsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 276, self.RULE_keyword_patterns)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2254
            self.keyword_pattern()
            self.state = 2259
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 260, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2255
                    self.match(FandangoParser.COMMA)
                    self.state = 2256
                    self.keyword_pattern()
                self.state = 2261
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 260, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Keyword_patternContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def ASSIGN(self):
            return self.getToken(FandangoParser.ASSIGN, 0)

        def pattern(self):
            return self.getTypedRuleContext(FandangoParser.PatternContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_keyword_pattern

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitKeyword_pattern"):
                return visitor.visitKeyword_pattern(self)
            else:
                return visitor.visitChildren(self)

    def keyword_pattern(self):

        localctx = FandangoParser.Keyword_patternContext(self, self._ctx, self.state)
        self.enterRule(localctx, 278, self.RULE_keyword_pattern)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2262
            self.identifier()
            self.state = 2263
            self.match(FandangoParser.ASSIGN)
            self.state = 2264
            self.pattern()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Type_aliasContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def TYPE(self):
            return self.getToken(FandangoParser.TYPE, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def ASSIGN(self):
            return self.getToken(FandangoParser.ASSIGN, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def type_params(self):
            return self.getTypedRuleContext(FandangoParser.Type_paramsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_type_alias

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitType_alias"):
                return visitor.visitType_alias(self)
            else:
                return visitor.visitChildren(self)

    def type_alias(self):

        localctx = FandangoParser.Type_aliasContext(self, self._ctx, self.state)
        self.enterRule(localctx, 280, self.RULE_type_alias)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2266
            self.match(FandangoParser.TYPE)
            self.state = 2267
            self.identifier()
            self.state = 2269
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 88:
                self.state = 2268
                self.type_params()

            self.state = 2271
            self.match(FandangoParser.ASSIGN)
            self.state = 2272
            self.expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Type_paramsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def type_param_seq(self):
            return self.getTypedRuleContext(FandangoParser.Type_param_seqContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_type_params

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitType_params"):
                return visitor.visitType_params(self)
            else:
                return visitor.visitChildren(self)

    def type_params(self):

        localctx = FandangoParser.Type_paramsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 282, self.RULE_type_params)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2274
            self.match(FandangoParser.OPEN_BRACK)
            self.state = 2275
            self.type_param_seq()
            self.state = 2276
            self.match(FandangoParser.CLOSE_BRACK)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Type_param_seqContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def type_param(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Type_paramContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Type_paramContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_type_param_seq

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitType_param_seq"):
                return visitor.visitType_param_seq(self)
            else:
                return visitor.visitChildren(self)

    def type_param_seq(self):

        localctx = FandangoParser.Type_param_seqContext(self, self._ctx, self.state)
        self.enterRule(localctx, 284, self.RULE_type_param_seq)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2278
            self.type_param()
            self.state = 2283
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 262, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2279
                    self.match(FandangoParser.COMMA)
                    self.state = 2280
                    self.type_param()
                self.state = 2285
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 262, self._ctx)

            self.state = 2287
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2286
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Type_paramContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def type_param_bound(self):
            return self.getTypedRuleContext(FandangoParser.Type_param_boundContext, 0)

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def POWER(self):
            return self.getToken(FandangoParser.POWER, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_type_param

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitType_param"):
                return visitor.visitType_param(self)
            else:
                return visitor.visitChildren(self)

    def type_param(self):

        localctx = FandangoParser.Type_paramContext(self, self._ctx, self.state)
        self.enterRule(localctx, 286, self.RULE_type_param)
        self._la = 0  # Token type
        try:
            self.state = 2297
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [55, 56, 57, 61]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2289
                self.identifier()
                self.state = 2291
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 84:
                    self.state = 2290
                    self.type_param_bound()

                pass
            elif token in [80]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2293
                self.match(FandangoParser.STAR)
                self.state = 2294
                self.identifier()
                pass
            elif token in [86]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2295
                self.match(FandangoParser.POWER)
                self.state = 2296
                self.identifier()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Type_param_boundContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_type_param_bound

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitType_param_bound"):
                return visitor.visitType_param_bound(self)
            else:
                return visitor.visitChildren(self)

    def type_param_bound(self):

        localctx = FandangoParser.Type_param_boundContext(self, self._ctx, self.state)
        self.enterRule(localctx, 288, self.RULE_type_param_bound)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2299
            self.match(FandangoParser.COLON)
            self.state = 2300
            self.expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ExpressionsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ExpressionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ExpressionContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_expressions

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitExpressions"):
                return visitor.visitExpressions(self)
            else:
                return visitor.visitChildren(self)

    def expressions(self):

        localctx = FandangoParser.ExpressionsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 290, self.RULE_expressions)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2302
            self.expression()
            self.state = 2307
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 266, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2303
                    self.match(FandangoParser.COMMA)
                    self.state = 2304
                    self.expression()
                self.state = 2309
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 266, self._ctx)

            self.state = 2311
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2310
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ExpressionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def disjunction(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.DisjunctionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.DisjunctionContext, i)

        def IF(self):
            return self.getToken(FandangoParser.IF, 0)

        def ELSE(self):
            return self.getToken(FandangoParser.ELSE, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def lambdef(self):
            return self.getTypedRuleContext(FandangoParser.LambdefContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_expression

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitExpression"):
                return visitor.visitExpression(self)
            else:
                return visitor.visitChildren(self)

    def expression(self):

        localctx = FandangoParser.ExpressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 292, self.RULE_expression)
        try:
            self.state = 2321
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 268, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2313
                self.disjunction()
                self.state = 2314
                self.match(FandangoParser.IF)
                self.state = 2315
                self.disjunction()
                self.state = 2316
                self.match(FandangoParser.ELSE)
                self.state = 2317
                self.expression()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2319
                self.disjunction()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2320
                self.lambdef()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Yield_exprContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def YIELD(self):
            return self.getToken(FandangoParser.YIELD, 0)

        def FROM(self):
            return self.getToken(FandangoParser.FROM, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def star_expressions(self):
            return self.getTypedRuleContext(FandangoParser.Star_expressionsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_yield_expr

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitYield_expr"):
                return visitor.visitYield_expr(self)
            else:
                return visitor.visitChildren(self)

    def yield_expr(self):

        localctx = FandangoParser.Yield_exprContext(self, self._ctx, self.state)
        self.enterRule(localctx, 294, self.RULE_yield_expr)
        try:
            self.state = 2330
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 270, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2323
                self.match(FandangoParser.YIELD)
                self.state = 2324
                self.match(FandangoParser.FROM)
                self.state = 2325
                self.expression()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2326
                self.match(FandangoParser.YIELD)
                self.state = 2328
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input, 269, self._ctx)
                if la_ == 1:
                    self.state = 2327
                    self.star_expressions()

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_expressionsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Star_expressionContext)
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Star_expressionContext, i
                )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_expressions

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_expressions"):
                return visitor.visitStar_expressions(self)
            else:
                return visitor.visitChildren(self)

    def star_expressions(self):

        localctx = FandangoParser.Star_expressionsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 296, self.RULE_star_expressions)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2332
            self.star_expression()
            self.state = 2337
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 271, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2333
                    self.match(FandangoParser.COMMA)
                    self.state = 2334
                    self.star_expression()
                self.state = 2339
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 271, self._ctx)

            self.state = 2341
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2340
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_expressionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_selection(self):
            return self.getTypedRuleContext(FandangoParser.Star_selectionContext, 0)

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_expression

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_expression"):
                return visitor.visitStar_expression(self)
            else:
                return visitor.visitChildren(self)

    def star_expression(self):

        localctx = FandangoParser.Star_expressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 298, self.RULE_star_expression)
        try:
            self.state = 2347
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 273, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2343
                self.star_selection()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2344
                self.match(FandangoParser.STAR)
                self.state = 2345
                self.bitwise_or(0)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2346
                self.expression()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_named_expressionsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_named_expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Star_named_expressionContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Star_named_expressionContext, i
                )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_named_expressions

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_named_expressions"):
                return visitor.visitStar_named_expressions(self)
            else:
                return visitor.visitChildren(self)

    def star_named_expressions(self):

        localctx = FandangoParser.Star_named_expressionsContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 300, self.RULE_star_named_expressions)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2349
            self.star_named_expression()
            self.state = 2354
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 274, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2350
                    self.match(FandangoParser.COMMA)
                    self.state = 2351
                    self.star_named_expression()
                self.state = 2356
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 274, self._ctx)

            self.state = 2358
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2357
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_named_expressionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_named_expression

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_named_expression"):
                return visitor.visitStar_named_expression(self)
            else:
                return visitor.visitChildren(self)

    def star_named_expression(self):

        localctx = FandangoParser.Star_named_expressionContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 302, self.RULE_star_named_expression)
        try:
            self.state = 2363
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 276, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2360
                self.match(FandangoParser.STAR)
                self.state = 2361
                self.bitwise_or(0)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2362
                self.named_expression()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Assignment_expressionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def EXPR_ASSIGN(self):
            return self.getToken(FandangoParser.EXPR_ASSIGN, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_assignment_expression

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAssignment_expression"):
                return visitor.visitAssignment_expression(self)
            else:
                return visitor.visitChildren(self)

    def assignment_expression(self):

        localctx = FandangoParser.Assignment_expressionContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 304, self.RULE_assignment_expression)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2365
            self.identifier()
            self.state = 2366
            self.match(FandangoParser.EXPR_ASSIGN)
            self.state = 2367
            self.expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Named_expressionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def assignment_expression(self):
            return self.getTypedRuleContext(
                FandangoParser.Assignment_expressionContext, 0
            )

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_named_expression

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitNamed_expression"):
                return visitor.visitNamed_expression(self)
            else:
                return visitor.visitChildren(self)

    def named_expression(self):

        localctx = FandangoParser.Named_expressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 306, self.RULE_named_expression)
        try:
            self.state = 2371
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 277, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2369
                self.assignment_expression()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2370
                self.expression()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class DisjunctionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def conjunction(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ConjunctionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ConjunctionContext, i)

        def OR(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OR)
            else:
                return self.getToken(FandangoParser.OR, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_disjunction

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDisjunction"):
                return visitor.visitDisjunction(self)
            else:
                return visitor.visitChildren(self)

    def disjunction(self):

        localctx = FandangoParser.DisjunctionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 308, self.RULE_disjunction)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2373
            self.conjunction()
            self.state = 2378
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 40:
                self.state = 2374
                self.match(FandangoParser.OR)
                self.state = 2375
                self.conjunction()
                self.state = 2380
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ConjunctionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def inversion(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.InversionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.InversionContext, i)

        def AND(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AND)
            else:
                return self.getToken(FandangoParser.AND, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_conjunction

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitConjunction"):
                return visitor.visitConjunction(self)
            else:
                return visitor.visitChildren(self)

    def conjunction(self):

        localctx = FandangoParser.ConjunctionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 310, self.RULE_conjunction)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2381
            self.inversion()
            self.state = 2386
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 12:
                self.state = 2382
                self.match(FandangoParser.AND)
                self.state = 2383
                self.inversion()
                self.state = 2388
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class InversionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NOT(self):
            return self.getToken(FandangoParser.NOT, 0)

        def inversion(self):
            return self.getTypedRuleContext(FandangoParser.InversionContext, 0)

        def comparison(self):
            return self.getTypedRuleContext(FandangoParser.ComparisonContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_inversion

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitInversion"):
                return visitor.visitInversion(self)
            else:
                return visitor.visitChildren(self)

    def inversion(self):

        localctx = FandangoParser.InversionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 312, self.RULE_inversion)
        try:
            self.state = 2392
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [39]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2389
                self.match(FandangoParser.NOT)
                self.state = 2390
                self.inversion()
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                16,
                26,
                37,
                44,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                95,
                96,
                100,
                101,
                103,
            ]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2391
                self.comparison()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ComparisonContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def compare_op_bitwise_or_pair(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Compare_op_bitwise_or_pairContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Compare_op_bitwise_or_pairContext, i
                )

        def getRuleIndex(self):
            return FandangoParser.RULE_comparison

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitComparison"):
                return visitor.visitComparison(self)
            else:
                return visitor.visitChildren(self)

    def comparison(self):

        localctx = FandangoParser.ComparisonContext(self, self._ctx, self.state)
        self.enterRule(localctx, 314, self.RULE_comparison)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2394
            self.bitwise_or(0)
            self.state = 2398
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 281, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2395
                    self.compare_op_bitwise_or_pair()
                self.state = 2400
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 281, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Compare_op_bitwise_or_pairContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def eq_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Eq_bitwise_orContext, 0)

        def noteq_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Noteq_bitwise_orContext, 0)

        def lte_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Lte_bitwise_orContext, 0)

        def lt_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Lt_bitwise_orContext, 0)

        def gte_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Gte_bitwise_orContext, 0)

        def gt_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Gt_bitwise_orContext, 0)

        def notin_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Notin_bitwise_orContext, 0)

        def in_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.In_bitwise_orContext, 0)

        def isnot_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Isnot_bitwise_orContext, 0)

        def is_bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Is_bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_compare_op_bitwise_or_pair

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitCompare_op_bitwise_or_pair"):
                return visitor.visitCompare_op_bitwise_or_pair(self)
            else:
                return visitor.visitChildren(self)

    def compare_op_bitwise_or_pair(self):

        localctx = FandangoParser.Compare_op_bitwise_or_pairContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 316, self.RULE_compare_op_bitwise_or_pair)
        try:
            self.state = 2411
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 282, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2401
                self.eq_bitwise_or()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2402
                self.noteq_bitwise_or()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2403
                self.lte_bitwise_or()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 2404
                self.lt_bitwise_or()
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 2405
                self.gte_bitwise_or()
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 2406
                self.gt_bitwise_or()
                pass

            elif la_ == 7:
                self.enterOuterAlt(localctx, 7)
                self.state = 2407
                self.notin_bitwise_or()
                pass

            elif la_ == 8:
                self.enterOuterAlt(localctx, 8)
                self.state = 2408
                self.in_bitwise_or()
                pass

            elif la_ == 9:
                self.enterOuterAlt(localctx, 9)
                self.state = 2409
                self.isnot_bitwise_or()
                pass

            elif la_ == 10:
                self.enterOuterAlt(localctx, 10)
                self.state = 2410
                self.is_bitwise_or()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Eq_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def EQUALS(self):
            return self.getToken(FandangoParser.EQUALS, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_eq_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitEq_bitwise_or"):
                return visitor.visitEq_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def eq_bitwise_or(self):

        localctx = FandangoParser.Eq_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 318, self.RULE_eq_bitwise_or)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2413
            self.match(FandangoParser.EQUALS)
            self.state = 2414
            self.bitwise_or(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Noteq_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NOT_EQ_2(self):
            return self.getToken(FandangoParser.NOT_EQ_2, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def NOT_EQ_1(self):
            return self.getToken(FandangoParser.NOT_EQ_1, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_noteq_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitNoteq_bitwise_or"):
                return visitor.visitNoteq_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def noteq_bitwise_or(self):

        localctx = FandangoParser.Noteq_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 320, self.RULE_noteq_bitwise_or)
        try:
            self.state = 2420
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [109]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2416
                self.match(FandangoParser.NOT_EQ_2)
                self.state = 2417
                self.bitwise_or(0)
                pass
            elif token in [108]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2418
                self.match(FandangoParser.NOT_EQ_1)
                self.state = 2419
                self.bitwise_or(0)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lte_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def LT_EQ(self):
            return self.getToken(FandangoParser.LT_EQ, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lte_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLte_bitwise_or"):
                return visitor.visitLte_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def lte_bitwise_or(self):

        localctx = FandangoParser.Lte_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 322, self.RULE_lte_bitwise_or)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2422
            self.match(FandangoParser.LT_EQ)
            self.state = 2423
            self.bitwise_or(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lt_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def LESS_THAN(self):
            return self.getToken(FandangoParser.LESS_THAN, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lt_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLt_bitwise_or"):
                return visitor.visitLt_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def lt_bitwise_or(self):

        localctx = FandangoParser.Lt_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 324, self.RULE_lt_bitwise_or)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2425
            self.match(FandangoParser.LESS_THAN)
            self.state = 2426
            self.bitwise_or(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Gte_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def GT_EQ(self):
            return self.getToken(FandangoParser.GT_EQ, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_gte_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGte_bitwise_or"):
                return visitor.visitGte_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def gte_bitwise_or(self):

        localctx = FandangoParser.Gte_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 326, self.RULE_gte_bitwise_or)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2428
            self.match(FandangoParser.GT_EQ)
            self.state = 2429
            self.bitwise_or(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Gt_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def GREATER_THAN(self):
            return self.getToken(FandangoParser.GREATER_THAN, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_gt_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGt_bitwise_or"):
                return visitor.visitGt_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def gt_bitwise_or(self):

        localctx = FandangoParser.Gt_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 328, self.RULE_gt_bitwise_or)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2431
            self.match(FandangoParser.GREATER_THAN)
            self.state = 2432
            self.bitwise_or(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Notin_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NOT(self):
            return self.getToken(FandangoParser.NOT, 0)

        def IN(self):
            return self.getToken(FandangoParser.IN, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_notin_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitNotin_bitwise_or"):
                return visitor.visitNotin_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def notin_bitwise_or(self):

        localctx = FandangoParser.Notin_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 330, self.RULE_notin_bitwise_or)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2434
            self.match(FandangoParser.NOT)
            self.state = 2435
            self.match(FandangoParser.IN)
            self.state = 2436
            self.bitwise_or(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class In_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def IN(self):
            return self.getToken(FandangoParser.IN, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_in_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitIn_bitwise_or"):
                return visitor.visitIn_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def in_bitwise_or(self):

        localctx = FandangoParser.In_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 332, self.RULE_in_bitwise_or)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2438
            self.match(FandangoParser.IN)
            self.state = 2439
            self.bitwise_or(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Isnot_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def IS(self):
            return self.getToken(FandangoParser.IS, 0)

        def NOT(self):
            return self.getToken(FandangoParser.NOT, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_isnot_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitIsnot_bitwise_or"):
                return visitor.visitIsnot_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def isnot_bitwise_or(self):

        localctx = FandangoParser.Isnot_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 334, self.RULE_isnot_bitwise_or)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2441
            self.match(FandangoParser.IS)
            self.state = 2442
            self.match(FandangoParser.NOT)
            self.state = 2443
            self.bitwise_or(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Is_bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def IS(self):
            return self.getToken(FandangoParser.IS, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_is_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitIs_bitwise_or"):
                return visitor.visitIs_bitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def is_bitwise_or(self):

        localctx = FandangoParser.Is_bitwise_orContext(self, self._ctx, self.state)
        self.enterRule(localctx, 336, self.RULE_is_bitwise_or)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2445
            self.match(FandangoParser.IS)
            self.state = 2446
            self.bitwise_or(0)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Bitwise_orContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def bitwise_xor(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_xorContext, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def OR_OP(self):
            return self.getToken(FandangoParser.OR_OP, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_bitwise_or

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitBitwise_or"):
                return visitor.visitBitwise_or(self)
            else:
                return visitor.visitChildren(self)

    def bitwise_or(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.Bitwise_orContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 338
        self.enterRecursionRule(localctx, 338, self.RULE_bitwise_or, _p)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2449
            self.bitwise_xor(0)
            self._ctx.stop = self._input.LT(-1)
            self.state = 2456
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 284, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    localctx = FandangoParser.Bitwise_orContext(
                        self, _parentctx, _parentState
                    )
                    self.pushNewRecursionContext(
                        localctx, _startState, self.RULE_bitwise_or
                    )
                    self.state = 2451
                    if not self.precpred(self._ctx, 2):
                        from antlr4.error.Errors import FailedPredicateException

                        raise FailedPredicateException(
                            self, "self.precpred(self._ctx, 2)"
                        )
                    self.state = 2452
                    self.match(FandangoParser.OR_OP)
                    self.state = 2453
                    self.bitwise_xor(0)
                self.state = 2458
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 284, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class Bitwise_xorContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def bitwise_and(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_andContext, 0)

        def bitwise_xor(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_xorContext, 0)

        def XOR(self):
            return self.getToken(FandangoParser.XOR, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_bitwise_xor

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitBitwise_xor"):
                return visitor.visitBitwise_xor(self)
            else:
                return visitor.visitChildren(self)

    def bitwise_xor(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.Bitwise_xorContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 340
        self.enterRecursionRule(localctx, 340, self.RULE_bitwise_xor, _p)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2460
            self.bitwise_and(0)
            self._ctx.stop = self._input.LT(-1)
            self.state = 2467
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 285, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    localctx = FandangoParser.Bitwise_xorContext(
                        self, _parentctx, _parentState
                    )
                    self.pushNewRecursionContext(
                        localctx, _startState, self.RULE_bitwise_xor
                    )
                    self.state = 2462
                    if not self.precpred(self._ctx, 2):
                        from antlr4.error.Errors import FailedPredicateException

                        raise FailedPredicateException(
                            self, "self.precpred(self._ctx, 2)"
                        )
                    self.state = 2463
                    self.match(FandangoParser.XOR)
                    self.state = 2464
                    self.bitwise_and(0)
                self.state = 2469
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 285, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class Bitwise_andContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def shift_expr(self):
            return self.getTypedRuleContext(FandangoParser.Shift_exprContext, 0)

        def bitwise_and(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_andContext, 0)

        def AND_OP(self):
            return self.getToken(FandangoParser.AND_OP, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_bitwise_and

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitBitwise_and"):
                return visitor.visitBitwise_and(self)
            else:
                return visitor.visitChildren(self)

    def bitwise_and(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.Bitwise_andContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 342
        self.enterRecursionRule(localctx, 342, self.RULE_bitwise_and, _p)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2471
            self.shift_expr(0)
            self._ctx.stop = self._input.LT(-1)
            self.state = 2478
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 286, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    localctx = FandangoParser.Bitwise_andContext(
                        self, _parentctx, _parentState
                    )
                    self.pushNewRecursionContext(
                        localctx, _startState, self.RULE_bitwise_and
                    )
                    self.state = 2473
                    if not self.precpred(self._ctx, 2):
                        from antlr4.error.Errors import FailedPredicateException

                        raise FailedPredicateException(
                            self, "self.precpred(self._ctx, 2)"
                        )
                    self.state = 2474
                    self.match(FandangoParser.AND_OP)
                    self.state = 2475
                    self.shift_expr(0)
                self.state = 2480
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 286, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class Shift_exprContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def sum_(self):
            return self.getTypedRuleContext(FandangoParser.SumContext, 0)

        def shift_expr(self):
            return self.getTypedRuleContext(FandangoParser.Shift_exprContext, 0)

        def LEFT_SHIFT(self):
            return self.getToken(FandangoParser.LEFT_SHIFT, 0)

        def RIGHT_SHIFT(self):
            return self.getToken(FandangoParser.RIGHT_SHIFT, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_shift_expr

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitShift_expr"):
                return visitor.visitShift_expr(self)
            else:
                return visitor.visitChildren(self)

    def shift_expr(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.Shift_exprContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 344
        self.enterRecursionRule(localctx, 344, self.RULE_shift_expr, _p)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2482
            self.sum_(0)
            self._ctx.stop = self._input.LT(-1)
            self.state = 2492
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 288, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    self.state = 2490
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input, 287, self._ctx)
                    if la_ == 1:
                        localctx = FandangoParser.Shift_exprContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_shift_expr
                        )
                        self.state = 2484
                        if not self.precpred(self._ctx, 3):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 3)"
                            )
                        self.state = 2485
                        self.match(FandangoParser.LEFT_SHIFT)
                        self.state = 2486
                        self.sum_(0)
                        pass

                    elif la_ == 2:
                        localctx = FandangoParser.Shift_exprContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_shift_expr
                        )
                        self.state = 2487
                        if not self.precpred(self._ctx, 2):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 2)"
                            )
                        self.state = 2488
                        self.match(FandangoParser.RIGHT_SHIFT)
                        self.state = 2489
                        self.sum_(0)
                        pass

                self.state = 2494
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 288, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class SumContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def term(self):
            return self.getTypedRuleContext(FandangoParser.TermContext, 0)

        def sum_(self):
            return self.getTypedRuleContext(FandangoParser.SumContext, 0)

        def ADD(self):
            return self.getToken(FandangoParser.ADD, 0)

        def MINUS(self):
            return self.getToken(FandangoParser.MINUS, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_sum

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSum"):
                return visitor.visitSum(self)
            else:
                return visitor.visitChildren(self)

    def sum_(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.SumContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 346
        self.enterRecursionRule(localctx, 346, self.RULE_sum, _p)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2496
            self.term(0)
            self._ctx.stop = self._input.LT(-1)
            self.state = 2506
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 290, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    self.state = 2504
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input, 289, self._ctx)
                    if la_ == 1:
                        localctx = FandangoParser.SumContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_sum
                        )
                        self.state = 2498
                        if not self.precpred(self._ctx, 3):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 3)"
                            )
                        self.state = 2499
                        self.match(FandangoParser.ADD)
                        self.state = 2500
                        self.term(0)
                        pass

                    elif la_ == 2:
                        localctx = FandangoParser.SumContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_sum
                        )
                        self.state = 2501
                        if not self.precpred(self._ctx, 2):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 2)"
                            )
                        self.state = 2502
                        self.match(FandangoParser.MINUS)
                        self.state = 2503
                        self.term(0)
                        pass

                self.state = 2508
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 290, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class TermContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def factor(self):
            return self.getTypedRuleContext(FandangoParser.FactorContext, 0)

        def term(self):
            return self.getTypedRuleContext(FandangoParser.TermContext, 0)

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def DIV(self):
            return self.getToken(FandangoParser.DIV, 0)

        def IDIV(self):
            return self.getToken(FandangoParser.IDIV, 0)

        def MOD(self):
            return self.getToken(FandangoParser.MOD, 0)

        def AT(self):
            return self.getToken(FandangoParser.AT, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_term

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitTerm"):
                return visitor.visitTerm(self)
            else:
                return visitor.visitChildren(self)

    def term(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.TermContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 348
        self.enterRecursionRule(localctx, 348, self.RULE_term, _p)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2510
            self.factor()
            self._ctx.stop = self._input.LT(-1)
            self.state = 2529
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 292, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    self.state = 2527
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input, 291, self._ctx)
                    if la_ == 1:
                        localctx = FandangoParser.TermContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_term
                        )
                        self.state = 2512
                        if not self.precpred(self._ctx, 6):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 6)"
                            )
                        self.state = 2513
                        self.match(FandangoParser.STAR)
                        self.state = 2514
                        self.factor()
                        pass

                    elif la_ == 2:
                        localctx = FandangoParser.TermContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_term
                        )
                        self.state = 2515
                        if not self.precpred(self._ctx, 5):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 5)"
                            )
                        self.state = 2516
                        self.match(FandangoParser.DIV)
                        self.state = 2517
                        self.factor()
                        pass

                    elif la_ == 3:
                        localctx = FandangoParser.TermContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_term
                        )
                        self.state = 2518
                        if not self.precpred(self._ctx, 4):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 4)"
                            )
                        self.state = 2519
                        self.match(FandangoParser.IDIV)
                        self.state = 2520
                        self.factor()
                        pass

                    elif la_ == 4:
                        localctx = FandangoParser.TermContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_term
                        )
                        self.state = 2521
                        if not self.precpred(self._ctx, 3):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 3)"
                            )
                        self.state = 2522
                        self.match(FandangoParser.MOD)
                        self.state = 2523
                        self.factor()
                        pass

                    elif la_ == 5:
                        localctx = FandangoParser.TermContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_term
                        )
                        self.state = 2524
                        if not self.precpred(self._ctx, 2):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 2)"
                            )
                        self.state = 2525
                        self.match(FandangoParser.AT)
                        self.state = 2526
                        self.factor()
                        pass

                self.state = 2531
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 292, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class FactorContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def ADD(self):
            return self.getToken(FandangoParser.ADD, 0)

        def factor(self):
            return self.getTypedRuleContext(FandangoParser.FactorContext, 0)

        def MINUS(self):
            return self.getToken(FandangoParser.MINUS, 0)

        def NOT_OP(self):
            return self.getToken(FandangoParser.NOT_OP, 0)

        def power(self):
            return self.getTypedRuleContext(FandangoParser.PowerContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_factor

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFactor"):
                return visitor.visitFactor(self)
            else:
                return visitor.visitChildren(self)

    def factor(self):

        localctx = FandangoParser.FactorContext(self, self._ctx, self.state)
        self.enterRule(localctx, 350, self.RULE_factor)
        try:
            self.state = 2539
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [95]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2532
                self.match(FandangoParser.ADD)
                self.state = 2533
                self.factor()
                pass
            elif token in [96]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2534
                self.match(FandangoParser.MINUS)
                self.state = 2535
                self.factor()
                pass
            elif token in [100]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2536
                self.match(FandangoParser.NOT_OP)
                self.state = 2537
                self.factor()
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                16,
                26,
                37,
                44,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                101,
                103,
            ]:
                self.enterOuterAlt(localctx, 4)
                self.state = 2538
                self.power()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class PowerContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def await_primary(self):
            return self.getTypedRuleContext(FandangoParser.Await_primaryContext, 0)

        def POWER(self):
            return self.getToken(FandangoParser.POWER, 0)

        def factor(self):
            return self.getTypedRuleContext(FandangoParser.FactorContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_power

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPower"):
                return visitor.visitPower(self)
            else:
                return visitor.visitChildren(self)

    def power(self):

        localctx = FandangoParser.PowerContext(self, self._ctx, self.state)
        self.enterRule(localctx, 352, self.RULE_power)
        try:
            self.state = 2546
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 294, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2541
                self.await_primary()
                self.state = 2542
                self.match(FandangoParser.POWER)
                self.state = 2543
                self.factor()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2545
                self.await_primary()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Await_primaryContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def AWAIT(self):
            return self.getToken(FandangoParser.AWAIT, 0)

        def primary(self):
            return self.getTypedRuleContext(FandangoParser.PrimaryContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_await_primary

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAwait_primary"):
                return visitor.visitAwait_primary(self)
            else:
                return visitor.visitChildren(self)

    def await_primary(self):

        localctx = FandangoParser.Await_primaryContext(self, self._ctx, self.state)
        self.enterRule(localctx, 354, self.RULE_await_primary)
        try:
            self.state = 2551
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [16]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2548
                self.match(FandangoParser.AWAIT)
                self.state = 2549
                self.primary(0)
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                26,
                37,
                44,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                101,
                103,
            ]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2550
                self.primary(0)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class PrimaryContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def atom(self):
            return self.getTypedRuleContext(FandangoParser.AtomContext, 0)

        def primary(self):
            return self.getTypedRuleContext(FandangoParser.PrimaryContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def genexp(self):
            return self.getTypedRuleContext(FandangoParser.GenexpContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def arguments(self):
            return self.getTypedRuleContext(FandangoParser.ArgumentsContext, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def slices(self):
            return self.getTypedRuleContext(FandangoParser.SlicesContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_primary

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitPrimary"):
                return visitor.visitPrimary(self)
            else:
                return visitor.visitChildren(self)

    def primary(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.PrimaryContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 356
        self.enterRecursionRule(localctx, 356, self.RULE_primary, _p)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2554
            self.atom()
            self._ctx.stop = self._input.LT(-1)
            self.state = 2574
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 298, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    self.state = 2572
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input, 297, self._ctx)
                    if la_ == 1:
                        localctx = FandangoParser.PrimaryContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_primary
                        )
                        self.state = 2556
                        if not self.precpred(self._ctx, 5):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 5)"
                            )
                        self.state = 2557
                        self.match(FandangoParser.DOT)
                        self.state = 2558
                        self.identifier()
                        pass

                    elif la_ == 2:
                        localctx = FandangoParser.PrimaryContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_primary
                        )
                        self.state = 2559
                        if not self.precpred(self._ctx, 4):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 4)"
                            )
                        self.state = 2560
                        self.genexp()
                        pass

                    elif la_ == 3:
                        localctx = FandangoParser.PrimaryContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_primary
                        )
                        self.state = 2561
                        if not self.precpred(self._ctx, 3):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 3)"
                            )
                        self.state = 2562
                        self.match(FandangoParser.OPEN_PAREN)
                        self.state = 2564
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if (
                            ((_la) & ~0x3F) == 0
                            and ((1 << _la) & 2558062902154166776) != 0
                        ) or (
                            (((_la - 77)) & ~0x3F) == 0
                            and ((1 << (_la - 77)) & 93071897) != 0
                        ):
                            self.state = 2563
                            self.arguments()

                        self.state = 2566
                        self.match(FandangoParser.CLOSE_PAREN)
                        pass

                    elif la_ == 4:
                        localctx = FandangoParser.PrimaryContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_primary
                        )
                        self.state = 2567
                        if not self.precpred(self._ctx, 2):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 2)"
                            )
                        self.state = 2568
                        self.match(FandangoParser.OPEN_BRACK)
                        self.state = 2569
                        self.slices()
                        self.state = 2570
                        self.match(FandangoParser.CLOSE_BRACK)
                        pass

                self.state = 2576
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 298, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class SlicesContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def slice_(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.SliceContext)
            else:
                return self.getTypedRuleContext(FandangoParser.SliceContext, i)

        def starred_expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Starred_expressionContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Starred_expressionContext, i
                )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_slices

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSlices"):
                return visitor.visitSlices(self)
            else:
                return visitor.visitChildren(self)

    def slices(self):

        localctx = FandangoParser.SlicesContext(self, self._ctx, self.state)
        self.enterRule(localctx, 358, self.RULE_slices)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2579
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 299, self._ctx)
            if la_ == 1:
                self.state = 2577
                self.slice_()
                pass

            elif la_ == 2:
                self.state = 2578
                self.starred_expression()
                pass

            self.state = 2588
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 301, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2581
                    self.match(FandangoParser.COMMA)
                    self.state = 2584
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input, 300, self._ctx)
                    if la_ == 1:
                        self.state = 2582
                        self.slice_()
                        pass

                    elif la_ == 2:
                        self.state = 2583
                        self.starred_expression()
                        pass

                self.state = 2590
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 301, self._ctx)

            self.state = 2592
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2591
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class SliceContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def COLON(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COLON)
            else:
                return self.getToken(FandangoParser.COLON, i)

        def expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ExpressionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ExpressionContext, i)

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_slice

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSlice"):
                return visitor.visitSlice(self)
            else:
                return visitor.visitChildren(self)

    def slice_(self):

        localctx = FandangoParser.SliceContext(self, self._ctx, self.state)
        self.enterRule(localctx, 360, self.RULE_slice)
        self._la = 0  # Token type
        try:
            self.state = 2608
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 307, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2595
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
                ):
                    self.state = 2594
                    self.expression()

                self.state = 2597
                self.match(FandangoParser.COLON)
                self.state = 2599
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
                ):
                    self.state = 2598
                    self.expression()

                self.state = 2605
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 84:
                    self.state = 2601
                    self.match(FandangoParser.COLON)
                    self.state = 2603
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if (
                        ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0
                    ) or (
                        (((_la - 77)) & ~0x3F) == 0
                        and ((1 << (_la - 77)) & 93071897) != 0
                    ):
                        self.state = 2602
                        self.expression()

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2607
                self.named_expression()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class AtomContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def selector_length(self):
            return self.getTypedRuleContext(FandangoParser.Selector_lengthContext, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def TRUE(self):
            return self.getToken(FandangoParser.TRUE, 0)

        def FALSE(self):
            return self.getToken(FandangoParser.FALSE, 0)

        def NONE(self):
            return self.getToken(FandangoParser.NONE, 0)

        def strings(self):
            return self.getTypedRuleContext(FandangoParser.StringsContext, 0)

        def NUMBER(self):
            return self.getToken(FandangoParser.NUMBER, 0)

        def tuple_(self):
            return self.getTypedRuleContext(FandangoParser.TupleContext, 0)

        def group(self):
            return self.getTypedRuleContext(FandangoParser.GroupContext, 0)

        def genexp(self):
            return self.getTypedRuleContext(FandangoParser.GenexpContext, 0)

        def list_(self):
            return self.getTypedRuleContext(FandangoParser.ListContext, 0)

        def listcomp(self):
            return self.getTypedRuleContext(FandangoParser.ListcompContext, 0)

        def dict_(self):
            return self.getTypedRuleContext(FandangoParser.DictContext, 0)

        def set_(self):
            return self.getTypedRuleContext(FandangoParser.SetContext, 0)

        def dictcomp(self):
            return self.getTypedRuleContext(FandangoParser.DictcompContext, 0)

        def setcomp(self):
            return self.getTypedRuleContext(FandangoParser.SetcompContext, 0)

        def ELLIPSIS(self):
            return self.getToken(FandangoParser.ELLIPSIS, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_atom

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitAtom"):
                return visitor.visitAtom(self)
            else:
                return visitor.visitChildren(self)

    def atom(self):

        localctx = FandangoParser.AtomContext(self, self._ctx, self.state)
        self.enterRule(localctx, 362, self.RULE_atom)
        try:
            self.state = 2633
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 311, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2610
                self.selector_length()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2611
                self.identifier()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2612
                self.match(FandangoParser.TRUE)
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 2613
                self.match(FandangoParser.FALSE)
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 2614
                self.match(FandangoParser.NONE)
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 2615
                self.strings()
                pass

            elif la_ == 7:
                self.enterOuterAlt(localctx, 7)
                self.state = 2616
                self.match(FandangoParser.NUMBER)
                pass

            elif la_ == 8:
                self.enterOuterAlt(localctx, 8)
                self.state = 2620
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input, 308, self._ctx)
                if la_ == 1:
                    self.state = 2617
                    self.tuple_()
                    pass

                elif la_ == 2:
                    self.state = 2618
                    self.group()
                    pass

                elif la_ == 3:
                    self.state = 2619
                    self.genexp()
                    pass

                pass

            elif la_ == 9:
                self.enterOuterAlt(localctx, 9)
                self.state = 2624
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input, 309, self._ctx)
                if la_ == 1:
                    self.state = 2622
                    self.list_()
                    pass

                elif la_ == 2:
                    self.state = 2623
                    self.listcomp()
                    pass

                pass

            elif la_ == 10:
                self.enterOuterAlt(localctx, 10)
                self.state = 2630
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input, 310, self._ctx)
                if la_ == 1:
                    self.state = 2626
                    self.dict_()
                    pass

                elif la_ == 2:
                    self.state = 2627
                    self.set_()
                    pass

                elif la_ == 3:
                    self.state = 2628
                    self.dictcomp()
                    pass

                elif la_ == 4:
                    self.state = 2629
                    self.setcomp()
                    pass

                pass

            elif la_ == 11:
                self.enterOuterAlt(localctx, 11)
                self.state = 2632
                self.match(FandangoParser.ELLIPSIS)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class GroupContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def yield_expr(self):
            return self.getTypedRuleContext(FandangoParser.Yield_exprContext, 0)

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_group

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGroup"):
                return visitor.visitGroup(self)
            else:
                return visitor.visitChildren(self)

    def group(self):

        localctx = FandangoParser.GroupContext(self, self._ctx, self.state)
        self.enterRule(localctx, 364, self.RULE_group)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2635
            self.match(FandangoParser.OPEN_PAREN)
            self.state = 2638
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [50]:
                self.state = 2636
                self.yield_expr()
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                16,
                26,
                35,
                37,
                39,
                44,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                95,
                96,
                100,
                101,
                103,
            ]:
                self.state = 2637
                self.named_expression()
                pass
            else:
                raise NoViableAltException(self)

            self.state = 2640
            self.match(FandangoParser.CLOSE_PAREN)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class LambdefContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def LAMBDA(self):
            return self.getToken(FandangoParser.LAMBDA, 0)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def lambda_params(self):
            return self.getTypedRuleContext(FandangoParser.Lambda_paramsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lambdef

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambdef"):
                return visitor.visitLambdef(self)
            else:
                return visitor.visitChildren(self)

    def lambdef(self):

        localctx = FandangoParser.LambdefContext(self, self._ctx, self.state)
        self.enterRule(localctx, 366, self.RULE_lambdef)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2642
            self.match(FandangoParser.LAMBDA)
            self.state = 2644
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (((_la - 55)) & ~0x3F) == 0 and ((1 << (_la - 55)) & 2181038151) != 0:
                self.state = 2643
                self.lambda_params()

            self.state = 2646
            self.match(FandangoParser.COLON)
            self.state = 2647
            self.expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_paramsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def lambda_parameters(self):
            return self.getTypedRuleContext(FandangoParser.Lambda_parametersContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_params

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_params"):
                return visitor.visitLambda_params(self)
            else:
                return visitor.visitChildren(self)

    def lambda_params(self):

        localctx = FandangoParser.Lambda_paramsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 368, self.RULE_lambda_params)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2649
            self.lambda_parameters()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_parametersContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def lambda_slash_no_default(self):
            return self.getTypedRuleContext(
                FandangoParser.Lambda_slash_no_defaultContext, 0
            )

        def lambda_param_no_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Lambda_param_no_defaultContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Lambda_param_no_defaultContext, i
                )

        def lambda_param_with_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Lambda_param_with_defaultContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Lambda_param_with_defaultContext, i
                )

        def lambda_star_etc(self):
            return self.getTypedRuleContext(FandangoParser.Lambda_star_etcContext, 0)

        def lambda_slash_with_default(self):
            return self.getTypedRuleContext(
                FandangoParser.Lambda_slash_with_defaultContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_parameters

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_parameters"):
                return visitor.visitLambda_parameters(self)
            else:
                return visitor.visitChildren(self)

    def lambda_parameters(self):

        localctx = FandangoParser.Lambda_parametersContext(self, self._ctx, self.state)
        self.enterRule(localctx, 370, self.RULE_lambda_parameters)
        self._la = 0  # Token type
        try:
            self.state = 2700
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 324, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2651
                self.lambda_slash_no_default()
                self.state = 2655
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 314, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 2652
                        self.lambda_param_no_default()
                    self.state = 2657
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 314, self._ctx)

                self.state = 2661
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0:
                    self.state = 2658
                    self.lambda_param_with_default()
                    self.state = 2663
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2665
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 80 or _la == 86:
                    self.state = 2664
                    self.lambda_star_etc()

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2667
                self.lambda_slash_with_default()
                self.state = 2671
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0:
                    self.state = 2668
                    self.lambda_param_with_default()
                    self.state = 2673
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2675
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 80 or _la == 86:
                    self.state = 2674
                    self.lambda_star_etc()

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2678
                self._errHandler.sync(self)
                _alt = 1
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 2677
                        self.lambda_param_no_default()

                    else:
                        raise NoViableAltException(self)
                    self.state = 2680
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 319, self._ctx)

                self.state = 2685
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0:
                    self.state = 2682
                    self.lambda_param_with_default()
                    self.state = 2687
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2689
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 80 or _la == 86:
                    self.state = 2688
                    self.lambda_star_etc()

                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 2692
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while True:
                    self.state = 2691
                    self.lambda_param_with_default()
                    self.state = 2694
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if not (
                        (
                            ((_la) & ~0x3F) == 0
                            and ((1 << _la) & 2558044588346441728) != 0
                        )
                    ):
                        break

                self.state = 2697
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 80 or _la == 86:
                    self.state = 2696
                    self.lambda_star_etc()

                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 2699
                self.lambda_star_etc()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_slash_no_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def DIV(self):
            return self.getToken(FandangoParser.DIV, 0)

        def lambda_param_no_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Lambda_param_no_defaultContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Lambda_param_no_defaultContext, i
                )

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_slash_no_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_slash_no_default"):
                return visitor.visitLambda_slash_no_default(self)
            else:
                return visitor.visitChildren(self)

    def lambda_slash_no_default(self):

        localctx = FandangoParser.Lambda_slash_no_defaultContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 372, self.RULE_lambda_slash_no_default)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2703
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while True:
                self.state = 2702
                self.lambda_param_no_default()
                self.state = 2705
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if not (
                    (((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0)
                ):
                    break

            self.state = 2707
            self.match(FandangoParser.DIV)
            self.state = 2709
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2708
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_slash_with_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def DIV(self):
            return self.getToken(FandangoParser.DIV, 0)

        def lambda_param_no_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Lambda_param_no_defaultContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Lambda_param_no_defaultContext, i
                )

        def lambda_param_with_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Lambda_param_with_defaultContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Lambda_param_with_defaultContext, i
                )

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_slash_with_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_slash_with_default"):
                return visitor.visitLambda_slash_with_default(self)
            else:
                return visitor.visitChildren(self)

    def lambda_slash_with_default(self):

        localctx = FandangoParser.Lambda_slash_with_defaultContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 374, self.RULE_lambda_slash_with_default)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2714
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 327, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2711
                    self.lambda_param_no_default()
                self.state = 2716
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 327, self._ctx)

            self.state = 2718
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while True:
                self.state = 2717
                self.lambda_param_with_default()
                self.state = 2720
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if not (
                    (((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0)
                ):
                    break

            self.state = 2722
            self.match(FandangoParser.DIV)
            self.state = 2724
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2723
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_star_etcContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def lambda_param_no_default(self):
            return self.getTypedRuleContext(
                FandangoParser.Lambda_param_no_defaultContext, 0
            )

        def lambda_param_maybe_default(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Lambda_param_maybe_defaultContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Lambda_param_maybe_defaultContext, i
                )

        def lambda_kwds(self):
            return self.getTypedRuleContext(FandangoParser.Lambda_kwdsContext, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_star_etc

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_star_etc"):
                return visitor.visitLambda_star_etc(self)
            else:
                return visitor.visitChildren(self)

    def lambda_star_etc(self):

        localctx = FandangoParser.Lambda_star_etcContext(self, self._ctx, self.state)
        self.enterRule(localctx, 376, self.RULE_lambda_star_etc)
        self._la = 0  # Token type
        try:
            self.state = 2748
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 334, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2726
                self.match(FandangoParser.STAR)
                self.state = 2727
                self.lambda_param_no_default()
                self.state = 2731
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0:
                    self.state = 2728
                    self.lambda_param_maybe_default()
                    self.state = 2733
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2735
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 86:
                    self.state = 2734
                    self.lambda_kwds()

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2737
                self.match(FandangoParser.STAR)
                self.state = 2738
                self.match(FandangoParser.COMMA)
                self.state = 2740
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while True:
                    self.state = 2739
                    self.lambda_param_maybe_default()
                    self.state = 2742
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)
                    if not (
                        (
                            ((_la) & ~0x3F) == 0
                            and ((1 << _la) & 2558044588346441728) != 0
                        )
                    ):
                        break

                self.state = 2745
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 86:
                    self.state = 2744
                    self.lambda_kwds()

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 2747
                self.lambda_kwds()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_kwdsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def POWER(self):
            return self.getToken(FandangoParser.POWER, 0)

        def lambda_param_no_default(self):
            return self.getTypedRuleContext(
                FandangoParser.Lambda_param_no_defaultContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_kwds

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_kwds"):
                return visitor.visitLambda_kwds(self)
            else:
                return visitor.visitChildren(self)

    def lambda_kwds(self):

        localctx = FandangoParser.Lambda_kwdsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 378, self.RULE_lambda_kwds)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2750
            self.match(FandangoParser.POWER)
            self.state = 2751
            self.lambda_param_no_default()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_param_no_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def lambda_param(self):
            return self.getTypedRuleContext(FandangoParser.Lambda_paramContext, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_param_no_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_param_no_default"):
                return visitor.visitLambda_param_no_default(self)
            else:
                return visitor.visitChildren(self)

    def lambda_param_no_default(self):

        localctx = FandangoParser.Lambda_param_no_defaultContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 380, self.RULE_lambda_param_no_default)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2753
            self.lambda_param()
            self.state = 2755
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2754
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_param_with_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def lambda_param(self):
            return self.getTypedRuleContext(FandangoParser.Lambda_paramContext, 0)

        def default(self):
            return self.getTypedRuleContext(FandangoParser.DefaultContext, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_param_with_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_param_with_default"):
                return visitor.visitLambda_param_with_default(self)
            else:
                return visitor.visitChildren(self)

    def lambda_param_with_default(self):

        localctx = FandangoParser.Lambda_param_with_defaultContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 382, self.RULE_lambda_param_with_default)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2757
            self.lambda_param()
            self.state = 2758
            self.default()
            self.state = 2760
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2759
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_param_maybe_defaultContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def lambda_param(self):
            return self.getTypedRuleContext(FandangoParser.Lambda_paramContext, 0)

        def default(self):
            return self.getTypedRuleContext(FandangoParser.DefaultContext, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_param_maybe_default

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_param_maybe_default"):
                return visitor.visitLambda_param_maybe_default(self)
            else:
                return visitor.visitChildren(self)

    def lambda_param_maybe_default(self):

        localctx = FandangoParser.Lambda_param_maybe_defaultContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 384, self.RULE_lambda_param_maybe_default)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2762
            self.lambda_param()
            self.state = 2764
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 87:
                self.state = 2763
                self.default()

            self.state = 2767
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 2766
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Lambda_paramContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_lambda_param

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitLambda_param"):
                return visitor.visitLambda_param(self)
            else:
                return visitor.visitChildren(self)

    def lambda_param(self):

        localctx = FandangoParser.Lambda_paramContext(self, self._ctx, self.state)
        self.enterRule(localctx, 386, self.RULE_lambda_param)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2769
            self.identifier()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_middle_no_quoteContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_replacement_field(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_replacement_fieldContext, 0
            )

        def fstring_any_no_quote(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_any_no_quoteContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_middle_no_quote

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_middle_no_quote"):
                return visitor.visitFstring_middle_no_quote(self)
            else:
                return visitor.visitChildren(self)

    def fstring_middle_no_quote(self):

        localctx = FandangoParser.Fstring_middle_no_quoteContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 388, self.RULE_fstring_middle_no_quote)
        try:
            self.state = 2773
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 339, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2771
                self.fstring_replacement_field()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2772
                self.fstring_any_no_quote()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_middle_no_single_quoteContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_replacement_field(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_replacement_fieldContext, 0
            )

        def fstring_any_no_single_quote(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_any_no_single_quoteContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_middle_no_single_quote

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_middle_no_single_quote"):
                return visitor.visitFstring_middle_no_single_quote(self)
            else:
                return visitor.visitChildren(self)

    def fstring_middle_no_single_quote(self):

        localctx = FandangoParser.Fstring_middle_no_single_quoteContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 390, self.RULE_fstring_middle_no_single_quote)
        try:
            self.state = 2777
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 340, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2775
                self.fstring_replacement_field()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2776
                self.fstring_any_no_single_quote()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_middle_breaks_no_triple_quoteContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_replacement_field(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_replacement_fieldContext, 0
            )

        def fstring_any_breaks_no_triple_quote(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_any_breaks_no_triple_quoteContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_middle_breaks_no_triple_quote

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_middle_breaks_no_triple_quote"):
                return visitor.visitFstring_middle_breaks_no_triple_quote(self)
            else:
                return visitor.visitChildren(self)

    def fstring_middle_breaks_no_triple_quote(self):

        localctx = FandangoParser.Fstring_middle_breaks_no_triple_quoteContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 392, self.RULE_fstring_middle_breaks_no_triple_quote)
        try:
            self.state = 2781
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 341, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2779
                self.fstring_replacement_field()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2780
                self.fstring_any_breaks_no_triple_quote()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_middle_breaks_no_triple_single_quoteContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_replacement_field(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_replacement_fieldContext, 0
            )

        def fstring_any_breaks_no_triple_single_quote(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_any_breaks_no_triple_single_quoteContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_middle_breaks_no_triple_single_quote

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_middle_breaks_no_triple_single_quote"):
                return visitor.visitFstring_middle_breaks_no_triple_single_quote(self)
            else:
                return visitor.visitChildren(self)

    def fstring_middle_breaks_no_triple_single_quote(self):

        localctx = FandangoParser.Fstring_middle_breaks_no_triple_single_quoteContext(
            self, self._ctx, self.state
        )
        self.enterRule(
            localctx, 394, self.RULE_fstring_middle_breaks_no_triple_single_quote
        )
        try:
            self.state = 2785
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 342, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2783
                self.fstring_replacement_field()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2784
                self.fstring_any_breaks_no_triple_single_quote()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_any_no_quoteContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_any(self):
            return self.getTypedRuleContext(FandangoParser.Fstring_anyContext, 0)

        def FSTRING_END_SINGLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_SINGLE_QUOTE, 0)

        def FSTRING_END_TRIPLE_SINGLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_TRIPLE_SINGLE_QUOTE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_any_no_quote

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_any_no_quote"):
                return visitor.visitFstring_any_no_quote(self)
            else:
                return visitor.visitChildren(self)

    def fstring_any_no_quote(self):

        localctx = FandangoParser.Fstring_any_no_quoteContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 396, self.RULE_fstring_any_no_quote)
        try:
            self.state = 2790
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [
                8,
                10,
                11,
                12,
                13,
                14,
                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,
                61,
                74,
                75,
                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,
                111,
                112,
                113,
                114,
                115,
                116,
                117,
                118,
                119,
                120,
                121,
                122,
                123,
                124,
                125,
                126,
                128,
                131,
            ]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2787
                self.fstring_any()
                pass
            elif token in [66]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2788
                self.match(FandangoParser.FSTRING_END_SINGLE_QUOTE)
                pass
            elif token in [64]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2789
                self.match(FandangoParser.FSTRING_END_TRIPLE_SINGLE_QUOTE)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_any_no_single_quoteContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_any(self):
            return self.getTypedRuleContext(FandangoParser.Fstring_anyContext, 0)

        def FSTRING_END_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_QUOTE, 0)

        def FSTRING_END_TRIPLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_TRIPLE_QUOTE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_any_no_single_quote

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_any_no_single_quote"):
                return visitor.visitFstring_any_no_single_quote(self)
            else:
                return visitor.visitChildren(self)

    def fstring_any_no_single_quote(self):

        localctx = FandangoParser.Fstring_any_no_single_quoteContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 398, self.RULE_fstring_any_no_single_quote)
        try:
            self.state = 2795
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [
                8,
                10,
                11,
                12,
                13,
                14,
                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,
                61,
                74,
                75,
                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,
                111,
                112,
                113,
                114,
                115,
                116,
                117,
                118,
                119,
                120,
                121,
                122,
                123,
                124,
                125,
                126,
                128,
                131,
            ]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2792
                self.fstring_any()
                pass
            elif token in [65]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2793
                self.match(FandangoParser.FSTRING_END_QUOTE)
                pass
            elif token in [63]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2794
                self.match(FandangoParser.FSTRING_END_TRIPLE_QUOTE)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_middleContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_any(self):
            return self.getTypedRuleContext(FandangoParser.Fstring_anyContext, 0)

        def FSTRING_END_SINGLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_SINGLE_QUOTE, 0)

        def FSTRING_END_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_QUOTE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_middle

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_middle"):
                return visitor.visitFstring_middle(self)
            else:
                return visitor.visitChildren(self)

    def fstring_middle(self):

        localctx = FandangoParser.Fstring_middleContext(self, self._ctx, self.state)
        self.enterRule(localctx, 400, self.RULE_fstring_middle)
        try:
            self.state = 2800
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [
                8,
                10,
                11,
                12,
                13,
                14,
                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,
                61,
                74,
                75,
                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,
                111,
                112,
                113,
                114,
                115,
                116,
                117,
                118,
                119,
                120,
                121,
                122,
                123,
                124,
                125,
                126,
                128,
                131,
            ]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2797
                self.fstring_any()
                pass
            elif token in [66]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2798
                self.match(FandangoParser.FSTRING_END_SINGLE_QUOTE)
                pass
            elif token in [65]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2799
                self.match(FandangoParser.FSTRING_END_QUOTE)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_any_breaks_no_triple_quoteContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_any(self):
            return self.getTypedRuleContext(FandangoParser.Fstring_anyContext, 0)

        def NEWLINE(self):
            return self.getToken(FandangoParser.NEWLINE, 0)

        def FSTRING_END_SINGLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_SINGLE_QUOTE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_any_breaks_no_triple_quote

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_any_breaks_no_triple_quote"):
                return visitor.visitFstring_any_breaks_no_triple_quote(self)
            else:
                return visitor.visitChildren(self)

    def fstring_any_breaks_no_triple_quote(self):

        localctx = FandangoParser.Fstring_any_breaks_no_triple_quoteContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 402, self.RULE_fstring_any_breaks_no_triple_quote)
        try:
            self.state = 2805
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [
                8,
                10,
                11,
                12,
                13,
                14,
                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,
                61,
                74,
                75,
                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,
                111,
                112,
                113,
                114,
                115,
                116,
                117,
                118,
                119,
                120,
                121,
                122,
                123,
                124,
                125,
                126,
                128,
                131,
            ]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2802
                self.fstring_any()
                pass
            elif token in [127]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2803
                self.match(FandangoParser.NEWLINE)
                pass
            elif token in [66]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2804
                self.match(FandangoParser.FSTRING_END_SINGLE_QUOTE)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_any_breaks_no_triple_single_quoteContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_any(self):
            return self.getTypedRuleContext(FandangoParser.Fstring_anyContext, 0)

        def NEWLINE(self):
            return self.getToken(FandangoParser.NEWLINE, 0)

        def FSTRING_END_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_QUOTE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_any_breaks_no_triple_single_quote

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_any_breaks_no_triple_single_quote"):
                return visitor.visitFstring_any_breaks_no_triple_single_quote(self)
            else:
                return visitor.visitChildren(self)

    def fstring_any_breaks_no_triple_single_quote(self):

        localctx = FandangoParser.Fstring_any_breaks_no_triple_single_quoteContext(
            self, self._ctx, self.state
        )
        self.enterRule(
            localctx, 404, self.RULE_fstring_any_breaks_no_triple_single_quote
        )
        try:
            self.state = 2810
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [
                8,
                10,
                11,
                12,
                13,
                14,
                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,
                61,
                74,
                75,
                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,
                111,
                112,
                113,
                114,
                115,
                116,
                117,
                118,
                119,
                120,
                121,
                122,
                123,
                124,
                125,
                126,
                128,
                131,
            ]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2807
                self.fstring_any()
                pass
            elif token in [127]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2808
                self.match(FandangoParser.NEWLINE)
                pass
            elif token in [65]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2809
                self.match(FandangoParser.FSTRING_END_QUOTE)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_anyContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NUMBER(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NUMBER)
            else:
                return self.getToken(FandangoParser.NUMBER, i)

        def PYTHON_START(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.PYTHON_START)
            else:
                return self.getToken(FandangoParser.PYTHON_START, i)

        def PYTHON_END(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.PYTHON_END)
            else:
                return self.getToken(FandangoParser.PYTHON_END, i)

        def AND(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AND)
            else:
                return self.getToken(FandangoParser.AND, i)

        def AS(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AS)
            else:
                return self.getToken(FandangoParser.AS, i)

        def ASSERT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ASSERT)
            else:
                return self.getToken(FandangoParser.ASSERT, i)

        def ASYNC(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ASYNC)
            else:
                return self.getToken(FandangoParser.ASYNC, i)

        def AWAIT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AWAIT)
            else:
                return self.getToken(FandangoParser.AWAIT, i)

        def BREAK(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.BREAK)
            else:
                return self.getToken(FandangoParser.BREAK, i)

        def CASE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.CASE)
            else:
                return self.getToken(FandangoParser.CASE, i)

        def CLASS(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.CLASS)
            else:
                return self.getToken(FandangoParser.CLASS, i)

        def CONTINUE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.CONTINUE)
            else:
                return self.getToken(FandangoParser.CONTINUE, i)

        def DEF(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DEF)
            else:
                return self.getToken(FandangoParser.DEF, i)

        def DEL(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DEL)
            else:
                return self.getToken(FandangoParser.DEL, i)

        def ELIF(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ELIF)
            else:
                return self.getToken(FandangoParser.ELIF, i)

        def ELSE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ELSE)
            else:
                return self.getToken(FandangoParser.ELSE, i)

        def EXCEPT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.EXCEPT)
            else:
                return self.getToken(FandangoParser.EXCEPT, i)

        def FALSE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.FALSE)
            else:
                return self.getToken(FandangoParser.FALSE, i)

        def FINALLY(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.FINALLY)
            else:
                return self.getToken(FandangoParser.FINALLY, i)

        def FOR(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.FOR)
            else:
                return self.getToken(FandangoParser.FOR, i)

        def FROM(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.FROM)
            else:
                return self.getToken(FandangoParser.FROM, i)

        def GLOBAL(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.GLOBAL)
            else:
                return self.getToken(FandangoParser.GLOBAL, i)

        def IF(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.IF)
            else:
                return self.getToken(FandangoParser.IF, i)

        def IMPORT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.IMPORT)
            else:
                return self.getToken(FandangoParser.IMPORT, i)

        def IN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.IN)
            else:
                return self.getToken(FandangoParser.IN, i)

        def IS(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.IS)
            else:
                return self.getToken(FandangoParser.IS, i)

        def LAMBDA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.LAMBDA)
            else:
                return self.getToken(FandangoParser.LAMBDA, i)

        def MATCH(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.MATCH)
            else:
                return self.getToken(FandangoParser.MATCH, i)

        def NONE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NONE)
            else:
                return self.getToken(FandangoParser.NONE, i)

        def NONLOCAL(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NONLOCAL)
            else:
                return self.getToken(FandangoParser.NONLOCAL, i)

        def NOT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NOT)
            else:
                return self.getToken(FandangoParser.NOT, i)

        def OR(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OR)
            else:
                return self.getToken(FandangoParser.OR, i)

        def PASS(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.PASS)
            else:
                return self.getToken(FandangoParser.PASS, i)

        def RAISE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.RAISE)
            else:
                return self.getToken(FandangoParser.RAISE, i)

        def RETURN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.RETURN)
            else:
                return self.getToken(FandangoParser.RETURN, i)

        def TRUE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.TRUE)
            else:
                return self.getToken(FandangoParser.TRUE, i)

        def TRY(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.TRY)
            else:
                return self.getToken(FandangoParser.TRY, i)

        def TYPE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.TYPE)
            else:
                return self.getToken(FandangoParser.TYPE, i)

        def WHILE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.WHILE)
            else:
                return self.getToken(FandangoParser.WHILE, i)

        def WHERE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.WHERE)
            else:
                return self.getToken(FandangoParser.WHERE, i)

        def WITH(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.WITH)
            else:
                return self.getToken(FandangoParser.WITH, i)

        def YIELD(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.YIELD)
            else:
                return self.getToken(FandangoParser.YIELD, i)

        def FORALL(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.FORALL)
            else:
                return self.getToken(FandangoParser.FORALL, i)

        def EXISTS(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.EXISTS)
            else:
                return self.getToken(FandangoParser.EXISTS, i)

        def MAXIMIZING(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.MAXIMIZING)
            else:
                return self.getToken(FandangoParser.MAXIMIZING, i)

        def MINIMIZING(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.MINIMIZING)
            else:
                return self.getToken(FandangoParser.MINIMIZING, i)

        def ANY(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ANY)
            else:
                return self.getToken(FandangoParser.ANY, i)

        def ALL(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ALL)
            else:
                return self.getToken(FandangoParser.ALL, i)

        def LEN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.LEN)
            else:
                return self.getToken(FandangoParser.LEN, i)

        def NAME(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NAME)
            else:
                return self.getToken(FandangoParser.NAME, i)

        def GRAMMAR_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.GRAMMAR_ASSIGN)
            else:
                return self.getToken(FandangoParser.GRAMMAR_ASSIGN, i)

        def QUESTION(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.QUESTION)
            else:
                return self.getToken(FandangoParser.QUESTION, i)

        def DOT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DOT)
            else:
                return self.getToken(FandangoParser.DOT, i)

        def DOTDOT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DOTDOT)
            else:
                return self.getToken(FandangoParser.DOTDOT, i)

        def ELLIPSIS(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ELLIPSIS)
            else:
                return self.getToken(FandangoParser.ELLIPSIS, i)

        def STAR(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.STAR)
            else:
                return self.getToken(FandangoParser.STAR, i)

        def OPEN_PAREN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OPEN_PAREN)
            else:
                return self.getToken(FandangoParser.OPEN_PAREN, i)

        def CLOSE_PAREN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.CLOSE_PAREN)
            else:
                return self.getToken(FandangoParser.CLOSE_PAREN, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def COLON(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COLON)
            else:
                return self.getToken(FandangoParser.COLON, i)

        def SEMI_COLON(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.SEMI_COLON)
            else:
                return self.getToken(FandangoParser.SEMI_COLON, i)

        def POWER(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.POWER)
            else:
                return self.getToken(FandangoParser.POWER, i)

        def ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ASSIGN)
            else:
                return self.getToken(FandangoParser.ASSIGN, i)

        def OPEN_BRACK(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OPEN_BRACK)
            else:
                return self.getToken(FandangoParser.OPEN_BRACK, i)

        def CLOSE_BRACK(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.CLOSE_BRACK)
            else:
                return self.getToken(FandangoParser.CLOSE_BRACK, i)

        def OR_OP(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OR_OP)
            else:
                return self.getToken(FandangoParser.OR_OP, i)

        def XOR(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.XOR)
            else:
                return self.getToken(FandangoParser.XOR, i)

        def AND_OP(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AND_OP)
            else:
                return self.getToken(FandangoParser.AND_OP, i)

        def LEFT_SHIFT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.LEFT_SHIFT)
            else:
                return self.getToken(FandangoParser.LEFT_SHIFT, i)

        def RIGHT_SHIFT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.RIGHT_SHIFT)
            else:
                return self.getToken(FandangoParser.RIGHT_SHIFT, i)

        def ADD(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ADD)
            else:
                return self.getToken(FandangoParser.ADD, i)

        def MINUS(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.MINUS)
            else:
                return self.getToken(FandangoParser.MINUS, i)

        def DIV(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DIV)
            else:
                return self.getToken(FandangoParser.DIV, i)

        def MOD(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.MOD)
            else:
                return self.getToken(FandangoParser.MOD, i)

        def IDIV(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.IDIV)
            else:
                return self.getToken(FandangoParser.IDIV, i)

        def NOT_OP(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NOT_OP)
            else:
                return self.getToken(FandangoParser.NOT_OP, i)

        def OPEN_BRACE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OPEN_BRACE)
            else:
                return self.getToken(FandangoParser.OPEN_BRACE, i)

        def CLOSE_BRACE(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.CLOSE_BRACE)
            else:
                return self.getToken(FandangoParser.CLOSE_BRACE, i)

        def LESS_THAN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.LESS_THAN)
            else:
                return self.getToken(FandangoParser.LESS_THAN, i)

        def GREATER_THAN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.GREATER_THAN)
            else:
                return self.getToken(FandangoParser.GREATER_THAN, i)

        def EQUALS(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.EQUALS)
            else:
                return self.getToken(FandangoParser.EQUALS, i)

        def GT_EQ(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.GT_EQ)
            else:
                return self.getToken(FandangoParser.GT_EQ, i)

        def LT_EQ(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.LT_EQ)
            else:
                return self.getToken(FandangoParser.LT_EQ, i)

        def NOT_EQ_1(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NOT_EQ_1)
            else:
                return self.getToken(FandangoParser.NOT_EQ_1, i)

        def NOT_EQ_2(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.NOT_EQ_2)
            else:
                return self.getToken(FandangoParser.NOT_EQ_2, i)

        def AT(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AT)
            else:
                return self.getToken(FandangoParser.AT, i)

        def ARROW(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ARROW)
            else:
                return self.getToken(FandangoParser.ARROW, i)

        def ADD_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.ADD_ASSIGN)
            else:
                return self.getToken(FandangoParser.ADD_ASSIGN, i)

        def SUB_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.SUB_ASSIGN)
            else:
                return self.getToken(FandangoParser.SUB_ASSIGN, i)

        def MULT_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.MULT_ASSIGN)
            else:
                return self.getToken(FandangoParser.MULT_ASSIGN, i)

        def AT_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AT_ASSIGN)
            else:
                return self.getToken(FandangoParser.AT_ASSIGN, i)

        def DIV_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.DIV_ASSIGN)
            else:
                return self.getToken(FandangoParser.DIV_ASSIGN, i)

        def MOD_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.MOD_ASSIGN)
            else:
                return self.getToken(FandangoParser.MOD_ASSIGN, i)

        def AND_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.AND_ASSIGN)
            else:
                return self.getToken(FandangoParser.AND_ASSIGN, i)

        def OR_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.OR_ASSIGN)
            else:
                return self.getToken(FandangoParser.OR_ASSIGN, i)

        def XOR_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.XOR_ASSIGN)
            else:
                return self.getToken(FandangoParser.XOR_ASSIGN, i)

        def LEFT_SHIFT_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.LEFT_SHIFT_ASSIGN)
            else:
                return self.getToken(FandangoParser.LEFT_SHIFT_ASSIGN, i)

        def RIGHT_SHIFT_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.RIGHT_SHIFT_ASSIGN)
            else:
                return self.getToken(FandangoParser.RIGHT_SHIFT_ASSIGN, i)

        def POWER_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.POWER_ASSIGN)
            else:
                return self.getToken(FandangoParser.POWER_ASSIGN, i)

        def IDIV_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.IDIV_ASSIGN)
            else:
                return self.getToken(FandangoParser.IDIV_ASSIGN, i)

        def EXPR_ASSIGN(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.EXPR_ASSIGN)
            else:
                return self.getToken(FandangoParser.EXPR_ASSIGN, i)

        def EXCL(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.EXCL)
            else:
                return self.getToken(FandangoParser.EXCL, i)

        def SKIP_(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.SKIP_)
            else:
                return self.getToken(FandangoParser.SKIP_, i)

        def UNKNOWN_CHAR(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.UNKNOWN_CHAR)
            else:
                return self.getToken(FandangoParser.UNKNOWN_CHAR, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_any

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_any"):
                return visitor.visitFstring_any(self)
            else:
                return visitor.visitChildren(self)

    def fstring_any(self):

        localctx = FandangoParser.Fstring_anyContext(self, self._ctx, self.state)
        self.enterRule(localctx, 406, self.RULE_fstring_any)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2918
            self._errHandler.sync(self)
            _alt = 1
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2918
                    self._errHandler.sync(self)
                    token = self._input.LA(1)
                    if token in [8]:
                        self.state = 2812
                        self.match(FandangoParser.NUMBER)
                        pass
                    elif token in [10]:
                        self.state = 2813
                        self.match(FandangoParser.PYTHON_START)
                        pass
                    elif token in [11]:
                        self.state = 2814
                        self.match(FandangoParser.PYTHON_END)
                        pass
                    elif token in [12]:
                        self.state = 2815
                        self.match(FandangoParser.AND)
                        pass
                    elif token in [13]:
                        self.state = 2816
                        self.match(FandangoParser.AS)
                        pass
                    elif token in [14]:
                        self.state = 2817
                        self.match(FandangoParser.ASSERT)
                        pass
                    elif token in [15]:
                        self.state = 2818
                        self.match(FandangoParser.ASYNC)
                        pass
                    elif token in [16]:
                        self.state = 2819
                        self.match(FandangoParser.AWAIT)
                        pass
                    elif token in [17]:
                        self.state = 2820
                        self.match(FandangoParser.BREAK)
                        pass
                    elif token in [18]:
                        self.state = 2821
                        self.match(FandangoParser.CASE)
                        pass
                    elif token in [19]:
                        self.state = 2822
                        self.match(FandangoParser.CLASS)
                        pass
                    elif token in [20]:
                        self.state = 2823
                        self.match(FandangoParser.CONTINUE)
                        pass
                    elif token in [21]:
                        self.state = 2824
                        self.match(FandangoParser.DEF)
                        pass
                    elif token in [22]:
                        self.state = 2825
                        self.match(FandangoParser.DEL)
                        pass
                    elif token in [23]:
                        self.state = 2826
                        self.match(FandangoParser.ELIF)
                        pass
                    elif token in [24]:
                        self.state = 2827
                        self.match(FandangoParser.ELSE)
                        pass
                    elif token in [25]:
                        self.state = 2828
                        self.match(FandangoParser.EXCEPT)
                        pass
                    elif token in [26]:
                        self.state = 2829
                        self.match(FandangoParser.FALSE)
                        pass
                    elif token in [27]:
                        self.state = 2830
                        self.match(FandangoParser.FINALLY)
                        pass
                    elif token in [28]:
                        self.state = 2831
                        self.match(FandangoParser.FOR)
                        pass
                    elif token in [29]:
                        self.state = 2832
                        self.match(FandangoParser.FROM)
                        pass
                    elif token in [30]:
                        self.state = 2833
                        self.match(FandangoParser.GLOBAL)
                        pass
                    elif token in [31]:
                        self.state = 2834
                        self.match(FandangoParser.IF)
                        pass
                    elif token in [32]:
                        self.state = 2835
                        self.match(FandangoParser.IMPORT)
                        pass
                    elif token in [33]:
                        self.state = 2836
                        self.match(FandangoParser.IN)
                        pass
                    elif token in [34]:
                        self.state = 2837
                        self.match(FandangoParser.IS)
                        pass
                    elif token in [35]:
                        self.state = 2838
                        self.match(FandangoParser.LAMBDA)
                        pass
                    elif token in [36]:
                        self.state = 2839
                        self.match(FandangoParser.MATCH)
                        pass
                    elif token in [37]:
                        self.state = 2840
                        self.match(FandangoParser.NONE)
                        pass
                    elif token in [38]:
                        self.state = 2841
                        self.match(FandangoParser.NONLOCAL)
                        pass
                    elif token in [39]:
                        self.state = 2842
                        self.match(FandangoParser.NOT)
                        pass
                    elif token in [40]:
                        self.state = 2843
                        self.match(FandangoParser.OR)
                        pass
                    elif token in [41]:
                        self.state = 2844
                        self.match(FandangoParser.PASS)
                        pass
                    elif token in [42]:
                        self.state = 2845
                        self.match(FandangoParser.RAISE)
                        pass
                    elif token in [43]:
                        self.state = 2846
                        self.match(FandangoParser.RETURN)
                        pass
                    elif token in [44]:
                        self.state = 2847
                        self.match(FandangoParser.TRUE)
                        pass
                    elif token in [45]:
                        self.state = 2848
                        self.match(FandangoParser.TRY)
                        pass
                    elif token in [46]:
                        self.state = 2849
                        self.match(FandangoParser.TYPE)
                        pass
                    elif token in [47]:
                        self.state = 2850
                        self.match(FandangoParser.WHILE)
                        pass
                    elif token in [48]:
                        self.state = 2851
                        self.match(FandangoParser.WHERE)
                        pass
                    elif token in [49]:
                        self.state = 2852
                        self.match(FandangoParser.WITH)
                        pass
                    elif token in [50]:
                        self.state = 2853
                        self.match(FandangoParser.YIELD)
                        pass
                    elif token in [51]:
                        self.state = 2854
                        self.match(FandangoParser.FORALL)
                        pass
                    elif token in [52]:
                        self.state = 2855
                        self.match(FandangoParser.EXISTS)
                        pass
                    elif token in [53]:
                        self.state = 2856
                        self.match(FandangoParser.MAXIMIZING)
                        pass
                    elif token in [54]:
                        self.state = 2857
                        self.match(FandangoParser.MINIMIZING)
                        pass
                    elif token in [55]:
                        self.state = 2858
                        self.match(FandangoParser.ANY)
                        pass
                    elif token in [56]:
                        self.state = 2859
                        self.match(FandangoParser.ALL)
                        pass
                    elif token in [57]:
                        self.state = 2860
                        self.match(FandangoParser.LEN)
                        pass
                    elif token in [61]:
                        self.state = 2861
                        self.match(FandangoParser.NAME)
                        pass
                    elif token in [74]:
                        self.state = 2862
                        self.match(FandangoParser.GRAMMAR_ASSIGN)
                        pass
                    elif token in [75]:
                        self.state = 2863
                        self.match(FandangoParser.QUESTION)
                        pass
                    elif token in [79]:
                        self.state = 2864
                        self.match(FandangoParser.DOT)
                        pass
                    elif token in [78]:
                        self.state = 2865
                        self.match(FandangoParser.DOTDOT)
                        pass
                    elif token in [77]:
                        self.state = 2866
                        self.match(FandangoParser.ELLIPSIS)
                        pass
                    elif token in [80]:
                        self.state = 2867
                        self.match(FandangoParser.STAR)
                        pass
                    elif token in [81]:
                        self.state = 2868
                        self.match(FandangoParser.OPEN_PAREN)
                        pass
                    elif token in [82]:
                        self.state = 2869
                        self.match(FandangoParser.CLOSE_PAREN)
                        pass
                    elif token in [83]:
                        self.state = 2870
                        self.match(FandangoParser.COMMA)
                        pass
                    elif token in [84]:
                        self.state = 2871
                        self.match(FandangoParser.COLON)
                        pass
                    elif token in [85]:
                        self.state = 2872
                        self.match(FandangoParser.SEMI_COLON)
                        pass
                    elif token in [86]:
                        self.state = 2873
                        self.match(FandangoParser.POWER)
                        pass
                    elif token in [87]:
                        self.state = 2874
                        self.match(FandangoParser.ASSIGN)
                        pass
                    elif token in [88]:
                        self.state = 2875
                        self.match(FandangoParser.OPEN_BRACK)
                        pass
                    elif token in [89]:
                        self.state = 2876
                        self.match(FandangoParser.CLOSE_BRACK)
                        pass
                    elif token in [90]:
                        self.state = 2877
                        self.match(FandangoParser.OR_OP)
                        pass
                    elif token in [91]:
                        self.state = 2878
                        self.match(FandangoParser.XOR)
                        pass
                    elif token in [92]:
                        self.state = 2879
                        self.match(FandangoParser.AND_OP)
                        pass
                    elif token in [93]:
                        self.state = 2880
                        self.match(FandangoParser.LEFT_SHIFT)
                        pass
                    elif token in [94]:
                        self.state = 2881
                        self.match(FandangoParser.RIGHT_SHIFT)
                        pass
                    elif token in [95]:
                        self.state = 2882
                        self.match(FandangoParser.ADD)
                        pass
                    elif token in [96]:
                        self.state = 2883
                        self.match(FandangoParser.MINUS)
                        pass
                    elif token in [97]:
                        self.state = 2884
                        self.match(FandangoParser.DIV)
                        pass
                    elif token in [98]:
                        self.state = 2885
                        self.match(FandangoParser.MOD)
                        pass
                    elif token in [99]:
                        self.state = 2886
                        self.match(FandangoParser.IDIV)
                        pass
                    elif token in [100]:
                        self.state = 2887
                        self.match(FandangoParser.NOT_OP)
                        pass
                    elif token in [101]:
                        self.state = 2888
                        self.match(FandangoParser.OPEN_BRACE)
                        self.state = 2889
                        self.match(FandangoParser.OPEN_BRACE)
                        pass
                    elif token in [102]:
                        self.state = 2890
                        self.match(FandangoParser.CLOSE_BRACE)
                        self.state = 2891
                        self.match(FandangoParser.CLOSE_BRACE)
                        pass
                    elif token in [103]:
                        self.state = 2892
                        self.match(FandangoParser.LESS_THAN)
                        pass
                    elif token in [104]:
                        self.state = 2893
                        self.match(FandangoParser.GREATER_THAN)
                        pass
                    elif token in [105]:
                        self.state = 2894
                        self.match(FandangoParser.EQUALS)
                        pass
                    elif token in [106]:
                        self.state = 2895
                        self.match(FandangoParser.GT_EQ)
                        pass
                    elif token in [107]:
                        self.state = 2896
                        self.match(FandangoParser.LT_EQ)
                        pass
                    elif token in [108]:
                        self.state = 2897
                        self.match(FandangoParser.NOT_EQ_1)
                        pass
                    elif token in [109]:
                        self.state = 2898
                        self.match(FandangoParser.NOT_EQ_2)
                        pass
                    elif token in [110]:
                        self.state = 2899
                        self.match(FandangoParser.AT)
                        pass
                    elif token in [111]:
                        self.state = 2900
                        self.match(FandangoParser.ARROW)
                        pass
                    elif token in [112]:
                        self.state = 2901
                        self.match(FandangoParser.ADD_ASSIGN)
                        pass
                    elif token in [113]:
                        self.state = 2902
                        self.match(FandangoParser.SUB_ASSIGN)
                        pass
                    elif token in [114]:
                        self.state = 2903
                        self.match(FandangoParser.MULT_ASSIGN)
                        pass
                    elif token in [115]:
                        self.state = 2904
                        self.match(FandangoParser.AT_ASSIGN)
                        pass
                    elif token in [116]:
                        self.state = 2905
                        self.match(FandangoParser.DIV_ASSIGN)
                        pass
                    elif token in [117]:
                        self.state = 2906
                        self.match(FandangoParser.MOD_ASSIGN)
                        pass
                    elif token in [118]:
                        self.state = 2907
                        self.match(FandangoParser.AND_ASSIGN)
                        pass
                    elif token in [119]:
                        self.state = 2908
                        self.match(FandangoParser.OR_ASSIGN)
                        pass
                    elif token in [120]:
                        self.state = 2909
                        self.match(FandangoParser.XOR_ASSIGN)
                        pass
                    elif token in [121]:
                        self.state = 2910
                        self.match(FandangoParser.LEFT_SHIFT_ASSIGN)
                        pass
                    elif token in [122]:
                        self.state = 2911
                        self.match(FandangoParser.RIGHT_SHIFT_ASSIGN)
                        pass
                    elif token in [123]:
                        self.state = 2912
                        self.match(FandangoParser.POWER_ASSIGN)
                        pass
                    elif token in [124]:
                        self.state = 2913
                        self.match(FandangoParser.IDIV_ASSIGN)
                        pass
                    elif token in [125]:
                        self.state = 2914
                        self.match(FandangoParser.EXPR_ASSIGN)
                        pass
                    elif token in [126]:
                        self.state = 2915
                        self.match(FandangoParser.EXCL)
                        pass
                    elif token in [128]:
                        self.state = 2916
                        self.match(FandangoParser.SKIP_)
                        pass
                    elif token in [131]:
                        self.state = 2917
                        self.match(FandangoParser.UNKNOWN_CHAR)
                        pass
                    else:
                        raise NoViableAltException(self)

                else:
                    raise NoViableAltException(self)
                self.state = 2920
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 349, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_replacement_fieldContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def yield_expr(self):
            return self.getTypedRuleContext(FandangoParser.Yield_exprContext, 0)

        def star_expressions(self):
            return self.getTypedRuleContext(FandangoParser.Star_expressionsContext, 0)

        def ASSIGN(self):
            return self.getToken(FandangoParser.ASSIGN, 0)

        def fstring_conversion(self):
            return self.getTypedRuleContext(FandangoParser.Fstring_conversionContext, 0)

        def fstring_full_format_spec(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_full_format_specContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_replacement_field

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_replacement_field"):
                return visitor.visitFstring_replacement_field(self)
            else:
                return visitor.visitChildren(self)

    def fstring_replacement_field(self):

        localctx = FandangoParser.Fstring_replacement_fieldContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 408, self.RULE_fstring_replacement_field)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2922
            self.match(FandangoParser.OPEN_BRACE)
            self.state = 2925
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [50]:
                self.state = 2923
                self.yield_expr()
                pass
            elif token in [
                3,
                4,
                5,
                6,
                7,
                8,
                16,
                26,
                35,
                37,
                39,
                44,
                55,
                56,
                57,
                61,
                77,
                80,
                81,
                86,
                88,
                90,
                95,
                96,
                100,
                101,
                103,
            ]:
                self.state = 2924
                self.star_expressions()
                pass
            else:
                raise NoViableAltException(self)

            self.state = 2928
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 87:
                self.state = 2927
                self.match(FandangoParser.ASSIGN)

            self.state = 2931
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 126:
                self.state = 2930
                self.fstring_conversion()

            self.state = 2934
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 84:
                self.state = 2933
                self.fstring_full_format_spec()

            self.state = 2936
            self.match(FandangoParser.CLOSE_BRACE)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_conversionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def EXCL(self):
            return self.getToken(FandangoParser.EXCL, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_conversion

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_conversion"):
                return visitor.visitFstring_conversion(self)
            else:
                return visitor.visitChildren(self)

    def fstring_conversion(self):

        localctx = FandangoParser.Fstring_conversionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 410, self.RULE_fstring_conversion)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2938
            self.match(FandangoParser.EXCL)
            self.state = 2939
            self.identifier()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_full_format_specContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def fstring_format_spec(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Fstring_format_specContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Fstring_format_specContext, i
                )

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_full_format_spec

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_full_format_spec"):
                return visitor.visitFstring_full_format_spec(self)
            else:
                return visitor.visitChildren(self)

    def fstring_full_format_spec(self):

        localctx = FandangoParser.Fstring_full_format_specContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 412, self.RULE_fstring_full_format_spec)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2941
            self.match(FandangoParser.COLON)
            self.state = 2945
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 354, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2942
                    self.fstring_format_spec()
                self.state = 2947
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 354, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Fstring_format_specContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring_replacement_field(self):
            return self.getTypedRuleContext(
                FandangoParser.Fstring_replacement_fieldContext, 0
            )

        def fstring_middle(self):
            return self.getTypedRuleContext(FandangoParser.Fstring_middleContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring_format_spec

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring_format_spec"):
                return visitor.visitFstring_format_spec(self)
            else:
                return visitor.visitChildren(self)

    def fstring_format_spec(self):

        localctx = FandangoParser.Fstring_format_specContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 414, self.RULE_fstring_format_spec)
        try:
            self.state = 2950
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 355, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 2948
                self.fstring_replacement_field()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 2949
                self.fstring_middle()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class FstringContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def FSTRING_START_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_START_QUOTE, 0)

        def FSTRING_END_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_QUOTE, 0)

        def fstring_middle_no_quote(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Fstring_middle_no_quoteContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Fstring_middle_no_quoteContext, i
                )

        def FSTRING_START_SINGLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_START_SINGLE_QUOTE, 0)

        def FSTRING_END_SINGLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_SINGLE_QUOTE, 0)

        def fstring_middle_no_single_quote(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Fstring_middle_no_single_quoteContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Fstring_middle_no_single_quoteContext, i
                )

        def FSTRING_START_TRIPLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_START_TRIPLE_QUOTE, 0)

        def FSTRING_END_TRIPLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_TRIPLE_QUOTE, 0)

        def fstring_middle_breaks_no_triple_quote(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Fstring_middle_breaks_no_triple_quoteContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Fstring_middle_breaks_no_triple_quoteContext, i
                )

        def FSTRING_START_TRIPLE_SINGLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_START_TRIPLE_SINGLE_QUOTE, 0)

        def FSTRING_END_TRIPLE_SINGLE_QUOTE(self):
            return self.getToken(FandangoParser.FSTRING_END_TRIPLE_SINGLE_QUOTE, 0)

        def fstring_middle_breaks_no_triple_single_quote(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Fstring_middle_breaks_no_triple_single_quoteContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Fstring_middle_breaks_no_triple_single_quoteContext,
                    i,
                )

        def getRuleIndex(self):
            return FandangoParser.RULE_fstring

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFstring"):
                return visitor.visitFstring(self)
            else:
                return visitor.visitChildren(self)

    def fstring(self):

        localctx = FandangoParser.FstringContext(self, self._ctx, self.state)
        self.enterRule(localctx, 416, self.RULE_fstring)
        self._la = 0  # Token type
        try:
            self.state = 2984
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [3]:
                self.enterOuterAlt(localctx, 1)
                self.state = 2952
                self.match(FandangoParser.FSTRING_START_QUOTE)
                self.state = 2956
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (
                    (((_la - 8)) & ~0x3F) == 0
                    and ((1 << (_la - 8)) & 370421069351223293) != 0
                ) or (
                    (((_la - 74)) & ~0x3F) == 0
                    and ((1 << (_la - 74)) & 171136785840078843) != 0
                ):
                    self.state = 2953
                    self.fstring_middle_no_quote()
                    self.state = 2958
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2959
                self.match(FandangoParser.FSTRING_END_QUOTE)
                pass
            elif token in [4]:
                self.enterOuterAlt(localctx, 2)
                self.state = 2960
                self.match(FandangoParser.FSTRING_START_SINGLE_QUOTE)
                self.state = 2964
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (
                    (((_la - 8)) & ~0x3F) == 0
                    and ((1 << (_la - 8)) & 190277084256403453) != 0
                ) or (
                    (((_la - 74)) & ~0x3F) == 0
                    and ((1 << (_la - 74)) & 171136785840078843) != 0
                ):
                    self.state = 2961
                    self.fstring_middle_no_single_quote()
                    self.state = 2966
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2967
                self.match(FandangoParser.FSTRING_END_SINGLE_QUOTE)
                pass
            elif token in [5]:
                self.enterOuterAlt(localctx, 3)
                self.state = 2968
                self.match(FandangoParser.FSTRING_START_TRIPLE_QUOTE)
                self.state = 2972
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (
                    (((_la - 8)) & ~0x3F) == 0
                    and ((1 << (_la - 8)) & 298363475313295357) != 0
                ) or (
                    (((_la - 74)) & ~0x3F) == 0
                    and ((1 << (_la - 74)) & 180143985094819835) != 0
                ):
                    self.state = 2969
                    self.fstring_middle_breaks_no_triple_quote()
                    self.state = 2974
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2975
                self.match(FandangoParser.FSTRING_END_TRIPLE_QUOTE)
                pass
            elif token in [6]:
                self.enterOuterAlt(localctx, 4)
                self.state = 2976
                self.match(FandangoParser.FSTRING_START_TRIPLE_SINGLE_QUOTE)
                self.state = 2980
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while (
                    (((_la - 8)) & ~0x3F) == 0
                    and ((1 << (_la - 8)) & 154248287237439485) != 0
                ) or (
                    (((_la - 74)) & ~0x3F) == 0
                    and ((1 << (_la - 74)) & 180143985094819835) != 0
                ):
                    self.state = 2977
                    self.fstring_middle_breaks_no_triple_single_quote()
                    self.state = 2982
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                self.state = 2983
                self.match(FandangoParser.FSTRING_END_TRIPLE_SINGLE_QUOTE)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class StringContext(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(FandangoParser.STRING, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_string

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitString"):
                return visitor.visitString(self)
            else:
                return visitor.visitChildren(self)

    def string(self):

        localctx = FandangoParser.StringContext(self, self._ctx, self.state)
        self.enterRule(localctx, 418, self.RULE_string)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2986
            self.match(FandangoParser.STRING)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class StringsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def fstring(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.FstringContext)
            else:
                return self.getTypedRuleContext(FandangoParser.FstringContext, i)

        def string(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.StringContext)
            else:
                return self.getTypedRuleContext(FandangoParser.StringContext, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_strings

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStrings"):
                return visitor.visitStrings(self)
            else:
                return visitor.visitChildren(self)

    def strings(self):

        localctx = FandangoParser.StringsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 420, self.RULE_strings)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2990
            self._errHandler.sync(self)
            _alt = 1
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 2990
                    self._errHandler.sync(self)
                    token = self._input.LA(1)
                    if token in [3, 4, 5, 6]:
                        self.state = 2988
                        self.fstring()
                        pass
                    elif token in [7]:
                        self.state = 2989
                        self.string()
                        pass
                    else:
                        raise NoViableAltException(self)

                else:
                    raise NoViableAltException(self)
                self.state = 2992
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 362, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ListContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def star_named_expressions(self):
            return self.getTypedRuleContext(
                FandangoParser.Star_named_expressionsContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_list

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitList"):
                return visitor.visitList(self)
            else:
                return visitor.visitChildren(self)

    def list_(self):

        localctx = FandangoParser.ListContext(self, self._ctx, self.state)
        self.enterRule(localctx, 422, self.RULE_list)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 2994
            self.match(FandangoParser.OPEN_BRACK)
            self.state = 2996
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0) or (
                (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
            ):
                self.state = 2995
                self.star_named_expressions()

            self.state = 2998
            self.match(FandangoParser.CLOSE_BRACK)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class TupleContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def star_named_expression(self):
            return self.getTypedRuleContext(
                FandangoParser.Star_named_expressionContext, 0
            )

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def star_named_expressions(self):
            return self.getTypedRuleContext(
                FandangoParser.Star_named_expressionsContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_tuple

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitTuple"):
                return visitor.visitTuple(self)
            else:
                return visitor.visitChildren(self)

    def tuple_(self):

        localctx = FandangoParser.TupleContext(self, self._ctx, self.state)
        self.enterRule(localctx, 424, self.RULE_tuple)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3000
            self.match(FandangoParser.OPEN_PAREN)
            self.state = 3005
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0) or (
                (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
            ):
                self.state = 3001
                self.star_named_expression()
                self.state = 3002
                self.match(FandangoParser.COMMA)

                self.state = 3003
                self.star_named_expressions()

            self.state = 3007
            self.match(FandangoParser.CLOSE_PAREN)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class SetContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def star_named_expressions(self):
            return self.getTypedRuleContext(
                FandangoParser.Star_named_expressionsContext, 0
            )

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_set

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSet"):
                return visitor.visitSet(self)
            else:
                return visitor.visitChildren(self)

    def set_(self):

        localctx = FandangoParser.SetContext(self, self._ctx, self.state)
        self.enterRule(localctx, 426, self.RULE_set)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3009
            self.match(FandangoParser.OPEN_BRACE)
            self.state = 3010
            self.star_named_expressions()
            self.state = 3011
            self.match(FandangoParser.CLOSE_BRACE)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class DictContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def double_starred_kvpairs(self):
            return self.getTypedRuleContext(
                FandangoParser.Double_starred_kvpairsContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_dict

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDict"):
                return visitor.visitDict(self)
            else:
                return visitor.visitChildren(self)

    def dict_(self):

        localctx = FandangoParser.DictContext(self, self._ctx, self.state)
        self.enterRule(localctx, 428, self.RULE_dict)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3013
            self.match(FandangoParser.OPEN_BRACE)
            self.state = 3015
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if (((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062902154166776) != 0) or (
                (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 93071897) != 0
            ):
                self.state = 3014
                self.double_starred_kvpairs()

            self.state = 3017
            self.match(FandangoParser.CLOSE_BRACE)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Double_starred_kvpairsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def double_starred_kvpair(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Double_starred_kvpairContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Double_starred_kvpairContext, i
                )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_double_starred_kvpairs

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDouble_starred_kvpairs"):
                return visitor.visitDouble_starred_kvpairs(self)
            else:
                return visitor.visitChildren(self)

    def double_starred_kvpairs(self):

        localctx = FandangoParser.Double_starred_kvpairsContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 430, self.RULE_double_starred_kvpairs)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3019
            self.double_starred_kvpair()
            self.state = 3024
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 366, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 3020
                    self.match(FandangoParser.COMMA)
                    self.state = 3021
                    self.double_starred_kvpair()
                self.state = 3026
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 366, self._ctx)

            self.state = 3028
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 3027
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Double_starred_kvpairContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def POWER(self):
            return self.getToken(FandangoParser.POWER, 0)

        def bitwise_or(self):
            return self.getTypedRuleContext(FandangoParser.Bitwise_orContext, 0)

        def kvpair(self):
            return self.getTypedRuleContext(FandangoParser.KvpairContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_double_starred_kvpair

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDouble_starred_kvpair"):
                return visitor.visitDouble_starred_kvpair(self)
            else:
                return visitor.visitChildren(self)

    def double_starred_kvpair(self):

        localctx = FandangoParser.Double_starred_kvpairContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 432, self.RULE_double_starred_kvpair)
        try:
            self.state = 3033
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 368, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3030
                self.match(FandangoParser.POWER)
                self.state = 3031
                self.bitwise_or(0)
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3032
                self.kvpair()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class KvpairContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ExpressionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ExpressionContext, i)

        def COLON(self):
            return self.getToken(FandangoParser.COLON, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_kvpair

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitKvpair"):
                return visitor.visitKvpair(self)
            else:
                return visitor.visitChildren(self)

    def kvpair(self):

        localctx = FandangoParser.KvpairContext(self, self._ctx, self.state)
        self.enterRule(localctx, 434, self.RULE_kvpair)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3035
            self.expression()
            self.state = 3036
            self.match(FandangoParser.COLON)
            self.state = 3037
            self.expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class For_if_clausesContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def for_if_clause(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.For_if_clauseContext)
            else:
                return self.getTypedRuleContext(FandangoParser.For_if_clauseContext, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_for_if_clauses

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFor_if_clauses"):
                return visitor.visitFor_if_clauses(self)
            else:
                return visitor.visitChildren(self)

    def for_if_clauses(self):

        localctx = FandangoParser.For_if_clausesContext(self, self._ctx, self.state)
        self.enterRule(localctx, 436, self.RULE_for_if_clauses)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3040
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while True:
                self.state = 3039
                self.for_if_clause()
                self.state = 3042
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if not (_la == 15 or _la == 28):
                    break

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class For_if_clauseContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def FOR(self):
            return self.getToken(FandangoParser.FOR, 0)

        def star_targets(self):
            return self.getTypedRuleContext(FandangoParser.Star_targetsContext, 0)

        def IN(self):
            return self.getToken(FandangoParser.IN, 0)

        def disjunction(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.DisjunctionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.DisjunctionContext, i)

        def ASYNC(self):
            return self.getToken(FandangoParser.ASYNC, 0)

        def IF(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.IF)
            else:
                return self.getToken(FandangoParser.IF, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_for_if_clause

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFor_if_clause"):
                return visitor.visitFor_if_clause(self)
            else:
                return visitor.visitChildren(self)

    def for_if_clause(self):

        localctx = FandangoParser.For_if_clauseContext(self, self._ctx, self.state)
        self.enterRule(localctx, 438, self.RULE_for_if_clause)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3045
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 15:
                self.state = 3044
                self.match(FandangoParser.ASYNC)

            self.state = 3047
            self.match(FandangoParser.FOR)
            self.state = 3048
            self.star_targets()
            self.state = 3049
            self.match(FandangoParser.IN)
            self.state = 3050
            self.disjunction()
            self.state = 3055
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            while _la == 31:
                self.state = 3051
                self.match(FandangoParser.IF)
                self.state = 3052
                self.disjunction()
                self.state = 3057
                self._errHandler.sync(self)
                _la = self._input.LA(1)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ListcompContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def for_if_clauses(self):
            return self.getTypedRuleContext(FandangoParser.For_if_clausesContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_listcomp

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitListcomp"):
                return visitor.visitListcomp(self)
            else:
                return visitor.visitChildren(self)

    def listcomp(self):

        localctx = FandangoParser.ListcompContext(self, self._ctx, self.state)
        self.enterRule(localctx, 440, self.RULE_listcomp)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3058
            self.match(FandangoParser.OPEN_BRACK)
            self.state = 3059
            self.named_expression()
            self.state = 3060
            self.for_if_clauses()
            self.state = 3061
            self.match(FandangoParser.CLOSE_BRACK)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class SetcompContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def named_expression(self):
            return self.getTypedRuleContext(FandangoParser.Named_expressionContext, 0)

        def for_if_clauses(self):
            return self.getTypedRuleContext(FandangoParser.For_if_clausesContext, 0)

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_setcomp

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSetcomp"):
                return visitor.visitSetcomp(self)
            else:
                return visitor.visitChildren(self)

    def setcomp(self):

        localctx = FandangoParser.SetcompContext(self, self._ctx, self.state)
        self.enterRule(localctx, 442, self.RULE_setcomp)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3063
            self.match(FandangoParser.OPEN_BRACE)
            self.state = 3064
            self.named_expression()
            self.state = 3065
            self.for_if_clauses()
            self.state = 3066
            self.match(FandangoParser.CLOSE_BRACE)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class GenexpContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def for_if_clauses(self):
            return self.getTypedRuleContext(FandangoParser.For_if_clausesContext, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def assignment_expression(self):
            return self.getTypedRuleContext(
                FandangoParser.Assignment_expressionContext, 0
            )

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_genexp

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitGenexp"):
                return visitor.visitGenexp(self)
            else:
                return visitor.visitChildren(self)

    def genexp(self):

        localctx = FandangoParser.GenexpContext(self, self._ctx, self.state)
        self.enterRule(localctx, 444, self.RULE_genexp)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3068
            self.match(FandangoParser.OPEN_PAREN)
            self.state = 3071
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 372, self._ctx)
            if la_ == 1:
                self.state = 3069
                self.assignment_expression()
                pass

            elif la_ == 2:
                self.state = 3070
                self.expression()
                pass

            self.state = 3073
            self.for_if_clauses()
            self.state = 3074
            self.match(FandangoParser.CLOSE_PAREN)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class DictcompContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def OPEN_BRACE(self):
            return self.getToken(FandangoParser.OPEN_BRACE, 0)

        def kvpair(self):
            return self.getTypedRuleContext(FandangoParser.KvpairContext, 0)

        def for_if_clauses(self):
            return self.getTypedRuleContext(FandangoParser.For_if_clausesContext, 0)

        def CLOSE_BRACE(self):
            return self.getToken(FandangoParser.CLOSE_BRACE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_dictcomp

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDictcomp"):
                return visitor.visitDictcomp(self)
            else:
                return visitor.visitChildren(self)

    def dictcomp(self):

        localctx = FandangoParser.DictcompContext(self, self._ctx, self.state)
        self.enterRule(localctx, 446, self.RULE_dictcomp)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3076
            self.match(FandangoParser.OPEN_BRACE)
            self.state = 3077
            self.kvpair()
            self.state = 3078
            self.for_if_clauses()
            self.state = 3079
            self.match(FandangoParser.CLOSE_BRACE)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ArgumentsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def args(self):
            return self.getTypedRuleContext(FandangoParser.ArgsContext, 0)

        def COMMA(self):
            return self.getToken(FandangoParser.COMMA, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_arguments

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitArguments"):
                return visitor.visitArguments(self)
            else:
                return visitor.visitChildren(self)

    def arguments(self):

        localctx = FandangoParser.ArgumentsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 448, self.RULE_arguments)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3081
            self.args()
            self.state = 3083
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 3082
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ArgsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def arg(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ArgContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ArgContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def kwargs(self):
            return self.getTypedRuleContext(FandangoParser.KwargsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_args

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitArgs"):
                return visitor.visitArgs(self)
            else:
                return visitor.visitChildren(self)

    def args(self):

        localctx = FandangoParser.ArgsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 450, self.RULE_args)
        try:
            self.state = 3098
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 376, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3085
                self.arg()
                self.state = 3090
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 374, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 3086
                        self.match(FandangoParser.COMMA)
                        self.state = 3087
                        self.arg()
                    self.state = 3092
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 374, self._ctx)

                self.state = 3095
                self._errHandler.sync(self)
                la_ = self._interp.adaptivePredict(self._input, 375, self._ctx)
                if la_ == 1:
                    self.state = 3093
                    self.match(FandangoParser.COMMA)
                    self.state = 3094
                    self.kwargs()

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3097
                self.kwargs()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class ArgContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_selection(self):
            return self.getTypedRuleContext(FandangoParser.Star_selectionContext, 0)

        def starred_expression(self):
            return self.getTypedRuleContext(FandangoParser.Starred_expressionContext, 0)

        def assignment_expression(self):
            return self.getTypedRuleContext(
                FandangoParser.Assignment_expressionContext, 0
            )

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_arg

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitArg"):
                return visitor.visitArg(self)
            else:
                return visitor.visitChildren(self)

    def arg(self):

        localctx = FandangoParser.ArgContext(self, self._ctx, self.state)
        self.enterRule(localctx, 452, self.RULE_arg)
        try:
            self.state = 3104
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 377, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3100
                self.star_selection()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3101
                self.starred_expression()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 3102
                self.assignment_expression()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 3103
                self.expression()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class KwargsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def kwarg_or_starred(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Kwarg_or_starredContext)
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Kwarg_or_starredContext, i
                )

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def kwarg_or_double_starred(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(
                    FandangoParser.Kwarg_or_double_starredContext
                )
            else:
                return self.getTypedRuleContext(
                    FandangoParser.Kwarg_or_double_starredContext, i
                )

        def getRuleIndex(self):
            return FandangoParser.RULE_kwargs

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitKwargs"):
                return visitor.visitKwargs(self)
            else:
                return visitor.visitChildren(self)

    def kwargs(self):

        localctx = FandangoParser.KwargsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 454, self.RULE_kwargs)
        try:
            self.state = 3139
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 382, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3106
                self.kwarg_or_starred()
                self.state = 3111
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 378, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 3107
                        self.match(FandangoParser.COMMA)
                        self.state = 3108
                        self.kwarg_or_starred()
                    self.state = 3113
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 378, self._ctx)

                self.state = 3114
                self.match(FandangoParser.COMMA)
                self.state = 3115
                self.kwarg_or_double_starred()
                self.state = 3120
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 379, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 3116
                        self.match(FandangoParser.COMMA)
                        self.state = 3117
                        self.kwarg_or_double_starred()
                    self.state = 3122
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 379, self._ctx)

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3123
                self.kwarg_or_starred()
                self.state = 3128
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 380, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 3124
                        self.match(FandangoParser.COMMA)
                        self.state = 3125
                        self.kwarg_or_starred()
                    self.state = 3130
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 380, self._ctx)

                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 3131
                self.kwarg_or_double_starred()
                self.state = 3136
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 381, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 3132
                        self.match(FandangoParser.COMMA)
                        self.state = 3133
                        self.kwarg_or_double_starred()
                    self.state = 3138
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 381, self._ctx)

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Starred_expressionContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_starred_expression

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStarred_expression"):
                return visitor.visitStarred_expression(self)
            else:
                return visitor.visitChildren(self)

    def starred_expression(self):

        localctx = FandangoParser.Starred_expressionContext(self, self._ctx, self.state)
        self.enterRule(localctx, 456, self.RULE_starred_expression)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3141
            self.match(FandangoParser.STAR)
            self.state = 3142
            self.expression()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Kwarg_or_starredContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def ASSIGN(self):
            return self.getToken(FandangoParser.ASSIGN, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def starred_expression(self):
            return self.getTypedRuleContext(FandangoParser.Starred_expressionContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_kwarg_or_starred

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitKwarg_or_starred"):
                return visitor.visitKwarg_or_starred(self)
            else:
                return visitor.visitChildren(self)

    def kwarg_or_starred(self):

        localctx = FandangoParser.Kwarg_or_starredContext(self, self._ctx, self.state)
        self.enterRule(localctx, 458, self.RULE_kwarg_or_starred)
        try:
            self.state = 3149
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [55, 56, 57, 61]:
                self.enterOuterAlt(localctx, 1)
                self.state = 3144
                self.identifier()
                self.state = 3145
                self.match(FandangoParser.ASSIGN)
                self.state = 3146
                self.expression()
                pass
            elif token in [80]:
                self.enterOuterAlt(localctx, 2)
                self.state = 3148
                self.starred_expression()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Kwarg_or_double_starredContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def ASSIGN(self):
            return self.getToken(FandangoParser.ASSIGN, 0)

        def expression(self):
            return self.getTypedRuleContext(FandangoParser.ExpressionContext, 0)

        def POWER(self):
            return self.getToken(FandangoParser.POWER, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_kwarg_or_double_starred

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitKwarg_or_double_starred"):
                return visitor.visitKwarg_or_double_starred(self)
            else:
                return visitor.visitChildren(self)

    def kwarg_or_double_starred(self):

        localctx = FandangoParser.Kwarg_or_double_starredContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 460, self.RULE_kwarg_or_double_starred)
        try:
            self.state = 3157
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [55, 56, 57, 61]:
                self.enterOuterAlt(localctx, 1)
                self.state = 3151
                self.identifier()
                self.state = 3152
                self.match(FandangoParser.ASSIGN)
                self.state = 3153
                self.expression()
                pass
            elif token in [86]:
                self.enterOuterAlt(localctx, 2)
                self.state = 3155
                self.match(FandangoParser.POWER)
                self.state = 3156
                self.expression()
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_targetsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_target(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Star_targetContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Star_targetContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_targets

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_targets"):
                return visitor.visitStar_targets(self)
            else:
                return visitor.visitChildren(self)

    def star_targets(self):

        localctx = FandangoParser.Star_targetsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 462, self.RULE_star_targets)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3159
            self.star_target()
            self.state = 3164
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 385, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 3160
                    self.match(FandangoParser.COMMA)
                    self.state = 3161
                    self.star_target()
                self.state = 3166
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 385, self._ctx)

            self.state = 3168
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 3167
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_targets_list_seqContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_target(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Star_targetContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Star_targetContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_targets_list_seq

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_targets_list_seq"):
                return visitor.visitStar_targets_list_seq(self)
            else:
                return visitor.visitChildren(self)

    def star_targets_list_seq(self):

        localctx = FandangoParser.Star_targets_list_seqContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 464, self.RULE_star_targets_list_seq)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3170
            self.star_target()
            self.state = 3175
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 387, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 3171
                    self.match(FandangoParser.COMMA)
                    self.state = 3172
                    self.star_target()
                self.state = 3177
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 387, self._ctx)

            self.state = 3179
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 3178
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_targets_tuple_seqContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def star_target(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Star_targetContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Star_targetContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_star_targets_tuple_seq

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_targets_tuple_seq"):
                return visitor.visitStar_targets_tuple_seq(self)
            else:
                return visitor.visitChildren(self)

    def star_targets_tuple_seq(self):

        localctx = FandangoParser.Star_targets_tuple_seqContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 466, self.RULE_star_targets_tuple_seq)
        self._la = 0  # Token type
        try:
            self.state = 3194
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 391, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3181
                self.star_target()
                self.state = 3184
                self._errHandler.sync(self)
                _alt = 1
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 3182
                        self.match(FandangoParser.COMMA)
                        self.state = 3183
                        self.star_target()

                    else:
                        raise NoViableAltException(self)
                    self.state = 3186
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 389, self._ctx)

                self.state = 3189
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if _la == 83:
                    self.state = 3188
                    self.match(FandangoParser.COMMA)

                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3191
                self.star_target()
                self.state = 3192
                self.match(FandangoParser.COMMA)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_targetContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def star_target(self):
            return self.getTypedRuleContext(FandangoParser.Star_targetContext, 0)

        def target_with_star_atom(self):
            return self.getTypedRuleContext(
                FandangoParser.Target_with_star_atomContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_star_target

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_target"):
                return visitor.visitStar_target(self)
            else:
                return visitor.visitChildren(self)

    def star_target(self):

        localctx = FandangoParser.Star_targetContext(self, self._ctx, self.state)
        self.enterRule(localctx, 468, self.RULE_star_target)
        try:
            self.state = 3199
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 392, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3196
                self.match(FandangoParser.STAR)
                self.state = 3197
                self.star_target()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3198
                self.target_with_star_atom()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Target_with_star_atomContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def t_primary(self):
            return self.getTypedRuleContext(FandangoParser.T_primaryContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def slices(self):
            return self.getTypedRuleContext(FandangoParser.SlicesContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def star_atom(self):
            return self.getTypedRuleContext(FandangoParser.Star_atomContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_target_with_star_atom

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitTarget_with_star_atom"):
                return visitor.visitTarget_with_star_atom(self)
            else:
                return visitor.visitChildren(self)

    def target_with_star_atom(self):

        localctx = FandangoParser.Target_with_star_atomContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 470, self.RULE_target_with_star_atom)
        try:
            self.state = 3211
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 393, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3201
                self.t_primary(0)
                self.state = 3202
                self.match(FandangoParser.DOT)
                self.state = 3203
                self.identifier()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3205
                self.t_primary(0)
                self.state = 3206
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 3207
                self.slices()
                self.state = 3208
                self.match(FandangoParser.CLOSE_BRACK)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 3210
                self.star_atom()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Star_atomContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def target_with_star_atom(self):
            return self.getTypedRuleContext(
                FandangoParser.Target_with_star_atomContext, 0
            )

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def star_targets_tuple_seq(self):
            return self.getTypedRuleContext(
                FandangoParser.Star_targets_tuple_seqContext, 0
            )

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def star_targets_list_seq(self):
            return self.getTypedRuleContext(
                FandangoParser.Star_targets_list_seqContext, 0
            )

        def getRuleIndex(self):
            return FandangoParser.RULE_star_atom

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitStar_atom"):
                return visitor.visitStar_atom(self)
            else:
                return visitor.visitChildren(self)

    def star_atom(self):

        localctx = FandangoParser.Star_atomContext(self, self._ctx, self.state)
        self.enterRule(localctx, 472, self.RULE_star_atom)
        self._la = 0  # Token type
        try:
            self.state = 3228
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 396, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3213
                self.identifier()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3214
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 3215
                self.target_with_star_atom()
                self.state = 3216
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 3218
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 3220
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062318038548984) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 83896857) != 0
                ):
                    self.state = 3219
                    self.star_targets_tuple_seq()

                self.state = 3222
                self.match(FandangoParser.CLOSE_PAREN)
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 3223
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 3225
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062318038548984) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 83896857) != 0
                ):
                    self.state = 3224
                    self.star_targets_list_seq()

                self.state = 3227
                self.match(FandangoParser.CLOSE_BRACK)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Single_targetContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def single_subscript_attribute_target(self):
            return self.getTypedRuleContext(
                FandangoParser.Single_subscript_attribute_targetContext, 0
            )

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def single_target(self):
            return self.getTypedRuleContext(FandangoParser.Single_targetContext, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_single_target

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSingle_target"):
                return visitor.visitSingle_target(self)
            else:
                return visitor.visitChildren(self)

    def single_target(self):

        localctx = FandangoParser.Single_targetContext(self, self._ctx, self.state)
        self.enterRule(localctx, 474, self.RULE_single_target)
        try:
            self.state = 3236
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 397, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3230
                self.single_subscript_attribute_target()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3231
                self.identifier()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 3232
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 3233
                self.single_target()
                self.state = 3234
                self.match(FandangoParser.CLOSE_PAREN)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Single_subscript_attribute_targetContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def t_primary(self):
            return self.getTypedRuleContext(FandangoParser.T_primaryContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def slices(self):
            return self.getTypedRuleContext(FandangoParser.SlicesContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_single_subscript_attribute_target

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitSingle_subscript_attribute_target"):
                return visitor.visitSingle_subscript_attribute_target(self)
            else:
                return visitor.visitChildren(self)

    def single_subscript_attribute_target(self):

        localctx = FandangoParser.Single_subscript_attribute_targetContext(
            self, self._ctx, self.state
        )
        self.enterRule(localctx, 476, self.RULE_single_subscript_attribute_target)
        try:
            self.state = 3247
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 398, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3238
                self.t_primary(0)
                self.state = 3239
                self.match(FandangoParser.DOT)
                self.state = 3240
                self.identifier()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3242
                self.t_primary(0)
                self.state = 3243
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 3244
                self.slices()
                self.state = 3245
                self.match(FandangoParser.CLOSE_BRACK)
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class T_primaryContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def atom(self):
            return self.getTypedRuleContext(FandangoParser.AtomContext, 0)

        def t_primary(self):
            return self.getTypedRuleContext(FandangoParser.T_primaryContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def slices(self):
            return self.getTypedRuleContext(FandangoParser.SlicesContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def genexp(self):
            return self.getTypedRuleContext(FandangoParser.GenexpContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def arguments(self):
            return self.getTypedRuleContext(FandangoParser.ArgumentsContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_t_primary

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitT_primary"):
                return visitor.visitT_primary(self)
            else:
                return visitor.visitChildren(self)

    def t_primary(self, _p: int = 0):
        _parentctx = self._ctx
        _parentState = self.state
        localctx = FandangoParser.T_primaryContext(self, self._ctx, _parentState)
        _prevctx = localctx
        _startState = 478
        self.enterRecursionRule(localctx, 478, self.RULE_t_primary, _p)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3250
            self.atom()
            self._ctx.stop = self._input.LT(-1)
            self.state = 3270
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 401, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    if self._parseListeners is not None:
                        self.triggerExitRuleEvent()
                    _prevctx = localctx
                    self.state = 3268
                    self._errHandler.sync(self)
                    la_ = self._interp.adaptivePredict(self._input, 400, self._ctx)
                    if la_ == 1:
                        localctx = FandangoParser.T_primaryContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_t_primary
                        )
                        self.state = 3252
                        if not self.precpred(self._ctx, 5):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 5)"
                            )
                        self.state = 3253
                        self.match(FandangoParser.DOT)
                        self.state = 3254
                        self.identifier()
                        pass

                    elif la_ == 2:
                        localctx = FandangoParser.T_primaryContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_t_primary
                        )
                        self.state = 3255
                        if not self.precpred(self._ctx, 4):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 4)"
                            )
                        self.state = 3256
                        self.match(FandangoParser.OPEN_BRACK)
                        self.state = 3257
                        self.slices()
                        self.state = 3258
                        self.match(FandangoParser.CLOSE_BRACK)
                        pass

                    elif la_ == 3:
                        localctx = FandangoParser.T_primaryContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_t_primary
                        )
                        self.state = 3260
                        if not self.precpred(self._ctx, 3):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 3)"
                            )
                        self.state = 3261
                        self.genexp()
                        pass

                    elif la_ == 4:
                        localctx = FandangoParser.T_primaryContext(
                            self, _parentctx, _parentState
                        )
                        self.pushNewRecursionContext(
                            localctx, _startState, self.RULE_t_primary
                        )
                        self.state = 3262
                        if not self.precpred(self._ctx, 2):
                            from antlr4.error.Errors import FailedPredicateException

                            raise FailedPredicateException(
                                self, "self.precpred(self._ctx, 2)"
                            )
                        self.state = 3263
                        self.match(FandangoParser.OPEN_PAREN)
                        self.state = 3265
                        self._errHandler.sync(self)
                        _la = self._input.LA(1)
                        if (
                            ((_la) & ~0x3F) == 0
                            and ((1 << _la) & 2558062902154166776) != 0
                        ) or (
                            (((_la - 77)) & ~0x3F) == 0
                            and ((1 << (_la - 77)) & 93071897) != 0
                        ):
                            self.state = 3264
                            self.arguments()

                        self.state = 3267
                        self.match(FandangoParser.CLOSE_PAREN)
                        pass

                self.state = 3272
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 401, self._ctx)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.unrollRecursionContexts(_parentctx)
        return localctx

    class Del_targetsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def del_target(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.Del_targetContext)
            else:
                return self.getTypedRuleContext(FandangoParser.Del_targetContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def getRuleIndex(self):
            return FandangoParser.RULE_del_targets

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDel_targets"):
                return visitor.visitDel_targets(self)
            else:
                return visitor.visitChildren(self)

    def del_targets(self):

        localctx = FandangoParser.Del_targetsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 480, self.RULE_del_targets)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3273
            self.del_target()
            self.state = 3278
            self._errHandler.sync(self)
            _alt = self._interp.adaptivePredict(self._input, 402, self._ctx)
            while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                if _alt == 1:
                    self.state = 3274
                    self.match(FandangoParser.COMMA)
                    self.state = 3275
                    self.del_target()
                self.state = 3280
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 402, self._ctx)

            self.state = 3282
            self._errHandler.sync(self)
            _la = self._input.LA(1)
            if _la == 83:
                self.state = 3281
                self.match(FandangoParser.COMMA)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Del_targetContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def t_primary(self):
            return self.getTypedRuleContext(FandangoParser.T_primaryContext, 0)

        def DOT(self):
            return self.getToken(FandangoParser.DOT, 0)

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def slices(self):
            return self.getTypedRuleContext(FandangoParser.SlicesContext, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def del_t_atom(self):
            return self.getTypedRuleContext(FandangoParser.Del_t_atomContext, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_del_target

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDel_target"):
                return visitor.visitDel_target(self)
            else:
                return visitor.visitChildren(self)

    def del_target(self):

        localctx = FandangoParser.Del_targetContext(self, self._ctx, self.state)
        self.enterRule(localctx, 482, self.RULE_del_target)
        try:
            self.state = 3294
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 404, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3284
                self.t_primary(0)
                self.state = 3285
                self.match(FandangoParser.DOT)
                self.state = 3286
                self.identifier()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3288
                self.t_primary(0)
                self.state = 3289
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 3290
                self.slices()
                self.state = 3291
                self.match(FandangoParser.CLOSE_BRACK)
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 3293
                self.del_t_atom()
                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Del_t_atomContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def identifier(self):
            return self.getTypedRuleContext(FandangoParser.IdentifierContext, 0)

        def OPEN_PAREN(self):
            return self.getToken(FandangoParser.OPEN_PAREN, 0)

        def CLOSE_PAREN(self):
            return self.getToken(FandangoParser.CLOSE_PAREN, 0)

        def del_targets(self):
            return self.getTypedRuleContext(FandangoParser.Del_targetsContext, 0)

        def OPEN_BRACK(self):
            return self.getToken(FandangoParser.OPEN_BRACK, 0)

        def CLOSE_BRACK(self):
            return self.getToken(FandangoParser.CLOSE_BRACK, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_del_t_atom

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitDel_t_atom"):
                return visitor.visitDel_t_atom(self)
            else:
                return visitor.visitChildren(self)

    def del_t_atom(self):

        localctx = FandangoParser.Del_t_atomContext(self, self._ctx, self.state)
        self.enterRule(localctx, 484, self.RULE_del_t_atom)
        self._la = 0  # Token type
        try:
            self.state = 3307
            self._errHandler.sync(self)
            token = self._input.LA(1)
            if token in [55, 56, 57, 61]:
                self.enterOuterAlt(localctx, 1)
                self.state = 3296
                self.identifier()
                pass
            elif token in [81]:
                self.enterOuterAlt(localctx, 2)
                self.state = 3297
                self.match(FandangoParser.OPEN_PAREN)
                self.state = 3299
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062318038548984) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 83896857) != 0
                ):
                    self.state = 3298
                    self.del_targets()

                self.state = 3301
                self.match(FandangoParser.CLOSE_PAREN)
                pass
            elif token in [88]:
                self.enterOuterAlt(localctx, 3)
                self.state = 3302
                self.match(FandangoParser.OPEN_BRACK)
                self.state = 3304
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                if (
                    ((_la) & ~0x3F) == 0 and ((1 << _la) & 2558062318038548984) != 0
                ) or (
                    (((_la - 77)) & ~0x3F) == 0 and ((1 << (_la - 77)) & 83896857) != 0
                ):
                    self.state = 3303
                    self.del_targets()

                self.state = 3306
                self.match(FandangoParser.CLOSE_BRACK)
                pass
            else:
                raise NoViableAltException(self)

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Type_expressionsContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def expression(self, i: int = None):
            if i is None:
                return self.getTypedRuleContexts(FandangoParser.ExpressionContext)
            else:
                return self.getTypedRuleContext(FandangoParser.ExpressionContext, i)

        def COMMA(self, i: int = None):
            if i is None:
                return self.getTokens(FandangoParser.COMMA)
            else:
                return self.getToken(FandangoParser.COMMA, i)

        def STAR(self):
            return self.getToken(FandangoParser.STAR, 0)

        def POWER(self):
            return self.getToken(FandangoParser.POWER, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_type_expressions

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitType_expressions"):
                return visitor.visitType_expressions(self)
            else:
                return visitor.visitChildren(self)

    def type_expressions(self):

        localctx = FandangoParser.Type_expressionsContext(self, self._ctx, self.state)
        self.enterRule(localctx, 486, self.RULE_type_expressions)
        self._la = 0  # Token type
        try:
            self.state = 3366
            self._errHandler.sync(self)
            la_ = self._interp.adaptivePredict(self._input, 412, self._ctx)
            if la_ == 1:
                self.enterOuterAlt(localctx, 1)
                self.state = 3309
                self.expression()
                self.state = 3314
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 408, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 3310
                        self.match(FandangoParser.COMMA)
                        self.state = 3311
                        self.expression()
                    self.state = 3316
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 408, self._ctx)

                self.state = 3317
                self.match(FandangoParser.COMMA)
                self.state = 3318
                self.match(FandangoParser.STAR)
                self.state = 3319
                self.expression()
                self.state = 3320
                self.match(FandangoParser.COMMA)
                self.state = 3321
                self.match(FandangoParser.POWER)
                self.state = 3322
                self.expression()
                pass

            elif la_ == 2:
                self.enterOuterAlt(localctx, 2)
                self.state = 3324
                self.expression()
                self.state = 3329
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 409, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 3325
                        self.match(FandangoParser.COMMA)
                        self.state = 3326
                        self.expression()
                    self.state = 3331
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 409, self._ctx)

                self.state = 3332
                self.match(FandangoParser.COMMA)
                self.state = 3333
                self.match(FandangoParser.STAR)
                self.state = 3334
                self.expression()
                pass

            elif la_ == 3:
                self.enterOuterAlt(localctx, 3)
                self.state = 3336
                self.expression()
                self.state = 3341
                self._errHandler.sync(self)
                _alt = self._interp.adaptivePredict(self._input, 410, self._ctx)
                while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
                    if _alt == 1:
                        self.state = 3337
                        self.match(FandangoParser.COMMA)
                        self.state = 3338
                        self.expression()
                    self.state = 3343
                    self._errHandler.sync(self)
                    _alt = self._interp.adaptivePredict(self._input, 410, self._ctx)

                self.state = 3344
                self.match(FandangoParser.COMMA)
                self.state = 3345
                self.match(FandangoParser.POWER)
                self.state = 3346
                self.expression()
                pass

            elif la_ == 4:
                self.enterOuterAlt(localctx, 4)
                self.state = 3348
                self.match(FandangoParser.STAR)
                self.state = 3349
                self.expression()
                self.state = 3350
                self.match(FandangoParser.COMMA)
                self.state = 3351
                self.match(FandangoParser.POWER)
                self.state = 3352
                self.expression()
                pass

            elif la_ == 5:
                self.enterOuterAlt(localctx, 5)
                self.state = 3354
                self.match(FandangoParser.STAR)
                self.state = 3355
                self.expression()
                pass

            elif la_ == 6:
                self.enterOuterAlt(localctx, 6)
                self.state = 3356
                self.match(FandangoParser.POWER)
                self.state = 3357
                self.expression()
                pass

            elif la_ == 7:
                self.enterOuterAlt(localctx, 7)
                self.state = 3358
                self.expression()
                self.state = 3363
                self._errHandler.sync(self)
                _la = self._input.LA(1)
                while _la == 83:
                    self.state = 3359
                    self.match(FandangoParser.COMMA)
                    self.state = 3360
                    self.expression()
                    self.state = 3365
                    self._errHandler.sync(self)
                    _la = self._input.LA(1)

                pass

        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class Func_type_commentContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NEWLINE(self):
            return self.getToken(FandangoParser.NEWLINE, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_func_type_comment

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitFunc_type_comment"):
                return visitor.visitFunc_type_comment(self)
            else:
                return visitor.visitChildren(self)

    def func_type_comment(self):

        localctx = FandangoParser.Func_type_commentContext(self, self._ctx, self.state)
        self.enterRule(localctx, 488, self.RULE_func_type_comment)
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3368
            self.match(FandangoParser.NEWLINE)
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    class IdentifierContext(ParserRuleContext):
        __slots__ = "parser"

        def __init__(
            self, parser, parent: ParserRuleContext = None, invokingState: int = -1
        ):
            super().__init__(parent, invokingState)
            self.parser = parser

        def NAME(self):
            return self.getToken(FandangoParser.NAME, 0)

        def ANY(self):
            return self.getToken(FandangoParser.ANY, 0)

        def ALL(self):
            return self.getToken(FandangoParser.ALL, 0)

        def LEN(self):
            return self.getToken(FandangoParser.LEN, 0)

        def getRuleIndex(self):
            return FandangoParser.RULE_identifier

        def accept(self, visitor: ParseTreeVisitor):
            if hasattr(visitor, "visitIdentifier"):
                return visitor.visitIdentifier(self)
            else:
                return visitor.visitChildren(self)

    def identifier(self):

        localctx = FandangoParser.IdentifierContext(self, self._ctx, self.state)
        self.enterRule(localctx, 490, self.RULE_identifier)
        self._la = 0  # Token type
        try:
            self.enterOuterAlt(localctx, 1)
            self.state = 3370
            _la = self._input.LA(1)
            if not ((((_la) & ~0x3F) == 0 and ((1 << _la) & 2558044588346441728) != 0)):
                self._errHandler.recoverInline(self)
            else:
                self._errHandler.reportMatch(self)
                self.consume()
        except RecognitionException as re:
            localctx.exception = re
            self._errHandler.reportError(self, re)
            self._errHandler.recover(self, re)
        finally:
            self.exitRule()
        return localctx

    def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int):
        if self._predicates == None:
            self._predicates = dict()
        self._predicates[14] = self.generator_call_sempred
        self._predicates[28] = self.dot_selection_sempred
        self._predicates[71] = self.dotted_name_sempred
        self._predicates[125] = self.name_or_attr_sempred
        self._predicates[169] = self.bitwise_or_sempred
        self._predicates[170] = self.bitwise_xor_sempred
        self._predicates[171] = self.bitwise_and_sempred
        self._predicates[172] = self.shift_expr_sempred
        self._predicates[173] = self.sum_sempred
        self._predicates[174] = self.term_sempred
        self._predicates[178] = self.primary_sempred
        self._predicates[239] = self.t_primary_sempred
        pred = self._predicates.get(ruleIndex, None)
        if pred is None:
            raise Exception("No predicate with index:" + str(ruleIndex))
        else:
            return pred(localctx, predIndex)

    def generator_call_sempred(self, localctx: Generator_callContext, predIndex: int):
        if predIndex == 0:
            return self.precpred(self._ctx, 4)

        if predIndex == 1:
            return self.precpred(self._ctx, 3)

        if predIndex == 2:
            return self.precpred(self._ctx, 2)

        if predIndex == 3:
            return self.precpred(self._ctx, 1)

    def dot_selection_sempred(self, localctx: Dot_selectionContext, predIndex: int):
        if predIndex == 4:
            return self.precpred(self._ctx, 2)

        if predIndex == 5:
            return self.precpred(self._ctx, 1)

    def dotted_name_sempred(self, localctx: Dotted_nameContext, predIndex: int):
        if predIndex == 6:
            return self.precpred(self._ctx, 2)

    def name_or_attr_sempred(self, localctx: Name_or_attrContext, predIndex: int):
        if predIndex == 7:
            return self.precpred(self._ctx, 2)

    def bitwise_or_sempred(self, localctx: Bitwise_orContext, predIndex: int):
        if predIndex == 8:
            return self.precpred(self._ctx, 2)

    def bitwise_xor_sempred(self, localctx: Bitwise_xorContext, predIndex: int):
        if predIndex == 9:
            return self.precpred(self._ctx, 2)

    def bitwise_and_sempred(self, localctx: Bitwise_andContext, predIndex: int):
        if predIndex == 10:
            return self.precpred(self._ctx, 2)

    def shift_expr_sempred(self, localctx: Shift_exprContext, predIndex: int):
        if predIndex == 11:
            return self.precpred(self._ctx, 3)

        if predIndex == 12:
            return self.precpred(self._ctx, 2)

    def sum_sempred(self, localctx: SumContext, predIndex: int):
        if predIndex == 13:
            return self.precpred(self._ctx, 3)

        if predIndex == 14:
            return self.precpred(self._ctx, 2)

    def term_sempred(self, localctx: TermContext, predIndex: int):
        if predIndex == 15:
            return self.precpred(self._ctx, 6)

        if predIndex == 16:
            return self.precpred(self._ctx, 5)

        if predIndex == 17:
            return self.precpred(self._ctx, 4)

        if predIndex == 18:
            return self.precpred(self._ctx, 3)

        if predIndex == 19:
            return self.precpred(self._ctx, 2)

    def primary_sempred(self, localctx: PrimaryContext, predIndex: int):
        if predIndex == 20:
            return self.precpred(self._ctx, 5)

        if predIndex == 21:
            return self.precpred(self._ctx, 4)

        if predIndex == 22:
            return self.precpred(self._ctx, 3)

        if predIndex == 23:
            return self.precpred(self._ctx, 2)

    def t_primary_sempred(self, localctx: T_primaryContext, predIndex: int):
        if predIndex == 24:
            return self.precpred(self._ctx, 5)

        if predIndex == 25:
            return self.precpred(self._ctx, 4)

        if predIndex == 26:
            return self.precpred(self._ctx, 3)

        if predIndex == 27:
            return self.precpred(self._ctx, 2)
